diff options
Diffstat (limited to 'lib/mlibc/.github/workflows/ci.yml')
-rw-r--r-- | lib/mlibc/.github/workflows/ci.yml | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/lib/mlibc/.github/workflows/ci.yml b/lib/mlibc/.github/workflows/ci.yml new file mode 100644 index 0000000..d8b0360 --- /dev/null +++ b/lib/mlibc/.github/workflows/ci.yml @@ -0,0 +1,123 @@ +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/ |