Add a FreeBSD build to CI (#8269)

Playing with this because it's interesting and I learned about this cool
firecracker action.

Related #3370
This commit is contained in:
Zanie Blue 2024-10-17 10:24:21 -05:00 committed by GitHub
parent a7bb3a767c
commit 16b77e7fd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 48 additions and 2 deletions

View file

@ -551,6 +551,52 @@ jobs:
path: ${{ env.UV_WORKSPACE }}/target/debug/uv.exe
retention-days: 1
build-binary-freebsd:
needs: determine_changes
timeout-minutes: 10
if: ${{ github.repository == 'astral-sh/uv' && (needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main') }}
runs-on:
labels: ubuntu-latest
name: "build binary | freebsd"
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: "Cross build"
run: |
# Install cross from `freebsd-firecracker`
wget -q -O cross https://github.com/acj/freebsd-firecracker/releases/download/v0.0.10/cross
chmod +x cross
mv cross /usr/local/bin/cross
cross build --target x86_64-unknown-freebsd
- name: Test in Firecracker VM
uses: acj/freebsd-firecracker-action@v0.2.0
with:
verbose: false
pre-run: |
# The exclude `*` prevents examination of directories so we need to
# include each parent directory of the binary
include_path="$(mktemp)"
cat <<EOF > $include_path
target
target/x86_64-unknown-freebsd
target/x86_64-unknown-freebsd/debug
target/x86_64-unknown-freebsd/debug/uv
EOF
rsync -r -e "ssh" \
--relative \
--copy-links \
--include-from "$include_path" \
--exclude "*" \
. firecracker:
run-in-vm: |
cp target/x86_64-unknown-freebsd/debug/uv uv
chmod +x uv
./uv --version
ecosystem-test:
timeout-minutes: 10
needs: build-binary-linux

View file

@ -6,8 +6,8 @@ publish = false
[lib]
doctest = false
[target.'cfg(not(any(target_arch = "s390x", target_arch = "powerpc64")))'.dependencies]
[target.'cfg(not(any(target_arch = "s390x", target_arch = "powerpc64", target_os = "freebsd")))'.dependencies]
flate2 = { version = "1.0.28", default-features = false, features = ["zlib-ng"] }
[target.'cfg(any(target_arch = "s390x", target_arch = "powerpc64"))'.dependencies]
[target.'cfg(any(target_arch = "s390x", target_arch = "powerpc64", target_os = "freebsd"))'.dependencies]
flate2 = { version = "1.0.28", default-features = false, features = ["rust_backend"] }