From: Mariano Lopez <mariano.lo...@linux.intel.com> This commit adds the Clear Linux client updater. This is experimental and bleeding edge, including the comments on the recipe.
Signed-off-by: Mariano Lopez <mariano.lo...@linux.intel.com> Signed-off-by: Joshua Lock <joshua.g.l...@intel.com> --- .../0001-Tolerate-quotes-in-os-release-files.patch | 59 ++++++++++++++++++++++ ...hange-systemctl-path-to-OE-systemctl-path.patch | 31 ++++++++++++ .../swupd-client/Fix-build-failure-on-Yocto.patch | 36 +++++++++++++ .../Right-usage-of-AC_ARG_ENABLE-on-bzip2.patch | 38 ++++++++++++++ meta/recipes-devtools/swupd/swupd-client_2.87.bb | 49 ++++++++++++++++++ 5 files changed, 213 insertions(+) create mode 100644 meta/recipes-devtools/swupd/swupd-client/0001-Tolerate-quotes-in-os-release-files.patch create mode 100644 meta/recipes-devtools/swupd/swupd-client/Change-systemctl-path-to-OE-systemctl-path.patch create mode 100644 meta/recipes-devtools/swupd/swupd-client/Fix-build-failure-on-Yocto.patch create mode 100644 meta/recipes-devtools/swupd/swupd-client/Right-usage-of-AC_ARG_ENABLE-on-bzip2.patch create mode 100644 meta/recipes-devtools/swupd/swupd-client_2.87.bb diff --git a/meta/recipes-devtools/swupd/swupd-client/0001-Tolerate-quotes-in-os-release-files.patch b/meta/recipes-devtools/swupd/swupd-client/0001-Tolerate-quotes-in-os-release-files.patch new file mode 100644 index 0000000..49c71ae --- /dev/null +++ b/meta/recipes-devtools/swupd/swupd-client/0001-Tolerate-quotes-in-os-release-files.patch @@ -0,0 +1,59 @@ +From 586e7b927461f6604ee3a3159cd7a6d4ac22ef30 Mon Sep 17 00:00:00 2001 +From: Dmitry Rozhkov <dmitry.rozh...@intel.com> +Date: Thu, 11 Feb 2016 13:29:57 +0200 +Subject: [PATCH 1/2] Tolerate quotes in os-release files + +Some systems like Yocto or OpenSUSE prefer to wrap values in +/etc/os-release file with quotes always and that still conforms +to the format defined in systemd. + +This patch removes quotes from the values before trying to +transform them into integer version id. + +Signed-off-by: Dmitry Rozhkov <dmitry.rozh...@intel.com> + +Upstream-Status: Backport (v3.0.0+) + +--- + src/version.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/src/version.c b/src/version.c +index 0e09cd9..83d6ad4 100644 +--- a/src/version.c ++++ b/src/version.c +@@ -88,6 +88,7 @@ int read_version_from_subvol_file(char *path_prefix) + FILE *file; + int v = -1; + char *buildstamp; ++ char *src, *dest; + + string_or_die(&buildstamp, "%s/usr/lib/os-release", path_prefix); + file = fopen(buildstamp, "rm"); +@@ -106,7 +107,22 @@ int read_version_from_subvol_file(char *path_prefix) + break; + } + +- if (strncmp(line,"VERSION_ID=", 11) == 0) { ++ if (strncmp(line, "VERSION_ID=", 11) == 0) { ++ src = &line[11]; ++ ++ /* Drop quotes and newline in value */ ++ dest = src; ++ while (*src) { ++ if (*src == '\'' || *src == '"' || *src == '\n') { ++ ++src; ++ } else { ++ *dest = *src; ++ ++dest; ++ ++src; ++ } ++ } ++ *dest = 0; ++ + v = strtoull(&line[11], NULL, 10); + break; + } +-- +2.5.0 + diff --git a/meta/recipes-devtools/swupd/swupd-client/Change-systemctl-path-to-OE-systemctl-path.patch b/meta/recipes-devtools/swupd/swupd-client/Change-systemctl-path-to-OE-systemctl-path.patch new file mode 100644 index 0000000..5ca6373 --- /dev/null +++ b/meta/recipes-devtools/swupd/swupd-client/Change-systemctl-path-to-OE-systemctl-path.patch @@ -0,0 +1,31 @@ +From 259d86e64146c3156eccfcce0351a9cdc4714766 Mon Sep 17 00:00:00 2001 +From: Jaska Uimonen <jaska.uimo...@intel.com> +Date: Thu, 14 Jan 2016 10:17:43 +0200 +Subject: [PATCH] change systemctl path to OE systemctl path + +Upstream-Status: Inappropriate + +--- + src/scripts.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/scripts.c b/src/scripts.c +index e426272..9bec0f5 100644 +--- a/src/scripts.c ++++ b/src/scripts.c +@@ -84,10 +84,10 @@ static void update_triggers(void) + int ret; + LOG_INFO(NULL, "calling systemd trigger", class_scripts, ""); + +- ret = system("/usr/bin/systemctl daemon-reload"); ++ ret = system("/bin/systemctl daemon-reload"); + if (ret != 0) + LOG_ERROR(NULL, "systemd daemon reload failed", class_scripts, "%d", ret); +- ret = system("/usr/bin/systemctl restart update-triggers.target"); ++ ret = system("/bin/systemctl restart update-triggers.target"); + if (ret != 0) + LOG_ERROR(NULL, "systemd update triggers failed", class_scripts, "%d", ret); + } +-- +2.5.0 + diff --git a/meta/recipes-devtools/swupd/swupd-client/Fix-build-failure-on-Yocto.patch b/meta/recipes-devtools/swupd/swupd-client/Fix-build-failure-on-Yocto.patch new file mode 100644 index 0000000..73f1728 --- /dev/null +++ b/meta/recipes-devtools/swupd/swupd-client/Fix-build-failure-on-Yocto.patch @@ -0,0 +1,36 @@ +From ccce73a2d703e6789ded87ca5aa9f3b7c506892a Mon Sep 17 00:00:00 2001 +From: Amarnath Valluri <amarnath.vall...@intel.com> +Date: Thu, 7 Jan 2016 16:19:34 +0200 +Subject: [PATCH] Fix build failure on Yocto + +On install phase certificate files are being installed twice as included in +_DATA twice. We can use EXTRA_DIST than dist_. + +Upstream-Status: Inappropriate + +Signed-off-by: Amarnath Valluri <amarnath.vall...@intel.com> +--- + Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 1e65d3d..4d15c55 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -111,11 +111,11 @@ SWUPD_CERTS = certs/157753a5.0 \ + certs/d6325660.0 \ + certs/d6325660.1 + swupdcerts_DATA = $(SWUPD_CERTS) +-dist_swupdcerts_DATA = $(SWUPD_CERTS) + + EXTRA_DIST += \ + data/check-update.service \ +- data/check-update.timer ++ data/check-update.timer \ ++ $(SWUPD_CERTS) + + DISTCHECK_CONFIGURE_FLAGS = \ + --with-systemdsystemunitdir=$$dc_install_base/$(systemdunitdir) +-- +2.1.4 + diff --git a/meta/recipes-devtools/swupd/swupd-client/Right-usage-of-AC_ARG_ENABLE-on-bzip2.patch b/meta/recipes-devtools/swupd/swupd-client/Right-usage-of-AC_ARG_ENABLE-on-bzip2.patch new file mode 100644 index 0000000..e5b53ef --- /dev/null +++ b/meta/recipes-devtools/swupd/swupd-client/Right-usage-of-AC_ARG_ENABLE-on-bzip2.patch @@ -0,0 +1,38 @@ +From d80ae9954c5e5b720766274249dbf5309b7c70a9 Mon Sep 17 00:00:00 2001 +From: Amarnath Valluri <amarnath.vall...@intel.com> +Date: Wed, 13 Jan 2016 15:46:19 +0200 +Subject: [PATCH] Right usage of AC_ARG_ENABLE on bzip2 + +Upstream-Status: Pending[Not submitted] + +Signed-off-by: Amarnath Valluri <amarnath.vall...@intel.com> +--- + configure.ac | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f94a17d..b11ef0a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,11 +20,13 @@ AC_CONFIG_HEADERS([config.h]) + PKG_CHECK_MODULES([lzma], [liblzma]) + PKG_CHECK_MODULES([zlib], [zlib]) + AC_ARG_ENABLE( +- bzip2, +- AS_HELP_STRING([--disable-bzip2],[Do not use bzip2 compression (uses bzip2 by default)]), +- AC_DEFINE(SWUPD_WITHOUT_BZIP2,1,[Do not use bzip2 compression]) , +- AC_DEFINE(SWUPD_WITH_BZIP2,1,[Use bzip2 compression]) +- AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress], [], [AC_MSG_ERROR([the libbz2 library is missing])]) ++ [bzip2], ++ AS_HELP_STRING([--disable-bzip2],[Do not use bzip2 compression (uses bzip2 by default)]) ++) ++AS_IF([test "x$enable_bzip2" = "xyes" ], ++ [AC_DEFINE(SWUPD_WITH_BZIP2,1,[Use bzip2 compression]) ++ AC_CHECK_LIB([bz2], [BZ2_bzBuffToBuffCompress], [], [AC_MSG_ERROR([the libbz2 library is missing])])], ++ [AC_DEFINE(SWUPD_WITHOUT_BZIP2,1,[Do not use bzip2 compression])] + ) + + AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], +-- +2.1.4 + diff --git a/meta/recipes-devtools/swupd/swupd-client_2.87.bb b/meta/recipes-devtools/swupd/swupd-client_2.87.bb new file mode 100644 index 0000000..a5afdd6 --- /dev/null +++ b/meta/recipes-devtools/swupd/swupd-client_2.87.bb @@ -0,0 +1,49 @@ +SUMMARY = "swupd sofware update from Clear Linux - client component" +LICENSE = "GPL-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=04d0b48662817042d80393e7511fa41b \ + file://bsdiff/LICENSE;md5=0dbe7a50f028269750631fcbded3846a" + +SRC_URI = "\ + https://download.clearlinux.org/releases/5700/clear/source/SRPMS/${BPN}-${PV}-105.src.rpm;extract=${BP}.tar.gz \ + file://Fix-build-failure-on-Yocto.patch \ + file://Right-usage-of-AC_ARG_ENABLE-on-bzip2.patch \ + file://Change-systemctl-path-to-OE-systemctl-path.patch \ + file://0001-Tolerate-quotes-in-os-release-files.patch \ +" + +SRC_URI[md5sum] = "5d272c62edb8a9c576005ac5e1182ea3" +SRC_URI[sha256sum] = "45df259a7dc2fed985ee9961e112120fc46670dd75476c3262fc6804b1c66fb8" + +DEPENDS = "glib-2.0 curl zlib bzip2 xz openssl" +RDEPENDS_${PN} = "gzip bzip2 tar xz" +# swupd requires at least an update-triggers target, should it be part of the +# swupd-client package? +RDEPENDS_${PN} = "swupd-units" +# We check /etc/os-release for the current OS version number +RRECOMMENDS_${PN} = "os-release" + +inherit pkgconfig autotools-brokensep systemd + +EXTRA_OECONF = "--with-systemdsystemunitdir=${systemd_system_unitdir}" + +#TODO: create and install /var/lib/swupd/{delta,staged/download} +do_install_append () { + # swupd-client 2.87 doesn't (succesfully) create these and fails to update + # should they not exist. This is due to a bash-specific shell command + # called to create the directories 'mkdir -p /var/lib/{delta,staged,download}' + install -d ${D}/var/lib/swupd/delta + install -d ${D}/var/lib/swupd/download + install -d ${D}/var/lib/swupd/staged + + # TODO: This should be a less os-specific directory and not hard-code datadir + install -d ${D}/usr/share/clear/bundles +} + +FILES_${PN} += "\ + /usr/share/clear \ + ${systemd_system_unitdir}/multi-user.target.wants* \ + /var/lib/swupd \ +" + +SYSTEMD_SERVICE_${PN} = "check-update.timer check-update.service" +SYSTEMD_AUTO_ENABLE_${PN} = "disable" -- 2.5.0 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core