Hello community, here is the log from the commit of package PackageKit for openSUSE:Factory checked in at 2013-01-20 08:23:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/PackageKit (Old) and /work/SRC/openSUSE:Factory/.PackageKit.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "PackageKit", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/PackageKit/PackageKit.changes 2012-11-19 07:07:09.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.PackageKit.new/PackageKit.changes 2013-01-20 08:23:16.000000000 +0100 @@ -1,0 +2,128 @@ +Sat Jan 19 15:32:49 UTC 2013 - [email protected] + +- Add 0005-zypp-fix-removing-packages.patch: fix removing packages + and hopefully also some crashes (bnc#769764). + +------------------------------------------------------------------- +Sat Jan 19 09:29:27 UTC 2013 - [email protected] + +- Add 0004-zypp-use-the-right-functions-to-get-solvables.patch: + make sure we're not hitting random packages. This also makes it + able to install patters with pkconf. + +------------------------------------------------------------------- +Fri Jan 18 13:18:30 UTC 2013 - [email protected] + +- Make the new libpackagekit-glib package conflict with older + versions of PackageKit: together with the Recommends, we bring + the latest version in but don't forcibly require it. + +------------------------------------------------------------------- +Thu Jan 17 16:10:55 UTC 2013 - [email protected] + +- Added 0003-zypp-fix-download-progress.patch: fix download + progress (in apper). + +------------------------------------------------------------------- +Thu Jan 17 10:01:11 UTC 2013 - [email protected] + +- Added patch (fix-policies-opensuse.patch) to be within the + openSUSE guidelines for PolicyKit files. +- Removed PackageKit-rpmlintrc due to above mentioned patch + +------------------------------------------------------------------- +Wed Jan 16 19:38:47 UTC 2013 - [email protected] + +- Update to version 0.8.7: + + ZYpp Backend: + - Adjust PK_FILTER_ENUM_NOT_DEVELOPMENT (bnc#770028) + - Construct PoolItem from sat::Solvable rather than doing + a search + - Don't retrieve raw package attributes but use zypp::ResObject + (bnc#764677) + - Don't waste time comparing zypp::Arch string representations + - Fix missing dtor + - No longer use the old and deprecated ZYppCommitResult members + (bnc#769764) + - No need to retrieve installed packages attributes from rpm + database + - Set CXXFLAGS and use --std=c++0x as libzypp does (bnc#769764) + - Use pre-increment in for-loops to avoid temporaries + - always solve dependencies with 'IgnoreAlreadyRecommended ON' + (bnc#747751) + - check for best architecture and version when looking for the + 'newest' package + - finish port of backend to 0.8 API + - match the patch name to prevent an internal error + - return package list ordered witht respect to solver policies + - TODO is old and outdated, removed + + GLib library: + - Add a PkItemProgress helper object to remove the workaround + in PkProgress + - Make the 'update-vendor-urls' property have a proper char** + type + - Make the updates and obsoletes items in + Transaction::UpdateDetail actual arrays + - Make the URL items in Transaction::UpdateDetail actual arrays + - Don't update the transaction role to 'unknown' + - Remove support for UpdateSystem() + - Save the transaction flags when removing packages + - Ensure remote error is stripped before showing it to the user + - Add pk_package_sack_to_file() to save the sack to disk + - Check for failure to copy files when making a service pack + - Remove some unused code spotted by coverity + + New Features: + - Add an optional binary to update the system when offline + - Add an optional pkexec binary to create the system-update + symlink + - Add a --only-download option to pkcon for testing + - Added Transaction property DownloadSizeRemaining, so backends + can tell how much download is left to do + - Add logind support which is enabled by default + - Add pkexec executable pk-clear-offline-update to be able to + clear the offline-update message + + Bugfixes: + - Drop the unused polkit-backend-1 check from configure as + it's gone upstream + - Fix a crash where NetworkManager is restarted whilst + packagekitd is running + - Pause the plymouth progress when applying offline updates + - Do not run the plugins when using only-download + - systemd-updates: Add environment PK_OFFLINE_UPDATE_TEST=1 for + testing funcitonality + - systemd-updates: If the upgrade tool exits with an error + reboot the system + - systemd-updates: Remove the prepared-updates file if + GetUpdates() returns no packages + - systemd-updates: Remove the prepared-updates file if the + daemon state changes + - systemd-updates: Write package_ids into + /var/lib/PackageKit/prepared-update + - We don't need to authenticate at all to just download + packages +- Dropped patches due to upstream incorporation : + + 0003-Revert-packagekit-qt2-Since-new-methods-and-enums-wh.patch + + 0004-zypp-use-pre-increment-in-for-loops-to-avoid-tempora.patch + + 0005-zypp-don-t-waste-time-comparing-zypp-Arch-string-rep.patch + + 0006-zypp-set-CXXFLAGS-and-use-std-c-0x-as-libzypp-does-b.patch + + 0007-zypp-fix-missing-dtor.patch + + 0008-zypp-no-longer-use-the-old-and-deprecated-ZYppCommit.patch + + 0009-zypp-adjust-PK_FILTER_ENUM_NOT_DEVELOPMENT-bnc-77002.patch + + PackageKit-zypp-packagesize.patch + + PackageKit-bnc775651-ignore-accept-eula.patch + + PackageKit-bnc780058-zypp-backend-match-patches.patch + + PackageKit-gstreamer-1.0.patch + + PackageKit-no-polkit-backend-1.patch +- Add pkgconfig(systemd) BuildRequires: new depenency. +- Remove obsolete xulrunner version matches: we build against npapi + now. +- Drop obsolete suse_version checks. +- Rename libpackagekit-glib2-14 to libpackagekit-glib2-16, + following upstreams soname bump (also in baselibs.conf) +- Drop libpackagekit-qt2-devel and libpackagekit-qt2-2 subpackages: + upstream split this in an own source tarball. +- Pass --enable-gstreamer-plugin to configure. +- Remove references to libpackagekit-qt14 and libpackagekit-qt2-2 + from baselibs.conf: those libraries are no longer built. + +------------------------------------------------------------------- Old: ---- 0003-Revert-packagekit-qt2-Since-new-methods-and-enums-wh.patch 0004-zypp-use-pre-increment-in-for-loops-to-avoid-tempora.patch 0005-zypp-don-t-waste-time-comparing-zypp-Arch-string-rep.patch 0006-zypp-set-CXXFLAGS-and-use-std-c-0x-as-libzypp-does-b.patch 0007-zypp-fix-missing-dtor.patch 0008-zypp-no-longer-use-the-old-and-deprecated-ZYppCommit.patch 0009-zypp-adjust-PK_FILTER_ENUM_NOT_DEVELOPMENT-bnc-77002.patch PackageKit-0.7.4.tar.xz PackageKit-bnc775651-ignore-accept-eula.patch PackageKit-bnc780058-zypp-backend-match-patches.patch PackageKit-gstreamer-1.0.patch PackageKit-no-polkit-backend-1.patch PackageKit-zypp-packagesize.patch New: ---- 0003-zypp-fix-download-progress.patch 0004-zypp-use-the-right-functions-to-get-solvables.patch 0005-zypp-fix-removing-packages.patch PackageKit-0.8.7.tar.xz fix-policies-opensuse.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ PackageKit.spec ++++++ --- /var/tmp/diff_new_pack.uwcJYp/_old 2013-01-20 08:23:24.000000000 +0100 +++ /var/tmp/diff_new_pack.uwcJYp/_new 2013-01-20 08:23:24.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package PackageKit # -# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2013 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 @@ -19,22 +19,8 @@ # $ 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 +Version: 0.8.7 Release: 0 Summary: Simple software installation management software License: GPL-2.0+ @@ -42,6 +28,18 @@ Url: http://packagekit.org/ Source: http://www.packagekit.org/releases/%{name}-%{version}.tar.xz Source2: baselibs.conf +# PATCH-FEATURE-OPENSUSE 0001-Change-the-configuration-of-the-cron-script-to-a-sys.patch [email protected] -- Change the configuration of the cron script to a sysconfig-like config +Patch1: 0001-Change-the-configuration-of-the-cron-script-to-a-sys.patch +# PATCH-FIX-UPSTREAM PackageKit-npapi.patch fdo#40026 [email protected] -- Build against npapi-sdk instead of xulrunner +Patch2: 0002-Build-against-npapi-sdk-instead-of-xulrunner.patch +# PATCH-FIX-OPENSUSE fix-policies-opensuse.patch [email protected] -- Make sure that the Policy settings are conform openSUSE standards +Patch3: fix-policies-opensuse.patch +# PATCH-FIX-UPSTREAM 0003-zypp-fix-download-progress.patch [email protected] -- Fix download progress +Patch4: 0003-zypp-fix-download-progress.patch +# PATCH-FIX-UPSTREAM 0004-zypp-use-the-right-functions-to-get-solvables.patch [email protected] -- Several fixes for package_id +Patch5: 0004-zypp-use-the-right-functions-to-get-solvables.patch +# PATCH-FIX-UPSTREAM 0005-zypp-use-the-right-functions-to-get-solvables.patch [email protected] -- fix removing +Patch6: 0005-zypp-fix-removing-packages.patch # 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 @@ -49,35 +47,6 @@ # 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 [email protected] -- 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 fdo#53532 [email protected] -- ignore "accept-eula" transactions to avoid crash -Patch10: PackageKit-bnc775651-ignore-accept-eula.patch -# PATCH-FIX-UPSTREAM PackageKit-bnc780058-zypp-backend-match-patches.patch bnc#780058 fdo#55267 [email protected] -- zypp: match the patch names to prevent the internal error -Patch11: PackageKit-bnc780058-zypp-backend-match-patches.patch -# PATCH-FIX-UPSTREAM PackageKit-gstreamer-1.0.patch [email protected] -- Support GStreamer 1.0, taken from upstream git. -Patch12: PackageKit-gstreamer-1.0.patch -# PATCH-FIX-UPSTREAM PackageKit-no-polkit-backend-1.patch [email protected] -- Drop unused polkit-backend-1 dependency. -Patch13: PackageKit-no-polkit-backend-1.patch BuildRequires: NetworkManager-devel BuildRequires: automake BuildRequires: docbook-utils @@ -97,18 +66,15 @@ 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 +BuildRequires: pkgconfig(npapi-sdk) # We need the %%mime_database_* macros BuildRequires: shared-mime-info BuildRequires: sqlite-devel BuildRequires: translation-update-upstream +BuildRequires: pkgconfig(systemd) Requires: %{name}-branding = %{version} # We really want a working backend (likely zypp) Requires: %{name}-backend @@ -122,9 +88,7 @@ Obsoletes: ruck <= 0.6.3 BuildRoot: %{_tmppath}/%{name}-%{version}-build %py_requires -%if %suse_version <= 1110 -%define python_sitelib %{py_sitedir} -%endif +%{?systemd_requires} %description PackageKit is a system designed to make installing and updating @@ -162,21 +126,6 @@ This package provides the GObject Introspection bindings for the PackageKit plugin library. -%package browser-plugin -Summary: Simple software installation management software -License: GPL-2.0+ -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 License: GPL-2.0+ @@ -185,10 +134,8 @@ 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 @@ -225,15 +172,16 @@ configuration files and development tools (with manual pages) needed to compile and link applications using PackageKit. -%package -n libpackagekit-glib2-14 +%package -n libpackagekit-glib2-16 Summary: Simple software installation management software License: LGPL-2.1+ Group: System/Libraries Recommends: %{name} +Conflicts: %{name} < %{version} Provides: libpackagekit-glib12 = %{version} Obsoletes: libpackagekit-glib12 < %{version} -%description -n libpackagekit-glib2-14 +%description -n libpackagekit-glib2-16 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 @@ -259,7 +207,7 @@ Summary: Simple software installation management software License: LGPL-2.1+ Group: Development/Libraries/GNOME -Requires: libpackagekit-glib2-14 = %{version} +Requires: libpackagekit-glib2-16 = %{version} Requires: typelib-1_0-PackageKitGlib-1_0 = %{version} Provides: libpackagekit-glib12-devel = %{version} Obsoletes: libpackagekit-glib12-devel < %{version} @@ -271,26 +219,15 @@ 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 -License: LGPL-2.1+ -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 +%package browser-plugin Summary: Simple software installation management software -License: LGPL-2.1+ -Group: Development/Libraries/C and C++ -Requires: libpackagekit-qt2-2 = %{version} +License: GPL-2.0+ +Group: Productivity/Networking/Web/Browsers +Recommends: %{name} = %{version} +Supplements: packageand(%{name}:MozillaFirefox) +Supplements: packageand(%{name}:epiphany) -%description -n libpackagekit-qt2-devel +%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 @@ -321,23 +258,13 @@ %lang_package %prep %setup -q -translation-update-upstream -%patch0 -p1 -%if 0%{?suse_version} > 1140 %patch1 -p1 -%endif %patch2 -p1 -%patch3 -p1 +%patch3 -p0 %patch4 -p1 %patch5 -p1 %patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 +translation-update-upstream %build # Needed due to patch3 and patch13 @@ -345,11 +272,14 @@ %configure \ --disable-static \ --enable-zypp \ + --enable-gstreamer-plugin \ --with-default-backend=zypp \ --with-security-framework=polkit \ --with-mozilla-plugin-dir=%{_libdir}/browser-plugins \ %if ! %BUILD_CNF --disable-command-not-found \ +%else + --enable-command-not-found \ %endif %{nil} make %{?_smp_mflags} V=1 @@ -357,7 +287,7 @@ %install %makeinstall mv %{buildroot}%{_sysconfdir}/bash_completion.d/pk-completion.{ba,}sh -find %{buildroot} -type f -name "*.la" -exec %{__rm} -fv {} + +find %{buildroot} -type f -name "*.la" -delete -print # the pm-utils package in openSUSE uses libexecdir and not libdir %if "%{_libdir}" != "%{_libexecdir}" test ! -e %{buildroot}%{_libexecdir}/pm-utils @@ -371,12 +301,20 @@ %find_lang %{name} %{?no_lang_C} %fdupes $RPM_BUILD_ROOT +%pre +%service_add_pre packagekit-offline-update.service + %post %{fillup_only -n packagekit-background} %mime_database_post +%service_add_post packagekit-offline-update.service + +%preun +%service_del_preun packagekit-offline-update.service %postun %mime_database_postun +%service_del_postun packagekit-offline-update.service %post gstreamer-plugin update-alternatives --install %{_libexecdir}/gst-install-plugins-helper gst-install-plugins-helper %{_libexecdir}/pk-gstreamer-install 10 @@ -393,13 +331,9 @@ %postun gtk3-module %glib2_gsettings_schema_postun -%post -n libpackagekit-glib2-14 -p /sbin/ldconfig - -%post -n libpackagekit-qt2-2 -p /sbin/ldconfig +%post -n libpackagekit-glib2-16 -p /sbin/ldconfig -%postun -n libpackagekit-glib2-14 -p /sbin/ldconfig - -%postun -n libpackagekit-qt2-2 -p /sbin/ldconfig +%postun -n libpackagekit-glib2-16 -p /sbin/ldconfig %files lang -f %{name}.lang @@ -435,13 +369,19 @@ %{_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 +%{_libdir}/packagekit-plugins/libpk_plugin-clear-firmware-requests.so +%{_libdir}/packagekit-plugins/libpk_plugin-clear-system-update.so +%{_libdir}/packagekit-plugins/libpk_plugin-require-restart.so +%{_libdir}/packagekit-plugins/libpk_plugin-systemd-updates.so +%{_libdir}/packagekit-plugins/libpk_plugin-update-package-cache.so %{_libexecdir}/packagekitd +%{_libexecdir}/pk-clear-offline-update +%{_libexecdir}/pk-offline-update +%{_libexecdir}/pk-trigger-offline-update %{_libexecdir}/pm-utils/sleep.d/95packagekit %if %BUILD_CNF %{_libexecdir}/pk-command-not-found @@ -457,6 +397,7 @@ %{_datadir}/dbus-1/system-services/* %doc %{_mandir}/man?/*.* %verify(not md5 size mtime) %{_localstatedir}/lib/PackageKit/transactions.db +%{_unitdir}/packagekit-offline-update.service %files backend-zypp %defattr(-,root,root) @@ -466,10 +407,6 @@ %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 @@ -481,7 +418,7 @@ %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 +%{_libdir}/gtk-2.0/modules/* %files devel %defattr(-,root,root) @@ -494,11 +431,10 @@ %{_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 +%files -n libpackagekit-glib2-16 %defattr(-,root,root) %doc lib/packagekit-glib2/COPYING %{_libdir}/libpackagekit-glib2.so.* @@ -515,17 +451,9 @@ %{_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 +%files browser-plugin %defattr(-,root,root) -%{_libdir}/libpackagekit-qt2.so -%{_libdir}/cmake/packagekit-qt2/ -%{_libdir}/pkgconfig/packagekit-qt2.pc -%dir %{_includedir}/PackageKit -%{_includedir}/PackageKit/packagekit-qt2/ +%{_libdir}/browser-plugins/packagekit-plugin.so %files branding-upstream %defattr(-,root,root) ++++++ 0002-Build-against-npapi-sdk-instead-of-xulrunner.patch ++++++ --- /var/tmp/diff_new_pack.uwcJYp/_old 2013-01-20 08:23:24.000000000 +0100 +++ /var/tmp/diff_new_pack.uwcJYp/_new 2013-01-20 08:23:24.000000000 +0100 @@ -12,7 +12,7 @@ index 3c52f68..026f635 100644 --- a/configure.ac +++ b/configure.ac -@@ -349,7 +349,7 @@ AC_ARG_ENABLE(browser_plugin, AS_HELP_STRING([--enable-browser-plugin],[Build br +@@ -333,7 +333,7 @@ AC_ARG_ENABLE(browser_plugin, AS_HELP_STRING([--enable-browser-plugin],[Build br enable_browser_plugin=$enableval,enable_browser_plugin=yes) if test x$enable_browser_plugin = xyes; then PKG_CHECK_MODULES(PK_BROWSER_PLUGIN, \ ++++++ 0003-zypp-fix-download-progress.patch ++++++ >From 49f2d8be470c6647ce23d410a9e6faf6ae8694c1 Mon Sep 17 00:00:00 2001 From: Stephan Kulow <[email protected]> Date: Thu, 17 Jan 2013 16:43:56 +0100 Subject: [PATCH] zypp: fix download progress ... to use the same package_id as everything else. The package_ids for download were guessed from url before and were plain bogus. The downside is that we have no download speed anymore, but having useful progress is better than having random numbers --- backends/zypp/zypp-events.h | 94 ++++++--------------------------------------- 1 file changed, 11 insertions(+), 83 deletions(-) diff --git a/backends/zypp/zypp-events.h b/backends/zypp/zypp-events.h index 3cdf666..4794783 100644 --- a/backends/zypp/zypp-events.h +++ b/backends/zypp/zypp-events.h @@ -75,84 +75,15 @@ public: } } - /** - * Build a package_id from the specified zypp::Url. The returned - * gchar * should be freed with g_free (). Returns NULL if the - * URL does not contain information about an RPM. - * - * Example: - * basename: lynx-2.8.6-63.i586.rpm - * result: lynx;2.8.6-63;i586;opensuse - */ - gchar * - build_package_id_from_url (const zypp::Url *url) - { - gchar *package_id; - gchar *basename; - gchar *tmp; - - gchar *arch; - gchar *edition; - gchar *name; - gboolean first_dash_found; - - basename = g_strdup (zypp::Pathname (url->getPathName ()).basename ().c_str()); - - tmp = g_strrstr (basename, ".rpm"); - - if (tmp == NULL) { - g_free (basename); - return NULL; - } - - // Parse the architecture - tmp [0] = '\0'; // null-terminate the arch section - for (tmp--; tmp != basename && tmp [0] != '.'; tmp--) {} - arch = tmp + 1; - - // Parse the edition - tmp [0] = '\0'; // null-terminate the edition (version) - first_dash_found = FALSE; - for (tmp--; tmp != basename; tmp--) { - if (tmp [0] == '-') { - if (!first_dash_found) { - first_dash_found = TRUE; - continue; - } else { - break; - } - } - } - edition = tmp + 1; - - // Parse the name - tmp [0] = '\0'; // null-terminate the name - name = basename; - - package_id = pk_package_id_build (name, edition, arch, "opensuse"); - g_free (basename); - - return package_id; - } - inline void update_sub_percentage (guint percentage) { - // TODO: Figure out this weird bug that libzypp emits a 100 - // at the beginning of installing a package. - if (_sub_percentage == 0 && percentage == 100) - return; // can't jump from 0 -> 100 instantly! - // Only emit a percentage if it's different from the last // percentage we emitted and it's divisible by ten. We // don't want to overload dbus/GUI. Also account for the // fact that libzypp may skip over a "divisible by ten" // value (i.e., 28, 29, 31, 32). - // Drop off the least significant digit - // TODO: Figure out a faster way to drop the least significant digit - percentage = (percentage / 10) * 10; - if (percentage <= _sub_percentage) return; @@ -160,12 +91,6 @@ public: pk_backend_job_set_item_progress(_job, _package_id, PK_STATUS_ENUM_UNKNOWN, _sub_percentage); } - inline void - update_speed (guint speed) - { - pk_backend_job_set_speed (_job, speed); - } - void reset_sub_percentage () { @@ -298,32 +223,35 @@ struct RepoReportReceiver : public zypp::callback::ReceiveReport<zypp::repo::Rep } }; -struct DownloadProgressReportReceiver : public zypp::callback::ReceiveReport<zypp::media::DownloadProgressReport>, ZyppBackendReceiver +struct DownloadProgressReportReceiver : public zypp::callback::ReceiveReport<zypp::repo::DownloadResolvableReport>, ZyppBackendReceiver { - virtual void start (const zypp::Url &file, zypp::Pathname localfile) + virtual void start (zypp::Resolvable::constPtr resolvable, const zypp::Url &file) { clear_package_id (); - _package_id = build_package_id_from_url (&file); + _package_id = zypp_build_package_id_from_resolvable (resolvable->satSolvable ()); + gchar* summary = g_strdup(zypp::asKind<zypp::ResObject>(resolvable)->summary().c_str ()); fprintf (stderr, "DownloadProgressReportReceiver::start():%s --%s\n", - g_strdup (file.asString().c_str()), g_strdup (localfile.asString().c_str()) ); + g_strdup (file.asString().c_str()), _package_id); if (_package_id != NULL) { - pk_backend_job_set_status (_job, PK_STATUS_ENUM_DOWNLOAD); + pk_backend_job_set_status (_job, PK_STATUS_ENUM_DOWNLOAD); + pk_backend_job_package (_job, PK_INFO_ENUM_DOWNLOADING, _package_id, summary); reset_sub_percentage (); } + g_free(summary); } - virtual bool progress (int value, const zypp::Url &file, double dbps_avg, double dbps_current) + virtual bool progress (int value, zypp::Resolvable::constPtr resolvable) { //fprintf (stderr, "\n\n----> DownloadProgressReportReceiver::progress(), %s:%d\n\n", _package_id == NULL ? "unknown" : _package_id, value); if (_package_id != NULL) { update_sub_percentage (value); - update_speed (static_cast<guint>(dbps_current)); + //pk_backend_job_set_speed (_job, static_cast<guint>(dbps_current)); } return true; } - virtual void finish (const zypp::Url & file, Error error, const std::string &konreason) + virtual void finish (zypp::Resolvable::constPtr resolvable, Error error, const std::string &konreason) { //fprintf (stderr, "\n\n----> DownloadProgressReportReceiver::finish(): %s\n", _package_id == NULL ? "unknown" : _package_id); clear_package_id (); -- 1.8.1 ++++++ 0004-zypp-use-the-right-functions-to-get-solvables.patch ++++++ ++++ 1187 lines (skipped) ++++++ 0005-zypp-fix-removing-packages.patch ++++++ >From 1011d1acf069305b5359b4b7f060aa0781acead8 Mon Sep 17 00:00:00 2001 From: Stephan Kulow <[email protected]> Date: Sat, 19 Jan 2013 16:17:03 +0100 Subject: [PATCH] zypp: fix removing packages - added a mutex around zypp trying to avoid crashes that look suspiciously like thread issues (e.g. https://bugzilla.novell.com/show_bug.cgi?id=745733#c18) - add some more debug output to track issues others have - some whitespace cleanup - fix get_package_by_id to do not match repo alias for installed packages --- backends/zypp/pk-backend-zypp-private.h | 5 +- backends/zypp/pk-backend-zypp.cpp | 93 +++++++++++++++++++-------------- backends/zypp/zypp-events.h | 4 ++ backends/zypp/zypp-utils.cpp | 45 +++++++++++----- src/pk-backend-job.c | 2 +- 5 files changed, 93 insertions(+), 56 deletions(-) diff --git a/backends/zypp/pk-backend-zypp-private.h b/backends/zypp/pk-backend-zypp-private.h index 6d26eb3..5aa0d73 100644 --- a/backends/zypp/pk-backend-zypp-private.h +++ b/backends/zypp/pk-backend-zypp-private.h @@ -5,8 +5,7 @@ #include <map> #include <string> #include <vector> - -// struct PkBackendJob; +#include <pthread.h> #include "zypp-events.h" @@ -15,6 +14,8 @@ typedef struct { std::vector<std::string> signatures; EventDirector eventDirector; PkBackendJob *currentJob; + + pthread_mutex_t zypp_mutex; } PkBackendZYppPrivate; diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp index 05a3662..bce60f2 100644 --- a/backends/zypp/pk-backend-zypp.cpp +++ b/backends/zypp/pk-backend-zypp.cpp @@ -97,6 +97,16 @@ public: }; /** + * We do not pretend we're thread safe when all we do is having a huge mutex + */ +gboolean +pk_backend_supports_parallelization (PkBackend *backend) +{ + return FALSE; +} + + +/** * pk_backend_get_description: */ const gchar * @@ -127,6 +137,7 @@ pk_backend_initialize (PkBackend *backend) /* create private area */ priv = new PkBackendZYppPrivate; priv->currentJob = 0; + priv->zypp_mutex = PTHREAD_MUTEX_INITIALIZER; zypp_logging (); g_debug ("zypp_backend_initialize"); @@ -277,12 +288,11 @@ pk_backend_get_groups (PkBackend *backend) PkBitfield pk_backend_get_filters (PkBackend *backend) { - return pk_bitfield_from_enums ( - PK_FILTER_ENUM_INSTALLED, - PK_FILTER_ENUM_ARCH, - PK_FILTER_ENUM_NEWEST, - PK_FILTER_ENUM_SOURCE, - -1); + return pk_bitfield_from_enums (PK_FILTER_ENUM_INSTALLED, + PK_FILTER_ENUM_ARCH, + PK_FILTER_ENUM_NEWEST, + PK_FILTER_ENUM_SOURCE, + -1); } /* @@ -298,9 +308,9 @@ backend_get_depends_thread (PkBackendJob *job, GVariant *params, gpointer user_d gchar **package_ids; gboolean recursive; g_variant_get (params, "(t^a&sb)", - &_filters, - &package_ids, - &recursive); + &_filters, + &package_ids, + &recursive); pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); pk_backend_job_set_percentage (job, 0); @@ -313,7 +323,7 @@ backend_get_depends_thread (PkBackendJob *job, GVariant *params, gpointer user_d return; } - MIL << pk_filter_bitfield_to_string (_filters) << endl; + MIL << package_ids[0] << " " << pk_filter_bitfield_to_string (_filters) << endl; try { @@ -393,21 +403,21 @@ backend_get_depends_thread (PkBackendJob *job, GVariant *params, gpointer user_d // print dependencies for (map<string, sat::Solvable>::iterator it = caps.begin (); - it != caps.end(); - ++it) { - + it != caps.end(); + ++it) { + // backup sanity check for no-solvables if (! it->second.name ().c_str() || it->second.name ().c_str()[0] == '\0') continue; - + PoolItem item(it->second); PkInfoEnum info = it->second.isSystem () ? PK_INFO_ENUM_INSTALLED : PK_INFO_ENUM_AVAILABLE; g_debug ("add dep - '%s' '%s' %d [%s]", it->second.name().c_str(), - info == PK_INFO_ENUM_INSTALLED ? "installed" : "available", - it->second.isSystem(), - zypp_filter_solvable (_filters, it->second) ? "don't add" : "add" ); + info == PK_INFO_ENUM_INSTALLED ? "installed" : "available", + it->second.isSystem(), + zypp_filter_solvable (_filters, it->second) ? "don't add" : "add" ); if (!zypp_filter_solvable (_filters, it->second)) { zypp_backend_package (job, info, it->second, @@ -445,7 +455,7 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d gchar **package_ids; g_variant_get (params, "(^a&s)", - &package_ids); + &package_ids); ZyppJob zjob(job); ZYpp::Ptr zypp = zjob.get_zypp(); @@ -458,13 +468,14 @@ backend_get_details_thread (PkBackendJob *job, GVariant *params, gpointer user_d pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); for (uint i = 0; package_ids[i]; i++) { + MIL << package_ids[i] << endl; sat::Solvable solv = zypp_get_package_by_id( package_ids[i] ); ResObject::constPtr obj = make<ResObject>( solv ); if (obj == NULL) { - zypp_backend_finished_error ( - job, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "couldn't find package"); + zypp_backend_finished_error (job, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, + "couldn't find package"); return; } @@ -531,8 +542,8 @@ backend_get_distro_upgrades_thread(PkBackendJob *job, GVariant *params, gpointer vector<parser::ProductFileData> result; if (!parser::ProductFileReader::scanDir (functor::getAll (back_inserter (result)), "/etc/products.d")) { - zypp_backend_finished_error ( - job, PK_ERROR_ENUM_INTERNAL_ERROR, "Could not parse /etc/products.d"); + zypp_backend_finished_error (job, PK_ERROR_ENUM_INTERNAL_ERROR, + "Could not parse /etc/products.d"); return; } @@ -569,12 +580,11 @@ pk_backend_get_distro_upgrades (PkBackend *backend, PkBackendJob *job) static void backend_refresh_cache_thread (PkBackendJob *job, GVariant *params, gpointer user_data) { - MIL << endl; - gboolean force; g_variant_get (params, "(b)", - &force); + &force); + MIL << force << endl; ZyppJob zjob(job); ZYpp::Ptr zypp = zjob.get_zypp(); @@ -593,7 +603,6 @@ backend_refresh_cache_thread (PkBackendJob *job, GVariant *params, gpointer user void pk_backend_refresh_cache (PkBackend *backend, PkBackendJob *job, gboolean force) { - MIL << endl; pk_backend_job_thread_create (job, backend_refresh_cache_thread, NULL, NULL); } @@ -626,12 +635,11 @@ check_for_self_update (PkBackend *backend, set<PoolItem> *candidates) static void backend_get_updates_thread (PkBackendJob *job, GVariant *params, gpointer user_data) { - MIL << endl; - PkBitfield _filters; g_variant_get (params, "(t)", - &_filters); + &_filters); + MIL << pk_filter_bitfield_to_string(_filters) << endl; ZyppJob zjob(job); ZYpp::Ptr zypp = zjob.get_zypp(); @@ -717,8 +725,8 @@ backend_install_files_thread (PkBackendJob *job, GVariant *params, gpointer user PkBitfield transaction_flags; gchar **full_paths; g_variant_get (params, "(t^a&s)", - &transaction_flags, - &full_paths); + &transaction_flags, + &full_paths); if (zypp == NULL){ pk_backend_job_finished (job); @@ -1148,6 +1156,7 @@ backend_resolve_thread (PkBackendJob *job, GVariant *params, gpointer user_data) zypp_build_pool (zypp, TRUE); for (uint i = 0; search[i]; i++) { + MIL << search[i] << " " << pk_filter_bitfield_to_string(_filters) << endl; vector<sat::Solvable> v; /* build a list of packages with this name */ @@ -1175,6 +1184,8 @@ backend_resolve_thread (PkBackendJob *job, GVariant *params, gpointer user_data) /* Filter the list of packages with this name to 'pkgs' */ for (vector<sat::Solvable>::iterator it = v.begin (); it != v.end (); ++it) { + MIL << "found " << *it << endl; + if (zypp_filter_solvable (_filters, *it) || zypp_is_no_solvable(*it)) continue; @@ -1184,6 +1195,7 @@ backend_resolve_thread (PkBackendJob *job, GVariant *params, gpointer user_data) } else if (it->edition() > newest.edition() || Arch::compare(it->arch(), newest.arch()) > 0) { newest = *it; } + MIL << "emit " << *it << endl; pkgs.push_back (*it); } @@ -1192,12 +1204,13 @@ backend_resolve_thread (PkBackendJob *job, GVariant *params, gpointer user_data) /* 'newest' filter support */ if (pk_bitfield_contain (_filters, PK_FILTER_ENUM_NEWEST)) { pkgs.clear(); + MIL << "emit just newest " << newest << endl; pkgs.push_back (newest); } else if (pk_bitfield_contain (_filters, PK_FILTER_ENUM_NOT_NEWEST)) { pkgs.erase (find (pkgs.begin (), pkgs.end(), newest)); } } - + zypp_emit_filtered_packages_in_list (job, _filters, pkgs); } @@ -1637,9 +1650,9 @@ backend_repo_set_data_thread (PkBackendJob *job, GVariant *params, gpointer user const gchar *value; g_variant_get(params, "(&s&s&s)", - &repo_id, - ¶meter, - &value); + &repo_id, + ¶meter, + &value); ZyppJob zjob(job); ZYpp::Ptr zypp = zjob.get_zypp(); @@ -1770,10 +1783,10 @@ backend_what_provides_thread (PkBackendJob *job, GVariant *params, gpointer user PkBitfield _filters; PkProvidesEnum provides; g_variant_get(params, "(tu^a&s)", - &_filters, - &provides, - &values); - + &_filters, + &provides, + &values); + ZyppJob zjob(job); ZYpp::Ptr zypp = zjob.get_zypp(); @@ -1783,7 +1796,7 @@ backend_what_provides_thread (PkBackendJob *job, GVariant *params, gpointer user } pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); - const gchar *search = values[0]; //Fixme - support possible multiple search values (logical OR) + const gchar *search = values[0]; //Fixme - support possible multi1ple search values (logical OR) ResPool pool = zypp_build_pool (zypp, true); if((provides == PK_PROVIDES_ENUM_HARDWARE_DRIVER) || g_ascii_strcasecmp("drivers_for_attached_hardware", search) == 0) { diff --git a/backends/zypp/zypp-events.h b/backends/zypp/zypp-events.h index b18bf94..69777ec 100644 --- a/backends/zypp/zypp-events.h +++ b/backends/zypp/zypp-events.h @@ -93,6 +93,10 @@ public: return; } + if (percentage > 100) { + MIL << "libzypp is silly" << std::endl; + } + _sub_percentage = percentage; pk_backend_job_set_item_progress(_job, _package_id, PK_STATUS_ENUM_UNKNOWN, _sub_percentage); } diff --git a/backends/zypp/zypp-utils.cpp b/backends/zypp/zypp-utils.cpp index d898f8c..002c99b 100644 --- a/backends/zypp/zypp-utils.cpp +++ b/backends/zypp/zypp-utils.cpp @@ -71,20 +71,28 @@ using zypp::filesystem::PathInfo; extern PkBackendZYppPrivate *priv; -ZyppJob::ZyppJob(PkBackendJob *job) +ZyppJob::ZyppJob(PkBackendJob *job) { + MIL << "locking zypp" << std::endl; + pthread_mutex_lock(&priv->zypp_mutex); + if (priv->currentJob) { - g_error("currentjob is already defined"); + MIL << "currentjob is already defined - highly impossible" << endl; } - + + pk_backend_job_set_locked(job, true); priv->currentJob = job; priv->eventDirector.setJob(job); } ZyppJob::~ZyppJob() { + if (priv->currentJob) + pk_backend_job_set_locked(priv->currentJob, false); priv->currentJob = 0; priv->eventDirector.setJob(0); + MIL << "unlocking zypp" << std::endl; + pthread_mutex_unlock(&priv->zypp_mutex); } /** @@ -428,24 +436,35 @@ zypp_get_package_by_id (const gchar *package_id) sat::Solvable pkg = it->satSolvable(); MIL << "match " << package_id << " " << pkg << endl; - if (want_source && !isKind<SrcPackage>(pkg)) + if (want_source && !isKind<SrcPackage>(pkg)) { + MIL << "not a src package\n"; continue; + } - if (!want_source && (isKind<SrcPackage>(pkg) || g_strcmp0 (pkg.arch().c_str(), arch))) + if (!want_source && (isKind<SrcPackage>(pkg) || g_strcmp0 (pkg.arch().c_str(), arch))) { + MIL << "not a matching arch\n"; continue; + } const string &ver = pkg.edition ().asString(); - if (g_strcmp0 (ver.c_str (), id_parts[PK_PACKAGE_ID_VERSION])) - continue; - - if (!strncmp(id_parts[PK_PACKAGE_ID_DATA], "installed", 9) && !pkg.isSystem()) - continue; - - if (pkg.isSystem() && strncmp(id_parts[PK_PACKAGE_ID_DATA], "installed", 9)) + if (g_strcmp0 (ver.c_str (), id_parts[PK_PACKAGE_ID_VERSION])) { + MIL << "not a matching version\n"; continue; + } - if (g_strcmp0(pkg.repository().alias().c_str(), id_parts[PK_PACKAGE_ID_DATA])) + if (!pkg.isSystem()) { + if (!strncmp(id_parts[PK_PACKAGE_ID_DATA], "installed", 9)) { + MIL << "pkg is not installed\n"; + continue; + } + if (g_strcmp0(pkg.repository().alias().c_str(), id_parts[PK_PACKAGE_ID_DATA])) { + MIL << "repo does not match\n"; + continue; + } + } else if (strncmp(id_parts[PK_PACKAGE_ID_DATA], "installed", 9)) { + MIL << "pkg installed\n"; continue; + } MIL << "found " << pkg << endl; package = pkg; diff --git a/src/pk-backend-job.c b/src/pk-backend-job.c index 45e992a..d1d7035 100644 --- a/src/pk-backend-job.c +++ b/src/pk-backend-job.c @@ -987,7 +987,7 @@ pk_backend_job_set_item_progress (PkBackendJob *job, /* invalid number? */ if (percentage > 100 && percentage != PK_BACKEND_PERCENTAGE_INVALID) { - g_debug ("invalid number %i", percentage); + g_error ("invalid number %i", percentage); return; } -- 1.8.1 ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.uwcJYp/_old 2013-01-20 08:23:24.000000000 +0100 +++ /var/tmp/diff_new_pack.uwcJYp/_new 2013-01-20 08:23:24.000000000 +0100 @@ -1,12 +1,4 @@ -libpackagekit-glib2-14 +libpackagekit-glib2-16 libpackagekit-glib2-devel requires -libpackagekit-glib2-<targettype> - requires "libpackagekit-glib2-14-<targettype> = <version>" -libpackagekit-qt14 -libpackagekit-qt-devel - requires -libpackagekit-qt-<targettype> - requires "libpackagekit-qt14-<targettype> = <version>" -libpackagekit-qt2-2 -libpackagekit-qt2-devel - requires -libpackagekit-qt2-<targettype> - requires "libpackagekit-qt2-2-<targettype> = <version>" + requires "libpackagekit-glib2-16-<targettype> = <version>" ++++++ fix-policies-opensuse.patch ++++++ --- policy/org.freedesktop.packagekit.policy.in 2012-10-01 09:51:24.000000000 +0200 +++ policy/org.freedesktop.packagekit.policy.in 2013-01-17 10:56:48.268361307 +0100 @@ -262,7 +262,7 @@ <defaults> <allow_any>no</allow_any> <allow_inactive>no</allow_inactive> - <allow_active>yes</allow_active> + <allow_active>auth_admin</allow_active> </defaults> <annotate key="org.freedesktop.policykit.exec.path">/usr/libexec/pk-trigger-offline-update</annotate> </action> @@ -278,7 +278,7 @@ <defaults> <allow_any>no</allow_any> <allow_inactive>no</allow_inactive> - <allow_active>yes</allow_active> + <allow_active>auth_admin</allow_active> </defaults> <annotate key="org.freedesktop.policykit.exec.path">/usr/libexec/pk-clear-offline-update</annotate> </action> -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
