snapd/PKGBUILD
Maciek Borzecki d61fa1ae91 upgpkg: snapd 2.72-1
Upstream release.

Cherry pick patch from https://github.com/canonical/snapd/pull/16131.

Signed-off-by: Maciek Borzecki <maciek.borzecki@gmail.com>
2025-10-14 13:01:08 +02:00

173 lines
5.3 KiB
Bash

# Maintainer: aimileus <me at aimileus dot nl>
# Maintainer: Maciej Borzecki <maciek.borzecki@gmail.com>
# Contributor: Timothy Redaelli <timothy.redaelli@gmail.com>
# Contributor: Zygmunt Krynicki <me at zygoon dot pl>
pkgname=snapd
pkgdesc="Service and tools for management of snap packages."
depends=('squashfs-tools' 'libseccomp' 'libsystemd' 'libcap' 'apparmor')
optdepends=('bash-completion: bash completion support'
'xdg-desktop-portal: desktop integration')
pkgver=2.72
pkgrel=1
arch=('x86_64' 'i686' 'armv7h' 'aarch64')
url="https://github.com/snapcore/snapd"
license=('GPL3')
makedepends=('git' 'go' 'go-tools' 'libseccomp' 'libcap' 'systemd' 'xfsprogs' 'python-docutils' 'apparmor' 'autoconf-archive')
conflicts=('snap-confine')
options=('!strip' 'emptydirs' '!lto')
install=snapd.install
source=(
"$pkgname-$pkgver.tar.xz::https://github.com/snapcore/${pkgname}/releases/download/${pkgver}/${pkgname}_${pkgver}.vendor.tar.xz"
"0001-cmd-snap-confine-snap-confine-update-AppArmor-profil.patch"
)
sha256sums=('53d74e663527bae667a254da8a029aa4b0b8f559ca515d214da8dbb29dc6ccc7'
'3584cdfabde12d1739342bc1bd73705bb5d9d3aed4ab038a478657fd4ede7364')
prepare() {
cd "$pkgname-$pkgver"
for name in "${source[@]}"; do
if [[ "${name%.patch}" == "$name" ]]; then
# not a patch
continue
fi
msg2 "applying $name"
patch -p1 -i "$srcdir/$name"
done
}
build() {
cd "$pkgname-$pkgver"
unset GO111MODULE
export CGO_ENABLED="1"
export CGO_CFLAGS="${CFLAGS}"
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
export CGO_LDFLAGS="${LDFLAGS}"
# Generate snapd.defines.mk, this file is included by snapd.mk.
cat >"$srcdir/snapd.defines.mk" <<__DEFINES__
# This file is generated by snapd packaging
# Directory variables.
prefix = /usr
bindir = /usr/bin
sbindir = /usr/sbin
libexecdir = /usr/lib
mandir = /usr/share/man
datadir = /usr/share
localstatedir = /var
sharedstatedir = /var/lib
unitdir = /usr/lib/systemd/system
builddir = $srcdir/_go_build
# Build configuration
with_core_bits = 0
with_alt_snap_mount_dir = 1
with_apparmor = 1
with_testkeys = 0
EXTRA_GO_BUILD_FLAGS = -trimpath
EXTRA_GO_LDFLAGS = -w -s
__DEFINES__
./mkversion.sh $pkgver-$pkgrel
make -f packaging/snapd.mk \
SNAPD_DEFINES_DIR="$srcdir"
# Generate data files such as real systemd units, dbus service, environment
# setup helpers out of the available templates
make -C data \
BINDIR=/bin \
LIBEXECDIR=/usr/lib \
SYSTEMDSYSTEMUNITDIR=/usr/lib/systemd/system \
SNAP_MOUNT_DIR=/var/lib/snapd/snap \
SNAPD_ENVIRONMENT_FILE=/etc/default/snapd
cd cmd
autoreconf -i -f
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--libexecdir=/usr/lib/snapd \
--with-snap-mount-dir=/var/lib/snapd/snap \
--enable-apparmor \
--enable-nvidia-biarch \
--enable-merged-usr
make $MAKEFLAGS
}
check() {
cd "$pkgname-$pkgver"
# make sure the binaries that need to be built statically really are
for binary in snap-exec snap-update-ns snapctl; do
if ! LC_ALL=C ldd "$srcdir/_go_build/$binary" 2>&1 | grep -q 'not a dynamic executable'; then
echo "$binary is not a static binary"
exit 1
fi
done
}
package() {
cd "$pkgname-$pkgver"
# Install bash completion
install -Dm644 data/completion/bash/snap \
"$pkgdir/usr/share/bash-completion/completions/snap"
install -Dm644 data/completion/bash/complete.sh \
"$pkgdir/usr/lib/snapd/complete.sh"
install -Dm644 data/completion/bash/etelpmoc.sh \
"$pkgdir/usr/lib/snapd/etelpmoc.sh"
# Install zsh completion
install -Dm644 data/completion/zsh/_snap \
"$pkgdir/usr/share/zsh/site-functions/_snap"
# Install systemd units, dbus services and a script for environment variables
make -C data/ install \
DBUSSERVICESDIR=/usr/share/dbus-1/services \
BINDIR=/usr/bin \
SYSTEMDSYSTEMUNITDIR=/usr/lib/systemd/system \
SNAP_MOUNT_DIR=/var/lib/snapd/snap \
DESTDIR="$pkgdir"
make -C cmd install DESTDIR="$pkgdir/"
make -f packaging/snapd.mk \
SNAPD_DEFINES_DIR="$srcdir" \
DESTDIR="$pkgdir" \
install
# Install the "info" data file with snapd version
install -m 644 -D "data/info" "$pkgdir/usr/lib/snapd/info"
# Install the news file
install -m 644 -D "NEWS.md" "$pkgdir/usr/share/doc/snapd/NEWS.md"
# these locations are created at runtime but were not part of the packaging
# previously, thus would trigger a file conflict on upgrade
rm -rfv "$pkgdir/var/cache/snapd"
rm -rfv "$pkgdir/var/lib/snapd/snap/README"
rm -rfv "$pkgdir/var/lib/snapd/state.json"
rm -rfv "$pkgdir/var/lib/snapd/system-key"
# Remove snappy core specific units
rm -fv "$pkgdir/usr/lib/snapd/snapd.core-fixup.sh"
rm -fv "$pkgdir/usr/bin/ubuntu-core-launcher"
rm -fv "$pkgdir/usr/lib/snapd/system-shutdown"
# drop the last remaining Ubuntu Core specific service
rm -fv "$pkgdir/usr/lib/systemd/system/snapd.failure.service"
# Remove prompt services
rm -fv "$pkgdir/usr/lib/systemd/system/snapd.aa-prompt-listener.service"
rm -fv "$pkgdir/usr/lib/systemd/user/snapd.aa-prompt-ui.service"
rm -fv "$pkgdir/usr/share/dbus-1/services/io.snapcraft.Prompt.service"
# Remove gpio-chardev ordering target
rm -fv "$pkgdir/usr/lib/systemd/system/snapd.gpio-chardev-setup.target"
}