File PackageKit.spec of Package PackageKit

#
# spec file for package PackageKit
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#


# $ pkcon search file /usr/bin/anjuta
%define BUILD_CNF 1

%if 0%{suse_version} > 1130
%define xulrunner_version 20
%else
%if 0%{suse_version} > 1120
%define xulrunner_version 192
%else
%if 0%{suse_version} > 1110
%define xulrunner_version 191
%else
%define xulrunner_version 190
%endif
%endif
%endif

Name:           PackageKit
Version:        0.7.4
Release:        0
Summary:        Simple software installation management software
License:        GPL-2.0+
Group:          System/Daemons
Url:            http://packagekit.org/
Source:         http://www.packagekit.org/releases/%{name}-%{version}.tar.xz
Source2:        baselibs.conf
# To update this package, please git-format-patch the tag of the
# tarball version (eg: PACKAGEKIT_0_6_19) vs the distro tag (eg: openSUSE_Factory)
# in https://github.com/openSUSE/PackageKit and keep the patches
# in that git repository for easier tracking and merging.
# When updating the package you can rebase the distro branch against
# the new release tag.
#
# PATCH-FEATURE-OPENSUSE 0001-Change-the-configuration-of-the-cron-script-to-a-sys.patch vuntz@opensuse.org -- Change the configuration of the cron script to a sysconfig-like config
Patch0:         0001-Change-the-configuration-of-the-cron-script-to-a-sys.patch
# PATCH-FIX-UPSTREAM PackageKit-npapi.patch fdo#40026 wr@rosenauer.org -- Build against npapi-sdk instead of xulrunner
Patch1:         0002-Build-against-npapi-sdk-instead-of-xulrunner.patch
# PATCH-FIX-UPSTREAM 0003-Revert-packagekit-qt2-Since-new-methods-and-enums-wh.patch vuntz@opensuse.org -- Fix broken soversion of libpackagekit-qt2, will be fixed properly in next upstream version
Patch2:         0003-Revert-packagekit-qt2-Since-new-methods-and-enums-wh.patch
# PATCH-FIX-UPSTREAM 0004-zypp-use-pre-increment-in-for-loops-to-avoid-tempora.patch dimstar@opensuse.org -- zypp: use pre-increment in for-loops to avoid temporaries
Patch3:         0004-zypp-use-pre-increment-in-for-loops-to-avoid-tempora.patch
# PATCH-FIX-UPSTREAM 0005-zypp-don-t-waste-time-comparing-zypp-Arch-string-rep.patch dimstar@opensuse.org -- don't waste time comparing zypp::Arch string representations
Patch4:         0005-zypp-don-t-waste-time-comparing-zypp-Arch-string-rep.patch
# PATCH-FIX-UPSTREAM 0006-zypp-set-CXXFLAGS-and-use-std-c-0x-as-libzypp-does-b.patch bnc#769764 dimstar@opensuse.org -- set CXXFLAGS and use --std=c++0x as libzypp does
Patch5:         0006-zypp-set-CXXFLAGS-and-use-std-c-0x-as-libzypp-does-b.patch
# PATCH-FIX-UPSTREAM 0007-zypp-fix-missing-dtor.patch dimstar@opensuse.org -- fix missing dtor
Patch6:         0007-zypp-fix-missing-dtor.patch
# PATCH-FIX-UPSTREAM 0008-zypp-no-longer-use-the-old-and-deprecated-ZYppCommit.patch bnc#769764 dimstar@opensuse.org -- no longer use the old and deprecated ZYppCommitResult members
Patch7:         0008-zypp-no-longer-use-the-old-and-deprecated-ZYppCommit.patch
# PATCH-FIX-UpSTREAM 0009-zypp-adjust-PK_FILTER_ENUM_NOT_DEVELOPMENT-bnc-77002.patch bnc#770028 dimstar@opensuse.org -- adjust PK_FILTER_ENUM_NOT_DEVELOPMENT
Patch8:         0009-zypp-adjust-PK_FILTER_ENUM_NOT_DEVELOPMENT-bnc-77002.patch
#
# PATCH-FIX-UPSTREAM PackageKit-zypp-packagesize.patch bnc#764677 dimstar@opensuse.org -- libzypp changed API and now returns Bytes instead of KBytes.
Patch9:         PackageKit-zypp-packagesize.patch
# PATCH-FIX-UPSTREAM PackageKit-bnc775651-ignore-accept-eula.patch bnc#775651 glin@suse.com -- ignore "accept-eula" transactions to avoid crash
Patch10:        PackageKit-bnc775651-ignore-accept-eula.patch
BuildRequires:  NetworkManager-devel
BuildRequires:  automake
BuildRequires:  docbook-utils
BuildRequires:  fdupes
BuildRequires:  gcc-c++
BuildRequires:  gobject-introspection-devel
BuildRequires:  gstreamer-0_10-devel
BuildRequires:  gstreamer-0_10-plugins-base-devel
BuildRequires:  gtk-doc
BuildRequires:  gtk2-devel
BuildRequires:  gtk3-devel
BuildRequires:  intltool
BuildRequires:  libarchive-devel
BuildRequires:  libcppunit-devel
BuildRequires:  libgudev-1_0-devel
BuildRequires:  libqt4-devel
BuildRequires:  libtool
BuildRequires:  libzypp-devel
BuildRequires:  mozilla-nspr-devel >= 4.8
%if 0%{suse_version} > 1140
BuildRequires:  pkgconfig(npapi-sdk)
%else
BuildRequires:  mozilla-xulrunner%{xulrunner_version}-devel
%endif
BuildRequires:  pm-utils
BuildRequires:  polkit-devel >= 0.98
BuildRequires:  python-devel
# We need the %%mime_database_* macros
BuildRequires:  shared-mime-info
BuildRequires:  sqlite-devel
BuildRequires:  translation-update-upstream
Requires:       %{name}-branding = %{version}
# We really want a working backend (likely zypp)
Requires:       %{name}-backend
Recommends:     %{name}-lang
PreReq:         %fillup_prereq
# doc package only contained the website, and got removed in 0.7.4
Obsoletes:      %{name}-doc < 0.7.4
# gtk+ 2 module was removed in 0.7.0
Obsoletes:      %{name}-gtk-module < 0.7.0
# ruck was removed in 0.6.4, make sure it gets removed
Obsoletes:      ruck <= 0.6.3
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%py_requires
%if %suse_version <= 1110
%define python_sitelib %{py_sitedir}
%endif

%description
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package backend-zypp
Summary:        Simple software installation management software -- Zypp Backend
Group:          System/Daemons
Requires:       %{name} = %{version}
Provides:       %{name}-backend = %{version}

%description backend-zypp
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package -n typelib-1_0-PackageKitPlugin-1_0
Summary:        Simple software installation management software -- Plugin library, Introspection bindings
Group:          System/Libraries

%description -n typelib-1_0-PackageKitPlugin-1_0
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

This package provides the GObject Introspection bindings for the
PackageKit plugin library.

%package browser-plugin
Summary:        Simple software installation management software
Group:          Productivity/Networking/Web/Browsers
Recommends:     %{name} = %{version}
Supplements:    packageand(%{name}:MozillaFirefox)
Supplements:    packageand(%{name}:epiphany)

%description browser-plugin
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package gstreamer-plugin
Summary:        Simple software installation management software
Group:          Productivity/Multimedia/Other
Requires(post): update-alternatives
Requires(postun): update-alternatives
Recommends:     %{name} = %{version}
Supplements:    packageand(%{name}:gstreamer-0_10-plugins-base)
%if %suse_version > 1130
Provides:       opensuse-codecs-installer = 10.3.1
Obsoletes:      opensuse-codecs-installer <= 10.3.1
%endif

%description gstreamer-plugin
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package gtk3-module
Summary:        Simple software installation management software
Group:          System/Libraries
Recommends:     %{name} = %{version}
Supplements:    packageand(%{name}:gtk3)
%glib2_gsettings_schema_requires

%description gtk3-module
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package devel
Summary:        Needed include files and libraries for development
Group:          Development/Libraries/C and C++
Requires:       %{name} = %{version}
Requires:       libpackagekit-glib2-devel
Requires:       typelib-1_0-PackageKitPlugin-1_0 = %{version}

%description devel
This package contains all necessary include files, libraries,
configuration files and development tools (with manual pages) needed to
compile and link applications using PackageKit.

%package -n libpackagekit-glib2-14
Summary:        Simple software installation management software
Group:          System/Libraries
Recommends:     %{name}
Provides:       libpackagekit-glib12 = %{version}
Obsoletes:      libpackagekit-glib12 < %{version}

%description -n libpackagekit-glib2-14
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package -n typelib-1_0-PackageKitGlib-1_0
Summary:        Simple software installation management software -- Introspection bindings
Group:          System/Libraries

%description -n typelib-1_0-PackageKitGlib-1_0
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

This package provides the GObject Introspection bindings for the
PackageKit client library.

%package -n libpackagekit-glib2-devel
Summary:        Simple software installation management software
Group:          Development/Libraries/GNOME
Requires:       libpackagekit-glib2-14 = %{version}
Requires:       typelib-1_0-PackageKitGlib-1_0 = %{version}
Provides:       libpackagekit-glib12-devel = %{version}
Obsoletes:      libpackagekit-glib12-devel < %{version}

%description -n libpackagekit-glib2-devel
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package -n libpackagekit-qt2-2
Summary:        Simple software installation management software
Group:          System/Libraries
Recommends:     %{name}

%description -n libpackagekit-qt2-2
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package -n libpackagekit-qt2-devel
Summary:        Simple software installation management software
Group:          Development/Libraries/C and C++
Requires:       libpackagekit-qt2-2 = %{version}

%description -n libpackagekit-qt2-devel
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

%package branding-upstream
Summary:        Simple software installation management software -- Upstream default configuration
Group:          System/Daemons
Requires:       %{name} = %{version}
Provides:       %{name}-branding = %{version}
Conflicts:      otherproviders(%{name}-branding)
Supplements:    packageand(%{name}:branding-upstream)
BuildArch:      noarch
#BRAND: Provide configuration files -
#BRAND: /etc/PackageKit/*

%description branding-upstream
PackageKit is a system designed to make installing and updating
software on your computer easier.  The primary design goal is to unify
all the software graphical tools used in different distributions, and
use some of the latest technology like PolicyKit to make the process
suck less.

This package provides the upstream default configuration for PackageKit.

%lang_package
%prep
%setup -q
translation-update-upstream
%patch0 -p1
%if 0%{?suse_version} > 1140
%patch1 -p1
%endif
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1

%build
# Needed due to patch 3
autoreconf -fi
%configure \
	--disable-static \
	--enable-zypp \
	--with-default-backend=zypp \
	--with-security-framework=polkit \
	--with-mozilla-plugin-dir=%{_libdir}/browser-plugins \
%if ! %BUILD_CNF
        --disable-command-not-found \
%endif
        %{nil}
make %{?_smp_mflags} V=1

%install
%makeinstall
mv %{buildroot}%{_sysconfdir}/bash_completion.d/pk-completion.{ba,}sh
find %{buildroot} -type f -name "*.la" -exec %{__rm} -fv {} +
# the pm-utils package in openSUSE uses libexecdir and not libdir
%if "%{_libdir}" != "%{_libexecdir}"
    test ! -e %{buildroot}%{_libexecdir}/pm-utils
    mv %{buildroot}%{_libdir}/pm-utils %{buildroot}%{_libexecdir}/pm-utils
%endif
# move the cron configuration to a sysconfig template
install -d %{buildroot}%{_localstatedir}/adm/fillup-templates
mv %{buildroot}%{_sysconfdir}/sysconfig/packagekit-background %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.packagekit-background
# create ghost file
touch %{buildroot}%{_libexecdir}/gst-install-plugins-helper
%find_lang %{name} %{?no_lang_C}
%fdupes $RPM_BUILD_ROOT

%post
%{fillup_only -n packagekit-background}
%mime_database_post

%postun
%mime_database_postun

%post gstreamer-plugin
update-alternatives --install %{_libexecdir}/gst-install-plugins-helper gst-install-plugins-helper %{_libexecdir}/pk-gstreamer-install 10

%postun gstreamer-plugin
# Note: we don't use "$1 -eq 0", to avoid issues if the package gets renamed
if [ ! -f %{_libexecdir}/pk-gstreamer-install ]; then
  update-alternatives --remove gst-install-plugins-helper %{_libexecdir}/pk-gstreamer-install
fi

%post gtk3-module
%glib2_gsettings_schema_post

%postun gtk3-module
%glib2_gsettings_schema_postun

%post -n libpackagekit-glib2-14 -p /sbin/ldconfig

%post -n libpackagekit-qt2-2 -p /sbin/ldconfig

%postun -n libpackagekit-glib2-14 -p /sbin/ldconfig

%postun -n libpackagekit-qt2-2 -p /sbin/ldconfig

%files lang -f %{name}.lang

%files
%defattr(-,root,root)
%doc AUTHORS ChangeLog COPYING HACKING NEWS README
%dir %{_sysconfdir}/PackageKit
%dir %{_sysconfdir}/PackageKit/events
%dir %{_sysconfdir}/PackageKit/events/post-transaction.d
%dir %{_sysconfdir}/PackageKit/events/pre-transaction.d
%dir %{_datadir}/PackageKit
%dir %{_datadir}/PackageKit/helpers
%dir %{_datadir}/PackageKit/helpers/test_spawn
%dir %{_libdir}/packagekit-backend
%dir %{_libdir}/packagekit-plugins
%dir %{python_sitelib}/packagekit
%dir %{_libexecdir}/pm-utils
%dir %{_libexecdir}/pm-utils/sleep.d
%dir %{_localstatedir}/lib/PackageKit
%{_sysconfdir}/PackageKit/events/post-transaction.d/README
%{_sysconfdir}/PackageKit/events/pre-transaction.d/README
%{_sysconfdir}/bash_completion.d/pk-completion.sh
%{_sysconfdir}/cron.daily/packagekit-background.cron
%{_sysconfdir}/dbus-1/system.d/org.freedesktop.PackageKit.conf
%if %BUILD_CNF
%{_sysconfdir}/profile.d/PackageKit.sh
%endif
%{_localstatedir}/adm/fillup-templates/sysconfig.packagekit-background
%{_bindir}/packagekit-bugreport.sh
%{_bindir}/pk-debuginfo-install
%{_bindir}/pkcon
%{_bindir}/pkmon
%{_bindir}/pkgenpack
%{_libdir}/packagekit-backend/libpk_backend_dummy.so
%{_libdir}/packagekit-plugins/libpk_plugin-check-shared-libraries-in-use.so
%{_libdir}/packagekit-plugins/libpk-plugin-clear-firmware-requests.so
%{_libdir}/packagekit-plugins/libpk_plugin-no-update-process.so
%{_libdir}/packagekit-plugins/libpk_plugin-scan-desktop-files.so
%{_libdir}/packagekit-plugins/libpk_plugin_scripts.so
%{_libdir}/packagekit-plugins/libpk_plugin-update-check-processes.so
%{_libdir}/packagekit-plugins/libpk_plugin-update-package-list.so
%{_libexecdir}/packagekitd
%{_libexecdir}/pm-utils/sleep.d/95packagekit
%if %BUILD_CNF
%{_libexecdir}/pk-command-not-found
%endif
%{python_sitelib}/packagekit/*
%{_sbindir}/pk-device-rebind
%{_datadir}/dbus-1/interfaces/org.freedesktop.PackageKit.Transaction.xml
%{_datadir}/dbus-1/interfaces/org.freedesktop.PackageKit.xml
%{_datadir}/mime/packages/packagekit-*.xml
%{_datadir}/PackageKit/helpers/test_spawn/search-name.sh
%{_datadir}/PackageKit/pk-upgrade-distro.sh
%{_datadir}/polkit-1/actions/org.freedesktop.packagekit.policy
%{_datadir}/dbus-1/system-services/*
%doc %{_mandir}/man?/*.*
%verify(not md5 size mtime) %{_localstatedir}/lib/PackageKit/transactions.db

%files backend-zypp
%defattr(-,root,root)
%{_libdir}/packagekit-backend/libpk_backend_zypp.so

%files -n typelib-1_0-PackageKitPlugin-1_0
%defattr(-,root,root)
%{_libdir}/girepository-1.0/PackageKitPlugin-1.0.typelib

%files browser-plugin
%defattr(-,root,root)
%{_libdir}/browser-plugins/packagekit-plugin.so

%files gstreamer-plugin
%defattr(-,root,root)
%ghost %attr(755,root,root) %{_libexecdir}/gst-install-plugins-helper
%{_libexecdir}/pk-gstreamer-install

%files gtk3-module
%defattr(-,root,root)
%dir %{_libdir}/gnome-settings-daemon-3.0
%dir %{_libdir}/gnome-settings-daemon-3.0/gtk-modules
%{_libdir}/gnome-settings-daemon-3.0/gtk-modules/pk-gtk-module.desktop
%{_libdir}/gtk-3.0/modules/*
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.gtk-modules-packagekit.gschema.xml

%files devel
%defattr(-,root,root)
%doc %{_datadir}/gtk-doc/html/PackageKit
# Test backends are not useful, except for developers
%{_libdir}/packagekit-backend/libpk_backend_test_fail.so
%{_libdir}/packagekit-backend/libpk_backend_test_nop.so
%{_libdir}/packagekit-backend/libpk_backend_test_spawn.so
%{_libdir}/packagekit-backend/libpk_backend_test_succeed.so
%{_libdir}/packagekit-backend/libpk_backend_test_thread.so
%{_libdir}/pkgconfig/packagekit-plugin.pc
%dir %{_includedir}/PackageKit
%{_includedir}/PackageKit/backend/
%{_includedir}/PackageKit/plugin/
%{_datadir}/gir-1.0/PackageKitPlugin-1.0.gir

%files -n libpackagekit-glib2-14
%defattr(-,root,root)
%{_libdir}/libpackagekit-glib2.so.*

%files -n typelib-1_0-PackageKitGlib-1_0
%defattr(-,root,root)
%{_libdir}/girepository-1.0/PackageKitGlib-1.0.typelib

%files -n libpackagekit-glib2-devel
%defattr(-,root,root)
%{_libdir}/libpackagekit-glib2.so
%{_libdir}/pkgconfig/packagekit-glib2.pc
%dir %{_includedir}/PackageKit
%{_includedir}/PackageKit/packagekit-glib2/
%{_datadir}/gir-1.0/PackageKitGlib-1.0.gir

%files -n libpackagekit-qt2-2
%defattr(-,root,root)
%{_libdir}/libpackagekit-qt2.so.*

%files -n libpackagekit-qt2-devel
%defattr(-,root,root)
%{_libdir}/libpackagekit-qt2.so
%{_libdir}/cmake/packagekit-qt2/
%{_libdir}/pkgconfig/packagekit-qt2.pc
%dir %{_includedir}/PackageKit
%{_includedir}/PackageKit/packagekit-qt2/

%files branding-upstream
%defattr(-,root,root)
%if %BUILD_CNF
%config(noreplace) %{_sysconfdir}/PackageKit/CommandNotFound.conf
%endif
%config(noreplace) %{_sysconfdir}/PackageKit/PackageKit.conf
# This file should not be touched by users/admins, so we can replace it
%{_sysconfdir}/PackageKit/Vendor.conf

%changelog