diff --git a/README.md b/README.md index 4b10e73..3ed04b4 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ https://code.factoring.digital/api/packages/public/alpine/v3.24/alpine-packages | Package | APK Name | Package Version | Package Type | Purpose | |-----------------------------------------------------------|--------------|-----------------|----------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| -| [SeaweedFS](packaging/alpine/local/seaweedfs/README.md) | `seaweedfs` | `4.47` | Binary repackaging of official upstream release tarballs | Ships current SeaweedFS features with Alpine OpenRC role splits. | +| [SeaweedFS](packaging/alpine/local/seaweedfs/README.md) | `seaweedfs` | `4.47` | Source build from upstream release | Builds the baseline upstream feature set with Alpine OpenRC role splits. | | [GreptimeDB](packaging/alpine/local/greptimedb/README.md) | `greptimedb` | `1.2.1` | Source build from upstream release | Provides a current GreptimeDB build and component OpenRC packages before it is available from Alpine community. | | [LavinMQ](packaging/alpine/local/lavinmq/README.md) | `lavinmq` | `2.10.0` | Source build from upstream release | Provides a current LavinMQ build on Alpine 3.24 with matching Crystal support. | | [Gitea](packaging/alpine/local/gitea/README.md) | `gitea` | `1.27.3` | Binary repackaging of official upstream release binaries | Ships current Gitea releases with the expected Alpine runtime layout and OpenRC service. | diff --git a/packaging/alpine/local/seaweedfs/APKBUILD b/packaging/alpine/local/seaweedfs/APKBUILD index 2d223af..a096ef9 100644 --- a/packaging/alpine/local/seaweedfs/APKBUILD +++ b/packaging/alpine/local/seaweedfs/APKBUILD @@ -1,13 +1,13 @@ # Maintainer: Joachim Schlöffel pkgname=seaweedfs pkgver=4.47 -pkgrel=2 +pkgrel=3 pkgdesc="Distributed storage system for object storage, file systems, and Iceberg tables" url="https://github.com/seaweedfs/seaweedfs" arch="x86_64 aarch64" license="Apache-2.0" depends="ca-certificates /bin/sh" -makedepends="build-base cargo rust protobuf-dev" +makedepends="build-base cargo go protobuf-dev rust" provides="!$pkgname-openrc cmd:weed=$pkgver-r$pkgrel" install="$pkgname.pre-install" subpackages=" @@ -24,21 +24,12 @@ subpackages=" $pkgname-worker-lance:_worker_lance $pkgname-worker-lance-openrc:_openrc_worker_lance:noarch " -options="!check !strip !tracedeps" - -case "$CARCH" in - x86_64) - _archive="$pkgname-$pkgver-linux-amd64.tar.gz" - ;; - aarch64) - _archive="$pkgname-$pkgver-linux-arm64.tar.gz" - ;; -esac +options="!strip !tracedeps" source=" - $pkgname-$pkgver-linux-amd64.tar.gz::https://github.com/seaweedfs/seaweedfs/releases/download/$pkgver/linux_amd64.tar.gz - $pkgname-$pkgver-linux-arm64.tar.gz::https://github.com/seaweedfs/seaweedfs/releases/download/$pkgver/linux_arm64.tar.gz $pkgname-$pkgver-src.tar.gz::https://github.com/seaweedfs/seaweedfs/archive/refs/tags/$pkgver.tar.gz + $pkgname-$pkgver-go-vendor.tar.gz + $pkgname-$pkgver-cargo-vendor.tar.gz admin.toml credential.toml example-admin.toml @@ -66,22 +57,31 @@ source=" weed.bash-completion " -builddir="$srcdir" -_worker_builddir="$builddir/$pkgname-$pkgver/seaweed-worker" +_worker_builddir="$srcdir/$pkgname-$pkgver/seaweed-worker" prepare() { default_prepare - tar -xzf "$srcdir/$_archive" -C "$builddir" - tar -xzf "$srcdir/$pkgname-$pkgver-src.tar.gz" -C "$builddir" + tar -xzf "$srcdir/$pkgname-$pkgver-go-vendor.tar.gz" -C "$builddir" + tar -xzf "$srcdir/$pkgname-$pkgver-cargo-vendor.tar.gz" -C "$_worker_builddir" + mkdir -p "$_worker_builddir/.cargo" + mv "$_worker_builddir/cargo-vendor-config.toml" "$_worker_builddir/.cargo/config.toml" } build() { + go build -mod=vendor -buildvcs=false -trimpath -o "$builddir/weed-bin" ./weed + cd "$_worker_builddir" - cargo build --locked --release -p weed-lance-worker + cargo build --frozen --locked --release -p weed-lance-worker +} + +check() { + "$builddir/weed-bin" version + "$builddir/weed-bin" scaffold -config master >/dev/null + "${CARGO_TARGET_DIR:-$_worker_builddir/target}/release/weed-worker" --help >/dev/null } package() { - install -Dm755 "$srcdir"/weed "$pkgdir"/usr/bin/weed + install -Dm755 "$builddir"/weed-bin "$pkgdir"/usr/bin/weed install -Dm755 "${CARGO_TARGET_DIR:-$_worker_builddir/target}/release/weed-worker" \ "$pkgdir"/usr/bin/weed-worker local _config @@ -137,9 +137,9 @@ _bashcomp() { } sha512sums=" -f2e90fac760ac93951becce0314fa27aa69308a538a14d9066635d64c5fca07eababdbd41f5bb2215ba5793bf14fa2c019163438467aab2cf5bfea7f204f3faa seaweedfs-4.47-linux-amd64.tar.gz -a3e44542fa6e0f1266dea998a50120325c67a448d2cf09ad370a6d147f3d6096363fea57a056b2bd38d5b0674f4b2695644eed7e93110542efdc03fd8b5cde9e seaweedfs-4.47-linux-arm64.tar.gz b04ed6a4d16a016d08179a85fb0d4a7cf9de354f39820f8590a92384f5c750236f690a2110e9c33ba253564eadc02f639a329754f48b5d213c9c117c4ba46578 seaweedfs-4.47-src.tar.gz +94ad27f6ef7e94eeefc3e2be8c95e7e9d3839e0257e797b57a595f9eb87039fb1379c6cbd568d39fcc2b324d1bb4f350ece6e04e2d724691efecc1eeb5f7e42e seaweedfs-4.47-go-vendor.tar.gz +924ff6649fb1caeac02c604d31e26eee294fbb902ed7f6410467530e83e5aa4c2a5f06849ce89a0fe4da5cd4e269d4e7395d020b6529094fc8c762ec31fb6b83 seaweedfs-4.47-cargo-vendor.tar.gz 58be6587b082f45b4dd22ad8ebb1b8bf84cea2a7c0cb6b4ad4a749ac0bfdf92d10d22281a432f9e5a87afa0b940cd0172671a292fbe17803e56425cd940d47f9 admin.toml 7f77ad8787629e3defbc89e39e5432482aa50d87ddd723de927a9c6c77b14b1673cbf5b3fc3c18dd7d0eba26fbcd4220d2da6939ed097d0294b24ccd5c002635 credential.toml 507b389f6373b5f4d8ca69f27bc806b39bda8edf7f58e4f32720958e7782ee171dd0461bdecb285e5a8bf2cf4ea3d6cbe8b62ae6ac43c2a40d0eb053d50a22f8 example-admin.toml diff --git a/packaging/alpine/local/seaweedfs/README.md b/packaging/alpine/local/seaweedfs/README.md index 78c8b4d..661bf23 100644 --- a/packaging/alpine/local/seaweedfs/README.md +++ b/packaging/alpine/local/seaweedfs/README.md @@ -1,13 +1,18 @@ # SeaweedFS Alpine Package -Repackages official SeaweedFS 4.47 Linux release tarballs for `x86_64` and -`aarch64`. +Builds SeaweedFS 4.47 from its upstream source release for `x86_64` and +`aarch64`. The package intentionally builds the upstream baseline feature set, +without optional build tags. Versioned Go and Cargo vendor archives make the +build fully offline after source retrieval. ## Package Commands -Refresh generated sources: +When updating SeaweedFS, refresh the vendor archives before generating the +config scaffolds and checksums: ```sh +PACKAGE_DIR=packaging/alpine/local/seaweedfs \ + packaging/alpine/local/seaweedfs/scripts/update-vendor-sources.sh ALPINE_PACKAGE=seaweedfs mise run apk:update-generated ALPINE_PACKAGE=seaweedfs mise run apk:checksum ``` @@ -140,5 +145,5 @@ rc-service seaweedfs.master restart Pin: ```sh -apk add seaweedfs=4.47-r2 +apk add seaweedfs=4.47-r3 ``` diff --git a/packaging/alpine/local/seaweedfs/scripts/update-generated-sources.sh b/packaging/alpine/local/seaweedfs/scripts/update-generated-sources.sh index 067363e..419aec2 100755 --- a/packaging/alpine/local/seaweedfs/scripts/update-generated-sources.sh +++ b/packaging/alpine/local/seaweedfs/scripts/update-generated-sources.sh @@ -13,23 +13,13 @@ cleanup() { } trap cleanup EXIT -case "$(uname -m)" in - x86_64) - archive="linux_amd64.tar.gz" - ;; - aarch64|arm64) - archive="linux_arm64.tar.gz" - ;; - *) - printf 'unsupported host architecture for SeaweedFS generated sources: %s\n' "$(uname -m)" >&2 - exit 2 - ;; -esac - curl -fsSL \ - -o "${tmpdir}/${archive}" \ - "https://github.com/seaweedfs/seaweedfs/releases/download/${pkgver}/${archive}" -tar -xzf "${tmpdir}/${archive}" -C "${tmpdir}" weed + -o "${tmpdir}/seaweedfs-${pkgver}-src.tar.gz" \ + "https://github.com/seaweedfs/seaweedfs/archive/refs/tags/${pkgver}.tar.gz" +tar -xzf "${tmpdir}/seaweedfs-${pkgver}-src.tar.gz" -C "${tmpdir}" +source_dir="${tmpdir}/seaweedfs-${pkgver}" +tar -xzf "${package_dir}/seaweedfs-${pkgver}-go-vendor.tar.gz" -C "${source_dir}" +go build -mod=vendor -buildvcs=false -trimpath -o "${tmpdir}/weed" "${source_dir}/weed" for config in "${configs[@]}"; do "${tmpdir}/weed" scaffold -config "${config}" 2>/dev/null \ diff --git a/packaging/alpine/local/seaweedfs/scripts/update-vendor-sources.sh b/packaging/alpine/local/seaweedfs/scripts/update-vendor-sources.sh new file mode 100755 index 0000000..14509c9 --- /dev/null +++ b/packaging/alpine/local/seaweedfs/scripts/update-vendor-sources.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +package_dir="${PACKAGE_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}" +pkgver="$(awk -F= '$1 == "pkgver" { print $2; exit }' "${package_dir}/APKBUILD")" +tmpdir="$(mktemp -d)" + +cleanup() { + rm -rf "${tmpdir}" +} +trap cleanup EXIT + +curl -fsSL \ + -o "${tmpdir}/seaweedfs-${pkgver}-src.tar.gz" \ + "https://github.com/seaweedfs/seaweedfs/archive/refs/tags/${pkgver}.tar.gz" +tar -xzf "${tmpdir}/seaweedfs-${pkgver}-src.tar.gz" -C "${tmpdir}" +source_dir="${tmpdir}/seaweedfs-${pkgver}" + +( + cd "${source_dir}" + go mod vendor +) +( + cd "${source_dir}/seaweed-worker" + cargo vendor --locked vendor > cargo-vendor-config.toml +) + +tar --sort=name --mtime='@0' --owner=0 --group=0 --numeric-owner \ + -C "${source_dir}" -czf "${package_dir}/seaweedfs-${pkgver}-go-vendor.tar.gz" vendor +tar --sort=name --mtime='@0' --owner=0 --group=0 --numeric-owner \ + -C "${source_dir}/seaweed-worker" \ + -czf "${package_dir}/seaweedfs-${pkgver}-cargo-vendor.tar.gz" \ + vendor cargo-vendor-config.toml diff --git a/packaging/alpine/local/seaweedfs/seaweedfs-4.47-cargo-vendor.tar.gz b/packaging/alpine/local/seaweedfs/seaweedfs-4.47-cargo-vendor.tar.gz new file mode 100644 index 0000000..c181d1f Binary files /dev/null and b/packaging/alpine/local/seaweedfs/seaweedfs-4.47-cargo-vendor.tar.gz differ diff --git a/packaging/alpine/local/seaweedfs/seaweedfs-4.47-go-vendor.tar.gz b/packaging/alpine/local/seaweedfs/seaweedfs-4.47-go-vendor.tar.gz new file mode 100644 index 0000000..8ac82fa Binary files /dev/null and b/packaging/alpine/local/seaweedfs/seaweedfs-4.47-go-vendor.tar.gz differ