While adding new code we frequently miss that certain compiler features may be relatively new, or more often that some system headers are not available or do not have certain definitions in them. This results in builds failing on older systems.
Adding a new CI job that runs inside Ubuntu 14.04 container, which is the oldest Ubuntu that is in the "legacy support" mode: https://ubuntu.com/about/release-cycle This image has GCC 4.8 that is missing a lot of modern features and it's based on Linux v3.13 kernel that also has a lot of definitions missing in uAPI headers, compared to modern ones. This makes this image a good candidate for a baseline "old distribution" testing. This job can't cover everything and there will be different configurations and distributions that may still fail, especially if they have custom backports or some packages much newer than others. But it should cover the vast majority of potential issues. Since we're running inside a very old container, we can't use any of the pre-defined GitHub workflows like 'checkout' or 'cache', as they are based on Node.js that is built for much newer version of Ubuntu and so requires much newer glibc to run. Hence doing everything manually. Need to disable SSL, as we require OpenSSL 1.1.1+, which can probably be built, but it seems like a bit of a waste of time to re-build so many large things from sources. Need to build a newer python though, as python >= 3.7 is required in order to build OVS. Building python 3.12 because it's the same as in other tests. We could also find and choose the latest 3.12.z release automatically, but it's much less code to just manually stick to the current latest 3.12.11. There should be no reason to update it frequently. Signed-off-by: Ilya Maximets <[email protected]> --- .github/workflows/build-and-test.yml | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 1e70231f7..f7ca4d1f0 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -582,6 +582,45 @@ jobs: name: logs-osx-clang---disable-ssl path: config.log + build-old-linux-distribution: + env: + dependencies: git make automake libtool gcc libnuma-dev zlib1g-dev + python_version: 3.12.11 + + name: linux gcc (ubuntu-14.04) + runs-on: ubuntu-24.04 + container: ubuntu:14.04 + timeout-minutes: 30 + + strategy: + fail-fast: false + + steps: + - name: update APT cache + run: sudo apt update || true + + - name: install dependencies + run: sudo apt install -y ${{ env.dependencies }} + + - name: build python + run: | + git clone --branch v${{ env.python_version }} --depth 1 \ + https://github.com/python/cpython cpython + cd cpython && ./configure && sudo make -j4 install + python3 --version + + - name: checkout + run: | + SHA=${{ github.event.pull_request.head.sha || github.sha }} + git clone https://github.com/${{ github.repository }}.git ovs + cd ovs && git fetch origin $SHA && git checkout $SHA + + - name: prepare + run: cd ovs && ./boot.sh && ./configure --disable-ssl --enable-Werror + + - name: build + run: cd ovs && make -j4 + build-linux-deb: env: deb_dependencies: | -- 2.51.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
