Files
snapd/packaging/arch/PKGBUILD
T
Ian Johnson 2185d7e943 release: 2.51.4
Update changelog with the 2.51.4 changes.

Signed-off-by: Ian Johnson <ian.johnson@canonical.com>
2021-08-09 19:47:40 -05:00

218 lines
8.4 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>
#
# Environment variables that can set by CI:
# - WITH_TEST_KEYS=1 - enable use of testing keys
pkgname=snapd
pkgdesc="Service and tools for management of snap packages."
depends=('squashfs-tools' 'libseccomp' 'libsystemd' 'apparmor')
optdepends=('bash-completion: bash completion support'
'xdg-desktop-portal: desktop integration')
pkgver=2.51.4
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')
# the following checkdepends are only required for static checks and unit tests,
# unit tests are currently enabled
checkdepends=('python' 'squashfs-tools' 'shellcheck')
conflicts=('snap-confine')
options=('!strip' 'emptydirs')
install=snapd.install
source=("git+https://github.com/snapcore/$pkgname.git")
sha256sums=('SKIP')
_gourl=github.com/snapcore/snapd
pkgver() {
cd "$srcdir/snapd"
git describe --tag | sed -r 's/([^-]*-g)/r\1/; s/-/./g'
}
prepare() {
cd "$pkgname"
export GOPATH="$srcdir/go"
# Have snapd checkout appear in a place suitable for subsequent GOPATH. This
# way we don't have to go get it again and it is exactly what the tag/hash
# above describes.
mkdir -p "$(dirname "$srcdir/go/src/${_gourl}")"
ln --no-target-directory -fs "$srcdir/$pkgname" "$srcdir/go/src/${_gourl}"
}
build() {
cd "$pkgname"
export GOPATH="$srcdir/go"
# GOFLAGS may be modified by CI tools
# GOFLAGS are the go build flags for all binaries, GOFLAGS_SNAP are for snap
# build only.
GOFLAGS=""
GOFLAGS_SNAP="-tags nomanagers"
if [[ "$WITH_TEST_KEYS" == 1 ]]; then
GOFLAGS="$GOFLAGS -tags withtestkeys"
GOFLAGS_SNAP="-tags nomanagers,withtestkeys"
fi
# snapd does not support modules yet, explicitly disable Go modules
export GO111MODULE=off
export CGO_ENABLED="1"
export CGO_CFLAGS="${CFLAGS}"
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
export CGO_LDFLAGS="${LDFLAGS}"
./mkversion.sh $pkgver-$pkgrel
# Use get-deps.sh provided by upstream to fetch go dependencies using the
# godeps tool and dependencies.tsv (maintained upstream).
cd "$srcdir/go/src/${_gourl}"
XDG_CONFIG_HOME="$srcdir" ./get-deps.sh
# because argument expansion with quoting in bash is hard, and -ldflags=-extldflags='-foo'
# is not exactly the same as -ldflags "-extldflags '-foo'" use the array trick
# to pass exactly what we want
flags=(-buildmode=pie -ldflags "-s -linkmode external -extldflags '$LDFLAGS'" -trimpath)
staticflags=(-buildmode=pie -ldflags "-s -linkmode external -extldflags '$LDFLAGS -static'" -trimpath)
# Build/install snap and snapd
go build "${flags[@]}" -o "$srcdir/go/bin/snap" $GOFLAGS_SNAP "${_gourl}/cmd/snap"
go build "${flags[@]}" -o "$srcdir/go/bin/snapd" $GOFLAGS "${_gourl}/cmd/snapd"
go build "${flags[@]}" -o "$srcdir/go/bin/snap-seccomp" $GOFLAGS "${_gourl}/cmd/snap-seccomp"
go build "${flags[@]}" -o "$srcdir/go/bin/snap-failure" $GOFLAGS "${_gourl}/cmd/snap-failure"
# build snap-exec and snap-update-ns completely static for base snaps
go build "${staticflags[@]}" -o "$srcdir/go/bin/snap-update-ns" $GOFLAGS "${_gourl}/cmd/snap-update-ns"
go build "${staticflags[@]}" -o "$srcdir/go/bin/snap-exec" $GOFLAGS "${_gourl}/cmd/snap-exec"
go build "${staticflags[@]}" -o "$srcdir/go/bin/snapctl" $GOFLAGS "${_gourl}/cmd/snapctl"
# 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 \
--libexecdir=/usr/lib/snapd \
--with-snap-mount-dir=/var/lib/snapd/snap \
--enable-apparmor \
--enable-nvidia-biarch \
--enable-merged-usr
make $MAKEFLAGS
}
check() {
export GOPATH="$srcdir/go"
cd "$srcdir/go/src/${_gourl}"
# make sure the binaries that need to be built statically really are
for binary in snap-exec snap-update-ns snapctl; do
LC_ALL=C ldd "$srcdir/go/bin/$binary" 2>&1 | grep -q 'not a dynamic executable'
done
SKIP_UNCLEAN=1 ./run-checks --unit
# XXX: Static checks choke on autotools generated cruft. Let's not run them
# here as they are designed to pass on a clean tree, before anything else is
# done, not after building the tree.
# ./run-checks --static
TMPDIR=/tmp make -C cmd -k check
mv $srcdir/xxx-info data/info
}
package() {
cd "$pkgname"
export GOPATH="$srcdir/go"
# snapd does not use modules, setting GO111MODULE=on in the environment breaks
# the build
unset GO111MODULE
# 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"
# Install polkit policy
install -Dm644 data/polkit/io.snapcraft.snapd.policy \
"$pkgdir/usr/share/polkit-1/actions/io.snapcraft.snapd.policy"
# Install executables
install -Dm755 "$srcdir/go/bin/snap" "$pkgdir/usr/bin/snap"
install -Dm755 "$srcdir/go/bin/snapctl" "$pkgdir/usr/lib/snapd/snapctl"
install -Dm755 "$srcdir/go/bin/snapd" "$pkgdir/usr/lib/snapd/snapd"
install -Dm755 "$srcdir/go/bin/snap-seccomp" "$pkgdir/usr/lib/snapd/snap-seccomp"
install -Dm755 "$srcdir/go/bin/snap-failure" "$pkgdir/usr/lib/snapd/snap-failure"
install -Dm755 "$srcdir/go/bin/snap-update-ns" "$pkgdir/usr/lib/snapd/snap-update-ns"
install -Dm755 "$srcdir/go/bin/snap-exec" "$pkgdir/usr/lib/snapd/snap-exec"
# Ensure /usr/bin/snapctl is a symlink to /usr/libexec/snapd/snapctl
ln -s /usr/lib/snapd/snapctl "$pkgdir/usr/bin/snapctl"
# pre-create directories
install -dm755 "$pkgdir/var/lib/snapd/snap"
install -dm755 "$pkgdir/var/cache/snapd"
install -dm755 "$pkgdir/var/lib/snapd/apparmor"
install -dm755 "$pkgdir/var/lib/snapd/assertions"
install -dm755 "$pkgdir/var/lib/snapd/dbus-1/services"
install -dm755 "$pkgdir/var/lib/snapd/dbus-1/system-services"
install -dm755 "$pkgdir/var/lib/snapd/desktop/applications"
install -dm755 "$pkgdir/var/lib/snapd/device"
install -dm755 "$pkgdir/var/lib/snapd/hostfs"
install -dm755 "$pkgdir/var/lib/snapd/mount"
install -dm755 "$pkgdir/var/lib/snapd/seccomp/bpf"
install -dm755 "$pkgdir/var/lib/snapd/snap/bin"
install -dm755 "$pkgdir/var/lib/snapd/snaps"
install -dm755 "$pkgdir/var/lib/snapd/inhibit"
install -dm755 "$pkgdir/var/lib/snapd/lib/gl"
install -dm755 "$pkgdir/var/lib/snapd/lib/gl32"
install -dm755 "$pkgdir/var/lib/snapd/lib/vulkan"
install -dm755 "$pkgdir/var/lib/snapd/lib/glvnd"
# these dirs have special permissions
install -dm111 "$pkgdir/var/lib/snapd/void"
install -dm700 "$pkgdir/var/lib/snapd/cookie"
install -dm700 "$pkgdir/var/lib/snapd/cache"
make -C cmd install DESTDIR="$pkgdir/"
# Install man file
mkdir -p "$pkgdir/usr/share/man/man8"
"$srcdir/go/bin/snap" help --man > "$pkgdir/usr/share/man/man8/snap.8"
# Install the "info" data file with snapd version
install -m 644 -D "$srcdir/go/src/${_gourl}/data/info" \
"$pkgdir/usr/lib/snapd/info"
# Remove snappy core specific units
rm -fv "$pkgdir/usr/lib/systemd/system/snapd.system-shutdown.service"
rm -fv "$pkgdir/usr/lib/systemd/system/snapd.autoimport.service"
rm -fv "$pkgdir/usr/lib/systemd/system/snapd.recovery-chooser-trigger.service"
rm -fv "$pkgdir"/usr/lib/systemd/system/snapd.snap-repair.*
rm -fv "$pkgdir"/usr/lib/systemd/system/snapd.core-fixup.*
# and scripts
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"
}