Files
unison/utils/tests/gitlab-ci-cppyy.yml
2025-04-11 11:21:49 +02:00

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"