|
160
|
1 name: CI-unix
|
|
|
2
|
|
|
3 on:
|
|
|
4 pull_request:
|
|
|
5 paths:
|
|
|
6 - '**'
|
|
|
7 - '!docs/**'
|
|
|
8 - '!src/win/**'
|
|
|
9 - '!.**'
|
|
|
10 - '.github/workflows/CI-unix.yml'
|
|
|
11 push:
|
|
|
12 branches:
|
|
|
13 - v[0-9].*
|
|
|
14 - master
|
|
|
15
|
|
|
16 jobs:
|
|
|
17 build-linux:
|
|
|
18 runs-on: ubuntu-latest
|
|
|
19 steps:
|
|
|
20 - uses: actions/checkout@v4
|
|
|
21 - name: configure
|
|
|
22 run: |
|
|
|
23 ./autogen.sh
|
|
|
24 mkdir build
|
|
|
25 (cd build && ../configure)
|
|
|
26 - name: distcheck
|
|
|
27 run: |
|
|
|
28 make -C build distcheck
|
|
|
29
|
|
|
30 build-android:
|
|
|
31 runs-on: ubuntu-latest
|
|
|
32 env:
|
|
|
33 ANDROID_AVD_HOME: /root/.android/avd
|
|
|
34 steps:
|
|
|
35 - uses: actions/checkout@v4
|
|
|
36 - name: Envinfo
|
|
|
37 run: npx envinfo
|
|
|
38 - name: Enable KVM
|
|
|
39 run: |
|
|
|
40 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
|
|
41 sudo udevadm control --reload-rules
|
|
|
42 sudo udevadm trigger --name-match=kvm
|
|
|
43 - name: Build and Test
|
|
|
44 uses: reactivecircus/android-emulator-runner@v2
|
|
|
45 with:
|
|
|
46 api-level: 30
|
|
|
47 arch: x86_64
|
|
|
48 target: google_apis
|
|
|
49 ram-size: 2048M
|
|
|
50 emulator-options: -no-audio -no-window -gpu off -no-boot-anim -netdelay none -netspeed full -writable-system -no-snapshot-save -no-snapshot-load -no-snapshot
|
|
|
51 disable-animations: true
|
|
|
52 script: |
|
|
|
53 echo "::group::Configure"
|
|
|
54 cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="x86_64" -DANDROID_PLATFORM=android-30
|
|
|
55 echo "::endgroup::"
|
|
|
56
|
|
|
57 echo "::group::Build"
|
|
|
58 cmake --build build
|
|
|
59
|
|
|
60 ## Correct some ld bugs that cause problems with libuv tests
|
|
|
61 wget "https://github.com/termux/termux-elf-cleaner/releases/download/v2.2.1/termux-elf-cleaner" -P build
|
|
|
62 chmod a+x build/termux-elf-cleaner
|
|
|
63 build/termux-elf-cleaner --api-level 30 ./build/uv_run_tests
|
|
|
64 build/termux-elf-cleaner --api-level 30 ./build/uv_run_tests_a
|
|
|
65
|
|
|
66 adb shell "su 0 setenforce 0" # to allow some syscalls like link, chmod, etc.
|
|
|
67
|
|
|
68 ## Push the build and test fixtures to the device
|
|
|
69 adb push build /data/local/tmp
|
|
|
70 adb shell mkdir /data/local/tmp/build/test
|
|
|
71 adb push test/fixtures /data/local/tmp/build/test
|
|
|
72 echo "::endgroup::"
|
|
|
73
|
|
|
74 ## Run the tests
|
|
|
75 file build/uv_run_tests_a
|
|
|
76 adb shell "cd /data/local/tmp/build && env UV_TEST_TIMEOUT_MULTIPLIER=5 ./uv_run_tests_a"
|
|
|
77
|
|
|
78 build-macos:
|
|
|
79 runs-on: ${{ matrix.os }}
|
|
|
80 strategy:
|
|
|
81 fail-fast: false
|
|
|
82 matrix:
|
|
|
83 os: [macos-13, macos-14]
|
|
|
84 steps:
|
|
|
85 - uses: actions/checkout@v4
|
|
|
86 - name: Envinfo
|
|
|
87 run: npx envinfo
|
|
|
88 - name: Disable Firewall
|
|
|
89 run: |
|
|
|
90 /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
|
|
|
91 sudo defaults write /Library/Preferences/com.apple.alf globalstate -int 0
|
|
|
92 /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
|
|
|
93 - name: Setup
|
|
|
94 run: |
|
|
|
95 brew install ninja automake libtool
|
|
|
96 - name: Configure
|
|
|
97 run: |
|
|
|
98 mkdir build
|
|
|
99 cd build
|
|
|
100 cmake .. -DBUILD_TESTING=ON -G Ninja
|
|
|
101 - name: Build
|
|
|
102 run: |
|
|
|
103 cmake --build build
|
|
|
104 ls -lh
|
|
|
105 - name: platform_output
|
|
|
106 run: |
|
|
|
107 ./build/uv_run_tests platform_output
|
|
|
108 - name: platform_output_a
|
|
|
109 run: |
|
|
|
110 ./build/uv_run_tests_a platform_output
|
|
|
111 - name: Test
|
|
|
112 run: |
|
|
|
113 cd build && ctest -V
|
|
|
114 - name: Autotools configure
|
|
|
115 if: always()
|
|
|
116 run: |
|
|
|
117 ./autogen.sh
|
|
|
118 mkdir build-auto
|
|
|
119 (cd build-auto && ../configure)
|
|
|
120 make -C build-auto -j4
|
|
|
121
|
|
|
122 build-ios:
|
|
|
123 runs-on: ${{ matrix.os }}
|
|
|
124 strategy:
|
|
|
125 fail-fast: false
|
|
|
126 matrix:
|
|
|
127 os: [macos-13, macos-14]
|
|
|
128 steps:
|
|
|
129 - uses: actions/checkout@v4
|
|
|
130 - name: Configure
|
|
|
131 run: |
|
|
|
132 mkdir build-ios
|
|
|
133 cd build-ios
|
|
|
134 cmake .. -GXcode -DCMAKE_SYSTEM_NAME:STRING=iOS -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED:BOOL=NO -DCMAKE_CONFIGURATION_TYPES:STRING=Release
|
|
|
135 - name: Build
|
|
|
136 run: |
|
|
|
137 cmake --build build-ios
|
|
|
138 ls -lh build-ios
|
|
|
139
|
|
|
140 build-cross-qemu:
|
|
|
141 runs-on: ubuntu-24.04
|
|
|
142 name: build-cross-qemu-${{ matrix.config.target }}
|
|
|
143
|
|
|
144 strategy:
|
|
|
145 fail-fast: false
|
|
|
146 matrix:
|
|
|
147 config:
|
|
|
148 - {target: arm, toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm }
|
|
|
149 - {target: armhf, toolchain: gcc-arm-linux-gnueabihf, cc: arm-linux-gnueabihf-gcc, qemu: qemu-arm }
|
|
|
150 - {target: aarch64, toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64 }
|
|
|
151 - {target: riscv64, toolchain: gcc-riscv64-linux-gnu, cc: riscv64-linux-gnu-gcc, qemu: qemu-riscv64 }
|
|
|
152 - {target: ppc, toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc }
|
|
|
153 - {target: ppc64, toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64 }
|
|
|
154 - {target: ppc64le, toolchain: gcc-powerpc64le-linux-gnu, cc: powerpc64le-linux-gnu-gcc, qemu: qemu-ppc64le }
|
|
|
155 - {target: s390x, toolchain: gcc-s390x-linux-gnu, cc: s390x-linux-gnu-gcc, qemu: qemu-s390x }
|
|
|
156 - {target: mips, toolchain: gcc-mips-linux-gnu, cc: mips-linux-gnu-gcc, qemu: qemu-mips }
|
|
|
157 - {target: mips64, toolchain: gcc-mips64-linux-gnuabi64, cc: mips64-linux-gnuabi64-gcc, qemu: qemu-mips64 }
|
|
|
158 - {target: mipsel, toolchain: gcc-mipsel-linux-gnu, cc: mipsel-linux-gnu-gcc, qemu: qemu-mipsel }
|
|
|
159 - {target: mips64el, toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el }
|
|
|
160 - {target: arm (u64 slots), toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm }
|
|
|
161 - {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64 }
|
|
|
162 - {target: ppc (u64 slots), toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc }
|
|
|
163 - {target: ppc64 (u64 slots), toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64 }
|
|
|
164
|
|
|
165 steps:
|
|
|
166 - uses: actions/checkout@v4
|
|
|
167 - name: Install qemu and ${{ matrix.config.toolchain }}
|
|
|
168 run: |
|
|
|
169 sudo apt update
|
|
|
170 sudo apt install qemu-user qemu-user-binfmt ${{ matrix.config.toolchain }} -y
|
|
|
171 - name: Configure with ${{ matrix.config.cc }}
|
|
|
172 run: |
|
|
|
173 mkdir build
|
|
|
174 cd build
|
|
|
175 cmake .. -DBUILD_TESTING=ON -DQEMU=ON -DCMAKE_C_COMPILER=${{ matrix.config.cc }}
|
|
|
176 - name: Build
|
|
|
177 run: |
|
|
|
178 cmake --build build
|
|
|
179 ls -lh build
|
|
|
180 - name: Test
|
|
|
181 run: |
|
|
|
182 ${{ matrix.config.qemu }} build/uv_run_tests_a
|