view third_party/libuv/.github/workflows/CI-unix.yml @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -0700
parents 948de3f54cea
children
line wrap: on
line source

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: 30
          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-30
            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 30 ./build/uv_run_tests
            build/termux-elf-cleaner --api-level 30 ./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-24.04
    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      }
          - {target: armhf,               toolchain: gcc-arm-linux-gnueabihf,     cc: arm-linux-gnueabihf-gcc,    qemu: qemu-arm      }
          - {target: aarch64,             toolchain: gcc-aarch64-linux-gnu,       cc: aarch64-linux-gnu-gcc,      qemu: qemu-aarch64  }
          - {target: riscv64,             toolchain: gcc-riscv64-linux-gnu,       cc: riscv64-linux-gnu-gcc,      qemu: qemu-riscv64  }
          - {target: ppc,                 toolchain: gcc-powerpc-linux-gnu,       cc: powerpc-linux-gnu-gcc,      qemu: qemu-ppc      }
          - {target: ppc64,               toolchain: gcc-powerpc64-linux-gnu,     cc: powerpc64-linux-gnu-gcc,    qemu: qemu-ppc64    }
          - {target: ppc64le,             toolchain: gcc-powerpc64le-linux-gnu,   cc: powerpc64le-linux-gnu-gcc,  qemu: qemu-ppc64le  }
          - {target: s390x,               toolchain: gcc-s390x-linux-gnu,         cc: s390x-linux-gnu-gcc,        qemu: qemu-s390x    }
          - {target: mips,                toolchain: gcc-mips-linux-gnu,          cc: mips-linux-gnu-gcc,         qemu: qemu-mips     }
          - {target: mips64,              toolchain: gcc-mips64-linux-gnuabi64,   cc: mips64-linux-gnuabi64-gcc,  qemu: qemu-mips64   }
          - {target: mipsel,              toolchain: gcc-mipsel-linux-gnu,        cc: mipsel-linux-gnu-gcc,       qemu: qemu-mipsel   }
          - {target: mips64el,            toolchain: gcc-mips64el-linux-gnuabi64, cc: mips64el-linux-gnuabi64-gcc,qemu: qemu-mips64el }
          - {target: arm (u64 slots),     toolchain: gcc-arm-linux-gnueabi,       cc: arm-linux-gnueabi-gcc,      qemu: qemu-arm      }
          - {target: aarch64 (u64 slots), toolchain: gcc-aarch64-linux-gnu,       cc: aarch64-linux-gnu-gcc,      qemu: qemu-aarch64  }
          - {target: ppc (u64 slots),     toolchain: gcc-powerpc-linux-gnu,       cc: powerpc-linux-gnu-gcc,      qemu: qemu-ppc      }
          - {target: ppc64 (u64 slots),   toolchain: gcc-powerpc64-linux-gnu,     cc: powerpc64-linux-gnu-gcc,    qemu: qemu-ppc64    }

    steps:
      - uses: actions/checkout@v4
      - name: Install qemu and ${{ matrix.config.toolchain }}
        run: |
          sudo apt update
          sudo apt install qemu-user qemu-user-binfmt ${{ 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