flatpak/flatpak.spec
Dominique Leuenberger a3f8112ba6 Accepting request 807123 from home:yfjiang:branches:GNOME:Factory
- When SLE uses GNOME desktop environment, GNOME Software is
  automatically started to provide key update features. During the
  startup, it setups flatpak repository so that related features
  can function properly. In a system environment of no flatpak
  repository has ever been setup before, this triggers
  "org.freedesktop.Flatpak.modify-repo" polkit action.
  Therefore in systems which use a restrictive security policy
  (eg. SLES) for the aforementioned policy action, a polkit
  authentication dialog will pop up without any user interaction
  for the first time login. This is not user friendly.
  This submission creates /var/lib/flatpak/repo at package
  installation to avoid such a confusing authentication pop-up, at
  nearly 0 cost of security compromise (bsc#1171822).

OBS-URL: https://build.opensuse.org/request/show/807123
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/flatpak?expand=0&rev=107
2020-05-20 10:37:00 +00:00

275 lines
9.1 KiB
RPMSpec

#
# spec file for package flatpak
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# dbus only used config files in /etc until 1.9.18
%if %{pkg_vcmp dbus-1 < 1.9.18}
%define _dbusconfigdir %{_sysconfdir}/dbus-1/system.d
%else
%define _dbusconfigdir %{_datadir}/dbus-1/system.d
%endif
# systemd only supports environment generators since version 233
%if %{pkg_vcmp systemd < 233}
%define support_environment_generators 0
%else
%define support_environment_generators 1
%endif
%define libname libflatpak0
Name: flatpak
Version: 1.6.3
Release: 0
Summary: OSTree based application bundles management
License: LGPL-2.1-or-later
Group: System/Packages
URL: https://flatpak.github.io/
Source0: %{name}-%{version}.tar.xz
Source1: system-user-flatpak.conf
Patch0: polkit_rules_usability.patch
BuildRequires: bison
BuildRequires: bubblewrap >= 0.4.1
BuildRequires: docbook-xsl-stylesheets
BuildRequires: gtk-doc
BuildRequires: intltool >= 0.35.0
BuildRequires: libcap-devel
BuildRequires: libdwarf-devel
BuildRequires: libgpgme-devel >= 1.1.8
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: sysuser-tools
BuildRequires: xdg-dbus-proxy >= 0.1.0
BuildRequires: xsltproc
BuildRequires: pkgconfig(appstream-glib)
BuildRequires: pkgconfig(dconf)
BuildRequires: pkgconfig(fuse)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.44
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.40.0
BuildRequires: pkgconfig(gobject-introspection-no-export-1.0) >= 1.40.0
BuildRequires: pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(libarchive) >= 2.8.0
BuildRequires: pkgconfig(libelf) >= 0.8.12
BuildRequires: pkgconfig(libseccomp)
BuildRequires: pkgconfig(libsoup-2.4)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(ostree-1) >= 2018.9
BuildRequires: pkgconfig(polkit-gobject-1)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(xau)
Requires: %{libname} = %{version}
Requires: bubblewrap >= 0.4.1
Requires: ostree >= 2018.9
Requires: xdg-dbus-proxy >= 0.1.0
Requires: xdg-desktop-portal >= 0.10
Requires: user(flatpak)
# Remove after openSUSE Leap 42 is out of scope
Provides: xdg-app = %{version}
Obsoletes: xdg-app < %{version}
%description
flatpak is a system for building, distributing and running sandboxed desktop
applications on Linux. See https://wiki.gnome.org/Projects/SandboxedApps for
more information.
%package -n system-user-flatpak
Summary: System user for the flatpak system helper
Group: System/Base
%sysusers_requires
%description -n system-user-flatpak
System user for the flatpak system helper.
%package -n %{libname}
Summary: OSTree based application bundle management library
Group: System/Libraries
%description -n %{libname}
flatpak is a system for building, distributing and running sandboxed desktop
applications on Linux. See https://wiki.gnome.org/Projects/SandboxedApps for
more information.
%package -n typelib-1_0-Flatpak-1_0
Summary: Introspection bindings for the flatpak library
Group: System/Libraries
%description -n typelib-1_0-Flatpak-1_0
flatpak is a system for building, distributing and running sandboxed desktop
applications on Linux. See https://wiki.gnome.org/Projects/SandboxedApps for
more information.
%package zsh-completion
Summary: Zsh tab-completion for flatpak
Group: System/Shells
Supplements: packageand(%{name}:%(rpm -q --qf '%%{NAME}' --whatprovides zsh))
%description zsh-completion
flatpak is a system for building, distributing and running sandboxed desktop
applications on Linux. See https://wiki.gnome.org/Projects/SandboxedApps for
more information.
This package provides zsh tab-completion for flatpak.
%package devel
Summary: Development files for the flatpak library
Group: Development/Languages/C and C++
Requires: %{libname} = %{version}
Requires: %{name} = %{version}
Requires: typelib-1_0-Flatpak-1_0 = %{version}
%description devel
flatpak is a system for building, distributing and running sandboxed desktop
applications on Linux. See https://wiki.gnome.org/Projects/SandboxedApps for
more information.
%lang_package
%prep
%autosetup -p1
sed -i -e '1s,#!%{_bindir}/env python3,#!%{_bindir}/python3,' scripts/flatpak-*
%build
%define _lto_cflags %{nil}
NOCONFIGURE=1 ./autogen.sh
%configure \
--disable-silent-rules \
--enable-gtk-doc \
--disable-document-portal \
--with-system-bubblewrap \
--with-priv-mode=none \
--with-dbus-config-dir=%{_dbusconfigdir} \
--with-system-dbus-proxy=%{_bindir}/xdg-dbus-proxy \
%{nil}
%make_build
%sysusers_generate_pre %{SOURCE1} system-user-flatpak
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
mkdir -p %{buildroot}%{_sbindir}
ln -s service %{buildroot}%{_sbindir}/rcflatpak-system-helper
# add a 60- prefix to the rules file, otherwise it is not effective, because
# /etc/polkit-1/rules.d/90-default-privs.rules is executed first and if no
# polkit-default-privs rule grants access then an explicit reject is the
# result. This should fix bsc#984817, granting members of group wheel access
# w/o password entry.
mv %{buildroot}/%{_datadir}/polkit-1/rules.d/{,60-}org.freedesktop.Flatpak.rules
mkdir -p %{buildroot}%{_sysusersdir}
install -m 644 %{SOURCE1} %{buildroot}%{_sysusersdir}/system-user-flatpak.conf
%if !%{support_environment_generators}
rm -Rf %{buildroot}%{_libexecdir}/systemd/user-environment-generators/
%endif
mkdir -p %{buildroot}%{_sysconfdir}/flatpak/remotes.d
mkdir -p %{buildroot}%{_localstatedir}/lib/flatpak/repo
%find_lang %{name}
%pre -n system-user-flatpak -f system-user-flatpak.pre
%post -n %{libname} -p /sbin/ldconfig
%postun -n %{libname} -p /sbin/ldconfig
%pre
%service_add_pre flatpak-system-helper.service
%preun
%service_del_preun flatpak-system-helper.service
%post
%service_add_post flatpak-system-helper.service
%postun
%service_del_postun flatpak-system-helper.service
%files -f %{name}.lang
%license COPYING
%{_bindir}/flatpak
%{_bindir}/flatpak-bisect
%{_bindir}/flatpak-coredumpctl
%{_libexecdir}/flatpak-portal
%{_libexecdir}/flatpak-session-helper
%{_libexecdir}/flatpak-system-helper
%{_libexecdir}/flatpak-validate-icon
%{_libexecdir}/revokefs-fuse
%{_datadir}/bash-completion/completions/flatpak
# # Own dirs so we don't have to depend on dbus for building.
%dir %{_datadir}/dbus-1
%dir %{_datadir}/dbus-1/interfaces
%dir %{_datadir}/dbus-1/services
%{_datadir}/dbus-1/interfaces/org.freedesktop.Flatpak.xml
%{_datadir}/dbus-1/interfaces/org.freedesktop.portal.Flatpak.xml
%{_datadir}/dbus-1/services/org.freedesktop.Flatpak.service
%{_datadir}/dbus-1/services/org.freedesktop.portal.Flatpak.service
%{_datadir}/dbus-1/system-services/org.freedesktop.Flatpak.SystemHelper.service
%{_dbusconfigdir}/org.freedesktop.Flatpak.SystemHelper.conf
# policykit rules
%{_datadir}/polkit-1/actions/org.freedesktop.Flatpak.policy
%{_datadir}/polkit-1/rules.d/60-org.freedesktop.Flatpak.rules
%{_mandir}/man1/%{name}*.1%{ext_man}
%{_mandir}/man5/flatpak-metadata.5%{ext_man}
%{_mandir}/man5/flatpak-flatpakref.5%{ext_man}
%{_mandir}/man5/flatpak-flatpakrepo.5%{ext_man}
%{_mandir}/man5/flatpak-installation.5%{ext_man}
%{_mandir}/man5/flatpak-remote.5%{ext_man}
%{_datadir}/%{name}/
%config %{_sysconfdir}/profile.d/flatpak.sh
%{_sysconfdir}/flatpak
# Own dirs so we don't have to depend on gdm for building.
%dir %{_datadir}/gdm/
%dir %{_datadir}/gdm/env.d/
%{_datadir}/gdm/env.d/flatpak.env
%{_unitdir}/flatpak-system-helper.service
%{_sbindir}/rcflatpak-system-helper
%{_userunitdir}/flatpak-session-helper.service
%{_userunitdir}/flatpak-portal.service
%dir %{_localstatedir}/lib/flatpak
%dir %{_localstatedir}/lib/flatpak/repo
%if %{support_environment_generators}
%dir %{_libexecdir}/systemd/user-environment-generators
%{_libexecdir}/systemd/user-environment-generators/60-flatpak
%endif
%{_libexecdir}/flatpak-oci-authenticator
%{_userunitdir}/flatpak-oci-authenticator.service
%{_datadir}/dbus-1/interfaces/org.freedesktop.Flatpak.Authenticator.xml
%{_datadir}/dbus-1/services/org.flatpak.Authenticator.Oci.service
%files -n system-user-flatpak
%{_sysusersdir}/system-user-flatpak.conf
%files -n %{libname}
%{_libdir}/libflatpak.so.*
%files -n typelib-1_0-Flatpak-1_0
%{_libdir}/girepository-1.0/Flatpak-1.0.typelib
%files zsh-completion
%dir %{_datadir}/zsh/site-functions
%{_datadir}/zsh/site-functions/_flatpak
%files devel
%{_libdir}/pkgconfig/flatpak.pc
%{_datadir}/gtk-doc/
%{_includedir}/%{name}/
%{_libdir}/libflatpak.so
%{_datadir}/gir-1.0/Flatpak-1.0.gir
%changelog