aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-core
diff options
context:
space:
mode:
authorJoshua Lock <joshua.g.lock@intel.com>2016-05-13 21:54:46 +0100
committerJoshua Lock <joshua.g.lock@intel.com>2016-05-13 21:58:12 +0100
commit01f7c8bc322508f8781e532bbb75784d0d29fd82 (patch)
treef5dc4b7964595f9496d8bdc2ac51f68326b4786c /recipes-core
parent5f61de41feafa927e97120319f7c368326a1566b (diff)
downloadmeta-swupd-01f7c8bc322508f8781e532bbb75784d0d29fd82.tar.gz
meta-swupd-01f7c8bc322508f8781e532bbb75784d0d29fd82.tar.bz2
meta-swupd-01f7c8bc322508f8781e532bbb75784d0d29fd82.zip
swupd-server: fix fullfiles patch for swupd-server-2.53
Rebasing the fullfiles.c-work-around-pseudo-bug.patch patch for newer swupd 3.x branches prevents it from being applied cleanly to the 2.53 version. Resolve this by keeping a separate copy of the original patch for swupd-server-2.53 Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Diffstat (limited to 'recipes-core')
-rw-r--r--recipes-core/swupd-server/swupd-server-2.53/fullfiles.c-work-around-pseudo-bug.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/recipes-core/swupd-server/swupd-server-2.53/fullfiles.c-work-around-pseudo-bug.patch b/recipes-core/swupd-server/swupd-server-2.53/fullfiles.c-work-around-pseudo-bug.patch
new file mode 100644
index 0000000..aa03054
--- /dev/null
+++ b/recipes-core/swupd-server/swupd-server-2.53/fullfiles.c-work-around-pseudo-bug.patch
@@ -0,0 +1,66 @@
+From 939a50bf2fec9463fb721fa9188f98e991dfddc9 Mon Sep 17 00:00:00 2001
+From: Patrick Ohly <patrick.ohly@intel.com>
+Date: Wed, 30 Mar 2016 13:14:42 +0200
+Subject: [PATCH] fullfiles.c: work around pseudo bug
+
+Hard-linking the actual file looses the xattrs due to a pseudo bug.
+We work around that here by explicitly copying the xattrs.
+
+Upstream-Status: Inappropriate [workaround]
+
+Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
+---
+ src/fullfiles.c | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+diff --git a/src/fullfiles.c b/src/fullfiles.c
+index fa78293..949d8f0 100644
+--- a/src/fullfiles.c
++++ b/src/fullfiles.c
+@@ -29,6 +29,7 @@
+ #include <assert.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/xattr.h>
+ #include <stdint.h>
+ #include <errno.h>
+ #include <libgen.h>
+@@ -144,6 +145,35 @@ static void create_fullfile(struct file *file)
+ }
+ }
+
++ /* step 1a: work around pseudo bug https://bugzilla.yoctoproject.org/show_bug.cgi?id=9317:
++ pseudo fails to share xattrs between files sharing the same inode. We have to copy
++ all xattrs explicitly. */
++ {
++ /* Intentionally simplistic code with static buffer sizes.
++ Pseudo bug fix is scheduled for the near future. */
++ char list[1024];
++ char *name;
++ ssize_t listsize;
++ listsize = llistxattr(origin, list, sizeof(list));
++ if (listsize < 0) {
++ fprintf(stderr, "Copying xattrs: llistxattr(%s): %s\n", origin, strerror(errno));
++ assert(0);
++ }
++ for (name = list; name < list + listsize; name += strlen(name) + 1) {
++ char value[2048];
++ ssize_t valuesize;
++ valuesize = lgetxattr(origin, name, value, sizeof(value));
++ if (valuesize < 0) {
++ fprintf(stderr, "Copying xattrs: lgetxattr(%s): %s\n", origin, strerror(errno));
++ assert(0);
++ }
++ if (lsetxattr(tempfile, name, value, valuesize, 0)) {
++ fprintf(stderr, "Copying xattrs: lsetxattr(%s, %s): %s\n", tempfile, name, strerror(errno));
++ assert(0);
++ }
++ }
++ }
++
+ /* step 2a: tar it with each compression type */
+ // lzma
+ string_or_die(&tarcommand, "tar --directory=%s " TAR_PERM_ATTR_ARGS " -Jcf %s/%i/files/%s.tar.xz %s",
+--
+2.1.4
+