1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
# NS3 CI script for GCC
# Any scheduled pipeline for GCC should define a variable, named
# "RELEASE", that has a value "weekly". Also, a variable "GCC" should be set
# to True.
# We support from 10 to the latest version. Check if everything builds fine
# under debug, default, and optimized, on Linux.
# The distro used is Ubuntu - the logic is:
# - Test minimum and maximum GCC version
# - Do not test if it's the default version installed (already tested as Ubuntu test)
# Note: the following is the list of default gcc versions on Ubuntu:
# - focal (20.04LTS) 9
# - jammy (22.04LTS) 11
# - kinetic (22.10) 12
# - lunar (23.04) 12
# - lunar (23.10) 13
# - noble (24.04LTS) 13
.weekly-gcc-base:
extends: .base-build
rules:
- if: $RELEASE == "weekly"
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
allow_failure: true
before_script:
- apt update
- apt upgrade -y
- DEBIAN_FRONTEND=noninteractive apt install -y
$COMPILER cmake ninja-build ccache
python3 python3-dev
gsl-bin libgsl-dev $LIBGSL
libboost-all-dev
libgtk-3-dev
libfl-dev
libxml2 libxml2-dev
libopenmpi-dev openmpi-bin openmpi-common openmpi-doc
libsqlite3-dev sqlite3
libeigen3-dev
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
ssh git
weekly-gcc:
rules:
- if: $RELEASE == "weekly"
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
when: manual
allow_failure: true
stage: pre-build
script:
- echo "Starting GCC jobs"
# GCC 13
weekly-build-gcc-13-debug:
extends: .weekly-gcc-base
needs: ["weekly-gcc"]
image: ubuntu:24.04
stage: build
variables:
MODE: debug
COMPILER: g++-13
LIBGSL: libgsl27
weekly-build-gcc-13-default:
extends: .weekly-gcc-base
needs: ["weekly-gcc"]
image: ubuntu:24.04
stage: build
variables:
MODE: default
COMPILER: g++-13
LIBGSL: libgsl27
# Aug. 26, 2023: --disable-eigen is needed to prevent a -Werror=unused-variable
weekly-build-gcc-13-optimized:
extends: .weekly-gcc-base
needs: ["weekly-gcc"]
image: ubuntu:24.04
stage: build
variables:
MODE: optimized
COMPILER: g++-13
LIBGSL: libgsl27
EXTRA_OPTIONS: --disable-eigen
weekly-test-gcc-13-default:
extends: .weekly-gcc-base
image: ubuntu:24.04
stage: test
needs: ["weekly-build-gcc-13-default"]
dependencies:
- weekly-build-gcc-13-default
variables:
MODE: default
COMPILER: g++-13
LIBGSL: libgsl27
# Aug. 26, 2023: --disable-eigen is needed to prevent a -Werror=unused-variable
weekly-test-gcc-13-optimized:
extends: .weekly-gcc-base
image: ubuntu:24.04
stage: test
needs: ["weekly-build-gcc-13-optimized"]
dependencies:
- weekly-build-gcc-13-optimized
variables:
MODE: optimized
COMPILER: g++-13
LIBGSL: libgsl27
EXTRA_OPTIONS: --disable-eigen
|