[oe] [meta-filesystems][PATCH 2/2] xfsprogs: Upgrade to 4.12.0

Khem Raj raj.khem at gmail.com
Wed Sep 6 13:42:04 UTC 2017


On Wed, Sep 6, 2017 at 1:09 AM, Martin Jansa <martin.jansa at gmail.com> wrote:
> Fails to build (probably due to gold):
> http://errors.yoctoproject.org/Errors/Details/155158/
>

yes although it seems we are missing -luuid on cmdline

> On Sun, Sep 3, 2017 at 12:05 AM, Khem Raj <raj.khem at gmail.com> wrote:
>>
>> Fix cross builds with hardening flags
>>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>>  ...Rename-progname-as-it-is-provided-by-libc.patch | 204
>> +++++++++++++++++++++
>>  .../files/remove_flags_from_build_flags.patch      |  13 ++
>>  .../xfsprogs/files/xfsprogs-4.12.0-fix_musl.patch  | 117 ++++++++++++
>>  .../{xfsprogs_4.11.0.bb => xfsprogs_4.12.0.bb}     |   7 +-
>>  4 files changed, 339 insertions(+), 2 deletions(-)
>>  create mode 100644
>> meta-filesystems/recipes-utils/xfsprogs/files/0001-Rename-progname-as-it-is-provided-by-libc.patch
>>  create mode 100644
>> meta-filesystems/recipes-utils/xfsprogs/files/remove_flags_from_build_flags.patch
>>  create mode 100644
>> meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-4.12.0-fix_musl.patch
>>  rename meta-filesystems/recipes-utils/xfsprogs/{xfsprogs_4.11.0.bb =>
>> xfsprogs_4.12.0.bb} (85%)
>>
>> diff --git
>> a/meta-filesystems/recipes-utils/xfsprogs/files/0001-Rename-progname-as-it-is-provided-by-libc.patch
>> b/meta-filesystems/recipes-utils/xfsprogs/files/0001-Rename-progname-as-it-is-provided-by-libc.patch
>> new file mode 100644
>> index 000000000..aa13b67be
>> --- /dev/null
>> +++
>> b/meta-filesystems/recipes-utils/xfsprogs/files/0001-Rename-progname-as-it-is-provided-by-libc.patch
>> @@ -0,0 +1,204 @@
>> +From 95aaaa800e0dc387875b4e2adad480b72c1632ff Mon Sep 17 00:00:00 2001
>> +From: Khem Raj <raj.khem at gmail.com>
>> +Date: Sat, 2 Sep 2017 14:46:49 -0700
>> +Subject: [PATCH] Rename progname as it is provided by libc
>> +
>> +Rename local variable progname to avoid a clash with libc
>> +global symbols
>> +
>> +Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> +---
>> + io/init.c                 | 10 +++++-----
>> + mdrestore/xfs_mdrestore.c | 10 +++++-----
>> + quota/init.c              | 10 +++++-----
>> + spaceman/init.c           |  8 ++++----
>> + 4 files changed, 19 insertions(+), 19 deletions(-)
>> +
>> +diff --git a/io/init.c b/io/init.c
>> +index 20d5f80..e82e101 100644
>> +--- a/io/init.c
>> ++++ b/io/init.c
>> +@@ -23,7 +23,7 @@
>> + #include "init.h"
>> + #include "io.h"
>> +
>> +-char  *progname;
>> ++char  *io_progname;
>> + int   exitcode;
>> + int   expert;
>> + int   idlethread;
>> +@@ -35,7 +35,7 @@ usage(void)
>> + {
>> +       fprintf(stderr,
>> + _("Usage: %s [-adfinrRstVx] [-m mode] [-p prog] [[-c|-C] cmd]...
>> file\n"),
>> +-              progname);
>> ++              io_progname);
>> +       exit(1);
>> + }
>> +
>> +@@ -142,7 +142,7 @@ init(
>> +       xfs_fsop_geom_t geometry = { 0 };
>> +       struct fs_path  fsp;
>> +
>> +-      progname = basename(argv[0]);
>> ++      io_progname = basename(argv[0]);
>> +       setlocale(LC_ALL, "");
>> +       bindtextdomain(PACKAGE, LOCALEDIR);
>> +       textdomain(PACKAGE);
>> +@@ -186,7 +186,7 @@ init(
>> +                       flags |= IO_NONBLOCK;
>> +                       break;
>> +               case 'p':
>> +-                      progname = optarg;
>> ++                      io_progname = optarg;
>> +                       break;
>> +               case 'r':
>> +                       flags |= IO_READONLY;
>> +@@ -207,7 +207,7 @@ init(
>> +                       expert = 1;
>> +                       break;
>> +               case 'V':
>> +-                      printf(_("%s version %s\n"), progname, VERSION);
>> ++                      printf(_("%s version %s\n"), io_progname,
>> VERSION);
>> +                       exit(0);
>> +               default:
>> +                       usage();
>> +diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c
>> +index 9d1b4e8..b840a54 100644
>> +--- a/mdrestore/xfs_mdrestore.c
>> ++++ b/mdrestore/xfs_mdrestore.c
>> +@@ -19,7 +19,7 @@
>> + #include "libxfs.h"
>> + #include "xfs_metadump.h"
>> +
>> +-char          *progname;
>> ++char          *mdrestore_progname;
>> + int           show_progress = 0;
>> + int           show_info = 0;
>> + int           progress_since_warning = 0;
>> +@@ -30,7 +30,7 @@ fatal(const char *msg, ...)
>> +       va_list         args;
>> +
>> +       va_start(args, msg);
>> +-      fprintf(stderr, "%s: ", progname);
>> ++      fprintf(stderr, "%s: ", mdrestore_progname);
>> +       vfprintf(stderr, msg, args);
>> +       exit(1);
>> + }
>> +@@ -194,7 +194,7 @@ perform_restore(
>> + static void
>> + usage(void)
>> + {
>> +-      fprintf(stderr, "Usage: %s [-V] [-g] source target\n", progname);
>> ++      fprintf(stderr, "Usage: %s [-V] [-g] source target\n",
>> mdrestore_progname);
>> +       exit(1);
>> + }
>> +
>> +@@ -212,7 +212,7 @@ main(
>> +       struct stat     statbuf;
>> +       int             is_target_file;
>> +
>> +-      progname = basename(argv[0]);
>> ++      mdrestore_progname = basename(argv[0]);
>> +
>> +       while ((c = getopt(argc, argv, "giV")) != EOF) {
>> +               switch (c) {
>> +@@ -223,7 +223,7 @@ main(
>> +                               show_info = 1;
>> +                               break;
>> +                       case 'V':
>> +-                              printf("%s version %s\n", progname,
>> VERSION);
>> ++                              printf("%s version %s\n",
>> mdrestore_progname, VERSION);
>> +                               exit(0);
>> +                       default:
>> +                               usage();
>> +diff --git a/quota/init.c b/quota/init.c
>> +index d45dc4c..46403de 100644
>> +--- a/quota/init.c
>> ++++ b/quota/init.c
>> +@@ -21,7 +21,7 @@
>> + #include "input.h"
>> + #include "init.h"
>> +
>> +-char  *progname;
>> ++char  *quota_progname;
>> + int   exitcode;
>> + int   expert;
>> + bool  foreign_allowed = false;
>> +@@ -47,7 +47,7 @@ usage(void)
>> + {
>> +       fprintf(stderr,
>> +               _("Usage: %s [-V] [-x] [-f] [-p prog] [-c cmd]... [-d
>> project]... [path]\n"),
>> +-              progname);
>> ++              quota_progname);
>> +       exit(1);
>> + }
>> +
>> +@@ -147,7 +147,7 @@ init(
>> + {
>> +       int             c;
>> +
>> +-      progname = basename(argv[0]);
>> ++      quota_progname = basename(argv[0]);
>> +       setlocale(LC_ALL, "");
>> +       bindtextdomain(PACKAGE, LOCALEDIR);
>> +       textdomain(PACKAGE);
>> +@@ -173,13 +173,13 @@ init(
>> +                       projid_file = optarg;
>> +                       break;
>> +               case 'p':
>> +-                      progname = optarg;
>> ++                      quota_progname = optarg;
>> +                       break;
>> +               case 'x':
>> +                       expert++;
>> +                       break;
>> +               case 'V':
>> +-                      printf(_("%s version %s\n"), progname, VERSION);
>> ++                      printf(_("%s version %s\n"), quota_progname,
>> VERSION);
>> +                       exit(0);
>> +               default:
>> +                       usage();
>> +diff --git a/spaceman/init.c b/spaceman/init.c
>> +index b3eface..bedf112 100644
>> +--- a/spaceman/init.c
>> ++++ b/spaceman/init.c
>> +@@ -23,7 +23,7 @@
>> + #include "path.h"
>> + #include "space.h"
>> +
>> +-char  *progname;
>> ++char  *spaceman_progname;
>> + int   exitcode;
>> +
>> + void
>> +@@ -31,7 +31,7 @@ usage(void)
>> + {
>> +       fprintf(stderr,
>> +               _("Usage: %s [-c cmd] file\n"),
>> +-              progname);
>> ++              spaceman_progname);
>> +       exit(1);
>> + }
>> +
>> +@@ -74,7 +74,7 @@ init(
>> +       xfs_fsop_geom_t geometry = { 0 };
>> +       struct fs_path  fsp;
>> +
>> +-      progname = basename(argv[0]);
>> ++      spaceman_progname = basename(argv[0]);
>> +       setlocale(LC_ALL, "");
>> +       bindtextdomain(PACKAGE, LOCALEDIR);
>> +       textdomain(PACKAGE);
>> +@@ -86,7 +86,7 @@ init(
>> +                       add_user_command(optarg);
>> +                       break;
>> +               case 'V':
>> +-                      printf(_("%s version %s\n"), progname, VERSION);
>> ++                      printf(_("%s version %s\n"), spaceman_progname,
>> VERSION);
>> +                       exit(0);
>> +               default:
>> +                       usage();
>> +--
>> +2.14.1
>> +
>> diff --git
>> a/meta-filesystems/recipes-utils/xfsprogs/files/remove_flags_from_build_flags.patch
>> b/meta-filesystems/recipes-utils/xfsprogs/files/remove_flags_from_build_flags.patch
>> new file mode 100644
>> index 000000000..bba9a25c2
>> --- /dev/null
>> +++
>> b/meta-filesystems/recipes-utils/xfsprogs/files/remove_flags_from_build_flags.patch
>> @@ -0,0 +1,13 @@
>> +Index: xfsprogs-4.12.0/include/builddefs.in
>> +===================================================================
>> +--- xfsprogs-4.12.0.orig/include/builddefs.in
>> ++++ xfsprogs-4.12.0/include/builddefs.in
>> +@@ -164,7 +164,7 @@ ifeq ($(ENABLE_GETTEXT),yes)
>> + GCFLAGS += -DENABLE_GETTEXT
>> + endif
>> +
>> +-BUILD_CFLAGS += $(GCFLAGS) $(PCFLAGS)
>> ++BUILD_CFLAGS += $(GCFLAGS)
>> + # First, Global, Platform, Local CFLAGS
>> + CFLAGS += $(FCFLAGS) $(OPTIMIZER) $(GCFLAGS) $(PCFLAGS) $(LCFLAGS)
>> +
>> diff --git
>> a/meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-4.12.0-fix_musl.patch
>> b/meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-4.12.0-fix_musl.patch
>> new file mode 100644
>> index 000000000..efc57e4f6
>> --- /dev/null
>> +++
>> b/meta-filesystems/recipes-utils/xfsprogs/files/xfsprogs-4.12.0-fix_musl.patch
>> @@ -0,0 +1,117 @@
>> +From 21253610f9ef87db8e2a75b863b7fcfbd0cdb421 Mon Sep 17 00:00:00 2001
>> +From: "Darrick J. Wong" <darrick.wong at oracle.com>
>> +Date: Tue, 25 Jul 2017 13:45:01 -0500
>> +Subject: [PATCH] In patch 4944defad4 ("xfs_db: redirect printfs when
>> + metadumping to stdout"), we solved the problem of xfs_db printfs ending
>> up in
>> + the metadump stream by reassigning stdout for the duration of a stdout
>> + metadump.  Unfortunately, musl doesn't allow stdout to be reassigned (in
>> + their view "extern FILE *stdout" means "extern FILE * const stdout"), so
>> we
>> + abandon the old approach in favor of playing games with dup() to switch
>> the
>> + raw file descriptors.
>> +
>> +While we're at it, fix a regression where an unconverted outf test
>> +allows progress info to end up in the metadump stream.
>> +
>> +Signed-off-by: Darrick J. Wong <darrick.wong at oracle.com>
>> +---
>> + db/metadump.c | 47 ++++++++++++++++++++++++++++++++++++-----------
>> + 1 file changed, 36 insertions(+), 11 deletions(-)
>> +
>> +diff --git a/db/metadump.c b/db/metadump.c
>> +index 96641e0..4e2f648 100644
>> +--- a/db/metadump.c
>> ++++ b/db/metadump.c
>> +@@ -78,6 +78,7 @@ static int           obfuscate = 1;
>> + static int            zero_stale_data = 1;
>> + static int            show_warnings = 0;
>> + static int            progress_since_warning = 0;
>> ++static bool           stdout_metadump;
>> +
>> + void
>> + metadump_init(void)
>> +@@ -137,7 +138,7 @@ print_progress(const char *fmt, ...)
>> +       va_end(ap);
>> +       buf[sizeof(buf)-1] = '\0';
>> +
>> +-      f = (outf == stdout) ? stderr : stdout;
>> ++      f = stdout_metadump ? stderr : stdout;
>> +       fprintf(f, "\r%-59s", buf);
>> +       fflush(f);
>> +       progress_since_warning = 1;
>> +@@ -2750,7 +2751,8 @@ metadump_f(
>> +       xfs_agnumber_t  agno;
>> +       int             c;
>> +       int             start_iocur_sp;
>> +-      bool            stdout_metadump = false;
>> ++      int             outfd = -1;
>> ++      int             ret;
>> +       char            *p;
>> +
>> +       exitcode = 1;
>> +@@ -2870,16 +2872,35 @@ metadump_f(
>> +                * metadump operation so that dbprintf and other messages
>> +                * are sent to the console instead of polluting the
>> +                * metadump stream.
>> ++               *
>> ++               * We get to do this the hard way because musl doesn't
>> ++               * allow reassignment of stdout.
>> +                */
>> +-              outf = stdout;
>> +-              stdout = stderr;
>> ++              fflush(stdout);
>> ++              outfd = dup(STDOUT_FILENO);
>> ++              if (outfd < 0) {
>> ++                      perror("opening dump stream");
>> ++                      goto out;
>> ++              }
>> ++              ret = dup2(STDERR_FILENO, STDOUT_FILENO);
>> ++              if (ret < 0) {
>> ++                      perror("redirecting stdout");
>> ++                      close(outfd);
>> ++                      goto out;
>> ++              }
>> ++              outf = fdopen(outfd, "a");
>> ++              if (outf == NULL) {
>> ++                      fprintf(stderr, "cannot create dump stream\n");
>> ++                      dup2(outfd, 1);
>> ++                      close(outfd);
>> ++                      goto out;
>> ++              }
>> +               stdout_metadump = true;
>> +       } else {
>> +               outf = fopen(argv[optind], "wb");
>> +               if (outf == NULL) {
>> +                       print_warning("cannot create dump file");
>> +-                      free(metablock);
>> +-                      return 0;
>> ++                      goto out;
>> +               }
>> +       }
>> +
>> +@@ -2907,15 +2928,19 @@ metadump_f(
>> +       if (progress_since_warning)
>> +               fputc('\n', stdout_metadump ? stderr : stdout);
>> +
>> +-      if (stdout_metadump)
>> +-              stdout = outf;
>> +-      else
>> +-              fclose(outf);
>> ++      if (stdout_metadump) {
>> ++              fflush(outf);
>> ++              fflush(stdout);
>> ++              ret = dup2(outfd, STDOUT_FILENO);
>> ++              if (ret < 0)
>> ++                      perror("un-redirecting stdout");
>> ++      }
>> ++      fclose(outf);
>> +
>> +       /* cleanup iocur stack */
>> +       while (iocur_sp > start_iocur_sp)
>> +               pop_cur();
>> +-
>> ++out:
>> +       free(metablock);
>> +
>> +       return 0;
>> +--
>> +2.13.3
>> diff --git a/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_4.11.0.bb
>> b/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_4.12.0.bb
>> similarity index 85%
>> rename from meta-filesystems/recipes-utils/xfsprogs/xfsprogs_4.11.0.bb
>> rename to meta-filesystems/recipes-utils/xfsprogs/xfsprogs_4.12.0.bb
>> index 046dea425..444f712b5 100644
>> --- a/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_4.11.0.bb
>> +++ b/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_4.12.0.bb
>> @@ -8,9 +8,12 @@ DEPENDS = "util-linux util-linux-native"
>>  SRC_URI =
>> "https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/${BP}.tar.xz \
>>             file://link_needed_libs.patch \
>>             file://0001-define-__-prefixed-version-of-intXY_t-types.patch
>> \
>> +           file://remove_flags_from_build_flags.patch \
>> +           file://0001-Rename-progname-as-it-is-provided-by-libc.patch \
>> +           file://xfsprogs-4.12.0-fix_musl.patch \
>>             "
>> -SRC_URI[md5sum] = "f1f9b8c752347eefdb56483dafa0cefb"
>> -SRC_URI[sha256sum] =
>> "c3a6d87b564d7738243c507df82276bed982265e345363a95f2c764e8a5f5bb2"
>> +SRC_URI[md5sum] = "e348b0e1d7bd1cd82d64b91ff37e727e"
>> +SRC_URI[sha256sum] =
>> "b330ad8d737f4152ae511580102e2fc49212bb51dfb4b614084344abae46d0df"
>>
>>  inherit autotools-brokensep
>>
>> --
>> 2.14.1
>>
>> --
>> _______________________________________________
>> Openembedded-devel mailing list
>> Openembedded-devel at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>
>



More information about the Openembedded-devel mailing list