This commit is contained in:
Mateusz Gruszczyński committed 2026-10-22 13:03:12 +02:00
1 parent feb9d91a3d
commit 1f0daa0679
25 files changed
+174 -1035

No files matched your search

+9 -5
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
set -Eeuo pipefail
source /opt/rust-package-builder/scripts/lib.sh
BUILDER_ROOT=${BUILDER_ROOT:-/opt/rust-package-builder}
source "$BUILDER_ROOT/scripts/lib.sh"
: "${SHA:?SHA required}"
: "${SRC:?SRC required}"
@@ -22,7 +23,7 @@ trap cleanup_freebsd_release EXIT
FREEBSD_BINARY="$OUT/rust-proxy-freebsd"
if [[ ! -x "$FREEBSD_BINARY" ]]; then
# Reuse the same FreeBSD cross-build as OPNsense if it succeeded first.
/opt/rust-package-builder/scripts/build-opnsense.sh "$SRC" "$FREEBSD_BINARY" "$BINARY_NAME" "$WORK"
"$BUILDER_ROOT/scripts/build-opnsense.sh" "$SRC" "$FREEBSD_BINARY" "$BINARY_NAME" "$WORK"
fi
FREEBSD_PACKAGE_REVISION=$SOURCE_REVISION
@@ -43,7 +44,7 @@ if (( FREEBSD_PACKAGE_REVISION == 0 )); then
fi
FREEBSD_PACKAGE_VERSION="${VERSION}_${FREEBSD_PACKAGE_REVISION}"
FREEBSD_PACKAGE_FILE="$OUT/rustproxy-${FREEBSD_PACKAGE_VERSION}.pkg"
/opt/rust-package-builder/scripts/package-freebsd.sh \
"$BUILDER_ROOT/scripts/package-freebsd.sh" \
"$SRC" "$FREEBSD_BINARY" "$FREEBSD_PACKAGE_FILE" "$FREEBSD_PACKAGE_VERSION"
mkdir -p "$RELEASE_DIR/apt" "$RELEASE_DIR/rpm/x86_64" "$RELEASE_DIR/opnsense" "$RELEASE_DIR/freebsd"
@@ -70,7 +71,7 @@ fi
FREEBSD_PACKAGE_DIR="$RELEASE_DIR/freebsd/$FREEBSD_ABI"
mkdir -p "$FREEBSD_PACKAGE_DIR"
cp -f "$FREEBSD_PACKAGE_FILE" "$FREEBSD_PACKAGE_DIR/"
/opt/rust-package-builder/scripts/generate-opnsense-repo.py "$RELEASE_DIR/freebsd" --retention "$FREEBSD_NATIVE_RETENTION"
"$BUILDER_ROOT/scripts/generate-opnsense-repo.py" "$RELEASE_DIR/freebsd" --retention "$FREEBSD_NATIVE_RETENTION" --repo-version 2
NATIVE_URL="${OPNSENSE_REPOSITORY_URL%/}/freebsd"
cat > "$RELEASE_DIR/freebsd/RustProxy-FreeBSD.conf" <<CONF
RustProxyNative: {
@@ -97,15 +98,18 @@ freebsd_abi=$FREEBSD_ABI
freebsd_arch=$FREEBSD_ARCH
package=$FREEBSD_ABI/$(basename "$FREEBSD_PACKAGE_FILE")
INFO
/opt/rust-package-builder/scripts/generate-freebsd-index.sh "$RELEASE_DIR/freebsd/index.html"
"$BUILDER_ROOT/scripts/generate-freebsd-index.sh" "$RELEASE_DIR/freebsd/index.html"
[[ -s "$RELEASE_DIR/freebsd/index.html" ]]
[[ -s "$RELEASE_DIR/freebsd/meta.conf" ]]
[[ -s "$RELEASE_DIR/freebsd/packagesite.pkg" ]]
[[ -s "$RELEASE_DIR/freebsd/data.pkg" ]]
grep -Fqx "version: 2;" "$RELEASE_DIR/freebsd/meta.conf" || fatal "unexpected FreeBSD pkg repository format"
[[ -s "$RELEASE_DIR/freebsd/rustproxy-latest.pkg" ]]
bsdtar -tf "$RELEASE_DIR/freebsd/packagesite.pkg" | grep -Fx 'packagesite.yaml' >/dev/null || fatal 'invalid FreeBSD packagesite.pkg'
bsdtar -xOf "$FREEBSD_PACKAGE_DIR/$(basename "$FREEBSD_PACKAGE_FILE")" +COMPACT_MANIFEST >/dev/null || fatal 'invalid FreeBSD package manifest'
# Fail before switching the live repository if the public package is missing or empty.
[[ -s "$FREEBSD_PACKAGE_DIR/$(basename "$FREEBSD_PACKAGE_FILE")" ]] || fatal 'missing FreeBSD native package artifact'
log 'publishing native FreeBSD repository branch'
rm -f "$REPOSITORY/current.new"
+4 -3
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
set -Eeuo pipefail
source /opt/rust-package-builder/scripts/lib.sh
BUILDER_ROOT=${BUILDER_ROOT:-/opt/rust-package-builder}
source "$BUILDER_ROOT/scripts/lib.sh"
SOURCE_DIR=${1:?source path required}
OUTPUT_BINARY=${2:?output binary required}
@@ -17,7 +18,7 @@ rsync -a --delete \
"$SOURCE_DIR/" "$BUILD_SOURCE/"
if [[ "${APPLY_FREEBSD_PATCHES:-1}" == "1" ]]; then
/opt/rust-package-builder/scripts/apply-freebsd-patches.sh "$BUILD_SOURCE"
"$BUILDER_ROOT/scripts/apply-freebsd-patches.sh" "$BUILD_SOURCE"
else
log "FreeBSD/OPNsense source patches disabled"
fi
@@ -29,7 +30,7 @@ export CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_RUSTFLAGS="-C link-arg=--target=x86_6
log "cross-compiling $BINARY_NAME for x86_64-unknown-freebsd${FREEBSD_TARGET_VERSION}"
cd "$BUILD_SOURCE"
FREEBSD_RUST_TOOLCHAIN=$(/opt/rust-package-builder/scripts/ensure-rust-toolchain.sh "$BUILD_SOURCE" freebsd)
FREEBSD_RUST_TOOLCHAIN=$("$BUILDER_ROOT/scripts/ensure-rust-toolchain.sh" "$BUILD_SOURCE" freebsd)
if [[ -f Cargo.lock ]]; then
cargo "+$FREEBSD_RUST_TOOLCHAIN" build --release --locked --target x86_64-unknown-freebsd
else
+1 -1
View File
@@ -146,7 +146,7 @@ FREEBSD_STATE=""
[[ -r "$DATA_DIR/state/last_linux_commit" ]] && LINUX_STATE=$(cat "$DATA_DIR/state/last_linux_commit")
[[ -r "$DATA_DIR/state/last_opnsense_commit" ]] && OPNSENSE_STATE=$(cat "$DATA_DIR/state/last_opnsense_commit")
[[ -r "$DATA_DIR/state/last_freebsd_commit" ]] && FREEBSD_STATE=$(cat "$DATA_DIR/state/last_freebsd_commit")
if [[ "$LINUX_STATE" == "$SHA" && "$OPNSENSE_STATE" == "$SHA" && ( "${FREEBSD_NATIVE_ENABLED:-0}" != "1" || "$FREEBSD_STATE" == "$SHA" ) ]]; then
if [[ "$LINUX_STATE" == "$SHA" && "$OPNSENSE_STATE" == "$SHA" && ( "${FREEBSD_NATIVE_ENABLED:-1}" != "1" || "$FREEBSD_STATE" == "$SHA" ) ]]; then
printf '%s\n' "$SHA" | atomic_write "$DATA_DIR/state/last_commit"
log "all branches complete for $SHA"
fi
+1 -1
View File
@@ -87,7 +87,7 @@ if opnsense_release_complete_for_commit "$REMOTE_SHA"; then
printf '%s\n' "$REMOTE_SHA" | atomic_write "$DATA_DIR/state/last_opnsense_commit"
fi
if [[ "${FREEBSD_NATIVE_ENABLED:-0}" == "1" ]]; then
if [[ "${FREEBSD_NATIVE_ENABLED:-1}" == "1" ]]; then
BUILD_FREEBSD=1
if freebsd_release_complete_for_commit "$REMOTE_SHA"; then
BUILD_FREEBSD=0
+4 -1
View File
@@ -16,7 +16,7 @@ FREEBSD_ARCH=${FREEBSD_ARCH:-freebsd:15:x86:64}
FREEBSD_RUST_TOOLCHAIN=${FREEBSD_RUST_TOOLCHAIN:-1.88.0}
APPLY_FREEBSD_PATCHES=${APPLY_FREEBSD_PATCHES:-1}
RUN_LINUX_TESTS=${RUN_LINUX_TESTS:-1}
FREEBSD_NATIVE_ENABLED=${FREEBSD_NATIVE_ENABLED:-0}
FREEBSD_NATIVE_ENABLED=${FREEBSD_NATIVE_ENABLED:-1}
FREEBSD_NATIVE_RETENTION=${FREEBSD_NATIVE_RETENTION:-10}
[[ "$POLL_INTERVAL" =~ ^[0-9]+$ ]] || fatal "POLL_INTERVAL must be an integer"
@@ -27,6 +27,9 @@ FREEBSD_NATIVE_RETENTION=${FREEBSD_NATIVE_RETENTION:-10}
[[ "$RUN_LINUX_TESTS" =~ ^[01]$ ]] || fatal "RUN_LINUX_TESTS must be 0 or 1"
[[ "$FREEBSD_NATIVE_ENABLED" =~ ^[01]$ ]] || fatal "FREEBSD_NATIVE_ENABLED must be 0 or 1"
[[ "$FREEBSD_NATIVE_RETENTION" =~ ^[0-9]+$ ]] || fatal "FREEBSD_NATIVE_RETENTION must be a nonnegative integer"
if [[ "$FREEBSD_NATIVE_ENABLED" != "1" ]]; then
log 'WARNING: native FreeBSD build is disabled (FREEBSD_NATIVE_ENABLED=0); no FreeBSD packages will be published'
fi
export DATA_DIR=${DATA_DIR:-/var/lib/package-builder}
export SOURCE_REPO SOURCE_BRANCH REPOSITORY_URL OPNSENSE_REPOSITORY_URL POLL_INTERVAL
+2 -1
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
set -Eeuo pipefail
source /opt/rust-package-builder/scripts/lib.sh
BUILDER_ROOT=${BUILDER_ROOT:-/opt/rust-package-builder}
source "$BUILDER_ROOT/scripts/lib.sh"
OUT=${1:?output file required}
URL="${OPNSENSE_REPOSITORY_URL%/}/freebsd"
export OUT URL FREEBSD_ABI
+4 -3
View File
@@ -91,7 +91,7 @@ def make_tar(dst: Path, member_name: str, payload: bytes):
os.replace(tmp, dst)
def rebuild(repo: Path, retention: int):
def rebuild(repo: Path, retention: int, repo_version: int = 1):
packages = collect_packages(repo)
if enforce_retention(packages, retention):
packages = collect_packages(repo)
@@ -111,7 +111,7 @@ def rebuild(repo: Path, retention: int):
make_tar(repo / "data.pkg", "data", data)
meta = (
'version: 1;\n'
f'version: {repo_version};\n'
'packing_format: "tar";\n'
'manifests: "packagesite.yaml";\n'
'manifests_archive: "packagesite";\n'
@@ -130,11 +130,12 @@ def main():
parser = argparse.ArgumentParser(description="Build a static FreeBSD pkg repository catalogue")
parser.add_argument("repo", type=Path, help="repository root")
parser.add_argument("--retention", type=int, default=10, help="versions kept per package/ABI; 0 disables pruning")
parser.add_argument("--repo-version", type=int, choices=(1, 2), default=1, help="pkg repository format; 2 for native FreeBSD 15")
args = parser.parse_args()
repo = args.repo.resolve()
repo.mkdir(parents=True, exist_ok=True)
rebuild(repo, args.retention)
rebuild(repo, args.retention, args.repo_version)
if __name__ == "__main__":
+1 -1
View File
@@ -4,7 +4,7 @@ set -Eeuo pipefail
# Increment when package payload/installation semantics change without a source commit.
PACKAGING_REVISION=5
OPNSENSE_PACKAGING_REVISION=4
FREEBSD_NATIVE_PACKAGING_REVISION=1
FREEBSD_NATIVE_PACKAGING_REVISION=2
log() {
printf '%s %s\n' "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" "$*"