Add Arch .pkg

This commit is contained in:
Andrea Mazzoleni 2026-03-09 16:22:51 +01:00
parent 2306c21591
commit bfc3508375
10 changed files with 207 additions and 4 deletions

5
.gitignore vendored
View file

@ -53,6 +53,11 @@ makedeb.sh
pkg/control pkg/control
makerpm.sh makerpm.sh
pkg/snapraid.spec pkg/snapraid.spec
makearch.sh
makearchdist.sh
pkg/.PKGINFO
pkg/PKGBUILD
pkg/.SRCINFO
# projects # projects
*.dst *.dst

View file

@ -180,7 +180,12 @@ EXTRA_DIST = \
makedeb.sh.in \ makedeb.sh.in \
pkg/control.in \ pkg/control.in \
makerpm.sh.in \ makerpm.sh.in \
pkg/snapraid.spec.in pkg/snapraid.spec.in \
makearch.sh.in \
makearchdist.sh.in \
pkg/.PKGINFO.in \
pkg/PKGBUILD.in \
pkg/.SRCINFO.in
man1_MANS = doc/snapraid.1 doc/snapraid_log.1 man1_MANS = doc/snapraid.1 doc/snapraid_log.1

View file

@ -24,7 +24,7 @@ fi
# Apply common rules to all outputs: # Apply common rules to all outputs:
# 1. Replace "rc-" with "rc" # 1. Replace "rc-" with "rc"
# 2. Replace "beta-" with "beta" # 2. Replace "beta-" with "beta"
# 3. Replace all remaining dashes with "+" # 3. Replace all remaining dashes with "."
VERSION=$(echo "$VERSION" | sed 's/rc-/rc/g; s/beta-/beta/g; s/-/+/g') VERSION=$(echo "$VERSION" | sed 's/rc-/rc/g; s/beta-/beta/g; s/-/./g')
printf '%s' "$VERSION" printf '%s' "$VERSION"

View file

@ -403,11 +403,13 @@ AC_ARG_VAR([TESTENV_SSE42], [Test environment for SSE42])
AC_ARG_VAR([TESTENV_AVX2], [Test environment for AVX2]) AC_ARG_VAR([TESTENV_AVX2], [Test environment for AVX2])
AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([pkg/snapraid.info pkg/control pkg/snapraid.spec]) AC_CONFIG_FILES([pkg/snapraid.info pkg/control pkg/snapraid.spec pkg/.PKGINFO pkg/PKGBUILD pkg/.SRCINFO])
AC_CONFIG_FILES([makeslackware.sh], [chmod a+x makeslackware.sh]) AC_CONFIG_FILES([makeslackware.sh], [chmod a+x makeslackware.sh])
AC_CONFIG_FILES([makeslackdist.sh], [chmod a+x makeslackdist.sh]) AC_CONFIG_FILES([makeslackdist.sh], [chmod a+x makeslackdist.sh])
AC_CONFIG_FILES([pkg/snapraid.SlackBuild], [chmod a+x pkg/snapraid.SlackBuild]) AC_CONFIG_FILES([pkg/snapraid.SlackBuild], [chmod a+x pkg/snapraid.SlackBuild])
AC_CONFIG_FILES([makedeb.sh], [chmod a+x makedeb.sh]) AC_CONFIG_FILES([makedeb.sh], [chmod a+x makedeb.sh])
AC_CONFIG_FILES([makerpm.sh], [chmod a+x makerpm.sh]) AC_CONFIG_FILES([makerpm.sh], [chmod a+x makerpm.sh])
AC_CONFIG_FILES([makearch.sh], [chmod a+x makearch.sh])
AC_CONFIG_FILES([makearchdist.sh], [chmod a+x makearchdist.sh])
AC_OUTPUT AC_OUTPUT

86
makearch.sh.in Normal file
View file

@ -0,0 +1,86 @@
#!/bin/bash
#
# Script to build a Arch .pkg package for @PACKAGE_NAME@
#
# This version:
# - Prefers a source tarball already present in the current directory
# - Only downloads it if not found locally
#
# Requirements:
# - Run as root (or with sudo) for proper ownership/permissions in package
set -euo pipefail
VERSION="@PACKAGE_VERSION@"
TARBALL="@PACKAGE@-${VERSION}.tar.gz"
SOURCE_URL="https://github.com/amadvance/@PACKAGE@/releases/download/v${VERSION}/${TARBALL}"
PKG_NAME="@PACKAGE@"
PKG_ROOT="${PKG_NAME}-arch-root"
if [[ ! -f "pkg/.PKGINFO" ]]; then
echo "Error: .PKGINFO not found in the current directory."
exit 1
fi
# Prefer local tarball
if [[ -f "./${TARBALL}" ]]; then
echo "Found ${TARBALL} locally."
else
echo "Downloading ${TARBALL}..."
curl -L -O "$SOURCE_URL"
fi
# Clean previous builds
rm -rf "${PKG_ROOT}" @PACKAGE@-${VERSION}
# Extract source
echo "Extracting source..."
tar -xzf "${TARBALL}"
# Build the software
echo "Configuring and building @PACKAGE@..."
cd @PACKAGE@-${VERSION}
./configure --prefix=/usr --sysconfdir=/etc
make -j4
# Install into package root
echo "Installing into temporary package root..."
mkdir -p "../${PKG_ROOT}/usr"
make install DESTDIR="../${PKG_ROOT}"
# Add example config and docs
mkdir -p "../${PKG_ROOT}/usr/share/doc/@PACKAGE@"
cp @PACKAGE@.conf.example COPYING AUTHORS HISTORY README "../${PKG_ROOT}/usr/share/doc/@PACKAGE@/"
cd ..
# Copy Files
echo "Copying into"
BUILD_DATE=$(date -u +%s)
PACKAGE_SIZE=$(du -sb "${PKG_ROOT}" | awk '{print $1}')
sed -e "s/@BUILD_DATE@/${BUILD_DATE}/" \
-e "s/@PACKAGE_SIZE@/${PACKAGE_SIZE}/" \
pkg/.PKGINFO > "${PKG_ROOT}/.PKGINFO"
cd ${PKG_ROOT}
echo "Create .MTREE"
bsdtar -czf .MTREE --format=mtree --options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' .PKGINFO usr
# Build the .deb package
echo "Building .PKG package..."
tar --owner=0 --group=0 -cvf - .PKGINFO .MTREE usr | zstd -c -z -q - > ../${PKG_NAME}-${VERSION}-1-x86_64.pkg.tar.zst
cd ..
echo "Cleanup..."
rm -rf "${PKG_ROOT}" @PACKAGE@-${VERSION}
echo ""
echo "Build complete!"
echo "The .pkg package should be in the current directory:"
ls @PACKAGE@-${VERSION}-*-*.zst
echo ""
echo "You can install it with:"
echo " sudo pacman -U ${PKG_NAME}-${VERSION}-1-x86_64.pkg.tar.zst"

43
makearchdist.sh.in Normal file
View file

@ -0,0 +1,43 @@
#!/bin/bash
# makearchdist.sh - Creates the source distribution for Arch
set -euo pipefail
PRGNAM="@PACKAGE@"
VERSION="@PACKAGE_VERSION@"
TARBALL="@PACKAGE@.src.tar.gz"
SOURCE_TARBALL="@PACKAGE@-${VERSION}.tar.gz"
PKG_NAME="@PACKAGE@"
PKG_ROOT="${PKG_NAME}-arch-dist-root"
echo "Calculating SHA256 sum..."
SHA256SUM=$(sha256sum "$SOURCE_TARBALL" | cut -d' ' -f1)
# Clean previous builds
rm -rf "${PKG_ROOT}"
# Create a temporary staging area
mkdir -p $PKG_ROOT/$PRGNAM
# Copy Files
echo "Copying into"
cat pkg/.SRCINFO > "$PKG_ROOT/$PRGNAM/.SRCINFO"
# Process the PKGBUILD file and replace placeholders
sed -e "s/@SHA256SUM@/$SHA256SUM/g" pkg/PKGBUILD > "$PKG_ROOT/$PRGNAM/PKGBUILD"
# We create the tarball in the current root directory
echo "Building .SRC package..."
tar --owner=0 --group=0 -czf "$TARBALL" -C $PKG_ROOT $PRGNAM/
echo "Cleanup..."
rm -rf "${PKG_ROOT}"
echo ""
echo "Success! The tarball is: $TARBALL"
echo "SHA256SUM updated to: $SHA256SUM"
echo ""
echo "You can install it with:"
echo " tar -xvf $TARBALL"
echo " cd snapraid-daemon"
echo " sudo makepkg -si"

View file

@ -53,6 +53,8 @@ if ! make dist; then
fi fi
sh makeslackdist.sh sh makeslackdist.sh
sh makearchdist.sh
sudo sh makeslackware.sh sudo sh makeslackware.sh
sudo sh makearch.sh
sudo sh makedeb.sh sudo sh makedeb.sh
sudo sh makerpm.sh sudo sh makerpm.sh

13
pkg/.PKGINFO.in Normal file
View file

@ -0,0 +1,13 @@
pkgname = @PACKAGE@
pkgver = @VERSION@-1
pkgdesc = Disk array backup for many large rarely-changed files
url = https://www.snapraid.it/
builddate = @BUILD_DATE@
packager = Andrea Mazzoleni <amadvance@gmail.com>
size = @PACKAGE_SIZE@
arch = x86_64
license = GPL3
depend = zlib
depend = zstd
depend = systemd

17
pkg/.SRCINFO.in Normal file
View file

@ -0,0 +1,17 @@
pkgbase = @PACKAGE@
pkgdesc = Disk array backup for many large rarely-changed files
pkgver = @VERSION@
pkgrel = 1
url = https://www.snapraid.it/
arch = x86_64
license = GPL3
makedepends = gcc
makedepends = make
depends = zlib
depends = zstd
depends = snapraid>=14.0
depends = systemd
source = https://github.com/amadvance/@PACKAGE@/releases/download/v@PACKAGE_VERSION@/@PACKAGE@-@PACKAGE_VERSION@.tar.gz
sha256sums = @SHA256@
pkgname = @PACKAGE@

30
pkg/PKGBUILD.in Normal file
View file

@ -0,0 +1,30 @@
# Maintainer: Andrea Mazzoleni <amadvance@gmail.com>
pkgname=@PACKAGE@
pkgver=@VERSION@
pkgrel=1
pkgdesc="Disk array backup for many large rarely-changed files"
arch=('x86_64')
url="https://www.snapraid.it/"
license=('GPL3')
depends=('zlib' 'zstd' 'snapraid>=14.0' 'systemd')
makedepends=('gcc' 'make')
install="${pkgname}.install"
source=("https://github.com/amadvance/@PACKAGE@/releases/download/v@PACKAGE_VERSION@/@PACKAGE@-@PACKAGE_VERSION@.tar.gz")
sha256sums=('@SHA256@')
build() {
cd "$pkgname-$pkgver"
./configure --prefix=/usr --sysconfdir=/etc --with-init-type=none
make
}
package() {
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
# Add example config and docs (Matches your script's logic)
install -Dm644 snapraid.conf.example "$pkgdir/usr/share/doc/$pkgname/snapraid.conf.example"
# Arch Policy: License must also be in the license directory
install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
}