156 lines
5.3 KiB
YAML
156 lines
5.3 KiB
YAML
cppyy-22.04:
|
|
stage: test
|
|
image: ubuntu:22.04 # python 3.10
|
|
dependencies: []
|
|
variables:
|
|
FILES_CHANGED: git-diff-name-only.txt
|
|
before_script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -y
|
|
g++ cmake ninja-build ccache
|
|
python3 python3-pip
|
|
libboost-dev libgsl-dev libgtk-3-dev
|
|
git wget
|
|
- pip install cppyy==3.5.0 matplotlib numpy
|
|
script:
|
|
- if (git remote | grep -qw upstream) ; then
|
|
git remote remove upstream ;
|
|
fi
|
|
- git remote add -t $CI_DEFAULT_BRANCH --no-tags -f upstream https://gitlab.com/nsnam/ns-3-dev.git
|
|
- git diff --name-only upstream/$CI_DEFAULT_BRANCH | tee $FILES_CHANGED
|
|
|
|
# Run this job in the following cases: 1) default branch, 2) changes to source code, 3) changes to configurations.
|
|
# Skip this job in the opposite cases.
|
|
# File paths generated by git diff are relative to the working tree.
|
|
- |
|
|
if [[ $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH ]] &&
|
|
!(grep -qE ".*\.(cc|h)|CMakeLists.txt|bindings/|build-support/|ns3|utils/tests/.*\.(yaml|yml)" $FILES_CHANGED) ; then
|
|
echo "No source code or configurations changes found in this MR. Skipping this job.";
|
|
exit 0;
|
|
fi
|
|
|
|
- ./ns3 configure -G Ninja --enable-python-bindings
|
|
- ./ns3 build
|
|
- ./ns3 run first.py
|
|
- ./ns3 run second.py
|
|
- ./ns3 run third.py
|
|
- ./ns3 run wifi-ap.py
|
|
- ./ns3 run simple-routing-ping6.py
|
|
- ./ns3 run realtime-udp-echo.py
|
|
- ./ns3 run sample-simulator.py
|
|
- ./ns3 run "sample-rng-plot.py --not-blocking"
|
|
- ./ns3 run csma-bridge.py
|
|
- ./ns3 run wifi-olsr-flowmon.py
|
|
- ./ns3 run "flowmon-parse-results.py output.xml"
|
|
- ./ns3 run mixed-wired-wireless.py
|
|
- ./ns3 run ./utils/python-unit-tests.py
|
|
timeout: 9h
|
|
|
|
cppyy-20.04:
|
|
stage: test
|
|
image: ubuntu:20.04 # python 3.8
|
|
rules:
|
|
- if: $RELEASE == "manual"
|
|
before_script:
|
|
- apt update
|
|
- DEBIAN_FRONTEND=noninteractive apt install -y
|
|
g++ cmake ninja-build ccache
|
|
python3 python3-pip
|
|
libboost-dev libgsl-dev libgtk-3-dev
|
|
git wget
|
|
- pip install cppyy==3.1.2
|
|
script:
|
|
- ./ns3 configure -G Ninja --enable-python-bindings
|
|
- ./ns3 build
|
|
- ./ns3 run first.py
|
|
- ./ns3 run second.py
|
|
- ./ns3 run third.py
|
|
- ./ns3 run ./utils/python-unit-tests.py
|
|
timeout: 9h
|
|
|
|
.manylinux-pip-wheel:
|
|
stage: test
|
|
image: quay.io/pypa/manylinux_2_28_x86_64
|
|
rules:
|
|
- if: $RELEASE == "manual"
|
|
script:
|
|
# Untar libraries (just to make CMake happy, but we are not going to actually link them)
|
|
# https://github.com/scikit-build/scikit-build/pull/47
|
|
- tar -xvf /opt/_internal/static-libs-for-embedding-only.tar.xz -C /opt/_internal
|
|
# Install minimal toolchain
|
|
- yum install -y libxml2-devel gsl-devel sqlite-devel gtk3-devel boost-devel
|
|
# Create Python venv
|
|
- $PYTHON -m venv ./venv
|
|
- . ./venv/bin/activate
|
|
# Upgrade the pip version to reuse the pre-build cppyy
|
|
- python -m pip install pip --upgrade
|
|
- python -m pip install setuptools setuptools_scm wheel --upgrade
|
|
- python -m pip install auditwheel cmake-build-extension cppyy==3.1.2
|
|
# Configure and build wheel
|
|
- python setup.py bdist_wheel build_ext
|
|
- export EXCLUDE_INTERNAL_LIBRARIES=`python ./build-support/pip-wheel/auditwheel-exclude-list.py`
|
|
# Bundle in shared libraries that were not explicitly packaged or depended upon
|
|
- python -m auditwheel repair ./dist/*whl -L /lib64 $EXCLUDE_INTERNAL_LIBRARIES
|
|
# Clean the build directory
|
|
- python ./ns3 clean
|
|
# Clean up the environment
|
|
- deactivate
|
|
- rm -R ./venv
|
|
# Delete toolchain to check if required headers/libraries were really packaged
|
|
- yum remove -y libxml2-devel gsl-devel sqlite-devel gtk3-devel boost-devel
|
|
# Install wheel
|
|
- $PYTHON -m pip install ./wheelhouse/*whl
|
|
- $PYTHON -m pip install matplotlib numpy
|
|
# Test the bindings
|
|
- $PYTHON ./utils/python-unit-tests.py
|
|
- $PYTHON ./examples/realtime/realtime-udp-echo.py
|
|
- $PYTHON ./examples/routing/simple-routing-ping6.py
|
|
- $PYTHON ./examples/tutorial/first.py
|
|
- $PYTHON ./examples/tutorial/second.py
|
|
- $PYTHON ./examples/tutorial/third.py
|
|
- $PYTHON ./examples/wireless/wifi-ap.py
|
|
- $PYTHON ./examples/wireless/mixed-wired-wireless.py
|
|
- $PYTHON ./src/bridge/examples/csma-bridge.py
|
|
- $PYTHON ./src/brite/examples/brite-generic-example.py
|
|
- $PYTHON ./src/core/examples/sample-simulator.py
|
|
- $PYTHON ./src/core/examples/sample-rng-plot.py --not-blocking
|
|
- $PYTHON ./src/click/examples/nsclick-simple-lan.py
|
|
- $PYTHON ./src/flow-monitor/examples/wifi-olsr-flowmon.py
|
|
- $PYTHON ./src/flow-monitor/examples/flowmon-parse-results.py output.xml
|
|
- $PYTHON ./src/openflow/examples/openflow-switch.py
|
|
timeout: 3h
|
|
artifacts:
|
|
paths:
|
|
- wheelhouse/*.whl
|
|
when: on_success
|
|
|
|
manylinux-pip-wheel-py3.8:
|
|
extends: .manylinux-pip-wheel
|
|
variables:
|
|
PYTHON: "python3.8"
|
|
|
|
manylinux-pip-wheel-py3.9:
|
|
extends: .manylinux-pip-wheel
|
|
variables:
|
|
PYTHON: "python3.9"
|
|
|
|
manylinux-pip-wheel-py3.10:
|
|
extends: .manylinux-pip-wheel
|
|
variables:
|
|
PYTHON: "python3.10"
|
|
|
|
manylinux-pip-wheel-py3.11:
|
|
extends: .manylinux-pip-wheel
|
|
variables:
|
|
PYTHON: "python3.11"
|
|
|
|
manylinux-pip-wheel-py3.12:
|
|
extends: .manylinux-pip-wheel
|
|
variables:
|
|
PYTHON: "python3.12"
|
|
|
|
manylinux-pip-wheel-py3.13:
|
|
extends: .manylinux-pip-wheel
|
|
variables:
|
|
PYTHON: "python3.13"
|