Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix CI for GCC-13 on Ubuntu-18 #700

Merged
merged 25 commits into from
Dec 19, 2024
Merged
Changes from 24 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 42 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,32 +60,49 @@ jobs:
runs-on: ubuntu-24.04 # latest
strategy:
matrix:
compiler:
- clang-3
- clang-6
- clang-8
- clang-9
- clang-10
- clang-11
- clang-15
- clang-17
- gcc-4.8
- gcc-5
- gcc-6
- gcc-7
- gcc-8
- gcc-11
# - gcc-13 TODO: figure out why its not passing
variant:
- name: clang-3
- name: clang-6
- name: clang-8
- name: clang-9
- name: clang-10
- name: clang-11
- name: clang-15
- name: clang-17
- name: gcc-4.8
- name: gcc-5
- name: gcc-6
- name: gcc-7
- name: gcc-8
- name: gcc-11
- name: gcc-13
# See Issue: https://github.com/llvm/llvm-project/issues/59007. Although this issue
# has been fixed in LLVM, the fix will probably not propagate to older versions of Ubuntu and GCC 13.1.
#
# Starting with GLIBC version 2.34, the `dn_expand` function, previously found in `libresolv.so`, was moved to `libc.so`. This
# function is used internally by the `getaddrinfo()` system call.
#
# In our setup (As of December 2024), we are using an Ubuntu 18 Docker image on a newer Ubuntu host.
# However, due to compatibility issues between newer libasan.so in GCC 13.1
# and the older Ubuntu image, the linker does not link with `libresolv.so`.
# This results in crashes in `getaddrinfo()` since Ubuntu-18 GLIBC is 2.31.
#
# This problem does not occur on Ubuntu 22 and newer because GLIBC versions 2.34
# and above include `dn_expand` in `libc.so`, eliminating the dependency on
# `libresolv.so`.
#
# We can bypass this problem by linking with "resolv" manually until we bump
# our base Linux image to Ubuntu 22.
extra-build-flag: --cmake-extra=-DCMAKE_EXE_LINKER_FLAGS="-lresolv"
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
# We can't use the `uses: docker://image` version yet, GitHub lacks authentication for actions -> packages
- name: Build ${{ env.PACKAGE_NAME }}
run: |
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.compiler }}
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- name: Build ${{ matrix.variant.name }}
run: |
aws s3 cp s3://aws-crt-test-stuff/ci/${{ env.BUILDER_VERSION }}/linux-container-ci.sh ./linux-container-ci.sh && chmod a+x ./linux-container-ci.sh
./linux-container-ci.sh ${{ env.BUILDER_VERSION }} aws-crt-${{ env.LINUX_BASE_IMAGE }} build -p ${{ env.PACKAGE_NAME }} --compiler=${{ matrix.variant.name }} ${{ matrix.variant.extra-build-flag }}

linux-debug:
runs-on: ubuntu-24.04 # latest
Expand Down