From c848547820d76a0c068c96c6d6d94530046a4eae Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Tue, 9 Sep 2014 13:34:32 +0100 Subject: [PATCH] Add a simple script that generates some offline metadata See http://blogs.gnome.org/hughsie/2014/08/29/putting-packagekit-metadata-on-the-fedora-livecd/ --- contrib/Makefile.am | 4 ++++ contrib/PackageKit.spec.in | 22 ++++++++++++++++++++++ contrib/generate-md-archive.sh | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100755 contrib/generate-md-archive.sh diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 80749c051..2f09e527c 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -29,4 +29,8 @@ bashcompletiondir = $(BASH_COMPLETIONS_DIR) dist_bashcompletion_DATA = pkcon endif +EXTRA_DIST = generate-md-archive.sh + +CLEANFILES = cached-metadata.tar + -include $(top_srcdir)/git.mk diff --git a/contrib/PackageKit.spec.in b/contrib/PackageKit.spec.in index 0579bc1b9..464b33028 100644 --- a/contrib/PackageKit.spec.in +++ b/contrib/PackageKit.spec.in @@ -10,6 +10,9 @@ License: GPLv2+ and LGPLv2+ URL: http://www.freedesktop.org/software/PackageKit/ Source0: http://www.freedesktop.org/software/PackageKit/releases/%{name}-%{version}.tar.xz +# generated using contrib/generate-md-archive.sh in the PackageKit source tree +Source1: cached-metadata.tar + Requires: %{name}-glib%{?_isa} = %{version}-%{release} Requires: shared-mime-info Requires: comps-extras @@ -92,6 +95,15 @@ Provides: PackageKit-libs = %{version}-%{release} %description glib GLib libraries for accessing PackageKit. +%package cached-metadata +Summary: Cached metadata for PackageKit +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description cached-metadata +Cached metadata allows application installers to start instantly on the +LiveCD or installed system without downloading files from the internet or +regenerating the SAT caches. It can safely removed if not required. + %package cron Summary: Cron job and related utilities for PackageKit Requires: crontabs @@ -208,6 +220,10 @@ pushd ${RPM_BUILD_ROOT}%{_datadir}/PackageKit > /dev/null ln -s ../pixmaps/comps icons popd > /dev/null +# ship cached metadata on the LiveCD +# http://blogs.gnome.org/hughsie/2014/08/29/putting-packagekit-metadata-on-the-fedora-livecd/ +tar -xf %{SOURCE1} --directory=$RPM_BUILD_ROOT + %find_lang %name %post @@ -270,6 +286,12 @@ popd > /dev/null %{_libdir}/packagekit-backend/libpk_backend_hif.so %endif +%files cached-metadata +%defattr(-,root,root,-) +%{_datadir}/PackageKit/hawkey +%{_datadir}/PackageKit/hawkey/* +%{_datadir}/PackageKit/metadata/* + %files glib %defattr(-,root,root,-) %{_libdir}/*packagekit-glib2.so.* diff --git a/contrib/generate-md-archive.sh b/contrib/generate-md-archive.sh new file mode 100755 index 000000000..ec7525c8b --- /dev/null +++ b/contrib/generate-md-archive.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# Copyright (C) 2014 Richard Hughes +# +# Licensed under the GNU General Public License Version 2 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# run this as non-root + +PREFIX=`realpath "./root"` +rm -rf ${PREFIX} +mkdir -p ${PREFIX}/etc/yum.repos.d +cp /etc/yum.repos.d/fedora.repo ${PREFIX}/etc/yum.repos.d/ +cp /etc/yum.repos.d/fedora-updates.repo ${PREFIX}/etc/yum.repos.d/ +cp /etc/yum.repos.d/fedora-updates-testing.repo ${PREFIX}/etc/yum.repos.d/ +[ -x /usr/bin/rpm ] && rpm --root=${PREFIX} --initdb +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct repo-set-data fedora enabled 1 +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct repo-set-data updates enabled 1 +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct repo-set-data fedora-debuginfo enabled 0 +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct repo-set-data updates-debuginfo enabled 0 +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct repo-set-data updates-testing-debuginfo enabled 0 +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct repo-set-data updates-testing enabled 0 +DESTDIR=${PREFIX} /usr/libexec/packagekit-direct refresh +rm -rf ${PREFIX}/etc +rm -rf ${PREFIX}/var/run +rm -rf ${PREFIX}/var/lib +# this is so we can use it again at runtime +mv ${PREFIX}/var/cache ${PREFIX}/var/share +mv ${PREFIX}/var ${PREFIX}/usr +cd ${PREFIX} && tar -cf ../cached-metadata.tar usr +rm -rf ${PREFIX} +echo "now ship cached-metadata.tar in your package!"