Requires updating the android builder, since the arm emulator is deprecated and unavailable now. Switch to using a Github Action plugin instead of a container, so that hopefully future updates will be delivered via that channel instead. Changed the idna test since printf returns EILSEQ for some byte sequences in the format on Android in glibc. We don't fully understand the cause, but we can avoid that by not asking it to reencode the bytes in the current locale settings.
192 lines
7.5 KiB
YAML
192 lines
7.5 KiB
YAML
name: CI-unix
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- '**'
|
|
- '!docs/**'
|
|
- '!src/win/**'
|
|
- '!.**'
|
|
- '.github/workflows/CI-unix.yml'
|
|
push:
|
|
branches:
|
|
- v[0-9].*
|
|
- master
|
|
|
|
jobs:
|
|
build-linux:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: configure
|
|
run: |
|
|
./autogen.sh
|
|
mkdir build
|
|
(cd build && ../configure)
|
|
- name: distcheck
|
|
run: |
|
|
make -C build distcheck
|
|
|
|
build-android:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
ANDROID_AVD_HOME: /root/.android/avd
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Envinfo
|
|
run: npx envinfo
|
|
- name: Enable KVM
|
|
run: |
|
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
|
sudo udevadm control --reload-rules
|
|
sudo udevadm trigger --name-match=kvm
|
|
- name: Build and Test
|
|
uses: reactivecircus/android-emulator-runner@v2
|
|
with:
|
|
api-level: 24
|
|
arch: x86_64
|
|
target: google_apis
|
|
ram-size: 2048M
|
|
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
|
|
disable-animations: true
|
|
script: |
|
|
echo "::group::Configure"
|
|
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-24
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Build"
|
|
cmake --build build
|
|
|
|
## Correct some ld bugs that cause problems with libuv tests
|
|
wget "https://github.com/termux/termux-elf-cleaner/releases/download/v2.2.1/termux-elf-cleaner" -P build
|
|
chmod a+x build/termux-elf-cleaner
|
|
build/termux-elf-cleaner --api-level 24 ./build/uv_run_tests
|
|
build/termux-elf-cleaner --api-level 24 ./build/uv_run_tests_a
|
|
|
|
adb shell "su 0 setenforce 0" # to allow some syscalls like link, chmod, etc.
|
|
|
|
## Push the build and test fixtures to the device
|
|
adb push build /data/local/tmp
|
|
adb shell mkdir /data/local/tmp/build/test
|
|
adb push test/fixtures /data/local/tmp/build/test
|
|
echo "::endgroup::"
|
|
|
|
## Run the tests
|
|
file build/uv_run_tests_a
|
|
adb shell "cd /data/local/tmp/build && env UV_TEST_TIMEOUT_MULTIPLIER=5 ./uv_run_tests_a"
|
|
|
|
build-macos:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [macos-13, macos-14]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Envinfo
|
|
run: npx envinfo
|
|
- name: Disable Firewall
|
|
run: |
|
|
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
|
|
sudo defaults write /Library/Preferences/com.apple.alf globalstate -int 0
|
|
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
|
|
- name: Setup
|
|
run: |
|
|
brew install ninja automake libtool
|
|
- name: Configure
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DBUILD_TESTING=ON -G Ninja
|
|
- name: Build
|
|
run: |
|
|
cmake --build build
|
|
ls -lh
|
|
- name: platform_output
|
|
run: |
|
|
./build/uv_run_tests platform_output
|
|
- name: platform_output_a
|
|
run: |
|
|
./build/uv_run_tests_a platform_output
|
|
- name: Test
|
|
run: |
|
|
cd build && ctest -V
|
|
- name: Autotools configure
|
|
if: always()
|
|
run: |
|
|
./autogen.sh
|
|
mkdir build-auto
|
|
(cd build-auto && ../configure)
|
|
make -C build-auto -j4
|
|
|
|
build-ios:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [macos-13, macos-14]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Configure
|
|
run: |
|
|
mkdir build-ios
|
|
cd build-ios
|
|
cmake .. -GXcode -DCMAKE_SYSTEM_NAME:STRING=iOS -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED:BOOL=NO -DCMAKE_CONFIGURATION_TYPES:STRING=Release
|
|
- name: Build
|
|
run: |
|
|
cmake --build build-ios
|
|
ls -lh build-ios
|
|
|
|
build-cross-qemu:
|
|
runs-on: ubuntu-latest
|
|
name: build-cross-qemu-${{ matrix.config.target }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- {target: arm, toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static }
|
|
- {target: armhf, toolchain: gcc-arm-linux-gnueabihf, cc: arm-linux-gnueabihf-gcc, qemu: qemu-arm-static }
|
|
- {target: aarch64, toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static }
|
|
- {target: riscv64, toolchain: gcc-riscv64-linux-gnu, cc: riscv64-linux-gnu-gcc, qemu: qemu-riscv64-static }
|
|
- {target: ppc, toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static }
|
|
- {target: ppc64, toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static }
|
|
- {target: ppc64le, toolchain: gcc-powerpc64le-linux-gnu, cc: powerpc64le-linux-gnu-gcc, qemu: qemu-ppc64le-static }
|
|
- {target: s390x, toolchain: gcc-s390x-linux-gnu, cc: s390x-linux-gnu-gcc, qemu: qemu-s390x-static }
|
|
- {target: mips, toolchain: gcc-mips-linux-gnu, cc: mips-linux-gnu-gcc, qemu: qemu-mips-static }
|
|
- {target: mips64, toolchain: gcc-mips64-linux-gnuabi64, cc: mips64-linux-gnuabi64-gcc, qemu: qemu-mips64-static }
|
|
- {target: mipsel, toolchain: gcc-mipsel-linux-gnu, cc: mipsel-linux-gnu-gcc, qemu: qemu-mipsel-static }
|
|
- {target: mips64el,toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el-static }
|
|
- {target: arm (u64 slots), toolchain: gcc-arm-linux-gnueabi, cc: arm-linux-gnueabi-gcc, qemu: qemu-arm-static}
|
|
- {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu, cc: aarch64-linux-gnu-gcc, qemu: qemu-aarch64-static}
|
|
- {target: ppc (u64 slots), toolchain: gcc-powerpc-linux-gnu, cc: powerpc-linux-gnu-gcc, qemu: qemu-ppc-static}
|
|
- {target: ppc64 (u64 slots), toolchain: gcc-powerpc64-linux-gnu, cc: powerpc64-linux-gnu-gcc, qemu: qemu-ppc64-static}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Install QEMU
|
|
# this ensure install latest qemu on ubuntu, apt get version is old
|
|
env:
|
|
QEMU_SRC: "http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu"
|
|
QEMU_VER: "qemu-user-static_7\\.2+dfsg-.*_amd64.deb$"
|
|
run: |
|
|
DEB=`curl -s $QEMU_SRC/ | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | grep $QEMU_VER | tail -1`
|
|
wget $QEMU_SRC/$DEB
|
|
sudo dpkg -i $DEB
|
|
- name: Install ${{ matrix.config.toolchain }}
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install ${{ matrix.config.toolchain }} -y
|
|
- name: Configure with ${{ matrix.config.cc }}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DBUILD_TESTING=ON -DQEMU=ON -DCMAKE_C_COMPILER=${{ matrix.config.cc }}
|
|
- name: Build
|
|
run: |
|
|
cmake --build build
|
|
ls -lh build
|
|
- name: Test
|
|
run: |
|
|
${{ matrix.config.qemu }} build/uv_run_tests_a
|