Initial scaffold: README, distcc-avahi PKGBUILD, CI stub
- README documents repo layout, client setup (Arch+Debian), signing-key fingerprint, and infra TODOs. - arch/distcc-avahi/: ALARM distcc PKGBUILD with --with-avahi, avahi dep, distccd.service + conf.d + tmpfiles. - .gitea/workflows/build.yml: placeholder with wiring sketch for the real pipeline (runners, signing, scp publish). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
name: build and publish packages
|
||||||
|
|
||||||
|
# STUB — wired in a follow-up session. Current design sketch:
|
||||||
|
#
|
||||||
|
# jobs:
|
||||||
|
# arch-aarch64:
|
||||||
|
# runs-on: [self-hosted, alarm, aarch64]
|
||||||
|
# steps:
|
||||||
|
# - uses: actions/checkout@v4
|
||||||
|
# - name: makepkg
|
||||||
|
# run: |
|
||||||
|
# cd arch/distcc-avahi
|
||||||
|
# makepkg --nocheck --noconfirm --syncdeps
|
||||||
|
# - name: import signing key
|
||||||
|
# env:
|
||||||
|
# KEY: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }}
|
||||||
|
# PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }}
|
||||||
|
# run: |
|
||||||
|
# echo "$KEY" | gpg --import
|
||||||
|
# echo "$PASS" > /tmp/pass
|
||||||
|
# - name: sign package
|
||||||
|
# run: |
|
||||||
|
# gpg --batch --pinentry-mode loopback --passphrase-file /tmp/pass \
|
||||||
|
# --detach-sign --yes arch/distcc-avahi/*.pkg.tar.zst
|
||||||
|
# - name: publish to packages.reauktion.de
|
||||||
|
# env:
|
||||||
|
# SSH_KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }}
|
||||||
|
# run: |
|
||||||
|
# mkdir -p ~/.ssh && echo "$SSH_KEY" > ~/.ssh/id_ed25519
|
||||||
|
# chmod 600 ~/.ssh/id_ed25519
|
||||||
|
# scp arch/distcc-avahi/*.pkg.tar.zst{,.sig} \
|
||||||
|
# mfritsche@nc.reauktion.de:/srv/packages/arch/aarch64/
|
||||||
|
# # Regenerate db remotely (on an aarch64 runner with pacman):
|
||||||
|
# ssh mfritsche@nc.reauktion.de 'cd /srv/packages/arch/aarch64 && \
|
||||||
|
# repo-add --sign --key 92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C \
|
||||||
|
# marfrit.db.tar.gz *.pkg.tar.zst'
|
||||||
|
#
|
||||||
|
# Runner requirements:
|
||||||
|
# - feynman (CT115 on data) currently has the Actions runner for ARM
|
||||||
|
# bare-metal builds. For ALARM packages we'd want either:
|
||||||
|
# (a) a dedicated ALARM runner container, OR
|
||||||
|
# (b) makechrootpkg inside feynman with an ALARM pacstrap.
|
||||||
|
# - x86_64 Arch runner: can live on any nuccie.
|
||||||
|
# - Debian runners: debootstrap bookworm/trixie for each arch.
|
||||||
|
on: workflow_dispatch
|
||||||
|
jobs:
|
||||||
|
placeholder:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- run: echo "build pipeline not yet wired — see file header"
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# Maintainer: Markus Fritsche <mfritsche@reauktion.de>
|
||||||
|
# Based on Arch Linux ARM's distcc PKGBUILD, rebuilt with --with-avahi
|
||||||
|
# so Zeroconf-announced compile servers are discoverable on the LAN.
|
||||||
|
#
|
||||||
|
# Why this exists: the ALARM aarch64 distcc binary package is built
|
||||||
|
# without --with-avahi, so the distccd --zeroconf flag is a no-op.
|
||||||
|
# The Arch x86_64 package is fine. This package replaces distcc on
|
||||||
|
# ALARM hosts with an avahi-aware build.
|
||||||
|
|
||||||
|
pkgname=distcc-avahi
|
||||||
|
_pkgname=distcc
|
||||||
|
pkgver=3.4
|
||||||
|
pkgrel=15
|
||||||
|
pkgdesc="Distributed compilation service for C, C++ and Objective-C (with Avahi/Zeroconf support)"
|
||||||
|
arch=('x86_64' 'aarch64')
|
||||||
|
url="https://github.com/distcc/distcc"
|
||||||
|
license=('GPL-2.0-only')
|
||||||
|
depends=('popt' 'python' 'avahi')
|
||||||
|
makedepends=('autoconf' 'automake' 'libtool' 'pkgconf' 'python-setuptools')
|
||||||
|
optdepends=('gtk3: for distccmon')
|
||||||
|
provides=("distcc=${pkgver}")
|
||||||
|
conflicts=('distcc')
|
||||||
|
replaces=('distcc')
|
||||||
|
backup=('etc/conf.d/distccd')
|
||||||
|
source=(
|
||||||
|
"https://github.com/distcc/distcc/releases/download/v${pkgver}/distcc-${pkgver}.tar.gz"
|
||||||
|
"distccd.conf"
|
||||||
|
"distccd.service"
|
||||||
|
"distcc.tmpfiles"
|
||||||
|
)
|
||||||
|
sha256sums=(
|
||||||
|
'SKIP' # pin when first built in CI
|
||||||
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
|
)
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
cd "${_pkgname}-${pkgver}"
|
||||||
|
autoreconf -fiv
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
cd "${_pkgname}-${pkgver}"
|
||||||
|
./configure \
|
||||||
|
--prefix=/usr \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
--mandir=/usr/share/man \
|
||||||
|
--with-auth \
|
||||||
|
--with-avahi \
|
||||||
|
--without-libiberty \
|
||||||
|
--enable-rfc2553 \
|
||||||
|
--with-docdir="/usr/share/doc/${pkgname}"
|
||||||
|
make
|
||||||
|
make -C doc
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
cd "${_pkgname}-${pkgver}"
|
||||||
|
# Upstream test suite is flaky under makepkg; skip unless CHECK=1.
|
||||||
|
[ "${CHECK:-0}" = "1" ] && make check || true
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd "${_pkgname}-${pkgver}"
|
||||||
|
make DESTDIR="${pkgdir}" prefix=/usr install
|
||||||
|
install -Dm644 ../distccd.conf "${pkgdir}/etc/conf.d/distccd"
|
||||||
|
install -Dm644 ../distccd.service "${pkgdir}/usr/lib/systemd/system/distccd.service"
|
||||||
|
install -Dm644 ../distcc.tmpfiles "${pkgdir}/usr/lib/tmpfiles.d/distcc.conf"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
d /var/log/distcc 0755 nobody nobody -
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Configuration for distccd.service
|
||||||
|
#
|
||||||
|
# --allow lists are whitespace-separated CIDR blocks. At minimum,
|
||||||
|
# allow our LAN and VPN:
|
||||||
|
DISTCC_OPTS="--allow 192.168.88.0/24 --allow 10.170.16.0/24 --zeroconf --jobs 16 --nice 5 --log-level info --log-stderr"
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=distcc compile server (Zeroconf-announced)
|
||||||
|
After=network-online.target avahi-daemon.service
|
||||||
|
Wants=network-online.target avahi-daemon.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
EnvironmentFile=/etc/conf.d/distccd
|
||||||
|
User=nobody
|
||||||
|
Group=nobody
|
||||||
|
ExecStart=/usr/bin/distccd --no-detach --daemon $DISTCC_OPTS
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Reference in New Issue
Block a user