aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/.github/workflows/ci.yml
blob: d8b0360dda23acdd42f8b167c32a586115be45f4 (plain)
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
111
112
113
114
115
116
117
118
119
120
121
122
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/