diff --git a/InstallAppdata.sh b/InstallAppdata.sh new file mode 100644 index 0000000..4f93f4f --- /dev/null +++ b/InstallAppdata.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (c) 2014 Dominique Leuenberger, Amsterdam, The Netherlands + +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: + +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +RPMMD=/repodata/ +YAST2=/suse/setup/descr + +# Cleanup existing appdata found on the system +for list in $(find /usr/share/app-info/xmls/*.xml.gz); do + appdata=$(basename ${list} .xml.gz) + appstream-util uninstall "${appdata}" 2>&1 > /dev/null +done + +# Install new appdata files +while ([ "$1" = "-R" ]); do + case $4 in + rpm-md) + appstream-util install-origin "$2" $6$RPMMD/*appdata.xml.gz $6$RPMMD/*app-icons.tar.gz 2>&1 > /dev/null + ;; + yast2) + appstream-util install-origin "$2" "$6$YAST2/appdata.xml.gz" "$6$YAST2/app-icons.tar.gz" 2>&1 > /dev/null + ;; + *) + echo "unknown repo type - Appstream data not considered" + esac + shift 6 +done + diff --git a/gnome-software-add-default-yast-appfolder.patch b/gnome-software-add-default-yast-appfolder.patch new file mode 100644 index 0000000..12cdcf5 --- /dev/null +++ b/gnome-software-add-default-yast-appfolder.patch @@ -0,0 +1,40 @@ +Index: gnome-software-3.14.0/src/gs-folders.c +=================================================================== +--- gnome-software-3.14.0.orig/src/gs-folders.c ++++ gnome-software-3.14.0/src/gs-folders.c +@@ -559,6 +559,7 @@ gs_folders_convert (void) + const gchar * const children[] = { + "Utilities", + "Sundry", ++ "YaST", + NULL + }; + const gchar * const utilities_categories[] = { +@@ -627,6 +628,11 @@ gs_folders_convert (void) + "vino-preferences.desktop", + NULL + }; ++ const gchar * const yast_categories[] = { ++ "X-SuSE-YaST", ++ NULL ++ }; ++ + gchar *path; + gchar *child_path; + GSettings *child; +@@ -653,6 +659,15 @@ gs_folders_convert (void) + + g_object_unref (child); + g_free (child_path); ++ ++ child_path = g_strconcat (path, "folders/YaST/", NULL); ++ child = g_settings_new_with_path (APP_FOLDER_CHILD_SCHEMA, child_path); ++ g_settings_set_string (child, "name", "suse-yast.directory"); ++ g_settings_set_boolean (child, "translate", TRUE); ++ g_settings_set_strv (child, "categories", yast_categories); ++ ++ g_object_unref (child); ++ g_free (child_path); + + } + diff --git a/gnome-software.changes b/gnome-software.changes index ad40660..d2db3bd 100644 --- a/gnome-software.changes +++ b/gnome-software.changes @@ -1,3 +1,37 @@ +------------------------------------------------------------------- +Sat Oct 4 18:10:23 UTC 2014 - badshah400@gmail.com + +- Add gnome-software-add-default-yast-appfolder.patch to add a + YaST app-folder by default, in addition to existing app-folders + Sundry and Utilities; fixes boo#897713. + +------------------------------------------------------------------- +Sat Oct 4 14:16:53 UTC 2014 - dimstar@opensuse.org + +- Move %lang_package before the definition of + zypp-plugin-appstream to not confuse RPM with the redefined + version of the subpackage. + +------------------------------------------------------------------- +Sat Oct 4 11:09:19 UTC 2014 - dimstar@opensuse.org + +- Split InstallAppdata.sh in an own package libzypp-plugin-appdata: + other software centers might have to rely on this as well in the + future. +- Add appstream-glib Requires and minimum version for libzypp to + libzypp-plugin-appdata. + +------------------------------------------------------------------- +Thu Oct 2 14:37:21 UTC 2014 - dimstar@opensuse.org + +- Drop PackageKit-branding-upstream Requires: PK 1.0.0 got a major + rework and dropped the DesktopFile database. So the 'openSUSE' + branded package is good enough. +- Add InstallAppdata.sh: the script is executed by libzypp whenever + some repos are refreshed. The script extracts the appstream data + from the repo metadata and installs it into the 'well known' + location on the file system (/usr/share/app-info). + ------------------------------------------------------------------- Tue Sep 23 10:01:30 UTC 2014 - dimstar@opensuse.org diff --git a/gnome-software.spec b/gnome-software.spec index f5cc5af..f4849e0 100644 --- a/gnome-software.spec +++ b/gnome-software.spec @@ -25,8 +25,11 @@ License: GPL-2.0+ Group: System/GUI/GNOME Url: https://wiki.gnome.org/Design/Apps/Software Source: http://download.gnome.org/sources/gnome-software/3.14/%{name}-%{version}.tar.xz +Source1: InstallAppdata.sh # PATCH-FEATURE-OPENSUSE gnome-software-PK-updates.patch dimstar@opensuse.org -- Switch to PackageKit Update provider instead of systemd offline updates. Patch0: gnome-software-PK-updates.patch +# PATCH-FEATURE-OPENSUSE gnome-software-add-default-yast-appfolder.patch boo#897713 badshah400@gmail.com -- Adds a YaST app-folder by default, in addition to existing app-folders Sundry and Utilities +Patch1: gnome-software-add-default-yast-appfolder.patch BuildRequires: intltool >= 0.35.0 BuildRequires: suse-xsl-stylesheets BuildRequires: update-desktop-files @@ -39,19 +42,35 @@ BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: pkgconfig(libxslt) BuildRequires: pkgconfig(packagekit-glib2) >= 1.0.0 BuildRequires: pkgconfig(sqlite3) -# gnome-software requires ScanDesktopFiles=true in PK.conf, which openSUSE explicitly disables for performance reason. Users that want to test gnome-software (technical preview) will have to take this performance hit. -Requires: PackageKit-branding-upstream BuildRoot: %{_tmppath}/%{name}-%{version}-build +Requires: libzypp-plugin-appdata %glib2_gsettings_schema_requires %description AppStore like management of Applications for your GNOME Desktop. %lang_package +%package -n libzypp-plugin-appdata +Version: 1.0 +Release: 0 +Summary: Extend libzypp to handle AppStream metadata +Group: System/Libraries +Requires: appstream-glib >= 0.2.4 +# appdata hook was introduced in libzypp 14.29.4 +Requires: libzypp >= 14.29.4 + +%description -n libzypp-plugin-appdata +This plugin extends libzypp to install AppStream metadata, as extracted from the +repository metadata, onto the file system in order to be picked up by +software centers. + +At this moment, gnome-software is the only known implementation making use of it. + %prep %setup -q # Disables - let's try the systemd offline updater #patch0 -p1 +%patch1 -p1 %build %configure \ @@ -61,6 +80,8 @@ make %{?_smp_mflags} %install %make_install find %{buildroot}%{_libdir} -type f -name '*.la' -delete -print +# Install AppData zypp plugin +install -Dm 0755 %{S:1} %{buildroot}%{_prefix}/lib/zypp/plugins/appdata/$(basename %{S:1}) #suse_update_desktop_file gnome-software %find_lang %{name} @@ -97,6 +118,14 @@ find %{buildroot}%{_libdir} -type f -name '*.la' -delete -print #{_libexecdir}/gnome-software-service %{_mandir}/man1/%{name}.1%{?ext_man} %{_sysconfdir}/xdg/autostart/gnome-software-service.desktop +# zypp plugin triggering AppData update on repo refresh +%dir %{_prefix}/lib/zypp +%dir %{_prefix}/lib/zypp/plugins +%dir %{_prefix}/lib/zypp/plugins/appdata/ + +%files -n libzypp-plugin-appdata +%defattr(-,root,root) +%{_prefix}/lib/zypp/plugins/appdata/InstallAppdata.sh %files lang -f %{name}.lang