name: Continuous Integration on: [push, pull_request] jobs: build-mlibc: strategy: matrix: arch: [x86_64, riscv64, aarch64, x86] builds: [mlibc, mlibc-static, mlibc-shared, mlibc-ansi-only, mlibc-headers-only] name: Build mlibc runs-on: ubuntu-22.04 container: image: ghcr.io/managarm/mlibc-crossers:latest steps: - name: Install prerequisites run: | apt-get update apt-get install -y ninja-build qemu-user \ python3-setuptools python3-jsonschema \ python3-pexpect python3-pip netbase pip install --break-system-packages -U xbstrap pyexpect meson - name: Prepare directories run: | mkdir src/ mkdir src/mlibc/ mkdir build/ - name: Checkout uses: actions/checkout@v2 with: path: src/mlibc/ - name: Prepare src/ run: | cp mlibc/ci/bootstrap.yml . touch mlibc/checkedout.xbstrap working-directory: src/ - name: Prepare build/ run: | cat > bootstrap-site.yml << EOF define_options: arch: ${{matrix.arch}} EOF xbstrap init ../src working-directory: build/ - name: Build mlibc run: 'xbstrap install ${{matrix.builds}}' working-directory: build/ - name: Test mlibc run: 'meson test -v -C pkg-builds/${{matrix.builds}}' working-directory: build/ compile-sysdeps: strategy: matrix: sysdeps: [dripos, lemon, aero, ironclad, lyre, keyronex, managarm] name: Compile sysdeps runs-on: ubuntu-22.04 container: image: ghcr.io/managarm/mlibc-crossers:latest steps: - name: Install prerequisites run: | apt-get update apt-get install -y ninja-build qemu-user \ python3-setuptools python3-jsonschema \ python3-pip pip install --break-system-packages -U xbstrap meson - if: ${{ matrix.sysdeps == 'managarm' }} name: Checkout bootstrap-managarm uses: actions/checkout@v2 with: repository: 'managarm/bootstrap-managarm' path: src/ - name: Checkout uses: actions/checkout@v2 with: path: src/mlibc/ - if: ${{ matrix.sysdeps == 'managarm' }} name: Set up managarm subprojects directory run: | mkdir -p src/mlibc/subprojects build ( cd build xbstrap init ../src xbstrap regenerate libdrm ) - if: ${{ matrix.sysdeps == 'managarm' }} name: Clone managarm/managarm uses: actions/checkout@v4 with: repository: 'managarm/managarm' path: 'src/mlibc/subprojects/managarm' - if: ${{ matrix.sysdeps == 'managarm' }} name: Clone managarm/bragi uses: actions/checkout@v4 with: repository: 'managarm/bragi' path: 'src/mlibc/subprojects/bragi' - if: ${{ matrix.sysdeps == 'managarm' }} name: Install bragi run: | pip install --break-system-packages -U bragi - name: Set up linux kernel headers run: | mkdir -p build/mlibc/ cp src/mlibc/ci/bootstrap.yml src/ ( cd build xbstrap init ../src xbstrap install linux-headers ) - name: Compile sysdeps run: | meson setup \ "-Dc_args=['-fno-stack-protector', '-U__linux__', '-Wno-error=maybe-uninitialized', '-D__${{matrix.sysdeps}}__']" \ "-Dcpp_args=['-fno-stack-protector', '-U__linux__', '-Wno-error=maybe-uninitialized', '-D__${{matrix.sysdeps}}__']" \ "-Dbuild_tests=true" \ "-Db_sanitize=undefined" \ "-Dlinux_kernel_headers=$(pwd)/packages/linux-headers/usr/include" \ --cross-file ../src/mlibc/ci/${{matrix.sysdeps}}.cross-file compile-${{matrix.sysdeps}} \ "../src/mlibc/" ninja -C compile-${{matrix.sysdeps}} working-directory: build/