Remove GitHub workflow metadata
ober
8efec21e62d1b4e2d309029435278c740d4f0cfe
deleted file mode 100644 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,402 +0,0 @@ -name: CI - -on: - push: - branches: [master] - pull_request: - -permissions: - contents: read - -env: - CHEZ_COMMIT: a4be658a9ff07fcbc3b578aad28aec317422862c - CHEZ_TREE: 01874bbc9251758570fa05fe093a2ae49d04100b - FREEBSD_BASE_SHA256: 769f60a6eea2938ad6b7943cfbcc17dfaf7d1f7ba59a32b869a00349302df853 - ZIG_SHA256: d45312e61ebcc48032b77bc4cf7fd6915c11fa16e4aad116b66c9468211230ea - CARGO_ZIGBUILD_SHA256: 9fd7d8136cbf7ab2ae44c046f4985c7a1aa6e2ed483187396df0076bedfa196b - -jobs: - test: - runs-on: ubuntu-latest - container: - image: jerboa21/jerboa@sha256:9c4034f1296601d5a9f7b219a0decdd5d62862a2be4347976b3d96b13ed7701e - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Run unit tests - run: make test JERBOA=/build/mine/jerboa/lib SCHEME=scheme - - rust-musl: - runs-on: ubuntu-latest - container: - image: jerboa21/jerboa@sha256:9c4034f1296601d5a9f7b219a0decdd5d62862a2be4347976b3d96b13ed7701e - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Cache Rust registry - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: ~/.cargo/registry - key: rust-musl-${{ hashFiles('patches/regex_native.rs', 'rust-coreutils/Cargo.lock') }} - restore-keys: rust-musl- - - name: Build Rust libs (x86_64-musl) - run: | - cd /build/mine/jerboa/jerboa-native-rs - cp $GITHUB_WORKSPACE/patches/regex_native.rs src/regex_native.rs - grep -q '#[cfg(feature = "duckdb")]' src/lib.rs || \ - sed -i 's/^mod duckdb_native;/#[cfg(feature = "duckdb")]\nmod duckdb_native;/' src/lib.rs - RUSTFLAGS="--remap-path-prefix $HOME/.cargo/registry/src=crate" \ - cargo build --locked --release --target x86_64-unknown-linux-musl --no-default-features --features "tls crypto sqlite" - strip -S target/x86_64-unknown-linux-musl/release/libjerboa_native.a - cp target/x86_64-unknown-linux-musl/release/libjerboa_native.a $GITHUB_WORKSPACE/ - - cd $GITHUB_WORKSPACE/rust-coreutils - RUSTFLAGS="--remap-path-prefix $HOME/.cargo/registry/src=crate" \ - cargo build --locked --release --target x86_64-unknown-linux-musl - strip -S target/x86_64-unknown-linux-musl/release/libjsh_coreutils.a - cp target/x86_64-unknown-linux-musl/release/libjsh_coreutils.a $GITHUB_WORKSPACE/ - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: rust-libs-musl - path: | - libjerboa_native.a - libjsh_coreutils.a - retention-days: 7 - - rust-freebsd: - runs-on: ubuntu-latest - container: - image: jerboa21/jerboa@sha256:9c4034f1296601d5a9f7b219a0decdd5d62862a2be4347976b3d96b13ed7701e - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Cache Rust registry - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: ~/.cargo/registry - key: rust-freebsd-${{ hashFiles('patches/regex_native.rs', 'rust-coreutils/Cargo.lock') }} - restore-keys: rust-freebsd- - - name: Install FreeBSD cross target - run: rustup target add x86_64-unknown-freebsd - - name: Cache FreeBSD sysroot - id: cache-freebsd-sysroot - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: /opt/freebsd-sysroot - key: freebsd-sysroot-14.4-v1 - - name: Install FreeBSD sysroot link libs - if: steps.cache-freebsd-sysroot.outputs.cache-hit != 'true' - run: | - # Some transitive deps (e.g. crc-fast via uucore) declare cdylib and - # therefore need the FreeBSD link libs (libexecinfo, libkvm, ...). - # Extract just the libs from the FreeBSD 14.4 base release tarball. - # 14.0 was removed from download.freebsd.org; 14.4 is the latest 14.x. - command -v curl >/dev/null || (apt-get update -qq && apt-get install -y -qq curl xz-utils) - mkdir -p /opt/freebsd-sysroot - curl -fsSL --retry 3 -o /tmp/freebsd-base.txz \ - https://download.freebsd.org/releases/amd64/14.4-RELEASE/base.txz - echo "$FREEBSD_BASE_SHA256 /tmp/freebsd-base.txz" | sha256sum -c - - tar -xJf /tmp/freebsd-base.txz -C /opt/freebsd-sysroot ./lib ./usr/lib - rm -f /tmp/freebsd-base.txz - - name: Build Rust libs (x86_64-freebsd) - run: | - # libc.so on FreeBSD is a linker script that references /lib/libc.so.7 - # and /usr/lib/libc_nonshared.a as ABSOLUTE paths. Plain `-L` flags - # don't redirect absolute paths — only `--sysroot` does. Without it, - # ld looks at the host's /lib/libc.so.7 (which doesn't exist on the - # Linux runner) and the link fails. - SYSROOT_FLAGS="-C link-arg=--sysroot=/opt/freebsd-sysroot" - LIB_FLAGS="-L /opt/freebsd-sysroot/usr/lib -L /opt/freebsd-sysroot/lib" - - cd /build/mine/jerboa/jerboa-native-rs - cp $GITHUB_WORKSPACE/patches/regex_native.rs src/regex_native.rs - grep -q '#[cfg(feature = "duckdb")]' src/lib.rs || \ - sed -i 's/^mod duckdb_native;/#[cfg(feature = "duckdb")]\nmod duckdb_native;/' src/lib.rs - # Drop cdylib for jerboa-native: only the static .a is needed by jsh-freebsd. - sed -i 's/^crate-type = \["cdylib", "staticlib"\]/crate-type = ["staticlib"]/' Cargo.toml - RUSTFLAGS="--remap-path-prefix $HOME/.cargo/registry/src=crate $SYSROOT_FLAGS $LIB_FLAGS" \ - cargo build --locked --release --target x86_64-unknown-freebsd --no-default-features - strip -S target/x86_64-unknown-freebsd/release/libjerboa_native.a - cp target/x86_64-unknown-freebsd/release/libjerboa_native.a $GITHUB_WORKSPACE/ - - cd $GITHUB_WORKSPACE/rust-coreutils - RUSTFLAGS="--remap-path-prefix $HOME/.cargo/registry/src=crate $SYSROOT_FLAGS $LIB_FLAGS" \ - cargo build --locked --release --target x86_64-unknown-freebsd - strip -S target/x86_64-unknown-freebsd/release/libjsh_coreutils.a - cp target/x86_64-unknown-freebsd/release/libjsh_coreutils.a $GITHUB_WORKSPACE/ - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: rust-libs-freebsd - path: | - libjerboa_native.a - libjsh_coreutils.a - retention-days: 7 - - rust-android: - runs-on: ubuntu-latest - container: - image: jerboa21/jerboa@sha256:9c4034f1296601d5a9f7b219a0decdd5d62862a2be4347976b3d96b13ed7701e - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Cache Rust registry - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: ~/.cargo/registry - key: rust-android-${{ hashFiles('patches/regex_native.rs', 'rust-coreutils/Cargo.lock') }} - restore-keys: rust-android- - - name: Install Android cross target - run: rustup target add aarch64-unknown-linux-musl - - name: Cache zig + cargo-zigbuild - id: cache-zig - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: | - /opt/zig - /usr/local/bin/cargo-zigbuild - key: zig-0.13.0-zigbuild-0.22.3 - - name: Install zig + cargo-zigbuild - if: steps.cache-zig.outputs.cache-hit != 'true' - shell: bash - run: | - # Use zig as the cross-linker for aarch64-linux-musl. Zig bundles its - # own musl libc/headers and downloads from ziglang.org / GitHub release - # mirrors which are far more reliable than musl.cc (which routinely - # times out from GitHub runners). cargo-zigbuild wraps cargo to use - # zig as the linker, transparently handling musl cross-link. - command -v curl >/dev/null || (apt-get update -qq && apt-get install -y -qq curl xz-utils) - mkdir -p /opt/zig - ZIG_VERSION=0.13.0 - curl -fsSL --retry 5 --retry-delay 5 --max-time 300 \ - "https://ziglang.org/download/${ZIG_VERSION}/zig-linux-x86_64-${ZIG_VERSION}.tar.xz" \ - -o /tmp/zig.tar.xz - echo "$ZIG_SHA256 /tmp/zig.tar.xz" | sha256sum -c - - tar -xJf /tmp/zig.tar.xz -C /opt/zig --strip-components=1 - rm -f /tmp/zig.tar.xz - # Pre-built cargo-zigbuild binary (avoid 5-min cargo install build) - ZIGBUILD_VERSION=0.22.3 - curl -fsSL --retry 5 --retry-delay 5 --max-time 300 \ - "https://github.com/rust-cross/cargo-zigbuild/releases/download/v${ZIGBUILD_VERSION}/cargo-zigbuild-x86_64-unknown-linux-musl.tar.xz" \ - -o /tmp/cargo-zigbuild.tar.xz - echo "$CARGO_ZIGBUILD_SHA256 /tmp/cargo-zigbuild.tar.xz" | sha256sum -c - - tar -xJf /tmp/cargo-zigbuild.tar.xz -C /usr/local/bin/ - rm -f /tmp/cargo-zigbuild.tar.xz - - name: Build Rust libs (aarch64-musl) - run: | - export PATH=/opt/zig:/usr/local/bin:$PATH - cd /build/mine/jerboa/jerboa-native-rs - cp $GITHUB_WORKSPACE/patches/regex_native.rs src/regex_native.rs - grep -q '#[cfg(feature = "duckdb")]' src/lib.rs || \ - sed -i 's/^mod duckdb_native;/#[cfg(feature = "duckdb")]\nmod duckdb_native;/' src/lib.rs - sed -i '/SYS_LANDLOCK_RESTRICT_SELF.*446;$/a\\n#[cfg(target_arch = "aarch64")]\nconst SYS_LANDLOCK_CREATE_RULESET: libc::c_long = 444;\n#[cfg(target_arch = "aarch64")]\nconst SYS_LANDLOCK_ADD_RULE: libc::c_long = 445;\n#[cfg(target_arch = "aarch64")]\nconst SYS_LANDLOCK_RESTRICT_SELF: libc::c_long = 446;' src/landlock.rs - # Drop cdylib for cross-compile: only the static .a is needed by jsh-android. - sed -i 's/^crate-type = \["cdylib", "staticlib"\]/crate-type = ["staticlib"]/' Cargo.toml - RUSTFLAGS="--remap-path-prefix $HOME/.cargo/registry/src=crate" \ - cargo zigbuild --locked --release --target aarch64-unknown-linux-musl --no-default-features - strip -S target/aarch64-unknown-linux-musl/release/libjerboa_native.a - cp target/aarch64-unknown-linux-musl/release/libjerboa_native.a $GITHUB_WORKSPACE/ - - cd $GITHUB_WORKSPACE/rust-coreutils - RUSTFLAGS="--remap-path-prefix $HOME/.cargo/registry/src=crate" \ - cargo zigbuild --locked --release --target aarch64-unknown-linux-musl - strip -S target/aarch64-unknown-linux-musl/release/libjsh_coreutils.a - cp target/aarch64-unknown-linux-musl/release/libjsh_coreutils.a $GITHUB_WORKSPACE/ - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: rust-libs-android - path: | - libjerboa_native.a - libjsh_coreutils.a - retention-days: 7 - - build: - needs: rust-musl - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: rust-libs-musl - path: prebuilt/ - - name: Install Podman - run: | - sudo apt-get update - sudo apt-get install -y podman - podman --version - - name: Build jsh-musl (Podman, pre-built Rust libs injected) - run: | - make podman \ - JSH_PREBUILT_NATIVE=prebuilt/libjerboa_native.a \ - JSH_PREBUILT_COREUTILS=prebuilt/libjsh_coreutils.a - - name: Verify binary - run: | - ls -lh jsh-musl - file jsh-musl - cat jsh-musl.sha256 - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: jsh-musl - path: | - jsh-musl - jsh-musl.sha256 - if-no-files-found: error - retention-days: 30 - - build-freebsd: - needs: rust-freebsd - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: rust-libs-freebsd - path: prebuilt/ - - name: Install Podman - run: | - sudo apt-get update - sudo apt-get install -y podman - podman --version - - name: Build jsh-freebsd (Podman, pre-built Rust libs injected) - run: | - make freebsd-podman \ - JSH_PREBUILT_NATIVE=prebuilt/libjerboa_native.a \ - JSH_PREBUILT_COREUTILS=prebuilt/libjsh_coreutils.a - - name: Verify binary - run: | - ls -lh jsh-freebsd - file jsh-freebsd - cat jsh-freebsd.sha256 - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: jsh-freebsd - path: | - jsh-freebsd - jsh-freebsd.sha256 - if-no-files-found: error - retention-days: 30 - - build-android: - needs: rust-android - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Install Podman and QEMU - run: | - sudo apt-get update - sudo apt-get install -y podman qemu-user-static binfmt-support - sudo update-binfmts --enable qemu-aarch64 || true - podman --version - - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - name: rust-libs-android - path: prebuilt/ - - name: Build jsh-android (Podman, pre-built Rust libs injected) - run: | - make android-podman \ - JSH_PREBUILT_NATIVE=prebuilt/libjerboa_native.a \ - JSH_PREBUILT_COREUTILS=prebuilt/libjsh_coreutils.a - - name: Verify binary - run: | - ls -lh jsh-android - file jsh-android - cat jsh-android.sha256 - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: jsh-android - path: | - jsh-android - jsh-android.sha256 - if-no-files-found: error - retention-days: 30 - - build-macos: - runs-on: macos-latest - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Install dependencies - run: | - brew install openssl@3 lz4 - echo "PKG_CONFIG_PATH=$(brew --prefix openssl@3)/lib/pkgconfig" >> $GITHUB_ENV - - name: Cache our Chez Scheme install - id: cache-chez - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: | - /opt/homebrew/lib/csv10.4.0-pre-release.4 - /opt/homebrew/bin/scheme - /opt/homebrew/bin/petite - /opt/homebrew/bin/scheme-script - key: chez-macos-arm64-${{ env.CHEZ_COMMIT }} - - name: Build our Chez Scheme fork - if: steps.cache-chez.outputs.cache-hit != 'true' - run: | - # jerboa-shell needs ober/ChezScheme (10.4.0-pre-release.4+) which adds - # base64-encode/decode, sha256-bytevector, etc. Stock Cisco Chez 10.3 - # and Homebrew chezscheme are too old. - git init /tmp/ChezScheme - git -C /tmp/ChezScheme remote add origin https://github.com/ober/ChezScheme.git - git -C /tmp/ChezScheme fetch --depth 1 origin "$CHEZ_COMMIT" - git -C /tmp/ChezScheme checkout --detach FETCH_HEAD - test "$(git -C /tmp/ChezScheme rev-parse HEAD)" = "$CHEZ_COMMIT" - test "$(git -C /tmp/ChezScheme rev-parse 'HEAD^{tree}')" = "$CHEZ_TREE" - cd /tmp/ChezScheme - ./configure --installprefix=/opt/homebrew - make -j$(sysctl -n hw.ncpu) - sudo make install - - name: Verify Chez Scheme - run: | - which scheme - scheme --version - echo '(display (top-level-bound? (quote base64-encode))) (newline)' | scheme --script /dev/stdin - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@8fae6aadcd3e1a6f3fcb446ce7f9438c9d1349f1 # 1.94.1 - with: - toolchain: 1.94.1 - - name: Cache Rust registry - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: ~/.cargo/registry - key: rust-macos-${{ hashFiles('patches/regex_native.rs', 'rust-coreutils/Cargo.lock') }} - restore-keys: rust-macos- - - name: Build jsh-macos - run: make jsh-macos - - name: Smoke-test binary - run: | - ls -lh jsh-macos - ./jsh-macos -c 'echo ok' - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - with: - name: jsh-macos - path: | - jsh-macos - jsh-macos.sha256 - if-no-files-found: error - retention-days: 30 - - release: - needs: [test, build, build-freebsd, build-android, build-macos] - if: github.ref == 'refs/heads/master' && github.event_name == 'push' - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - name: Enforce committed satellite source identities - run: sh support/check-source-release.sh - - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 - with: - path: artifacts - merge-multiple: true - - name: Update rolling 'latest' release - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - TAG=latest - gh release view "$TAG" --repo "${{ github.repository }}" >/dev/null 2>&1 || \ - gh release create "$TAG" \ - --repo "${{ github.repository }}" \ - --title "Latest static jsh binaries" \ - --notes "Auto-built by CI from latest master commit." \ - --target master - gh release upload "$TAG" \ - artifacts/jsh-musl artifacts/jsh-musl.sha256 \ - artifacts/jsh-freebsd artifacts/jsh-freebsd.sha256 \ - artifacts/jsh-android artifacts/jsh-android.sha256 \ - artifacts/jsh-macos artifacts/jsh-macos.sha256 \ - --repo "${{ github.repository }}" --clobber