diff --git a/extra/flatpak/PKGBUILD b/extra/flatpak/PKGBUILD new file mode 100644 index 000000000..e593bc986 --- /dev/null +++ b/extra/flatpak/PKGBUILD @@ -0,0 +1,112 @@ +# Maintainer: Jan Alexander Steffens (heftig) +# Contributor: Bartłomiej Piotrowski +# Contributor: Jan Alexander Steffens (heftig) + +# ALARM: Kevin Mihelich +# - move socat to makedepends +# - set -Dtests=false + +pkgbase=flatpak +pkgname=(flatpak flatpak-docs) +pkgver=1.15.1 +pkgrel=1 +epoch=1 +pkgdesc="Linux application sandboxing and distribution framework (formerly xdg-app)" +url="https://flatpak.org" +arch=(x86_64) +license=(LGPL) +depends=(dbus glib2 curl polkit libxau ostree json-glib libseccomp libarchive + python bubblewrap appstream xdg-dbus-proxy systemd fuse3 libmalcontent) +makedepends=(gobject-introspection gtk-doc git docbook-xsl xmlto + python-pyparsing meson socat) +checkdepends=(valgrind socat) +options=(debug) +_commit=47ea3934c0e055605b8dff93edad2136141e48ec # tags/1.15.1^0 +source=( + "git+https://github.com/flatpak/flatpak#commit=$_commit" + git+https://gitlab.gnome.org/GNOME/libglnx.git + git+https://github.com/projectatomic/bubblewrap + git+https://github.com/flatpak/xdg-dbus-proxy + git+https://gitlab.gnome.org/alexl/variant-schema-compiler.git + https://dl.flathub.org/repo/flathub.flatpakrepo + fusermount3.diff + flatpak-bindir.sh +) +sha256sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + '3371dd250e61d9e1633630073fefda153cd4426f72f4afa0c3373ae2e8fea03a' + '023c2bb5f355095e87357e625ef85119b5e15b3d0a4ad07ce858ed1a8f99a57a' + '1824cb4eb1cc88702cb2b9f1c55b6dfdf20fca5eab83f6e8e532099281328745') + +pkgver() { + cd flatpak + git describe --tags | sed 's/[^-]*-g/r&/;s/-/+/g' +} + +prepare() { + cd flatpak + + # Support fuse3 + # https://bugs.archlinux.org/task/75623 + git apply -3 ../fusermount3.diff + + git submodule init + git submodule set-url libglnx "$srcdir/libglnx" + git submodule set-url bubblewrap "$srcdir/bubblewrap" + git submodule set-url dbus-proxy "$srcdir/xdg-dbus-proxy" + git submodule set-url variant-schema-compiler "$srcdir/variant-schema-compiler" + git -c protocol.file.allow=always submodule update +} + +build() { + local meson_options=( + -D dbus_config_dir=/usr/share/dbus-1/system.d + -D selinux_module=disabled + -D system_bubblewrap=bwrap + -D system_dbus_proxy=xdg-dbus-proxy + -D tests=false + ) + + arch-meson flatpak build "${meson_options[@]}" + meson compile -C build +} + +check() { + meson test -C build --print-errorlogs +} + +_pick() { + local p="$1" f d; shift + for f; do + d="$srcdir/$p/${f#$pkgdir/}" + mkdir -p "$(dirname "$d")" + mv "$f" "$d" + rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")" + done +} + +package_flatpak() { + depends+=(xdg-desktop-portal libostree-1.so) + provides=(libflatpak.so) + + meson install -C build --destdir "$pkgdir" + + install -Dt "$pkgdir/etc/profile.d" -m644 flatpak-bindir.sh + install -Dt "$pkgdir/etc/flatpak/remotes.d" flathub.flatpakrepo + + # Fixup mode to match polkit + install -d -o root -g 102 -m 750 "$pkgdir/usr/share/polkit-1/rules.d" + + _pick docs "$pkgdir"/usr/share/{doc,gtk-doc} +} + +package_flatpak-docs() { + pkgdesc+=" (documentation)" + depends=() + mv docs/* "$pkgdir" +} + +# vim:set sw=2 sts=-1 et: diff --git a/extra/flatpak/flatpak-bindir.sh b/extra/flatpak/flatpak-bindir.sh new file mode 100644 index 000000000..dcb09ec5e --- /dev/null +++ b/extra/flatpak/flatpak-bindir.sh @@ -0,0 +1,9 @@ +if [ -n "$XDG_DATA_HOME" ] && [ -d "$XDG_DATA_HOME/flatpak/exports/bin" ]; then + append_path "$XDG_DATA_HOME/flatpak/exports/bin" +elif [ -n "$HOME" ] && [ -d "$HOME/.local/share/flatpak/exports/bin" ]; then + append_path "$HOME/.local/share/flatpak/exports/bin" +fi + +if [ -d /var/lib/flatpak/exports/bin ]; then + append_path /var/lib/flatpak/exports/bin +fi diff --git a/extra/flatpak/fusermount3.diff b/extra/flatpak/fusermount3.diff new file mode 100644 index 000000000..5ec614d51 --- /dev/null +++ b/extra/flatpak/fusermount3.diff @@ -0,0 +1,66 @@ +diff --git i/common/flatpak-dir.c w/common/flatpak-dir.c +index 01362a2b..2b17c6f8 100644 +--- i/common/flatpak-dir.c ++++ w/common/flatpak-dir.c +@@ -2109,7 +2109,7 @@ flatpak_dir_revokefs_fuse_unmount (OstreeRepo **repo, + + fusermount = g_subprocess_new (G_SUBPROCESS_FLAGS_NONE, + error, +- "fusermount", "-u", "-z", mnt_dir, ++ "fusermount3", "-u", "-z", mnt_dir, + NULL); + if (g_subprocess_wait_check (fusermount, NULL, error)) + { +diff --git i/tests/can-use-fuse.c w/tests/can-use-fuse.c +index fb6e2000..759f0d84 100644 +--- i/tests/can-use-fuse.c ++++ w/tests/can-use-fuse.c +@@ -53,23 +53,23 @@ check_fuse (void) + return FALSE; + } + +- fusermount = g_find_program_in_path ("fusermount"); ++ fusermount = g_find_program_in_path ("fusermount3"); + + if (fusermount == NULL) + { +- cannot_use_fuse = g_strdup ("fusermount not found in PATH"); ++ cannot_use_fuse = g_strdup ("fusermount3 not found in PATH"); + return FALSE; + } + + if (!g_file_test (fusermount, G_FILE_TEST_IS_EXECUTABLE)) + { + cannot_use_fuse = g_strdup_printf ("%s not executable", fusermount); + return FALSE; + } + + if (!g_file_test ("/etc/mtab", G_FILE_TEST_EXISTS)) + { +- cannot_use_fuse = g_strdup ("fusermount won't work without /etc/mtab"); ++ cannot_use_fuse = g_strdup ("fusermount3 won't work without /etc/mtab"); + return FALSE; + } + +diff --git i/tests/libtest.sh w/tests/libtest.sh +index 36d39ac4..e78d94ca 100644 +--- i/tests/libtest.sh ++++ w/tests/libtest.sh +@@ -542,7 +542,7 @@ skip_one_without_bwrap () { + } + + skip_without_fuse () { +- fusermount --version >/dev/null 2>&1 || skip "no fusermount" ++ fusermount3 --version >/dev/null 2>&1 || skip "no fusermount3" + + capsh --print | grep -q 'Bounding set.*[^a-z]cap_sys_admin' || \ + skip "No cap_sys_admin in bounding set, can't use FUSE" +@@ -608,7 +608,7 @@ commit_to_path () { + cleanup () { + /bin/kill -9 $DBUS_SESSION_BUS_PID + gpg-connect-agent --homedir "${FL_GPG_HOMEDIR}" killagent /bye >&2 || true +- fusermount -u $XDG_RUNTIME_DIR/doc >&2 || : ++ fusermount3 -u $XDG_RUNTIME_DIR/doc >&2 || : + kill $(jobs -p) &> /dev/null || true + if test -n "${TEST_SKIP_CLEANUP:-}"; then + echo "# Skipping cleanup of ${TEST_DATA_DIR}"