diff --git a/.gitea/workflows/package-status.yml b/.gitea/workflows/package-status.yml index 09fdc8f..82b1aad 100644 --- a/.gitea/workflows/package-status.yml +++ b/.gitea/workflows/package-status.yml @@ -16,7 +16,7 @@ jobs: - name: Check packaged upstream versions run: | - apk add --no-cache bash curl git jq + apk add --no-cache --update abuild-rootbld alpine-sdk bash ca-certificates doas git nodejs sudo curl git jq docker APK_UPDATE_CHECK_MODE=warn scripts/apk/outdated.sh > update-check.txt cat update-check.txt if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then diff --git a/mise.lock b/mise.lock index a52637a..0032c34 100644 --- a/mise.lock +++ b/mise.lock @@ -43,31 +43,31 @@ url = "https://github.com/nektos/act/releases/download/v0.2.89/act_Windows_x86_6 url_api = "https://api.github.com/repos/nektos/act/releases/assets/434891261" [[tools.docker-cli]] -version = "29.8.1" +version = "29.8.2" backend = "aqua:docker/cli" specifiers = ["latest"] [tools.docker-cli."platforms.linux-arm64"] -url = "https://download.docker.com/linux/static/stable/aarch64/docker-29.8.1.tgz" +url = "https://download.docker.com/linux/static/stable/aarch64/docker-29.8.2.tgz" [tools.docker-cli."platforms.linux-arm64-musl"] -url = "https://download.docker.com/linux/static/stable/aarch64/docker-29.8.1.tgz" +url = "https://download.docker.com/linux/static/stable/aarch64/docker-29.8.2.tgz" [tools.docker-cli."platforms.linux-x64"] -checksum = "blake3:b3c6e46dfca03af898b43595c488aab73adb867f0352f486388d9ef41933b0e6" -url = "https://download.docker.com/linux/static/stable/x86_64/docker-29.8.1.tgz" +checksum = "blake3:3a70b254f51e6a0fb384e1d93bc859c19b975ae979abbec968e378f79335da5d" +url = "https://download.docker.com/linux/static/stable/x86_64/docker-29.8.2.tgz" [tools.docker-cli."platforms.linux-x64-musl"] -url = "https://download.docker.com/linux/static/stable/x86_64/docker-29.8.1.tgz" +url = "https://download.docker.com/linux/static/stable/x86_64/docker-29.8.2.tgz" [tools.docker-cli."platforms.macos-arm64"] -url = "https://download.docker.com/mac/static/stable/aarch64/docker-29.8.1.tgz" +url = "https://download.docker.com/mac/static/stable/aarch64/docker-29.8.2.tgz" [tools.docker-cli."platforms.macos-x64"] -url = "https://download.docker.com/mac/static/stable/x86_64/docker-29.8.1.tgz" +url = "https://download.docker.com/mac/static/stable/x86_64/docker-29.8.2.tgz" [tools.docker-cli."platforms.windows-x64"] -url = "https://download.docker.com/win/static/stable/x86_64/docker-29.8.1.zip" +url = "https://download.docker.com/win/static/stable/x86_64/docker-29.8.2.zip" [[tools.jq]] version = "1.8.2" @@ -157,48 +157,48 @@ url = "https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellche url_api = "https://api.github.com/repos/koalaman/shellcheck/releases/assets/279056944" [[tools.trivy]] -version = "0.74.0" +version = "0.75.0" backend = "aqua:aquasecurity/trivy" specifiers = ["latest"] [tools.trivy."platforms.linux-arm64"] -checksum = "sha256:b94ce1976bbf3c15b514b605ee88be7c6d94a29be2302847ff01cb794d47aad5" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_Linux-ARM64.tar.gz" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339429" +checksum = "sha256:a1ee9f6ffb7d112b64ff726a2a0717c21175c1114361391f4a132956751a13b3" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_Linux-ARM64.tar.gz" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335583" provenance = "cosign" [tools.trivy."platforms.linux-arm64-musl"] -checksum = "sha256:b94ce1976bbf3c15b514b605ee88be7c6d94a29be2302847ff01cb794d47aad5" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_Linux-ARM64.tar.gz" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339429" +checksum = "sha256:a1ee9f6ffb7d112b64ff726a2a0717c21175c1114361391f4a132956751a13b3" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_Linux-ARM64.tar.gz" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335583" provenance = "cosign" [tools.trivy."platforms.linux-x64"] -checksum = "sha256:2ae6fe3ee734b7fdf11335663e18c75ea12dccc76062f09f164a3b0f8be4371a" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_Linux-64bit.tar.gz" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339431" +checksum = "sha256:c6e65abddb348e25f10549df887045629cf28cc72453cd1c63acb717316b3f3f" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_Linux-64bit.tar.gz" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335432" provenance = "cosign" [tools.trivy."platforms.linux-x64-musl"] -checksum = "sha256:2ae6fe3ee734b7fdf11335663e18c75ea12dccc76062f09f164a3b0f8be4371a" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_Linux-64bit.tar.gz" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339431" +checksum = "sha256:c6e65abddb348e25f10549df887045629cf28cc72453cd1c63acb717316b3f3f" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_Linux-64bit.tar.gz" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335432" provenance = "cosign" [tools.trivy."platforms.macos-arm64"] -checksum = "sha256:1caada5e0e2091909357c7525d3aa76f4b660b13821bc143b190c7483e31cc11" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_macOS-ARM64.tar.gz" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339464" +checksum = "sha256:4a77108cccf8e55c8d6823e1e759939a622277e66cd0daa3c1fc621ed69e4568" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_macOS-ARM64.tar.gz" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335435" provenance = "cosign" [tools.trivy."platforms.macos-x64"] -checksum = "sha256:472816f6888dda689d075c30254d4210b4d1035acf365aa72332f584c2f60485" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_macOS-64bit.tar.gz" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339388" +checksum = "sha256:291edaa9778acbe4693d067b5ad60ee11570e5ac68296e85595417528ca641e4" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_macOS-64bit.tar.gz" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335728" provenance = "cosign" [tools.trivy."platforms.windows-x64"] -checksum = "sha256:94c40e0696e4b907a74b7b2e1438d5d72ebaca83115817407f568a002d520842" -url = "https://github.com/aquasecurity/trivy/releases/download/v0.74.0/trivy_0.74.0_windows-64bit.zip" -url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/514339469" +checksum = "sha256:4e43bd71a30f51aee39525f60f2b47043af77eb8df8fe082aae4372b69c6660f" +url = "https://github.com/aquasecurity/trivy/releases/download/v0.75.0/trivy_0.75.0_windows-64bit.zip" +url_api = "https://api.github.com/repos/aquasecurity/trivy/releases/assets/603335433" provenance = "cosign" diff --git a/packaging/alpine/local/gitea/APKBUILD b/packaging/alpine/local/gitea/APKBUILD index 2aa1624..518b5e1 100644 --- a/packaging/alpine/local/gitea/APKBUILD +++ b/packaging/alpine/local/gitea/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: Joachim Schlöffel pkgname=gitea -pkgver=1.27.3 +pkgver=28.0.0 pkgrel=0 pkgdesc="Self-hosted Git service written in Go" url="https://about.gitea.com/" @@ -69,9 +69,9 @@ _openrc() { } sha512sums=" -67974010369075d56d219b5daaaf3258d0897e94ab62727f68ab2e98f56a4b64f8f0358183c49fe3e60c8a54a1ff1cbdaf6d172e219452fed161d6e828a65917 gitea-1.27.3-linux-amd64.xz -28239b94b3d84162e50a49286cb495d005b92725a8359a54d8b5a6d75af689c84805eb110e558112c525c67636ef38ecaaa3f49a99a552d0253b97f4ec96d1c5 gitea-1.27.3-linux-arm64.xz -8b22b5b9cb9578a6f228ed2ab87999292a5b283424932b88c6eb97634ca43e142b53d13602b9f1bb8db3d61eddcd83e9f329149cafc2fcf3c1209ca108283ef6 gitea-src-1.27.3.tar.gz -431184faffa8996873d92d7b0d16bc4b1a0178d264cd2928d1f49b13ad3e6470d9ede7a18c12112deeeb38f0647ccc0b012e98bcbd96e7b8496a3dc18f5b1fb7 gitea.ini +434eedf3cf9348b708d15170f3f47486e20253ef607ef5e4c8494e5a833342c1580179d6de6b8b29278fc2d570d24380ace142530102d0e14644891ff0e7bd4d gitea-28.0.0-linux-amd64.xz +a11dc1fff26d6e43541cbfa827be5cb95cec5b0336c944a1bbd294fdc212ca5eac983892879f453f3ab7eb0ddb7ea812a37c7e5aab2b8e1f886a3c790741e802 gitea-28.0.0-linux-arm64.xz +bd5b600754388c6fe15ee91929231e804c74f4e694f892904e363ac9b923e9957c1f4f3a2489e216b7b05763022d6b8fdb9e01a49271c6f64313277a9a304797 gitea-src-28.0.0.tar.gz +4e20b24c34af01a27589a13d9140d559909cc44507febe5de692d7bc154d65f4b01b79d2f1dcce9fed77b60ac3b1a52cc0ec72161e5a2484a4c718d26d3c630d gitea.ini 9474d707df8b049c93ec4642f71195adff699e1e812f315cac4295b3ab29eeb9ba8b83bf3307c50b04e072a4a9dc4c4f84ac490ee22291bd50015009795c1598 gitea.initd " diff --git a/packaging/alpine/local/gitea/gitea.ini b/packaging/alpine/local/gitea/gitea.ini index 308c4f3..4838750 100644 --- a/packaging/alpine/local/gitea/gitea.ini +++ b/packaging/alpine/local/gitea/gitea.ini @@ -1,4 +1,5 @@ -# Configuration cheat sheet: https://docs.gitea.io/en-us/config-cheat-sheet/ +# Configuration cheat sheet: https://docs.gitea.com/administration/config-cheat-sheet/ +# Example configuration: https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini RUN_USER = gitea RUN_MODE = prod diff --git a/packaging/alpine/local/lavinmq/APKBUILD b/packaging/alpine/local/lavinmq/APKBUILD index e515b4e..8a8b696 100644 --- a/packaging/alpine/local/lavinmq/APKBUILD +++ b/packaging/alpine/local/lavinmq/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Joachim Schlöffel pkgname=lavinmq -pkgver=2.10.0 -pkgrel=2 +pkgver=2.10.1 +pkgrel=0 pkgdesc="High-performance AMQP and MQTT message queue server" url="https://github.com/cloudamqp/lavinmq" arch="x86_64" @@ -72,9 +72,9 @@ _openrc() { } sha512sums=" -b494892dada6eb713025bc3245e16035a63265805d77c537b4530226195f00dacab1fb14de5bf4c999165faa6bf2f7ef7c6b8ffb4c6f4a921977f1c13a4f1545 lavinmq-2.10.0.tar.gz -d0dfdd5c0e474024f57deb9e31c76e3f176e798c8d21dea53d3aea1b05436bd03fa34e69ccddf322bc89adedce5f379df5a316cddbbdfe12520e5bf672ad8228 lavinmq-2.10.0-shards.tar.gz -ae3cea2534b211abbcbd1e4fcb6da73dfaf383a19aef1c45f367cba77492cc20a7ce8283fc42f26c0a023149114c369bed307fb8cde0b8f27fba61165092e986 lavinmq-2.10.0-assets.tar.gz +1c2c932a0698227abfe8353988ea75b48f9048f183d85410797af5bc14495e2cb4497e72acc8fc9ff9ef8f78e8ebb648a1b40b5cf7f1b86e18597d10297417ff lavinmq-2.10.1.tar.gz +d0dfdd5c0e474024f57deb9e31c76e3f176e798c8d21dea53d3aea1b05436bd03fa34e69ccddf322bc89adedce5f379df5a316cddbbdfe12520e5bf672ad8228 lavinmq-2.10.1-shards.tar.gz +ae3cea2534b211abbcbd1e4fcb6da73dfaf383a19aef1c45f367cba77492cc20a7ce8283fc42f26c0a023149114c369bed307fb8cde0b8f27fba61165092e986 lavinmq-2.10.1-assets.tar.gz 62a609d50f28db960098c4c84ce4f1dad78413366a9a9aca18fe321114d687be3bf7b71924d4ace69bd74383c5ac40d2ee09ae0eef9c1bfe653b97448e42e110 lavinmq.confd 1853196e70297b5c4a2207fde50df735620cf6d99c4994644fd676bffaf863d67300ad7ae771c4bbb86fce1a0485c2a7968cf912c5f5bb878e08b15e5a28ba1b lavinmq.initd e7617099f745ecbf2f0686830d0a1b28044741ebd543798505b5b3c08f1be96b6cc478eb18f6785af49b100c2f49d837775f0721ac27519ddf3f081e681c581c use-vendored-build-inputs.patch diff --git a/packaging/alpine/local/lavinmq/README.md b/packaging/alpine/local/lavinmq/README.md index a66a7f0..bd15ebf 100644 --- a/packaging/alpine/local/lavinmq/README.md +++ b/packaging/alpine/local/lavinmq/README.md @@ -11,7 +11,7 @@ Build command: make ``` -LavinMQ 2.10.0 requires Crystal 1.21.0 or newer. The package uses Alpine +LavinMQ 2.10.1 requires Crystal 1.21.0 or newer. The package uses Alpine edge's native Crystal package, avoiding a glibc toolchain in the Alpine musl build. @@ -44,6 +44,34 @@ Wrapper settings in `/etc/conf.d/lavinmq`: - `LAVINMQ_DATA_DIR`: data directory passed with `-D` - `LAVINMQ_OPTS`: extra LavinMQ arguments appended after package defaults +## Updating LavinMQ + +1. In `APKBUILD`, set `pkgver` to the new upstream version and reset `pkgrel` + to `0`. +2. Add versioned vendored archives for the locked Shards dependencies and + frontend assets. If the new upstream `shard.lock` and the asset rules in its + `Makefile` are unchanged, the existing archives can be reused under the new + names: + + ```sh + cd packaging/alpine/local/lavinmq + cp lavinmq-2.10.1-shards.tar.gz lavinmq--shards.tar.gz + cp lavinmq-2.10.1-assets.tar.gz lavinmq--assets.tar.gz + git add -f lavinmq--shards.tar.gz lavinmq--assets.tar.gz + ``` + + When `shard.lock` changes, extract the upstream source, run + `shards install --production` in it, and create the shards archive with + `tar -czf lavinmq--shards.tar.gz lib`. If the asset rules change, + download the files specified by the new `Makefile` to a staging directory + and create `lavinmq--assets.tar.gz` from that directory's contents. +3. From the repository root, refresh checksums and build the package: + + ```sh + ALPINE_PACKAGE=lavinmq mise run apk:checksum + ALPINE_PACKAGE=lavinmq mise run apk:build + ``` + ## Package Commands Refresh checksums: diff --git a/packaging/alpine/local/lavinmq/lavinmq-2.10.1-assets.tar.gz b/packaging/alpine/local/lavinmq/lavinmq-2.10.1-assets.tar.gz new file mode 100644 index 0000000..6c501e4 Binary files /dev/null and b/packaging/alpine/local/lavinmq/lavinmq-2.10.1-assets.tar.gz differ diff --git a/packaging/alpine/local/lavinmq/lavinmq-2.10.1-shards.tar.gz b/packaging/alpine/local/lavinmq/lavinmq-2.10.1-shards.tar.gz new file mode 100644 index 0000000..cc9c905 Binary files /dev/null and b/packaging/alpine/local/lavinmq/lavinmq-2.10.1-shards.tar.gz differ diff --git a/packaging/alpine/local/seaweedfs/APKBUILD b/packaging/alpine/local/seaweedfs/APKBUILD index 32c1f27..5f62a26 100644 --- a/packaging/alpine/local/seaweedfs/APKBUILD +++ b/packaging/alpine/local/seaweedfs/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Joachim Schlöffel pkgname=seaweedfs pkgver=4.48 -pkgrel=0 +pkgrel=1 pkgdesc="Distributed storage system for object storage, file systems, and Iceberg tables" url="https://github.com/seaweedfs/seaweedfs" arch="x86_64 aarch64" @@ -148,7 +148,7 @@ b7caad9dff0bb812d4046b8e0285ac4e88a7af3a742a168579df08762da735a025725f78286e17bd 79a078133c259473e601488cd1d8032b74c5fa32da6f34a4ed46efa9736bf5369365a77d775e3d78512b1060cd87012eb40226829eecb30544e1542d165af7d6 security.toml 82e2793bf483ffb5b0c8fbe38e6c9df75afe01f824f8414cafd91e4bed5c79c13dae1ca659070401d4968d16ed4b26455b0c6208f777705527bceb2e5f286988 seaweedfs.admin.confd 5ad952c37c62a770327bd70f7349fa677406606f0b9bf03fdc8f6c6804701f1e77710ab20d6153f9e0cfb549ec161d68a3316abab9c59837bbe3f91ee99e5ce0 seaweedfs.filer.confd -077c513851bbbe53dd32d26455abc361f97006f9ace1190f96eb4b9136d16befab1a6153752eae8dac695c3a9aed084a00b411684915618cb30dd0770e608403 seaweedfs.initd +19cbd65d701b0995e088f265d88f481f14e214ecbd8a783f7e7b17e811e421a28425f96d073757cc07fbb17e8eb084d14d41f46baee82ee13e043ce0c0c5bde9 seaweedfs.initd 57ba77519bb266f0117eaadae3af5ae6bc99bb653668ff526202f327df1c8d93973c0e19dae0c53a19e06389868043c04e53f16f01c851b77fe1387e92cc993b seaweedfs.master.confd 22a3ea6c83266a979ea7c848fc74b40fc0f2ade960b273fa11e63d4a72a1328bd688c9918be3e9234cfb19f889fd9c931388bb5c2863cea3500e534b8bd90282 seaweedfs.s3.confd 3e9c41bc61cdd9a4c53ece64d847eca26ab7d0ce0cc98e72462c3dbb225a40de10a02201362801015a9c629d77d5c0d54c7228e9d20111fb6f478b2267d2db98 seaweedfs.sftp.confd diff --git a/packaging/alpine/local/seaweedfs/scripts/runtime-test.sh b/packaging/alpine/local/seaweedfs/scripts/runtime-test.sh index c29c500..27d047e 100755 --- a/packaging/alpine/local/seaweedfs/scripts/runtime-test.sh +++ b/packaging/alpine/local/seaweedfs/scripts/runtime-test.sh @@ -41,3 +41,8 @@ rc-service seaweedfs.filer start rc-service seaweedfs.master status rc-service seaweedfs.volume status rc-service seaweedfs.filer status + +# SeaweedFS needs more than OpenRC's default stop timeout to finish its +# graceful volume-server shutdown. Keep the restart path covered. +rc-service seaweedfs.volume restart +rc-service seaweedfs.volume status diff --git a/packaging/alpine/local/seaweedfs/seaweedfs.initd b/packaging/alpine/local/seaweedfs/seaweedfs.initd index 20507e3..f9ec50c 100644 --- a/packaging/alpine/local/seaweedfs/seaweedfs.initd +++ b/packaging/alpine/local/seaweedfs/seaweedfs.initd @@ -6,6 +6,9 @@ description="SeaweedFS ${service_name} service" command="/usr/bin/weed" command_user="${SEAWEEDFS_USER:-seaweedfs}:${SEAWEEDFS_GROUP:-seaweedfs}" command_background="yes" +# SeaweedFS performs a graceful shutdown, including a 10-second final heartbeat. +# The OpenRC default stop timeout can expire before that work has completed. +retry="TERM/30/KILL/5" pidfile="/run/seaweedfs/${RC_SVCNAME}.pid" output_log="${SEAWEEDFS_LOG:-/var/log/seaweedfs/${RC_SVCNAME}.log}" error_log="${SEAWEEDFS_ERRLOG:-/var/log/seaweedfs/${RC_SVCNAME}.log}"