comparison third_party/libuv/.github/workflows/CI-unix.yml @ 160:948de3f54cea

[ThirdParty] Added libuv
author June Park <parkjune1995@gmail.com>
date Wed, 14 Jan 2026 19:39:52 -0800
parents
children
comparison
equal deleted inserted replaced
159:05cf9467a1c3 160:948de3f54cea
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