Merge remote-tracking branch 'upstream/v1.x' into v1.x #57
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
container: reactnativecommunity/react-native-android:2020-5-20 | |
# Work around an issue where the node from actions/checkout is too new | |
# to run inside the long-in-the-tooth react-nactive-android container | |
# image. | |
env: | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
ANDROID_AVD_HOME: /root/.android/avd | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Envinfo | |
run: npx envinfo | |
- name: Configure android arm64 | |
# see build options you can use in https://developer.android.com/ndk/guides/cmake | |
run: | | |
mkdir build | |
cd build | |
$ANDROID_HOME/cmake/3.10.2.4988404/bin/cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_HOME/ndk/20.0.5594570/build/cmake/android.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-24 .. | |
- name: Build android arm64 | |
run: | | |
$ANDROID_HOME/cmake/3.10.2.4988404/bin/cmake --build build | |
ls -lh build | |
- name: Install Android ABI arm64-v8a | |
run: | | |
# TODO: This can be in a pre-built docker image | |
sdkmanager "build-tools;24.0.3" "platforms;android-24" "system-images;android-24;google_apis;arm64-v8a" | |
- name: Start emulator | |
run: | | |
echo no | avdmanager create avd -n test -k "system-images;android-24;google_apis;arm64-v8a" | |
adb start-server | |
emulator @test -memory 2048 -no-audio -no-window -gpu off -no-snapshot -no-boot-anim -netdelay none -netspeed full -no-snapshot-save -no-snapshot-load -writable-system & | |
adb wait-for-device | |
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 | |
- name: Test | |
run: | | |
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 |