All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/24] rpm: upgrade to 4.15.1
@ 2019-12-05 15:43 Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 02/24] gettext-minimal-native: update to 0.20.1 Alexander Kanavin
                   ` (24 more replies)
  0 siblings, 25 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop patches that were merged upstream.

0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
modifies a file that was removed upstream.

Add a 0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch
as unfortunately the new parallel file classification feature from
upstream trips over somewhere in libmagic when inspected files are
compressed:
https://github.com/rpm-software-management/rpm/issues/756

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...satisfiable-dependency-when-building.patch |  28 +-
 ...lib-rpm-as-the-installation-path-for.patch |  14 +-
 ...kage-building-into-a-separate-functi.patch |  84 -----
 ...es-requires-do-not-use-monodis-from-.patch |  58 ---
 ...-run-file-classification-in-parallel.patch |  65 ++++
 ...ry-package-creation-via-thread-pools.patch | 127 -------
 ...e-operations-over-string-pools-threa.patch | 207 -----------
 ...ove-static-local-variables-from-buil.patch | 336 ------------------
 .../rpm/{rpm_4.14.2.1.bb => rpm_4.15.1.bb}    |  15 +-
 9 files changed, 90 insertions(+), 844 deletions(-)
 delete mode 100644 meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch
 delete mode 100644 meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
 create mode 100644 meta/recipes-devtools/rpm/files/0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch
 delete mode 100644 meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch
 delete mode 100644 meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch
 delete mode 100644 meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch
 rename meta/recipes-devtools/rpm/{rpm_4.14.2.1.bb => rpm_4.15.1.bb} (90%)

diff --git a/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch b/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
index 80e2f0fad70..4029233fb70 100644
--- a/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
+++ b/meta/recipes-devtools/rpm/files/0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch
@@ -1,4 +1,4 @@
-From 87cfc0db1ed6fe381a5ed5f0016d8c3344a31a11 Mon Sep 17 00:00:00 2001
+From f39c28eb52f12ae6e82db360ffd5a903ac8faca5 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 9 Jan 2017 18:52:11 +0200
 Subject: [PATCH] Do not add an unsatisfiable dependency when building rpms in
@@ -9,25 +9,23 @@ hand produces rpms that way by design.
 
 Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
 ---
  build/pack.c | 4 ----
  1 file changed, 4 deletions(-)
 
 diff --git a/build/pack.c b/build/pack.c
-index 1261cdbba..bb2d6f4f6 100644
+index e6cec1816..810cd7351 100644
 --- a/build/pack.c
 +++ b/build/pack.c
-@@ -595,10 +595,6 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- 	    headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
- 	}
+@@ -724,10 +724,6 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
+ 	headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
+     }
+ 
+-    if (cheating) {
+-	(void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
+-    }
+-
+     if ((rc = getPkgFilename(pkg->header, filename)))
+ 	return rc;
  
--	if (cheating) {
--	    (void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
--	}
--	
- 	{   char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
- 	    char *binRpm, *binDir;
- 	    binRpm = headerFormat(pkg->header, binFormat, &errorString);
--- 
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch b/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
index 82e7328757f..52440d68180 100644
--- a/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
+++ b/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
@@ -1,4 +1,4 @@
-From bd08eb0ae1312f347f49949481daa7c923752df2 Mon Sep 17 00:00:00 2001
+From 2f3d1619b6510bc131c4375827caf912559f0fa2 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 27 Feb 2017 09:43:30 +0200
 Subject: [PATCH] Do not hardcode "lib/rpm" as the installation path for
@@ -14,10 +14,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
  3 files changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 09af7c4..9bd6903 100644
+index d3aeab86e..1a1f3f91f 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1055,7 +1055,7 @@ else
+@@ -1086,7 +1086,7 @@ else
      usrprefix=$prefix
  fi
  
@@ -27,10 +27,10 @@ index 09af7c4..9bd6903 100644
  
  AC_SUBST(OBJDUMP)
 diff --git a/macros.in b/macros.in
-index a3aa7a9..62cee5c 100644
+index fe9803aad..d128675bf 100644
 --- a/macros.in
 +++ b/macros.in
-@@ -970,7 +970,7 @@ package or when debugging this package.\
+@@ -985,7 +985,7 @@ package or when debugging this package.\
  %_sharedstatedir	%{_prefix}/com
  %_localstatedir		%{_prefix}/var
  %_lib			lib
@@ -40,7 +40,7 @@ index a3aa7a9..62cee5c 100644
  %_infodir		%{_datadir}/info
  %_mandir		%{_datadir}/man
 diff --git a/rpm.am b/rpm.am
-index 82c2d7c..6341b51 100644
+index 40b4ec55f..3139ce8f6 100644
 --- a/rpm.am
 +++ b/rpm.am
 @@ -1,10 +1,10 @@
@@ -55,4 +55,4 @@ index 82c2d7c..6341b51 100644
 +rpmconfigdir = $(libdir)/rpm
  
  # Libtool version (current-revision-age) for all our libraries
- rpm_version_info = 9:0:1
+ rpm_version_info = 9:1:0
diff --git a/meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch b/meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch
deleted file mode 100644
index 6e44f0b7fc9..00000000000
--- a/meta/recipes-devtools/rpm/files/0001-Split-binary-package-building-into-a-separate-functi.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 721a660a507d6d062e7aecafad886c643970a5d5 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 25 May 2017 18:15:27 +0300
-Subject: [PATCH 1/4] Split binary package building into a separate function
-
-So that it can be run as a thread pool task.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/pack.c | 33 +++++++++++++++++++++------------
- 1 file changed, 21 insertions(+), 12 deletions(-)
-
-diff --git a/build/pack.c b/build/pack.c
-index 518f4e92a..ccfd614cc 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -546,18 +546,13 @@ static rpmRC checkPackages(char *pkgcheck)
-     return RPMRC_OK;
- }
- 
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename)
- {
--    rpmRC rc;
--    const char *errorString;
--    Package pkg;
--    char *pkglist = NULL;
--
--    for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
--	char *fn;
-+	const char *errorString;
-+	rpmRC rc = RPMRC_OK;
- 
- 	if (pkg->fileList == NULL)
--	    continue;
-+	    return rc;
- 
- 	if ((rc = processScriptFiles(spec, pkg)))
- 	    return rc;
-@@ -587,7 +582,7 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- 		     headerGetString(pkg->header, RPMTAG_NAME), errorString);
- 		return RPMRC_FAIL;
- 	    }
--	    fn = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
-+	    *filename = rpmGetPath("%{_rpmdir}/", binRpm, NULL);
- 	    if ((binDir = strchr(binRpm, '/')) != NULL) {
- 		struct stat st;
- 		char *dn;
-@@ -609,14 +604,28 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
- 	    free(binRpm);
- 	}
- 
--	rc = writeRPM(pkg, NULL, fn, NULL);
-+	rc = writeRPM(pkg, NULL, *filename, NULL);
- 	if (rc == RPMRC_OK) {
- 	    /* Do check each written package if enabled */
--	    char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", fn, NULL);
-+	    char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", *filename, NULL);
- 	    if (pkgcheck[0] != ' ') {
- 		rc = checkPackages(pkgcheck);
- 	    }
- 	    free(pkgcheck);
-+	}
-+	return rc;
-+}
-+
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+{
-+    rpmRC rc;
-+    Package pkg;
-+    char *pkglist = NULL;
-+
-+    for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-+	char *fn = NULL;
-+	rc = packageBinary(spec, pkg, cookie, cheating, &fn);
-+	if (rc == RPMRC_OK) {
- 	    rstrcat(&pkglist, fn);
- 	    rstrcat(&pkglist, " ");
- 	}
--- 
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch b/meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
deleted file mode 100644
index 24aa4c7ffff..00000000000
--- a/meta/recipes-devtools/rpm/files/0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 43fbc3f53302a395463e8450ac81c53f623eec3f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 27 Aug 2019 17:42:34 +0200
-Subject: [PATCH] mono-find-provides/requires: do not use monodis from the host
-
-There was a host contamination issue here: if monodis was installed
-on the host, do_package would use that to resolve dependencies
-of mono libraries (and often fail in that). Without monodis,
-no dependencies are resolved, which is seemingly how things
-are supposed to work.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- scripts/mono-find-provides | 8 ++++----
- scripts/mono-find-requires | 8 ++++----
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/scripts/mono-find-provides b/scripts/mono-find-provides
-index 9348457d3..b28872ffb 100644
---- a/scripts/mono-find-provides
-+++ b/scripts/mono-find-provides
-@@ -18,11 +18,11 @@ monolist=($(printf "%s\n" "${filelist[@]}" | grep -E "\\.(exe|dll)\$"))
- build_bindir="$2/usr/bin"
- build_libdir="$2$3"
- 
--if [ -x $build_bindir/monodis ]; then
--    monodis="$build_bindir/monodis"
-+if [ -x $build_bindir/monodis.bogus ]; then
-+    monodis="$build_bindir/monodis.bogus"
-     export LD_LIBRARY_PATH=$build_libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
--elif [ -x /usr/bin/monodis ]; then
--    monodis="/usr/bin/monodis"
-+elif [ -x /usr/bin/monodis.bogus ]; then
-+    monodis="/usr/bin/monodis.bogus"
- else
-     exit 0;
- fi
-diff --git a/scripts/mono-find-requires b/scripts/mono-find-requires
-index ea58cae48..d270169e1 100644
---- a/scripts/mono-find-requires
-+++ b/scripts/mono-find-requires
-@@ -18,11 +18,11 @@ monolist=($(printf "%s\n" "${filelist[@]}" | grep -E "\\.(exe|dll)\$"))
- build_bindir="$2/usr/bin"
- build_libdir="$2$3"
- 
--if [ -x $build_bindir/monodis ]; then
--    monodis="$build_bindir/monodis"
-+if [ -x $build_bindir/monodis.bogus ]; then
-+    monodis="$build_bindir/monodis.bogus"
-     export LD_LIBRARY_PATH=$build_libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
--elif [ -x /usr/bin/monodis ]; then
--    monodis="/usr/bin/monodis"
-+elif [ -x /usr/bin/monodis.bogus ]; then
-+    monodis="/usr/bin/monodis.bogus"
- else
-     exit 0;
- fi
diff --git a/meta/recipes-devtools/rpm/files/0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch b/meta/recipes-devtools/rpm/files/0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch
new file mode 100644
index 00000000000..d8d338792d3
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch
@@ -0,0 +1,65 @@
+From 93c3c7f043f62e96941274e957c4ad9432032af1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 18 Nov 2019 16:22:56 +0100
+Subject: [PATCH] rpmfc.c: do not run file classification in parallel
+
+This is causing freezes with libmagic when the file in question is compressed:
+https://github.com/rpm-software-management/rpm/issues/756
+
+Upstream-Status: Inappropriate [upstream wants a proper fix]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ build/rpmfc.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/build/rpmfc.c b/build/rpmfc.c
+index 3db7a9352..17afdd57a 100644
+--- a/build/rpmfc.c
++++ b/build/rpmfc.c
+@@ -680,7 +680,6 @@ static void rpmfcAttributes(rpmfc fc, int ix, const char *ftype, const char *ful
+ 	/* Add attributes on libmagic type & path pattern matches */
+ 	if (matches(&(*attr)->incl, ftype, path, is_executable)) {
+ 	    argvAddTokens(&fc->fattrs[ix], (*attr)->name);
+-	    #pragma omp critical(fahash)
+ 	    fattrHashAddEntry(fc->fahash, attr-fc->atypes, ix);
+ 	}
+     }
+@@ -1105,7 +1104,6 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
+     /* Build (sorted) file class dictionary. */
+     fc->cdict = rpmstrPoolCreate();
+ 
+-    #pragma omp parallel
+     {
+     /* libmagic is not thread-safe, each thread needs to a private handle */
+     magic_t ms = magic_open(msflags);
+@@ -1113,15 +1111,12 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
+     if (ms == NULL) {
+ 	rpmlog(RPMLOG_ERR, _("magic_open(0x%x) failed: %s\n"),
+ 		msflags, strerror(errno));
+-	#pragma omp cancel parallel
+     }
+ 
+     if (magic_load(ms, NULL) == -1) {
+ 	rpmlog(RPMLOG_ERR, _("magic_load failed: %s\n"), magic_error(ms));
+-	#pragma omp cancel parallel
+     }
+ 
+-    #pragma omp for ordered reduction(+:nerrors)
+     for (int ix = 0; ix < fc->nfiles; ix++) {
+ 	rpmsid ftypeId;
+ 	const char * ftype;
+@@ -1185,14 +1180,11 @@ rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpm_mode_t * fmode)
+ 	fc->fcolor[ix] = fcolor;
+ 
+ 	/* Add to file class dictionary and index array */
+-	#pragma omp ordered
+ 	if (fcolor != RPMFC_WHITE && (fcolor & RPMFC_INCLUDE)) {
+ 	    ftypeId = rpmstrPoolId(fc->cdict, ftype, 1);
+-	    #pragma omp atomic
+ 	    fc->fknown++;
+ 	} else {
+ 	    ftypeId = rpmstrPoolId(fc->cdict, "", 1);
+-	    #pragma omp atomic
+ 	    fc->fwhite++;
+ 	}
+ 	/* Pool id's start from 1, for headers we want it from 0 */
diff --git a/meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch b/meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch
deleted file mode 100644
index d10041c2e14..00000000000
--- a/meta/recipes-devtools/rpm/files/0002-Run-binary-package-creation-via-thread-pools.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 513200cf76758de4668312c628d6362bdabfaf4b Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 25 May 2017 19:30:20 +0300
-Subject: [PATCH 1/3] Run binary package creation via thread pools.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/pack.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
- configure.ac |  3 +++
- 2 files changed, 70 insertions(+), 14 deletions(-)
-
-diff --git a/build/pack.c b/build/pack.c
-index ccfd614cc..ed5b9ab4e 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -616,25 +616,78 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
- 	return rc;
- }
- 
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+struct binaryPackageTaskData
- {
--    rpmRC rc;
-     Package pkg;
-+    char *filename;
-+    rpmRC result;
-+    struct binaryPackageTaskData *next;
-+};
-+
-+static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating)
-+{
-+    struct binaryPackageTaskData *tasks = NULL;
-+    struct binaryPackageTaskData *task = NULL;
-+    struct binaryPackageTaskData *prev = NULL;
-+
-+    for (Package pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-+        task = rcalloc(1, sizeof(*task));
-+        task->pkg = pkg;
-+        if (pkg == spec->packages) {
-+            // the first package needs to be processed ahead of others, as they copy
-+            // changelog data from it, and so otherwise data races would happen
-+            task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename));
-+            rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-+            tasks = task;
-+        }
-+        if (prev != NULL) {
-+            prev->next = task;
-+        }
-+        prev = task;
-+    }
-+
-+    #pragma omp parallel
-+    #pragma omp single
-+    // re-declaring task variable is necessary, or older gcc versions will produce code that segfaults
-+    for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-+        if (task != tasks)
-+        #pragma omp task
-+        {
-+            task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename));
-+            rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-+        }
-+    }
-+
-+    return tasks;
-+}
-+
-+static void freeBinaryPackageTasks(struct binaryPackageTaskData* tasks)
-+{
-+    while (tasks != NULL) {
-+        struct binaryPackageTaskData* next = tasks->next;
-+        rfree(tasks->filename);
-+        rfree(tasks);
-+        tasks = next;
-+    }
-+}
-+
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+{
-     char *pkglist = NULL;
- 
--    for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
--	char *fn = NULL;
--	rc = packageBinary(spec, pkg, cookie, cheating, &fn);
--	if (rc == RPMRC_OK) {
--	    rstrcat(&pkglist, fn);
--	    rstrcat(&pkglist, " ");
--	}
--	free(fn);
--	if (rc != RPMRC_OK) {
--	    pkglist = _free(pkglist);
--	    return rc;
--	}
-+    struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating);
-+
-+    for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-+        if (task->result == RPMRC_OK) {
-+            rstrcat(&pkglist, task->filename);
-+            rstrcat(&pkglist, " ");
-+        } else {
-+            _free(pkglist);
-+            freeBinaryPackageTasks(tasks);
-+            return RPMRC_FAIL;
-+        }
-     }
-+    freeBinaryPackageTasks(tasks);
- 
-     /* Now check the package set if enabled */
-     if (pkglist != NULL) {
-diff --git a/configure.ac b/configure.ac
-index a506ec819..59fa0acaf 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -17,6 +17,9 @@ AC_DISABLE_STATIC
- 
- PKG_PROG_PKG_CONFIG
- 
-+AC_OPENMP
-+RPMCFLAGS="$OPENMP_CFLAGS $RPMCFLAGS"
-+
- dnl Checks for programs.
- AC_PROG_CXX
- AC_PROG_AWK
--- 
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch b/meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch
deleted file mode 100644
index c348ae5330e..00000000000
--- a/meta/recipes-devtools/rpm/files/0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From c80892f17e44331206c8318d53b63bb6a99554d0 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 30 May 2017 13:58:30 +0300
-Subject: [PATCH 3/4] rpmstrpool.c: make operations over string pools
- thread-safe
-
-Otherwise multithreaded rpm building explodes in various ways due
-to data races.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- rpmio/rpmstrpool.c | 56 +++++++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 47 insertions(+), 9 deletions(-)
-
-diff --git a/rpmio/rpmstrpool.c b/rpmio/rpmstrpool.c
-index 30a57eb10..58ba95a02 100644
---- a/rpmio/rpmstrpool.c
-+++ b/rpmio/rpmstrpool.c
-@@ -113,6 +113,8 @@ static poolHash poolHashCreate(int numBuckets)
-     return ht;
- }
- 
-+static const char * rpmstrPoolStrNoLock(rpmstrPool pool, rpmsid sid);
-+
- static void poolHashResize(rpmstrPool pool, int numBuckets)
- {
-     poolHash ht = pool->hash;
-@@ -120,7 +122,7 @@ static void poolHashResize(rpmstrPool pool, int numBuckets)
- 
-     for (int i=0; i<ht->numBuckets; i++) {
-         if (!ht->buckets[i].keyid) continue;
--        unsigned int keyHash = rstrhash(rpmstrPoolStr(pool, ht->buckets[i].keyid));
-+        unsigned int keyHash = rstrhash(rpmstrPoolStrNoLock(pool, ht->buckets[i].keyid));
-         for (unsigned int j=0;;j++) {
-             unsigned int hash = hashbucket(keyHash, j) % numBuckets;
-             if (!buckets[hash].keyid) {
-@@ -149,7 +151,7 @@ static void poolHashAddHEntry(rpmstrPool pool, const char * key, unsigned int ke
-             ht->buckets[hash].keyid = keyid;
-             ht->keyCount++;
-             break;
--        } else if (!strcmp(rpmstrPoolStr(pool, ht->buckets[hash].keyid), key)) {
-+        } else if (!strcmp(rpmstrPoolStrNoLock(pool, ht->buckets[hash].keyid), key)) {
-             return;
-         }
-     }
-@@ -191,7 +193,7 @@ static void poolHashPrintStats(rpmstrPool pool)
-     int maxcollisions = 0;
- 
-     for (i=0; i<ht->numBuckets; i++) {
--        unsigned int keyHash = rstrhash(rpmstrPoolStr(pool, ht->buckets[i].keyid));
-+        unsigned int keyHash = rstrhash(rpmstrPoolStrNoLock(pool, ht->buckets[i].keyid));
-         for (unsigned int j=0;;j++) {
-             unsigned int hash = hashbucket(keyHash, i) % ht->numBuckets;
-             if (hash==i) {
-@@ -221,7 +223,7 @@ static void rpmstrPoolRehash(rpmstrPool pool)
- 
-     pool->hash = poolHashCreate(sizehint);
-     for (int i = 1; i <= pool->offs_size; i++)
--	poolHashAddEntry(pool, rpmstrPoolStr(pool, i), i);
-+	poolHashAddEntry(pool, rpmstrPoolStrNoLock(pool, i), i);
- }
- 
- rpmstrPool rpmstrPoolCreate(void)
-@@ -245,6 +247,8 @@ rpmstrPool rpmstrPoolCreate(void)
- 
- rpmstrPool rpmstrPoolFree(rpmstrPool pool)
- {
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (pool) {
- 	if (pool->nrefs > 1) {
- 	    pool->nrefs--;
-@@ -260,18 +264,24 @@ rpmstrPool rpmstrPoolFree(rpmstrPool pool)
- 	    free(pool);
- 	}
-     }
-+    }
-     return NULL;
- }
- 
- rpmstrPool rpmstrPoolLink(rpmstrPool pool)
- {
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (pool)
- 	pool->nrefs++;
-+    }
-     return pool;
- }
- 
- void rpmstrPoolFreeze(rpmstrPool pool, int keephash)
- {
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (pool && !pool->frozen) {
- 	if (!keephash) {
- 	    pool->hash = poolHashFree(pool->hash);
-@@ -281,16 +291,20 @@ void rpmstrPoolFreeze(rpmstrPool pool, int keephash)
- 			      pool->offs_alloced * sizeof(*pool->offs));
- 	pool->frozen = 1;
-     }
-+    }
- }
- 
- void rpmstrPoolUnfreeze(rpmstrPool pool)
- {
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (pool) {
- 	if (pool->hash == NULL) {
- 	    rpmstrPoolRehash(pool);
- 	}
- 	pool->frozen = 0;
-     }
-+    }
- }
- 
- static rpmsid rpmstrPoolPut(rpmstrPool pool, const char *s, size_t slen, unsigned int hash)
-@@ -350,7 +364,7 @@ static rpmsid rpmstrPoolGet(rpmstrPool pool, const char * key, size_t keylen,
-             return 0;
-         }
- 
--	s = rpmstrPoolStr(pool, ht->buckets[hash].keyid);
-+	s = rpmstrPoolStrNoLock(pool, ht->buckets[hash].keyid);
- 	/* pool string could be longer than keylen, require exact matche */
- 	if (strncmp(s, key, keylen) == 0 && s[keylen] == '\0')
- 	    return ht->buckets[hash].keyid;
-@@ -373,27 +387,31 @@ static inline rpmsid strn2id(rpmstrPool pool, const char *s, size_t slen,
- rpmsid rpmstrPoolIdn(rpmstrPool pool, const char *s, size_t slen, int create)
- {
-     rpmsid sid = 0;
--
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (s != NULL) {
- 	unsigned int hash = rstrnhash(s, slen);
- 	sid = strn2id(pool, s, slen, hash, create);
-     }
-+    }
-     return sid;
- }
- 
- rpmsid rpmstrPoolId(rpmstrPool pool, const char *s, int create)
- {
-     rpmsid sid = 0;
--
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (s != NULL) {
- 	size_t slen;
- 	unsigned int hash = rstrlenhash(s, &slen);
- 	sid = strn2id(pool, s, slen, hash, create);
-     }
-+    }
-     return sid;
- }
- 
--const char * rpmstrPoolStr(rpmstrPool pool, rpmsid sid)
-+static const char * rpmstrPoolStrNoLock(rpmstrPool pool, rpmsid sid)
- {
-     const char *s = NULL;
-     if (pool && sid > 0 && sid <= pool->offs_size)
-@@ -401,12 +419,25 @@ const char * rpmstrPoolStr(rpmstrPool pool, rpmsid sid)
-     return s;
- }
- 
-+const char * rpmstrPoolStr(rpmstrPool pool, rpmsid sid)
-+{
-+    const char *s = NULL;
-+    #pragma omp critical(rpmstrpool)
-+    {
-+    s = rpmstrPoolStrNoLock(pool, sid);
-+    }
-+    return s;
-+}
-+
- size_t rpmstrPoolStrlen(rpmstrPool pool, rpmsid sid)
- {
-     size_t slen = 0;
-+    #pragma omp critical(rpmstrpool)
-+    {
-     if (pool && sid > 0 && sid <= pool->offs_size) {
- 	slen = strlen(pool->offs[sid]);
-     }
-+    }
-     return slen;
- }
- 
-@@ -421,5 +452,12 @@ int rpmstrPoolStreq(rpmstrPool poolA, rpmsid sidA,
- 
- rpmsid rpmstrPoolNumStr(rpmstrPool pool)
- {
--    return (pool != NULL) ? pool->offs_size : 0;
-+    rpmsid id = 0;
-+    #pragma omp critical(rpmstrpool)
-+    {
-+    if (pool) {
-+	id = pool->offs_size;
-+    }
-+    }
-+    return id;
- }
--- 
-2.11.0
-
diff --git a/meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch b/meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch
deleted file mode 100644
index 652e30b3e4a..00000000000
--- a/meta/recipes-devtools/rpm/files/0004-build-pack.c-remove-static-local-variables-from-buil.patch
+++ /dev/null
@@ -1,336 +0,0 @@
-From 792693bb90768cfde4898e8dd31ee1b5de803d2f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 8 Jun 2017 17:08:09 +0300
-Subject: [PATCH] build/pack.c: remove static local variables from buildHost()
- and getBuildTime()
-
-Their use is causing difficult to diagnoze data races when building multiple
-packages in parallel, and is a bad idea in general, as it also makes it more
-difficult to reason about code.
-
-Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/226]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build/build.c             | 54 ++++++++++++++++++++++++++++--
- build/pack.c              | 84 +++++++++--------------------------------------
- build/rpmbuild_internal.h |  8 +++--
- 3 files changed, 74 insertions(+), 72 deletions(-)
-
-diff --git a/build/build.c b/build/build.c
-index 13c3df2..b154f08 100644
---- a/build/build.c
-+++ b/build/build.c
-@@ -6,6 +6,8 @@
- #include "system.h"
- 
- #include <errno.h>
-+#include <netdb.h>
-+#include <time.h>
- #include <sys/wait.h>
- 
- #include <rpm/rpmlog.h>
-@@ -16,6 +18,50 @@
- 
- #include "debug.h"
- 
-+static rpm_time_t getBuildTime(void)
-+{
-+    rpm_time_t buildTime = 0;
-+    char *srcdate;
-+    time_t epoch;
-+    char *endptr;
-+
-+    srcdate = getenv("SOURCE_DATE_EPOCH");
-+    if (srcdate) {
-+        errno = 0;
-+        epoch = strtol(srcdate, &endptr, 10);
-+        if (srcdate == endptr || *endptr || errno != 0)
-+            rpmlog(RPMLOG_ERR, _("unable to parse SOURCE_DATE_EPOCH\n"));
-+        else
-+            buildTime = (int32_t) epoch;
-+    } else
-+        buildTime = (int32_t) time(NULL);
-+
-+    return buildTime;
-+}
-+
-+static char * buildHost(void)
-+{
-+    char* hostname;
-+    struct hostent *hbn;
-+    char *bhMacro;
-+
-+    bhMacro = rpmExpand("%{?_buildhost}", NULL);
-+    if (strcmp(bhMacro, "") != 0) {
-+        rasprintf(&hostname, "%s", bhMacro);
-+    } else {
-+        hostname = rcalloc(1024, sizeof(*hostname));
-+        (void) gethostname(hostname, 1024);
-+        hbn = gethostbyname(hostname);
-+        if (hbn)
-+            strcpy(hostname, hbn->h_name);
-+        else
-+            rpmlog(RPMLOG_WARNING,
-+                    _("Could not canonicalize hostname: %s\n"), hostname);
-+    }
-+    free(bhMacro);
-+    return(hostname);
-+}
-+
- /**
-  */
- static rpmRC doRmSource(rpmSpec spec)
-@@ -201,6 +247,9 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
-     rpmRC rc = RPMRC_OK;
-     int test = (what & RPMBUILD_NOBUILD);
-     char *cookie = buildArgs->cookie ? xstrdup(buildArgs->cookie) : NULL;
-+    const char* host = buildHost();
-+    rpm_time_t buildTime = getBuildTime();
-+
- 
-     if (rpmExpandNumeric("%{?source_date_epoch_from_changelog}") &&
- 	getenv("SOURCE_DATE_EPOCH") == NULL) {
-@@ -269,11 +318,11 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
- 		goto exit;
- 
- 	if (((what & RPMBUILD_PACKAGESOURCE) && !test) &&
--	    (rc = packageSources(spec, &cookie)))
-+	    (rc = packageSources(spec, &cookie, buildTime, host)))
- 		goto exit;
- 
- 	if (((what & RPMBUILD_PACKAGEBINARY) && !test) &&
--	    (rc = packageBinaries(spec, cookie, (didBuild == 0))))
-+	    (rc = packageBinaries(spec, cookie, (didBuild == 0), buildTime, host)))
- 		goto exit;
- 	
- 	if ((what & RPMBUILD_CLEAN) &&
-@@ -293,6 +342,7 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
- 	(void) unlink(spec->specFile);
- 
- exit:
-+    free(host);
-     free(cookie);
-     spec->rootDir = NULL;
-     if (rc != RPMRC_OK && rpmlogGetNrecs() > 0) {
-diff --git a/build/pack.c b/build/pack.c
-index df15876..17a4b09 100644
---- a/build/pack.c
-+++ b/build/pack.c
-@@ -6,8 +6,6 @@
- #include "system.h"
- 
- #include <errno.h>
--#include <netdb.h>
--#include <time.h>
- #include <sys/wait.h>
- 
- #include <rpm/rpmlib.h>			/* RPMSIGTAG*, rpmReadPackageFile */
-@@ -152,57 +150,6 @@ exit:
-     return rc;
- }
- 
--static rpm_time_t * getBuildTime(void)
--{
--    static rpm_time_t buildTime[1];
--    char *srcdate;
--    time_t epoch;
--    char *endptr;
--
--    if (buildTime[0] == 0) {
--        srcdate = getenv("SOURCE_DATE_EPOCH");
--        if (srcdate) {
--            errno = 0;
--            epoch = strtol(srcdate, &endptr, 10);
--            if (srcdate == endptr || *endptr || errno != 0)
--                rpmlog(RPMLOG_ERR, _("unable to parse SOURCE_DATE_EPOCH\n"));
--            else
--                buildTime[0] = (int32_t) epoch;
--        } else
--            buildTime[0] = (int32_t) time(NULL);
--    }
--
--    return buildTime;
--}
--
--static const char * buildHost(void)
--{
--    static char hostname[1024];
--    static int oneshot = 0;
--    struct hostent *hbn;
--    char *bhMacro;
--
--    if (! oneshot) {
--        bhMacro = rpmExpand("%{?_buildhost}", NULL);
--        if (strcmp(bhMacro, "") != 0 && strlen(bhMacro) < 1024) {
--            strcpy(hostname, bhMacro);
--        } else {
--            if (strcmp(bhMacro, "") != 0)
--                rpmlog(RPMLOG_WARNING, _("The _buildhost macro is too long\n"));
--            (void) gethostname(hostname, sizeof(hostname));
--            hbn = gethostbyname(hostname);
--            if (hbn)
--                strcpy(hostname, hbn->h_name);
--            else
--                rpmlog(RPMLOG_WARNING,
--                        _("Could not canonicalize hostname: %s\n"), hostname);
--        }
--        free(bhMacro);
--        oneshot = 1;
--    }
--    return(hostname);
--}
--
- static rpmRC processScriptFiles(rpmSpec spec, Package pkg)
- {
-     struct TriggerFileEntry *p;
-@@ -476,7 +423,8 @@ exit:
-  * order to how the RPM format is laid on disk.
-  */
- static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp,
--		      const char *fileName, char **cookie)
-+		      const char *fileName, char **cookie,
-+		      rpm_time_t buildTime, const char* buildHost)
- {
-     FD_t fd = NULL;
-     char * rpmio_flags = NULL;
-@@ -500,7 +448,7 @@ static rpmRC writeRPM(Package pkg, unsigned char ** pkgidp,
- 
-     /* Create and add the cookie */
-     if (cookie) {
--	rasprintf(cookie, "%s %d", buildHost(), (int) (*getBuildTime()));
-+	rasprintf(cookie, "%s %d", buildHost, buildTime);
- 	headerPutString(pkg->header, RPMTAG_COOKIE, *cookie);
-     }
- 
-@@ -641,7 +589,7 @@ static rpmRC checkPackages(char *pkgcheck)
-     return RPMRC_OK;
- }
- 
--static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename)
-+static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int cheating, char** filename, rpm_time_t buildTime, const char* buildHost)
- {
- 	const char *errorString;
- 	rpmRC rc = RPMRC_OK;
-@@ -660,8 +608,8 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
- 	headerCopyTags(spec->packages->header, pkg->header, copyTags);
- 	
- 	headerPutString(pkg->header, RPMTAG_RPMVERSION, VERSION);
--	headerPutString(pkg->header, RPMTAG_BUILDHOST, buildHost());
--	headerPutUint32(pkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1);
-+	headerPutString(pkg->header, RPMTAG_BUILDHOST, buildHost);
-+	headerPutUint32(pkg->header, RPMTAG_BUILDTIME, &buildTime, 1);
- 
- 	if (spec->sourcePkgId != NULL) {
- 	    headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
-@@ -699,7 +647,7 @@ static rpmRC packageBinary(rpmSpec spec, Package pkg, const char *cookie, int ch
- 	    free(binRpm);
- 	}
- 
--	rc = writeRPM(pkg, NULL, *filename, NULL);
-+	rc = writeRPM(pkg, NULL, *filename, NULL, buildTime, buildHost);
- 	if (rc == RPMRC_OK) {
- 	    /* Do check each written package if enabled */
- 	    char *pkgcheck = rpmExpand("%{?_build_pkgcheck} ", *filename, NULL);
-@@ -719,7 +667,7 @@ struct binaryPackageTaskData
-     struct binaryPackageTaskData *next;
- };
- 
--static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating)
-+static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const char *cookie, int cheating, rpm_time_t buildTime, char* buildHost)
- {
-     struct binaryPackageTaskData *tasks = NULL;
-     struct binaryPackageTaskData *task = NULL;
-@@ -731,7 +679,7 @@ static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const c
-         if (pkg == spec->packages) {
-             // the first package needs to be processed ahead of others, as they copy
-             // changelog data from it, and so otherwise data races would happen
--            task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename));
-+            task->result = packageBinary(spec, pkg, cookie, cheating, &(task->filename), buildTime, buildHost);
-             rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-             tasks = task;
-         }
-@@ -748,7 +696,7 @@ static struct binaryPackageTaskData* runBinaryPackageTasks(rpmSpec spec, const c
-         if (task != tasks)
-         #pragma omp task
-         {
--            task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename));
-+            task->result = packageBinary(spec, task->pkg, cookie, cheating, &(task->filename), buildTime, buildHost);
-             rpmlog(RPMLOG_NOTICE, _("Finished binary package job, result %d, filename %s\n"), task->result, task->filename);
-         }
-     }
-@@ -766,11 +714,11 @@ static void freeBinaryPackageTasks(struct binaryPackageTaskData* tasks)
-     }
- }
- 
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating, rpm_time_t buildTime, char* buildHost)
- {
-     char *pkglist = NULL;
- 
--    struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating);
-+    struct binaryPackageTaskData *tasks = runBinaryPackageTasks(spec, cookie, cheating, buildTime, buildHost);
- 
-     for (struct binaryPackageTaskData *task = tasks; task != NULL; task = task->next) {
-         if (task->result == RPMRC_OK) {
-@@ -797,7 +745,7 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
-     return RPMRC_OK;
- }
- 
--rpmRC packageSources(rpmSpec spec, char **cookie)
-+rpmRC packageSources(rpmSpec spec, char **cookie, rpm_time_t buildTime, char* buildHost)
- {
-     Package sourcePkg = spec->sourcePackage;
-     rpmRC rc;
-@@ -805,8 +753,8 @@ rpmRC packageSources(rpmSpec spec, char **cookie)
- 
-     /* Add some cruft */
-     headerPutString(sourcePkg->header, RPMTAG_RPMVERSION, VERSION);
--    headerPutString(sourcePkg->header, RPMTAG_BUILDHOST, buildHost());
--    headerPutUint32(sourcePkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1);
-+    headerPutString(sourcePkg->header, RPMTAG_BUILDHOST, buildHost);
-+    headerPutUint32(sourcePkg->header, RPMTAG_BUILDTIME, &buildTime, 1);
-     headerPutUint32(sourcePkg->header, RPMTAG_SOURCEPACKAGE, &one, 1);
- 
-     /* XXX this should be %_srpmdir */
-@@ -814,7 +762,7 @@ rpmRC packageSources(rpmSpec spec, char **cookie)
- 	char *pkgcheck = rpmExpand("%{?_build_pkgcheck_srpm} ", fn, NULL);
- 
- 	spec->sourcePkgId = NULL;
--	rc = writeRPM(sourcePkg, &spec->sourcePkgId, fn, cookie);
-+	rc = writeRPM(sourcePkg, &spec->sourcePkgId, fn, cookie, buildTime, buildHost);
- 
- 	/* Do check SRPM package if enabled */
- 	if (rc == RPMRC_OK && pkgcheck[0] != ' ') {
-diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h
-index 439b7d3..07e8338 100644
---- a/build/rpmbuild_internal.h
-+++ b/build/rpmbuild_internal.h
-@@ -427,19 +427,23 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags);
-  * @param spec		spec file control structure
-  * @param cookie	build identifier "cookie" or NULL
-  * @param cheating	was build shortcircuited?
-+ * @param buildTime	the build timestamp that goes into packages
-+ * @param buildHost	the hostname where the build is happening
-  * @return		RPMRC_OK on success
-  */
- RPM_GNUC_INTERNAL
--rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating);
-+rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating, rpm_time_t buildTime, char* buildHost);
- 
- /** \ingroup rpmbuild
-  * Generate source package.
-  * @param spec		spec file control structure
-  * @retval cookie	build identifier "cookie" or NULL
-+ * @param buildTime	the build timestamp that goes into packages
-+ * @param buildHost	the hostname where the build is happening
-  * @return		RPMRC_OK on success
-  */
- RPM_GNUC_INTERNAL
--rpmRC packageSources(rpmSpec spec, char **cookie);
-+rpmRC packageSources(rpmSpec spec, char **cookie, rpm_time_t buildTime, char* buildHost);
- 
- RPM_GNUC_INTERNAL
- int addLangTag(rpmSpec spec, Header h, rpmTagVal tag,
diff --git a/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb b/meta/recipes-devtools/rpm/rpm_4.15.1.bb
similarity index 90%
rename from meta/recipes-devtools/rpm/rpm_4.14.2.1.bb
rename to meta/recipes-devtools/rpm/rpm_4.15.1.bb
index c37330eb4c6..5896e78e734 100644
--- a/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb
+++ b/meta/recipes-devtools/rpm/rpm_4.15.1.bb
@@ -24,7 +24,7 @@ HOMEPAGE = "http://www.rpm.org"
 LICENSE = "GPL-2.0"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c0bf017c0fd1920e6158a333acabfd4a"
 
-SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.14.x \
+SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.15.x \
            file://0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch \
            file://0001-Do-not-read-config-files-from-HOME.patch \
            file://0001-When-cross-installing-execute-package-scriptlets-wit.patch \
@@ -34,18 +34,14 @@ SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.14.x \
            file://0001-Fix-build-with-musl-C-library.patch \
            file://0001-Add-a-color-setting-for-mips64_n32-binaries.patch \
            file://0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch \
-           file://0001-Split-binary-package-building-into-a-separate-functi.patch \
-           file://0002-Run-binary-package-creation-via-thread-pools.patch \
-           file://0003-rpmstrpool.c-make-operations-over-string-pools-threa.patch \
-           file://0004-build-pack.c-remove-static-local-variables-from-buil.patch \
            file://0001-perl-disable-auto-reqs.patch \
            file://0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch \
            file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
-           file://0001-mono-find-provides-requires-do-not-use-monodis-from-.patch \
+           file://0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch \
            "
 
 PE = "1"
-SRCREV = "4a9440006398646583f0d9ae1837dad2875013aa"
+SRCREV = "ab2179452c5be276a6b96c591afded485c7e58c3"
 
 S = "${WORKDIR}/git"
 
@@ -59,7 +55,7 @@ export PYTHON_ABI
 EXTRA_AUTORECONF_append = " --exclude=gnu-configize"
 
 EXTRA_OECONF_append = " --without-lua --enable-python"
-EXTRA_OECONF_append_libc-musl = " --disable-nls"
+EXTRA_OECONF_append_libc-musl = " --disable-nls --disable-openmp"
 
 # --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs
 #
@@ -125,8 +121,7 @@ do_install_append () {
 	    ${D}/${libdir}/rpm/macros
 
 	sed -i -e 's|/usr/bin/python|${USRBINPATH}/env ${PYTHON_PN}|' \
-	    ${D}${libdir}/rpm/pythondistdeps.py \
-	    ${D}${libdir}/rpm/python-macro-helper
+	    ${D}${libdir}/rpm/pythondistdeps.py
 }
 
 FILES_${PN} += "${libdir}/rpm-plugins/*.so \
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 02/24] gettext-minimal-native: update to 0.20.1
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 03/24] gettext: " Alexander Kanavin
                   ` (23 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Rather than update a tarball, I took m4 files directly from an install of 0.20.1.

The patch is dropped as guile has long been removed from oe-core.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...H-Disable-the-test-to-convert-euc-jp.patch |  38 -
 .../gettext-minimal-0.19.8.1/aclocal.tgz      | Bin 40014 -> 0 bytes
 .../COPYING                                   |   0
 .../Makefile.in.in                            | 124 +--
 .../gettext-minimal-0.20.1/aclocal/gettext.m4 | 386 +++++++++
 .../aclocal/host-cpu-c-abi.m4                 | 644 +++++++++++++++
 .../gettext-minimal-0.20.1/aclocal/iconv.m4   | 288 +++++++
 .../aclocal/intlmacosx.m4                     |  72 ++
 .../gettext-minimal-0.20.1/aclocal/lib-ld.m4  | 168 ++++
 .../aclocal/lib-link.m4                       | 774 ++++++++++++++++++
 .../aclocal/lib-prefix.m4                     | 249 ++++++
 .../gettext-minimal-0.20.1/aclocal/nls.m4     |  32 +
 .../gettext-minimal-0.20.1/aclocal/po.m4      | 450 ++++++++++
 .../aclocal/progtest.m4                       |  91 ++
 .../config.rpath                              |   2 +-
 .../remove-potcdate.sin                       |   8 +-
 ....1.bb => gettext-minimal-native_0.20.1.bb} |   5 +-
 17 files changed, 3236 insertions(+), 95 deletions(-)
 delete mode 100644 meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
 delete mode 100644 meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz
 rename meta/recipes-core/gettext/{gettext-minimal-0.19.8.1 => gettext-minimal-0.20.1}/COPYING (100%)
 rename meta/recipes-core/gettext/{gettext-minimal-0.19.8.1 => gettext-minimal-0.20.1}/Makefile.in.in (78%)
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/gettext.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/host-cpu-c-abi.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/iconv.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/intlmacosx.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-ld.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-link.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-prefix.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/nls.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/po.m4
 create mode 100644 meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/progtest.m4
 rename meta/recipes-core/gettext/{gettext-minimal-0.19.8.1 => gettext-minimal-0.20.1}/config.rpath (99%)
 rename meta/recipes-core/gettext/{gettext-minimal-0.19.8.1 => gettext-minimal-0.20.1}/remove-potcdate.sin (50%)
 rename meta/recipes-core/gettext/{gettext-minimal-native_0.19.8.1.bb => gettext-minimal-native_0.20.1.bb} (86%)

diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch b/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
deleted file mode 100644
index 29ef2a5a63d..00000000000
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/0001-PATCH-Disable-the-test-to-convert-euc-jp.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-[PATCH] Disable the test to convert euc-jp
-
-Remove the test "Test against HP-UX 11.11 bug:
-No converter from EUC-JP to UTF-8 is provided"
-since we don't support HP-UX and if the euc-jp is not
-installed on the host, the dependence will be built without
-iconv support and will cause guile-native building fail.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- iconv.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/iconv.m4 b/iconv.m4
-index 4e37363..35f54bd 100644
---- a/iconv.m4
-+++ b/iconv.m4
-@@ -165,6 +165,7 @@ AC_DEFUN([AM_ICONV_LINK],
-       }
-   }
- #endif
-+#if 0
-   /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
-      provided.  */
-   if (/* Try standardized names.  */
-@@ -176,6 +177,7 @@ AC_DEFUN([AM_ICONV_LINK],
-       /* Try HP-UX names.  */
-       && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
-     result |= 16;
-+#endif
-   return result;
- ]])],
-           [am_cv_func_iconv_works=yes], ,
--- 
-2.0.1
-
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz b/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/aclocal.tgz
deleted file mode 100644
index 9b2d1f561d734df608c9c7a6e29e08131296a5fd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 40014
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

diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING b/meta/recipes-core/gettext/gettext-minimal-0.20.1/COPYING
similarity index 100%
rename from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/COPYING
rename to meta/recipes-core/gettext/gettext-minimal-0.20.1/COPYING
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in b/meta/recipes-core/gettext/gettext-minimal-0.20.1/Makefile.in.in
similarity index 78%
rename from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in
rename to meta/recipes-core/gettext/gettext-minimal-0.20.1/Makefile.in.in
index 38c293d2ed2..fdb6ad35881 100644
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/Makefile.in.in
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/Makefile.in.in
@@ -1,13 +1,14 @@
 # Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 1995-2000 Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2000-2019 Free Software Foundation, Inc.
 #
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
 # notice and this notice are preserved.  This file is offered as-is,
 # without any warranty.
 #
-# Origin: gettext-0.19.8
-GETTEXT_MACRO_VERSION = 0.19
+# Origin: gettext-0.20
+GETTEXT_MACRO_VERSION = 0.20
 
 PACKAGE = @PACKAGE@
 VERSION = @VERSION@
@@ -52,16 +53,13 @@ GMSGFMT_ = @GMSGFMT@
 GMSGFMT_no = @GMSGFMT@
 GMSGFMT_yes = @GMSGFMT_015@
 GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
 XGETTEXT_ = @XGETTEXT@
 XGETTEXT_no = @XGETTEXT@
 XGETTEXT_yes = @XGETTEXT_015@
 XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
+MSGMERGE = @MSGMERGE@
 MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@
 MSGINIT = msginit
 MSGCONV = msgconv
 MSGFILTER = msgfilter
@@ -93,17 +91,32 @@ DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
 # Makevars gets inserted here. (Don't remove this line!)
 
 .SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
-	@echo "$(MSGFMT) -c -o $@ $<"; \
-	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
+.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update
+
+# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs.
+# The GNU Coding Standards say in
+# <https://www.gnu.org/prep/standards/html_node/Makefile-Basics.html>:
+#   "GNU distributions usually contain some files which are not source files
+#    ... . Since these files normally appear in the source directory, they
+#    should always appear in the source directory, not in the build directory.
+#    So Makefile rules to update them should put the updated files in the
+#    source directory."
+# Therefore we put these files in the source directory, not the build directory.
+
+# During .po -> .gmo conversion, take into account the most recent changes to
+# the .pot file. This eliminates the need to update the .po files when the
+# .pot file has changed, which would be troublesome if the .po files are put
+# under version control.
+.po.gmo: $(srcdir)/$(DOMAIN).pot
 	@lang=`echo $* | sed -e 's,.*/,,'`; \
 	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
-	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+	echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \
+	cd $(srcdir) && \
+	rm -f $${lang}.gmo && \
+	$(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \
+	$(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \
+	mv t-$${lang}.gmo $${lang}.gmo && \
+	rm -f $${lang}.1po
 
 .sin.sed:
 	sed -e '/^#/d' $< > t-$@
@@ -112,7 +125,7 @@ DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
 
 all: all-@USE_NLS@
 
-all-yes: stamp-po
+all-yes: $(srcdir)/stamp-po
 all-no:
 
 # Ensure that the gettext macros and this Makefile.in.in are in sync.
@@ -126,24 +139,24 @@ CHECK_MACRO_VERSION = \
 # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
 # we don't want to bother translators with empty POT files). We assume that
 # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
+# In this case, $(srcdir)/stamp-po is a nop (i.e. a phony target).
+
+# $(srcdir)/stamp-po is a timestamp denoting the last time at which the CATALOGS
+# have been loosely updated. Its purpose is that when a developer or translator
+# checks out the package from a version control system, and the $(DOMAIN).pot
+# file is not under version control, "make" will update the $(DOMAIN).pot and
+# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This
+# timestamp would not be necessary if updating the $(CATALOGS) would always
+# touch them; however, the rule for $(POFILES) has been designed to not touch
+# files that don't need to be changed.
+$(srcdir)/stamp-po: $(srcdir)/$(DOMAIN).pot
 	@$(CHECK_MACRO_VERSION)
 	test ! -f $(srcdir)/$(DOMAIN).pot || \
 	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
 	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
-	  echo "touch stamp-po" && \
-	  echo timestamp > stamp-poT && \
-	  mv stamp-poT stamp-po; \
+	  echo "touch $(srcdir)/stamp-po" && \
+	  echo timestamp > $(srcdir)/stamp-poT && \
+	  mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \
 	}
 
 # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
@@ -159,11 +172,9 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
 	package_gnu="$(PACKAGE_GNU)"; \
 	test -n "$$package_gnu" || { \
 	  if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \
-		 LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \
-			       -size -10000000c -exec grep 'GNU @PACKAGE@' \
-			       /dev/null '{}' ';' 2>/dev/null; \
+	         LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
 	       else \
-		 LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
+	         LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \
 	       fi; \
 	     } | grep -v 'libtool:' >/dev/null; then \
 	     package_gnu=yes; \
@@ -184,26 +195,29 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
 	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
 	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
 	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+	      --add-comments=TRANSLATORS: \
 	      --files-from=$(srcdir)/POTFILES.in \
 	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
 	      --msgid-bugs-address="$$msgid_bugs_address" \
+	      $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
 	    ;; \
 	  *) \
 	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
+	      --add-comments=TRANSLATORS: \
 	      --files-from=$(srcdir)/POTFILES.in \
 	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
 	      --package-name="$${package_prefix}@PACKAGE@" \
 	      --package-version='@VERSION@' \
 	      --msgid-bugs-address="$$msgid_bugs_address" \
+	      $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
 	    ;; \
 	esac
 	test ! -f $(DOMAIN).po || { \
 	  if test -f $(srcdir)/$(DOMAIN).pot-header; then \
 	    sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \
-	    cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \
-	    rm -f $(DOMAIN).1po; \
+	    cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \
+	    rm -f $(DOMAIN).1po \
+	    || exit 1; \
 	  fi; \
 	  if test -f $(srcdir)/$(DOMAIN).pot; then \
 	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
@@ -228,17 +242,19 @@ $(srcdir)/$(DOMAIN).pot:
 # This target rebuilds a PO file if $(DOMAIN).pot has changed.
 # Note that a PO file is not touched if it doesn't need to be changed.
 $(POFILES): $(POFILESDEPS)
+	@test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot
 	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
 	if test -f "$(srcdir)/$${lang}.po"; then \
-	  test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \
 	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
+	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \
 	  cd $(srcdir) \
-	    && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+	    && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \
 	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
+	           0.1[6-7] | 0.1[6-7].*) \
+	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \
 	           *) \
-	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
+	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${lang}.po $(DOMAIN).pot;; \
 	         esac; \
 	       }; \
 	else \
@@ -373,28 +389,30 @@ check: all
 
 info dvi ps pdf html tags TAGS ctags CTAGS ID:
 
+install-dvi install-ps install-pdf install-html:
+
 mostlyclean:
 	rm -f remove-potcdate.sed
-	rm -f stamp-poT
+	rm -f $(srcdir)/stamp-poT
 	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
 	rm -fr *.o
 
 clean: mostlyclean
 
 distclean: clean
-	rm -f Makefile Makefile.in POTFILES *.mo
+	rm -f Makefile Makefile.in POTFILES
 
 maintainer-clean: distclean
 	@echo "This command is intended for maintainers to use;"
 	@echo "it deletes files that may require special tools to rebuild."
-	rm -f stamp-po $(GMOFILES)
+	rm -f $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES)
 
 distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
 dist distdir:
 	test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS)
 	@$(MAKE) dist2
 # This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
+dist2: $(srcdir)/stamp-po $(DISTFILES)
 	dists="$(DISTFILES)"; \
 	if test "$(PACKAGE)" = "gettext-tools"; then \
 	  dists="$$dists Makevars.template"; \
@@ -439,13 +457,15 @@ update-po: Makefile
 	tmpdir=`pwd`; \
 	echo "$$lang:"; \
 	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
 	cd $(srcdir); \
 	if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
+	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].*) \
 	         $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+	       0.1[6-7] | 0.1[6-7].*) \
+	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
 	       *) \
-	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
+	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
 	     esac; \
 	   }; then \
 	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/gettext.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/gettext.m4
new file mode 100644
index 00000000000..e7832418ea1
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/gettext.m4
@@ -0,0 +1,386 @@
+# gettext.m4 serial 70 (gettext-0.20)
+dnl Copyright (C) 1995-2014, 2016, 2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL must be one of 'external', 'use-libtool'.
+dnl    INTLSYMBOL should be 'external' for packages other than GNU gettext, and
+dnl    'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'.
+dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl    depending on --{enable,disable}-{shared,static} and on the presence of
+dnl    AM-DISABLE-SHARED).
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl    implementations (in libc or libintl) without the ngettext() function
+dnl    will be ignored.  If NEEDSYMBOL is specified and is
+dnl    'need-formatstring-macros', then GNU gettext implementations that don't
+dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries.  If empty,
+dnl    the value '$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl    and used.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl    Catalog format: GNU --> install in $(datadir)
+dnl    Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl    Catalog format: none
+dnl    Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+  dnl Argument checking.
+  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], ,
+    [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])
+  ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+    [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported.
+])])
+  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+    [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+  define([gt_included_intl],
+    ifelse([$1], [external], [no], [yes]))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
+
+  AC_REQUIRE([AM_PO_SUBDIRS])dnl
+  ifelse(gt_included_intl, yes, [
+    AC_REQUIRE([AM_INTL_SUBDIR])dnl
+  ])
+
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Sometimes libintl requires libiconv, so first search for libiconv.
+  dnl Ideally we would do this search only after the
+  dnl      if test "$USE_NLS" = "yes"; then
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+  dnl the configure script would need to contain the same shell code
+  dnl again, outside any 'if'. There are two solutions:
+  dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+  dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+  dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it.
+  ifelse(gt_included_intl, yes, , [
+    AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+  ])
+
+  dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
+  dnl Set USE_NLS.
+  AC_REQUIRE([AM_NLS])
+
+  ifelse(gt_included_intl, yes, [
+    BUILD_INCLUDED_LIBINTL=no
+    USE_INCLUDED_LIBINTL=no
+  ])
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+  dnl If we use NLS figure out what method
+  if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+    ifelse(gt_included_intl, yes, [
+      AC_MSG_CHECKING([whether included gettext is requested])
+      AC_ARG_WITH([included-gettext],
+        [  --with-included-gettext use the GNU gettext library included here],
+        nls_cv_force_use_gnu_gettext=$withval,
+        nls_cv_force_use_gnu_gettext=no)
+      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
+
+      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+    ])
+        dnl User does not insist on using GNU NLS library.  Figure out what
+        dnl to use.  If GNU gettext is available we use this.  Else we have
+        dnl to fall back to GNU NLS library.
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+               ]],
+               [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+               ]])],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+          dnl Sometimes libintl requires libiconv, so first search for libiconv.
+          ifelse(gt_included_intl, yes, , [
+            AM_ICONV_LINK
+          ])
+          dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+          dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+          dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+          dnl even if libiconv doesn't exist.
+          AC_LIB_LINKFLAGS_BODY([intl])
+          AC_CACHE_CHECK([for GNU gettext in libintl],
+            [$gt_func_gnugettext_libintl],
+           [gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+            dnl Now see whether libintl exists and does not depend on libiconv.
+            AC_LINK_IFELSE(
+              [AC_LANG_PROGRAM(
+                 [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+                 ]],
+                 [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+                 ]])],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
+            dnl Now see whether libintl exists and depends on libiconv.
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              AC_LINK_IFELSE(
+                [AC_LANG_PROGRAM(
+                   [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+                   ]],
+                   [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+                   ]])],
+                [LIBINTL="$LIBINTL $LIBICONV"
+                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                 eval "$gt_func_gnugettext_libintl=yes"
+                ])
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"])
+        fi
+
+        dnl If an already present or preinstalled GNU gettext() is found,
+        dnl use it.  But if this macro is used in GNU gettext, and GNU
+        dnl gettext is already preinstalled in libintl, we update this
+        dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+          dnl Reset the values set by searching for libintl.
+          LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+    ifelse(gt_included_intl, yes, [
+        if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+          dnl GNU gettext is not found in the C library.
+          dnl Fall back on included GNU gettext library.
+          nls_cv_use_gnu_gettext=yes
+        fi
+      fi
+
+      if test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions used to generate GNU NLS library.
+        BUILD_INCLUDED_LIBINTL=yes
+        USE_INCLUDED_LIBINTL=yes
+        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD"
+        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD"
+        LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+      fi
+
+      CATOBJEXT=
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Mark actions to use GNU gettext tools.
+        CATOBJEXT=.gmo
+      fi
+    ])
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+      AC_DEFINE([ENABLE_NLS], [1],
+        [Define to 1 if translation of program messages to the user's native language
+   is requested.])
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  AC_MSG_CHECKING([whether to use NLS])
+  AC_MSG_RESULT([$USE_NLS])
+  if test "$USE_NLS" = "yes"; then
+    AC_MSG_CHECKING([where the gettext function comes from])
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    AC_MSG_RESULT([$gt_source])
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        AC_MSG_CHECKING([how to link with libintl])
+        AC_MSG_RESULT([$LIBINTL])
+        AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+      fi
+
+      dnl For backward compatibility. Some packages may be using this.
+      AC_DEFINE([HAVE_GETTEXT], [1],
+       [Define if the GNU gettext() function is already present or preinstalled.])
+      AC_DEFINE([HAVE_DCGETTEXT], [1],
+       [Define if the GNU dcgettext() function is already present or preinstalled.])
+    fi
+
+    dnl We need to process the po/ directory.
+    POSUB=po
+  fi
+
+  ifelse(gt_included_intl, yes, [
+    dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes'
+    dnl because some of the testsuite requires it.
+    BUILD_INCLUDED_LIBINTL=yes
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST([BUILD_INCLUDED_LIBINTL])
+    AC_SUBST([USE_INCLUDED_LIBINTL])
+    AC_SUBST([CATOBJEXT])
+  ])
+
+  dnl For backward compatibility. Some Makefiles may be using this.
+  INTLLIBS="$LIBINTL"
+  AC_SUBST([INTLLIBS])
+
+  dnl Make all documented variables known to autoconf.
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  AC_SUBST([POSUB])
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+  m4_divert_text([DEFAULTS], [gt_needs=])
+  m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+
+
+dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], [])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/host-cpu-c-abi.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/host-cpu-c-abi.m4
new file mode 100644
index 00000000000..4407296d084
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/host-cpu-c-abi.m4
@@ -0,0 +1,644 @@
+# host-cpu-c-abi.m4 serial 11
+dnl Copyright (C) 2002-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible and Sam Steingold.
+
+dnl Sets the HOST_CPU variable to the canonical name of the CPU.
+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
+dnl C language ABI (application binary interface).
+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
+dnl config.h.
+dnl
+dnl This canonical name can be used to select a particular assembly language
+dnl source file that will interoperate with C code on the given host.
+dnl
+dnl For example:
+dnl * 'i386' and 'sparc' are different canonical names, because code for i386
+dnl   will not run on SPARC CPUs and vice versa. They have different
+dnl   instruction sets.
+dnl * 'sparc' and 'sparc64' are different canonical names, because code for
+dnl   'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
+dnl   contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
+dnl   instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
+dnl   mode, but not both.
+dnl * 'mips' and 'mipsn32' are different canonical names, because they use
+dnl   different argument passing and return conventions for C functions, and
+dnl   although the instruction set of 'mips' is a large subset of the
+dnl   instruction set of 'mipsn32'.
+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
+dnl   different sizes for the C types like 'int' and 'void *', and although
+dnl   the instruction sets of 'mipsn32' and 'mips64' are the same.
+dnl * The same canonical name is used for different endiannesses. You can
+dnl   determine the endianness through preprocessor symbols:
+dnl   - 'arm': test __ARMEL__.
+dnl   - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
+dnl   - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
+dnl   (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
+dnl   - Instructions that do not exist on all of these CPUs (cmpxchg,
+dnl     MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
+dnl     assembly language source files use such instructions, you will
+dnl     need to make the distinction.
+dnl   - Speed of execution of the common instruction set is reasonable across
+dnl     the entire family of CPUs. If you have assembly language source files
+dnl     that are optimized for particular CPU types (like GNU gmp has), you
+dnl     will need to make the distinction.
+dnl   See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
+AC_DEFUN([gl_HOST_CPU_C_ABI],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_C_ASM])
+  AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
+    [case "$host_cpu" in
+
+changequote(,)dnl
+       i[4567]86 )
+changequote([,])dnl
+         gl_cv_host_cpu_c_abi=i386
+         ;;
+
+       x86_64 )
+         # On x86_64 systems, the C compiler may be generating code in one of
+         # these ABIs:
+         # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+         # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+         #   with native Windows (mingw, MSVC).
+         # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+         # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if (defined __x86_64__ || defined __amd64__ \
+                     || defined _M_X64 || defined _M_AMD64)
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if defined __ILP32__ || defined _ILP32
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+              [gl_cv_host_cpu_c_abi=x86_64-x32],
+              [gl_cv_host_cpu_c_abi=x86_64])],
+           [gl_cv_host_cpu_c_abi=i386])
+         ;;
+
+changequote(,)dnl
+       alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+changequote([,])dnl
+         gl_cv_host_cpu_c_abi=alpha
+         ;;
+
+       arm* | aarch64 )
+         # Assume arm with EABI.
+         # On arm64 systems, the C compiler may be generating code in one of
+         # these ABIs:
+         # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+         # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+         # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef __aarch64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                [[#if defined __ILP32__ || defined _ILP32
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+              [gl_cv_host_cpu_c_abi=arm64-ilp32],
+              [gl_cv_host_cpu_c_abi=arm64])],
+           [# Don't distinguish little-endian and big-endian arm, since they
+            # don't require different machine code for simple operations and
+            # since the user can distinguish them through the preprocessor
+            # defines __ARMEL__ vs. __ARMEB__.
+            # But distinguish arm which passes floating-point arguments and
+            # return values in integer registers (r0, r1, ...) - this is
+            # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+            # passes them in float registers (s0, s1, ...) and double registers
+            # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+            # sets the preprocessor defines __ARM_PCS (for the first case) and
+            # __ARM_PCS_VFP (for the second case), but older GCC does not.
+            echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+            # Look for a reference to the register d0 in the .s file.
+            AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+            if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+              gl_cv_host_cpu_c_abi=armhf
+            else
+              gl_cv_host_cpu_c_abi=arm
+            fi
+            rm -f conftest*
+           ])
+         ;;
+
+       hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+         # On hppa, the C compiler may be generating 32-bit code or 64-bit
+         # code. In the latter case, it defines _LP64 and __LP64__.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef __LP64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=hppa64],
+           [gl_cv_host_cpu_c_abi=hppa])
+         ;;
+
+       ia64* )
+         # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+         # 32-bit code. In the latter case, it defines _ILP32.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef _ILP32
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=ia64-ilp32],
+           [gl_cv_host_cpu_c_abi=ia64])
+         ;;
+
+       mips* )
+         # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+         # at 32.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=mips64],
+           [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+            # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+            # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+            # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+            AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if (_MIPS_SIM == _ABIN32)
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+              [gl_cv_host_cpu_c_abi=mipsn32],
+              [gl_cv_host_cpu_c_abi=mips])])
+         ;;
+
+       powerpc* )
+         # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+         # No need to distinguish them here; the caller may distinguish
+         # them based on the OS.
+         # On powerpc64 systems, the C compiler may still be generating
+         # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+         # be generating 64-bit code.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __powerpc64__ || defined _ARCH_PPC64
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [# On powerpc64, there are two ABIs on Linux: The AIX compatible
+            # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+            AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if defined _CALL_ELF && _CALL_ELF == 2
+                    int ok;
+                   #else
+                    error fail
+                   #endif
+                 ]])],
+              [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
+              [gl_cv_host_cpu_c_abi=powerpc64])
+           ],
+           [gl_cv_host_cpu_c_abi=powerpc])
+         ;;
+
+       rs6000 )
+         gl_cv_host_cpu_c_abi=powerpc
+         ;;
+
+       riscv32 | riscv64 )
+         # There are 2 architectures (with variants): rv32* and rv64*.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if __riscv_xlen == 64
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [cpu=riscv64],
+           [cpu=riscv32])
+         # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+         # Size of 'long' and 'void *':
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __LP64__
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [main_abi=lp64],
+           [main_abi=ilp32])
+         # Float ABIs:
+         # __riscv_float_abi_double:
+         #   'float' and 'double' are passed in floating-point registers.
+         # __riscv_float_abi_single:
+         #   'float' are passed in floating-point registers.
+         # __riscv_float_abi_soft:
+         #   No values are passed in floating-point registers.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __riscv_float_abi_double
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [float_abi=d],
+           [AC_COMPILE_IFELSE(
+              [AC_LANG_SOURCE(
+                 [[#if defined __riscv_float_abi_single
+                     int ok;
+                   #else
+                     error fail
+                   #endif
+                 ]])],
+              [float_abi=f],
+              [float_abi=''])
+           ])
+         gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+         ;;
+
+       s390* )
+         # On s390x, the C compiler may be generating 64-bit (= s390x) code
+         # or 31-bit (= s390) code.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __LP64__ || defined __s390x__
+                  int ok;
+                #else
+                  error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=s390x],
+           [gl_cv_host_cpu_c_abi=s390])
+         ;;
+
+       sparc | sparc64 )
+         # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+         # C compiler still generates 32-bit code.
+         AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#if defined __sparcv9 || defined __arch64__
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_host_cpu_c_abi=sparc64],
+           [gl_cv_host_cpu_c_abi=sparc])
+         ;;
+
+       *)
+         gl_cv_host_cpu_c_abi="$host_cpu"
+         ;;
+     esac
+    ])
+
+  dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
+  HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+  HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+  AC_SUBST([HOST_CPU])
+  AC_SUBST([HOST_CPU_C_ABI])
+
+  # This was
+  #   AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+  #   AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+  # earlier, but KAI C++ 3.2d doesn't like this.
+  sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+  AH_TOP([/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+])
+
+])
+
+
+dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
+dnl (application binary interface) is a 32-bit one, or to 'no' otherwise.
+dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
+AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
+    [if test -n "$gl_cv_host_cpu_c_abi"; then
+       case "$gl_cv_host_cpu_c_abi" in
+         i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+           gl_cv_host_cpu_c_abi_32bit=yes ;;
+         *)
+           gl_cv_host_cpu_c_abi_32bit=no ;;
+       esac
+     else
+       case "$host_cpu" in
+
+changequote(,)dnl
+         i[4567]86 )
+changequote([,])dnl
+           gl_cv_host_cpu_c_abi_32bit=yes
+           ;;
+
+         x86_64 )
+           # On x86_64 systems, the C compiler may be generating code in one of
+           # these ABIs:
+           # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+           # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+           #   with native Windows (mingw, MSVC).
+           # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+           # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if (defined __x86_64__ || defined __amd64__ \
+                       || defined _M_X64 || defined _M_AMD64) \
+                      && !(defined __ILP32__ || defined _ILP32)
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         arm* | aarch64 )
+           # Assume arm with EABI.
+           # On arm64 systems, the C compiler may be generating code in one of
+           # these ABIs:
+           # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+           # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+           # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+           # On hppa, the C compiler may be generating 32-bit code or 64-bit
+           # code. In the latter case, it defines _LP64 and __LP64__.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#ifdef __LP64__
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         ia64* )
+           # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+           # 32-bit code. In the latter case, it defines _ILP32.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#ifdef _ILP32
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=yes],
+             [gl_cv_host_cpu_c_abi_32bit=no])
+           ;;
+
+         mips* )
+           # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+           # at 32.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         powerpc* )
+           # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+           # No need to distinguish them here; the caller may distinguish
+           # them based on the OS.
+           # On powerpc64 systems, the C compiler may still be generating
+           # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+           # be generating 64-bit code.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if defined __powerpc64__ || defined _ARCH_PPC64
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         rs6000 )
+           gl_cv_host_cpu_c_abi_32bit=yes
+           ;;
+
+         riscv32 | riscv64 )
+           # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+           # Size of 'long' and 'void *':
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if defined __LP64__
+                    int ok;
+                  #else
+                    error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         s390* )
+           # On s390x, the C compiler may be generating 64-bit (= s390x) code
+           # or 31-bit (= s390) code.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if defined __LP64__ || defined __s390x__
+                    int ok;
+                  #else
+                    error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         sparc | sparc64 )
+           # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+           # C compiler still generates 32-bit code.
+           AC_COMPILE_IFELSE(
+             [AC_LANG_SOURCE(
+                [[#if defined __sparcv9 || defined __arch64__
+                   int ok;
+                  #else
+                   error fail
+                  #endif
+                ]])],
+             [gl_cv_host_cpu_c_abi_32bit=no],
+             [gl_cv_host_cpu_c_abi_32bit=yes])
+           ;;
+
+         *)
+           gl_cv_host_cpu_c_abi_32bit=no
+           ;;
+       esac
+     fi
+    ])
+
+  HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/iconv.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/iconv.m4
new file mode 100644
index 00000000000..a285e9daa5e
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/iconv.m4
@@ -0,0 +1,288 @@
+# iconv.m4 serial 21
+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2019 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+  dnl accordingly.
+  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[
+#include <stdlib.h>
+#include <iconv.h>
+         ]],
+         [[iconv_t cd = iconv_open("","");
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);]])],
+      [am_cv_func_iconv=yes])
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
+#include <stdlib.h>
+#include <iconv.h>
+           ]],
+           [[iconv_t cd = iconv_open("","");
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);]])],
+        [am_cv_lib_iconv=yes]
+        [am_cv_func_iconv=yes])
+      LIBS="$am_save_LIBS"
+    fi
+  ])
+  if test "$am_cv_func_iconv" = yes; then
+    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+      dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+      dnl Solaris 10.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        AC_RUN_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+             ]],
+             [[int result = 0;
+  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+     returns.  */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 1;
+        iconv_close (cd_utf8_to_88591);
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\263";
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 2;
+        iconv_close (cd_ascii_to_88591);
+      }
+  }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          result |= 4;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          result |= 8;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  {
+    /* Try standardized names.  */
+    iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+    /* Try IRIX, OSF/1 names.  */
+    iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+    /* Try AIX names.  */
+    iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+    /* Try HP-UX names.  */
+    iconv_t cd4 = iconv_open ("utf8", "eucJP");
+    if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+        && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+      result |= 16;
+    if (cd1 != (iconv_t)(-1))
+      iconv_close (cd1);
+    if (cd2 != (iconv_t)(-1))
+      iconv_close (cd2);
+    if (cd3 != (iconv_t)(-1))
+      iconv_close (cd3);
+    if (cd4 != (iconv_t)(-1))
+      iconv_close (cd4);
+  }
+  return result;
+]])],
+          [am_cv_func_iconv_works=yes], ,
+          [case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac])
+        test "$am_cv_func_iconv_works" = no || break
+      done
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE([HAVE_ICONV], [1],
+      [Define if you have the iconv() function and it works.])
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    AC_MSG_CHECKING([how to link with libiconv])
+    AC_MSG_RESULT([$LIBICONV])
+  else
+    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+    dnl either.
+    CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
+  AC_SUBST([LIBICONV])
+  AC_SUBST([LTLIBICONV])
+])
+
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl   Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl   Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl   warnings.
+m4_define([gl_iconv_AC_DEFUN],
+  m4_version_prereq([2.64],
+    [[AC_DEFUN_ONCE(
+        [$1], [$2])]],
+    [m4_ifdef([gl_00GNULIB],
+       [[AC_DEFUN_ONCE(
+           [$1], [$2])]],
+       [[AC_DEFUN(
+           [$1], [$2])]])]))
+gl_iconv_AC_DEFUN([AM_ICONV],
+[
+  AM_ICONV_LINK
+  if test "$am_cv_func_iconv" = yes; then
+    AC_MSG_CHECKING([for iconv declaration])
+    AC_CACHE_VAL([am_cv_proto_iconv], [
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+           ]],
+           [[]])],
+        [am_cv_proto_iconv_arg1=""],
+        [am_cv_proto_iconv_arg1="const"])
+      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+    AC_MSG_RESULT([
+         $am_cv_proto_iconv])
+  else
+    dnl When compiling GNU libiconv on a system that does not have iconv yet,
+    dnl pick the POSIX compliant declaration without 'const'.
+    am_cv_proto_iconv_arg1=""
+  fi
+  AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+    [Define as const if the declaration of iconv() needs const.])
+  dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+  m4_ifdef([gl_ICONV_H_DEFAULTS],
+    [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+     if test -n "$am_cv_proto_iconv_arg1"; then
+       ICONV_CONST="const"
+     fi
+    ])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/intlmacosx.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/intlmacosx.m4
new file mode 100644
index 00000000000..30e6f50e0ac
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/intlmacosx.m4
@@ -0,0 +1,72 @@
+# intlmacosx.m4 serial 6 (gettext-0.20)
+dnl Copyright (C) 2004-2014, 2016, 2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on Mac OS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in Mac OS X 10.4.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    [gt_cv_func_CFPreferencesCopyAppValue],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFPreferences.h>]],
+          [[CFPreferencesCopyAppValue(NULL, NULL)]])],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+      [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Check for API introduced in Mac OS X 10.5.
+  AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFLocale.h>]],
+          [[CFLocaleCopyCurrent();]])],
+       [gt_cv_func_CFLocaleCopyCurrent=yes],
+       [gt_cv_func_CFLocaleCopyCurrent=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+      [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+  fi
+  AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFLocale.h>]],
+          [[CFLocaleCopyPreferredLanguages();]])],
+       [gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
+       [gt_cv_func_CFLocaleCopyPreferredLanguages=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
+      [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+     || test $gt_cv_func_CFLocaleCopyCurrent = yes \
+     || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-ld.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-ld.m4
new file mode 100644
index 00000000000..a18719630d5
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-ld.m4
@@ -0,0 +1,168 @@
+# lib-ld.m4 serial 9
+dnl Copyright (C) 1996-2003, 2009-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
+dnl collision with libtool.m4.
+
+dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  acl_cv_prog_gnu_ld=yes
+  ;;
+*)
+  acl_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-2.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+        [assume the C compiler uses GNU ld [default=no]])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
+fi
+
+if test -n "$LD"; then
+  AC_MSG_CHECKING([for ld])
+elif test "$GCC" = yes; then
+  AC_MSG_CHECKING([for ld used by $CC])
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+if test -n "$LD"; then
+  # Let the user override the test with a path.
+  :
+else
+  AC_CACHE_VAL([acl_cv_path_LD],
+  [
+    acl_cv_path_LD= # Final result of this test
+    ac_prog=ld # Program to search in $PATH
+    if test "$GCC" = yes; then
+      # Check if gcc -print-prog-name=ld gives a path.
+      case $host in
+        *-*-mingw*)
+          # gcc leaves a trailing carriage return which upsets mingw
+          acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+        *)
+          acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
+      esac
+      case $acl_output in
+        # Accept absolute paths.
+        [[\\/]]* | ?:[[\\/]]*)
+          re_direlt='/[[^/]][[^/]]*/\.\./'
+          # Canonicalize the pathname of ld
+          acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
+          while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
+            acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
+          done
+          # Got the pathname. No search in PATH is needed.
+          acl_cv_path_LD="$acl_output"
+          ac_prog=
+          ;;
+        "")
+          # If it fails, then pretend we aren't using GCC.
+          ;;
+        *)
+          # If it is relative, then search for the first ld in PATH.
+          with_gnu_ld=unknown
+          ;;
+      esac
+    fi
+    if test -n "$ac_prog"; then
+      # Search for $ac_prog in $PATH.
+      acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+      for ac_dir in $PATH; do
+        IFS="$acl_save_ifs"
+        test -z "$ac_dir" && ac_dir=.
+        if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+          acl_cv_path_LD="$ac_dir/$ac_prog"
+          # Check to see if the program is GNU ld.  I'd rather use --version,
+          # but apparently some variants of GNU ld only accept -v.
+          # Break only if it was the GNU/non-GNU ld that we prefer.
+          case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+            *GNU* | *'with BFD'*)
+              test "$with_gnu_ld" != no && break
+              ;;
+            *)
+              test "$with_gnu_ld" != yes && break
+              ;;
+          esac
+        fi
+      done
+      IFS="$acl_save_ifs"
+    fi
+    case $host in
+      *-*-aix*)
+        AC_COMPILE_IFELSE(
+          [AC_LANG_SOURCE(
+             [[#if defined __powerpc64__ || defined _ARCH_PPC64
+                int ok;
+               #else
+                error fail
+               #endif
+             ]])],
+          [# The compiler produces 64-bit code. Add option '-b64' so that the
+           # linker groks 64-bit object files.
+           case "$acl_cv_path_LD " in
+             *" -b64 "*) ;;
+             *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
+           esac
+          ], [])
+        ;;
+      sparc64-*-netbsd*)
+        AC_COMPILE_IFELSE(
+          [AC_LANG_SOURCE(
+             [[#if defined __sparcv9 || defined __arch64__
+                int ok;
+               #else
+                error fail
+               #endif
+             ]])],
+          [],
+          [# The compiler produces 32-bit code. Add option '-m elf32_sparc'
+           # so that the linker groks 32-bit object files.
+           case "$acl_cv_path_LD " in
+             *" -m elf32_sparc "*) ;;
+             *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
+           esac
+          ])
+        ;;
+    esac
+  ])
+  LD="$acl_cv_path_LD"
+fi
+if test -n "$LD"; then
+  AC_MSG_RESULT([$LD])
+else
+  AC_MSG_RESULT([no])
+  AC_MSG_ERROR([no acceptable ld found in \$PATH])
+fi
+AC_LIB_PROG_LD_GNU
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-link.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-link.m4
new file mode 100644
index 00000000000..0ff10731fac
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-link.m4
@@ -0,0 +1,774 @@
+# lib-link.m4 serial 28
+dnl Copyright (C) 2001-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.61])
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  pushdef([Name],[m4_translit([$1],[./+-], [____])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+  AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+    AC_LIB_LINKFLAGS_BODY([$1], [$2])
+    ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+    ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+    ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+    ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+  ])
+  LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+  LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+  INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+  LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+  dnl results of this search when this library appears as a dependency.
+  HAVE_LIB[]NAME=yes
+  popdef([NAME])
+  popdef([Name])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  AC_REQUIRE([AC_LIB_RPATH])
+  pushdef([Name],[m4_translit([$1],[./+-], [____])])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+
+  dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+  dnl accordingly.
+  AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+  dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed lib[]Name and not disabled its use
+  dnl via --without-lib[]Name-prefix, he wants to use it.
+  ac_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+  AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+    ac_save_LIBS="$LIBS"
+    dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+    dnl because these -l options might require -L options that are present in
+    dnl LIBS. -l options benefit only from the -L options listed before it.
+    dnl Otherwise, add it to the front of LIBS, because it may be a static
+    dnl library that depends on another static library that is present in LIBS.
+    dnl Static libraries benefit only from the static libraries listed after
+    dnl it.
+    case " $LIB[]NAME" in
+      *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+      *)       LIBS="$LIB[]NAME $LIBS" ;;
+    esac
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([[$3]], [[$4]])],
+      [ac_cv_lib[]Name=yes],
+      [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+    LIBS="$ac_save_LIBS"
+  ])
+  if test "$ac_cv_lib[]Name" = yes; then
+    HAVE_LIB[]NAME=yes
+    AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+    AC_MSG_CHECKING([how to link with lib[]$1])
+    AC_MSG_RESULT([$LIB[]NAME])
+  else
+    HAVE_LIB[]NAME=no
+    dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+    dnl $INC[]NAME either.
+    CPPFLAGS="$ac_save_CPPFLAGS"
+    LIB[]NAME=
+    LTLIB[]NAME=
+    LIB[]NAME[]_PREFIX=
+  fi
+  AC_SUBST([HAVE_LIB]NAME)
+  AC_SUBST([LIB]NAME)
+  AC_SUBST([LTLIB]NAME)
+  AC_SUBST([LIB]NAME[_PREFIX])
+  popdef([NAME])
+  popdef([Name])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl   acl_libext,
+dnl   acl_shlibext,
+dnl   acl_libname_spec,
+dnl   acl_library_names_spec,
+dnl   acl_hardcode_libdir_flag_spec,
+dnl   acl_hardcode_libdir_separator,
+dnl   acl_hardcode_direct,
+dnl   acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+  dnl Complain if config.rpath is missing.
+  AC_REQUIRE_AUX_FILE([config.rpath])
+  AC_REQUIRE([AC_PROG_CC])                dnl we use $CC, $GCC, $LDFLAGS
+  AC_REQUIRE([AC_LIB_PROG_LD])            dnl we use $LD, $with_gnu_ld
+  AC_REQUIRE([AC_CANONICAL_HOST])         dnl we use $host
+  AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+  AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+    CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+    ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+    . ./conftest.sh
+    rm -f ./conftest.sh
+    acl_cv_rpath=done
+  ])
+  wl="$acl_cv_wl"
+  acl_libext="$acl_cv_libext"
+  acl_shlibext="$acl_cv_shlibext"
+  acl_libname_spec="$acl_cv_libname_spec"
+  acl_library_names_spec="$acl_cv_library_names_spec"
+  acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+  acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+  acl_hardcode_direct="$acl_cv_hardcode_direct"
+  acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+  dnl Determine whether the user wants rpath handling at all.
+  AC_ARG_ENABLE([rpath],
+    [  --disable-rpath         do not hardcode runtime library paths],
+    :, enable_rpath=yes)
+])
+
+dnl AC_LIB_FROMPACKAGE(name, package)
+dnl declares that libname comes from the given package. The configure file
+dnl will then not have a --with-libname-prefix option but a
+dnl --with-package-prefix option. Several libraries can come from the same
+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
+dnl macro call that searches for libname.
+AC_DEFUN([AC_LIB_FROMPACKAGE],
+[
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+  define([acl_frompackage_]NAME, [$2])
+  popdef([NAME])
+  pushdef([PACK],[$2])
+  pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+                                     [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+  define([acl_libsinpackage_]PACKUP,
+    m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
+  popdef([PACKUP])
+  popdef([PACK])
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+                                   [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+  pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+  pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+                                     [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+  pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_ARG_WITH(PACK[-prefix],
+[[  --with-]]PACK[[-prefix[=DIR]  search for ]PACKLIBS[ in DIR/include and DIR/lib
+  --without-]]PACK[[-prefix     don't search for ]PACKLIBS[ in includedir and libdir]],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+        if test "$acl_libdirstem2" != "$acl_libdirstem" \
+           && test ! -d "$withval/$acl_libdirstem"; then
+          additional_libdir="$withval/$acl_libdirstem2"
+        fi
+      fi
+    fi
+])
+  dnl Search the library and its dependencies in $additional_libdir and
+  dnl $LDFLAGS. Using breadth-first-seach.
+  LIB[]NAME=
+  LTLIB[]NAME=
+  INC[]NAME=
+  LIB[]NAME[]_PREFIX=
+  dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+  dnl computed. So it has to be reset here.
+  HAVE_LIB[]NAME=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='$1 $2'
+  while test -n "$names_next_round"; do
+    names_this_round="$names_next_round"
+    names_next_round=
+    for name in $names_this_round; do
+      already_handled=
+      for n in $names_already_handled; do
+        if test "$n" = "$name"; then
+          already_handled=yes
+          break
+        fi
+      done
+      if test -z "$already_handled"; then
+        names_already_handled="$names_already_handled $name"
+        dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+        dnl or AC_LIB_HAVE_LINKFLAGS call.
+        uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
+        eval value=\"\$HAVE_LIB$uppername\"
+        if test -n "$value"; then
+          if test "$value" = yes; then
+            eval value=\"\$LIB$uppername\"
+            test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+          else
+            dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+            dnl that this library doesn't exist. So just drop it.
+            :
+          fi
+        else
+          dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+          dnl and the already constructed $LIBNAME/$LTLIBNAME.
+          found_dir=
+          found_la=
+          found_so=
+          found_a=
+          eval libname=\"$acl_libname_spec\"    # typically: libname=lib$name
+          if test -n "$acl_shlibext"; then
+            shrext=".$acl_shlibext"             # typically: shrext=.so
+          else
+            shrext=
+          fi
+          if test $use_additional = yes; then
+            dir="$additional_libdir"
+            dnl The same code as in the loop below:
+            dnl First look for a shared library.
+            if test -n "$acl_shlibext"; then
+              if test -f "$dir/$libname$shrext"; then
+                found_dir="$dir"
+                found_so="$dir/$libname$shrext"
+              else
+                if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                  ver=`(cd "$dir" && \
+                        for f in "$libname$shrext".*; do echo "$f"; done \
+                        | sed -e "s,^$libname$shrext\\\\.,," \
+                        | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                        | sed 1q ) 2>/dev/null`
+                  if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                    found_dir="$dir"
+                    found_so="$dir/$libname$shrext.$ver"
+                  fi
+                else
+                  eval library_names=\"$acl_library_names_spec\"
+                  for f in $library_names; do
+                    if test -f "$dir/$f"; then
+                      found_dir="$dir"
+                      found_so="$dir/$f"
+                      break
+                    fi
+                  done
+                fi
+              fi
+            fi
+            dnl Then look for a static library.
+            if test "X$found_dir" = "X"; then
+              if test -f "$dir/$libname.$acl_libext"; then
+                found_dir="$dir"
+                found_a="$dir/$libname.$acl_libext"
+              fi
+            fi
+            if test "X$found_dir" != "X"; then
+              if test -f "$dir/$libname.la"; then
+                found_la="$dir/$libname.la"
+              fi
+            fi
+          fi
+          if test "X$found_dir" = "X"; then
+            for x in $LDFLAGS $LTLIB[]NAME; do
+              AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+              case "$x" in
+                -L*)
+                  dir=`echo "X$x" | sed -e 's/^X-L//'`
+                  dnl First look for a shared library.
+                  if test -n "$acl_shlibext"; then
+                    if test -f "$dir/$libname$shrext"; then
+                      found_dir="$dir"
+                      found_so="$dir/$libname$shrext"
+                    else
+                      if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+                        ver=`(cd "$dir" && \
+                              for f in "$libname$shrext".*; do echo "$f"; done \
+                              | sed -e "s,^$libname$shrext\\\\.,," \
+                              | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+                              | sed 1q ) 2>/dev/null`
+                        if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+                          found_dir="$dir"
+                          found_so="$dir/$libname$shrext.$ver"
+                        fi
+                      else
+                        eval library_names=\"$acl_library_names_spec\"
+                        for f in $library_names; do
+                          if test -f "$dir/$f"; then
+                            found_dir="$dir"
+                            found_so="$dir/$f"
+                            break
+                          fi
+                        done
+                      fi
+                    fi
+                  fi
+                  dnl Then look for a static library.
+                  if test "X$found_dir" = "X"; then
+                    if test -f "$dir/$libname.$acl_libext"; then
+                      found_dir="$dir"
+                      found_a="$dir/$libname.$acl_libext"
+                    fi
+                  fi
+                  if test "X$found_dir" != "X"; then
+                    if test -f "$dir/$libname.la"; then
+                      found_la="$dir/$libname.la"
+                    fi
+                  fi
+                  ;;
+              esac
+              if test "X$found_dir" != "X"; then
+                break
+              fi
+            done
+          fi
+          if test "X$found_dir" != "X"; then
+            dnl Found the library.
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+            if test "X$found_so" != "X"; then
+              dnl Linking with a shared library. We attempt to hardcode its
+              dnl directory into the executable's runpath, unless it's the
+              dnl standard /usr/lib.
+              if test "$enable_rpath" = no \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+                 || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+                dnl No hardcoding is needed.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+              else
+                dnl Use an explicit option to hardcode DIR into the resulting
+                dnl binary.
+                dnl Potentially add DIR to ltrpathdirs.
+                dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                haveit=
+                for x in $ltrpathdirs; do
+                  if test "X$x" = "X$found_dir"; then
+                    haveit=yes
+                    break
+                  fi
+                done
+                if test -z "$haveit"; then
+                  ltrpathdirs="$ltrpathdirs $found_dir"
+                fi
+                dnl The hardcoding into $LIBNAME is system dependent.
+                if test "$acl_hardcode_direct" = yes; then
+                  dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+                  dnl resulting binary.
+                  LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                else
+                  if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+                    dnl Use an explicit option to hardcode DIR into the resulting
+                    dnl binary.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    dnl Potentially add DIR to rpathdirs.
+                    dnl The rpathdirs will be appended to $LIBNAME at the end.
+                    haveit=
+                    for x in $rpathdirs; do
+                      if test "X$x" = "X$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      rpathdirs="$rpathdirs $found_dir"
+                    fi
+                  else
+                    dnl Rely on "-L$found_dir".
+                    dnl But don't add it if it's already contained in the LDFLAGS
+                    dnl or the already constructed $LIBNAME
+                    haveit=
+                    for x in $LDFLAGS $LIB[]NAME; do
+                      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                      if test "X$x" = "X-L$found_dir"; then
+                        haveit=yes
+                        break
+                      fi
+                    done
+                    if test -z "$haveit"; then
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+                    fi
+                    if test "$acl_hardcode_minus_L" != no; then
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+                    else
+                      dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+                      dnl here, because this doesn't fit in flags passed to the
+                      dnl compiler. So give up. No hardcoding. This affects only
+                      dnl very old systems.
+                      dnl FIXME: Not sure whether we should use
+                      dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+                      dnl here.
+                      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                dnl Linking with a static library.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+              else
+                dnl We shouldn't come here, but anyway it's good to have a
+                dnl fallback.
+                LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+              fi
+            fi
+            dnl Assume the include files are nearby.
+            additional_includedir=
+            case "$found_dir" in
+              */$acl_libdirstem | */$acl_libdirstem/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+                if test "$name" = '$1'; then
+                  LIB[]NAME[]_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+              */$acl_libdirstem2 | */$acl_libdirstem2/)
+                basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+                if test "$name" = '$1'; then
+                  LIB[]NAME[]_PREFIX="$basedir"
+                fi
+                additional_includedir="$basedir/include"
+                ;;
+            esac
+            if test "X$additional_includedir" != "X"; then
+              dnl Potentially add $additional_includedir to $INCNAME.
+              dnl But don't add it
+              dnl   1. if it's the standard /usr/include,
+              dnl   2. if it's /usr/local/include and we are using GCC on Linux,
+              dnl   3. if it's already present in $CPPFLAGS or the already
+              dnl      constructed $INCNAME,
+              dnl   4. if it doesn't exist as a directory.
+              if test "X$additional_includedir" != "X/usr/include"; then
+                haveit=
+                if test "X$additional_includedir" = "X/usr/local/include"; then
+                  if test -n "$GCC"; then
+                    case $host_os in
+                      linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                    esac
+                  fi
+                fi
+                if test -z "$haveit"; then
+                  for x in $CPPFLAGS $INC[]NAME; do
+                    AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                    if test "X$x" = "X-I$additional_includedir"; then
+                      haveit=yes
+                      break
+                    fi
+                  done
+                  if test -z "$haveit"; then
+                    if test -d "$additional_includedir"; then
+                      dnl Really add $additional_includedir to $INCNAME.
+                      INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+                    fi
+                  fi
+                fi
+              fi
+            fi
+            dnl Look for dependencies.
+            if test -n "$found_la"; then
+              dnl Read the .la file. It defines the variables
+              dnl dlname, library_names, old_library, dependency_libs, current,
+              dnl age, revision, installed, dlopen, dlpreopen, libdir.
+              save_libdir="$libdir"
+              case "$found_la" in
+                */* | *\\*) . "$found_la" ;;
+                *) . "./$found_la" ;;
+              esac
+              libdir="$save_libdir"
+              dnl We use only dependency_libs.
+              for dep in $dependency_libs; do
+                case "$dep" in
+                  -L*)
+                    additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+                    dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+                    dnl But don't add it
+                    dnl   1. if it's the standard /usr/lib,
+                    dnl   2. if it's /usr/local/lib and we are using GCC on Linux,
+                    dnl   3. if it's already present in $LDFLAGS or the already
+                    dnl      constructed $LIBNAME,
+                    dnl   4. if it doesn't exist as a directory.
+                    if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+                       && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+                      haveit=
+                      if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+                         || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+                        if test -n "$GCC"; then
+                          case $host_os in
+                            linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+                          esac
+                        fi
+                      fi
+                      if test -z "$haveit"; then
+                        haveit=
+                        for x in $LDFLAGS $LIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LIBNAME.
+                            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIB[]NAME; do
+                          AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+                          if test "X$x" = "X-L$additional_libdir"; then
+                            haveit=yes
+                            break
+                          fi
+                        done
+                        if test -z "$haveit"; then
+                          if test -d "$additional_libdir"; then
+                            dnl Really add $additional_libdir to $LTLIBNAME.
+                            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+                          fi
+                        fi
+                      fi
+                    fi
+                    ;;
+                  -R*)
+                    dir=`echo "X$dep" | sed -e 's/^X-R//'`
+                    if test "$enable_rpath" != no; then
+                      dnl Potentially add DIR to rpathdirs.
+                      dnl The rpathdirs will be appended to $LIBNAME at the end.
+                      haveit=
+                      for x in $rpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        rpathdirs="$rpathdirs $dir"
+                      fi
+                      dnl Potentially add DIR to ltrpathdirs.
+                      dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+                      haveit=
+                      for x in $ltrpathdirs; do
+                        if test "X$x" = "X$dir"; then
+                          haveit=yes
+                          break
+                        fi
+                      done
+                      if test -z "$haveit"; then
+                        ltrpathdirs="$ltrpathdirs $dir"
+                      fi
+                    fi
+                    ;;
+                  -l*)
+                    dnl Handle this in the next round.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+                    ;;
+                  *.la)
+                    dnl Handle this in the next round. Throw away the .la's
+                    dnl directory; it is already contained in a preceding -L
+                    dnl option.
+                    names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+                    ;;
+                  *)
+                    dnl Most likely an immediate library name.
+                    LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+                    LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+            dnl Didn't find the library; assume it is in the system directories
+            dnl known to the linker and runtime loader. (All the system
+            dnl directories known to the linker should also be known to the
+            dnl runtime loader, otherwise the system is severely misconfigured.)
+            LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+            LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+          fi
+        fi
+      fi
+    done
+  done
+  if test "X$rpathdirs" != "X"; then
+    if test -n "$acl_hardcode_libdir_separator"; then
+      dnl Weird platform: only the last -rpath option counts, the user must
+      dnl pass all path elements in one option. We can arrange that for a
+      dnl single library, but not when more than one $LIBNAMEs are used.
+      alldirs=
+      for found_dir in $rpathdirs; do
+        alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+      done
+      dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+      acl_save_libdir="$libdir"
+      libdir="$alldirs"
+      eval flag=\"$acl_hardcode_libdir_flag_spec\"
+      libdir="$acl_save_libdir"
+      LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+    else
+      dnl The -rpath options are cumulative.
+      for found_dir in $rpathdirs; do
+        acl_save_libdir="$libdir"
+        libdir="$found_dir"
+        eval flag=\"$acl_hardcode_libdir_flag_spec\"
+        libdir="$acl_save_libdir"
+        LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+    dnl When using libtool, the option that works for both libraries and
+    dnl executables is -R. The -R options are cumulative.
+    for found_dir in $ltrpathdirs; do
+      LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+    done
+  fi
+  popdef([PACKLIBS])
+  popdef([PACKUP])
+  popdef([PACK])
+  popdef([NAME])
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+  for element in [$2]; do
+    haveit=
+    for x in $[$1]; do
+      AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+      if test "X$x" = "X$element"; then
+        haveit=yes
+        break
+      fi
+    done
+    if test -z "$haveit"; then
+      [$1]="${[$1]}${[$1]:+ }$element"
+    fi
+  done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+  AC_REQUIRE([AC_LIB_RPATH])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  $1=
+  if test "$enable_rpath" != no; then
+    if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+      dnl Use an explicit option to hardcode directories into the resulting
+      dnl binary.
+      rpathdirs=
+      next=
+      for opt in $2; do
+        if test -n "$next"; then
+          dir="$next"
+          dnl No need to hardcode the standard /usr/lib.
+          if test "X$dir" != "X/usr/$acl_libdirstem" \
+             && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+            rpathdirs="$rpathdirs $dir"
+          fi
+          next=
+        else
+          case $opt in
+            -L) next=yes ;;
+            -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+                 dnl No need to hardcode the standard /usr/lib.
+                 if test "X$dir" != "X/usr/$acl_libdirstem" \
+                    && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+                   rpathdirs="$rpathdirs $dir"
+                 fi
+                 next= ;;
+            *) next= ;;
+          esac
+        fi
+      done
+      if test "X$rpathdirs" != "X"; then
+        if test -n ""$3""; then
+          dnl libtool is used for linking. Use -R options.
+          for dir in $rpathdirs; do
+            $1="${$1}${$1:+ }-R$dir"
+          done
+        else
+          dnl The linker is used for linking directly.
+          if test -n "$acl_hardcode_libdir_separator"; then
+            dnl Weird platform: only the last -rpath option counts, the user
+            dnl must pass all path elements in one option.
+            alldirs=
+            for dir in $rpathdirs; do
+              alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+            done
+            acl_save_libdir="$libdir"
+            libdir="$alldirs"
+            eval flag=\"$acl_hardcode_libdir_flag_spec\"
+            libdir="$acl_save_libdir"
+            $1="$flag"
+          else
+            dnl The -rpath options are cumulative.
+            for dir in $rpathdirs; do
+              acl_save_libdir="$libdir"
+              libdir="$dir"
+              eval flag=\"$acl_hardcode_libdir_flag_spec\"
+              libdir="$acl_save_libdir"
+              $1="${$1}${$1:+ }$flag"
+            done
+          fi
+        fi
+      fi
+    fi
+  fi
+  AC_SUBST([$1])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-prefix.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-prefix.m4
new file mode 100644
index 00000000000..8adb17bb916
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/lib-prefix.m4
@@ -0,0 +1,249 @@
+# lib-prefix.m4 serial 14
+dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+  AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+  dnl By default, look in $includedir and $libdir.
+  use_additional=yes
+  AC_LIB_WITH_FINAL_PREFIX([
+    eval additional_includedir=\"$includedir\"
+    eval additional_libdir=\"$libdir\"
+  ])
+  AC_ARG_WITH([lib-prefix],
+[[  --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+  --without-lib-prefix    don't search for libraries in includedir and libdir]],
+[
+    if test "X$withval" = "Xno"; then
+      use_additional=no
+    else
+      if test "X$withval" = "X"; then
+        AC_LIB_WITH_FINAL_PREFIX([
+          eval additional_includedir=\"$includedir\"
+          eval additional_libdir=\"$libdir\"
+        ])
+      else
+        additional_includedir="$withval/include"
+        additional_libdir="$withval/$acl_libdirstem"
+      fi
+    fi
+])
+  if test $use_additional = yes; then
+    dnl Potentially add $additional_includedir to $CPPFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/include,
+    dnl   2. if it's already present in $CPPFLAGS,
+    dnl   3. if it's /usr/local/include and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_includedir" != "X/usr/include"; then
+      haveit=
+      for x in $CPPFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-I$additional_includedir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_includedir" = "X/usr/local/include"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_includedir"; then
+            dnl Really add $additional_includedir to $CPPFLAGS.
+            CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+          fi
+        fi
+      fi
+    fi
+    dnl Potentially add $additional_libdir to $LDFLAGS.
+    dnl But don't add it
+    dnl   1. if it's the standard /usr/lib,
+    dnl   2. if it's already present in $LDFLAGS,
+    dnl   3. if it's /usr/local/lib and we are using GCC on Linux,
+    dnl   4. if it doesn't exist as a directory.
+    if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+      haveit=
+      for x in $LDFLAGS; do
+        AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+        if test "X$x" = "X-L$additional_libdir"; then
+          haveit=yes
+          break
+        fi
+      done
+      if test -z "$haveit"; then
+        if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+          if test -n "$GCC"; then
+            case $host_os in
+              linux*) haveit=yes;;
+            esac
+          fi
+        fi
+        if test -z "$haveit"; then
+          if test -d "$additional_libdir"; then
+            dnl Really add $additional_libdir to $LDFLAGS.
+            LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+          fi
+        fi
+      fi
+    fi
+  fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+  dnl Unfortunately, prefix and exec_prefix get only finally determined
+  dnl at the end of configure.
+  if test "X$prefix" = "XNONE"; then
+    acl_final_prefix="$ac_default_prefix"
+  else
+    acl_final_prefix="$prefix"
+  fi
+  if test "X$exec_prefix" = "XNONE"; then
+    acl_final_exec_prefix='${prefix}'
+  else
+    acl_final_exec_prefix="$exec_prefix"
+  fi
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+  acl_save_prefix="$prefix"
+  prefix="$acl_final_prefix"
+  acl_save_exec_prefix="$exec_prefix"
+  exec_prefix="$acl_final_exec_prefix"
+  $1
+  exec_prefix="$acl_save_exec_prefix"
+  prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates
+dnl - a variable acl_libdirstem, containing the basename of the libdir, either
+dnl   "lib" or "lib64" or "lib/64",
+dnl - a variable acl_libdirstem2, as a secondary possible value for
+dnl   acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
+dnl   "lib/amd64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+  dnl There is no formal standard regarding lib and lib64.
+  dnl On glibc systems, the current practice is that on a system supporting
+  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+  dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
+  dnl the compiler's default mode by looking at the compiler's library search
+  dnl path. If at least one of its elements ends in /lib64 or points to a
+  dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+  dnl Otherwise we use the default, namely "lib".
+  dnl On Solaris systems, the current practice is that on a system supporting
+  dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+  dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+  dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
+
+  case "$host_os" in
+    solaris*)
+      AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+        [AC_COMPILE_IFELSE(
+           [AC_LANG_SOURCE(
+              [[#ifdef _LP64
+                 int ok;
+                #else
+                 error fail
+                #endif
+              ]])],
+           [gl_cv_solaris_64bit=yes],
+           [gl_cv_solaris_64bit=no])
+        ]);;
+  esac
+
+  dnl Allow the user to override the result by setting acl_cv_libdirstems.
+  AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
+    [acl_cv_libdirstems],
+    [acl_libdirstem=lib
+     acl_libdirstem2=
+     case "$host_os" in
+       solaris*)
+         dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+         dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
+         dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+         dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+         dnl symlink is missing, so we set acl_libdirstem2 too.
+         if test $gl_cv_solaris_64bit = yes; then
+           acl_libdirstem=lib/64
+           case "$host_cpu" in
+             sparc*)        acl_libdirstem2=lib/sparcv9 ;;
+             i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+           esac
+         fi
+         ;;
+       *)
+         dnl If $CC generates code for a 32-bit ABI, the libraries are
+         dnl surely under $prefix/lib, not $prefix/lib64.
+         if test "$HOST_CPU_C_ABI_32BIT" != yes; then
+           dnl The result is a property of the system. However, non-system
+           dnl compilers sometimes have odd library search paths. Therefore
+           dnl prefer asking /usr/bin/gcc, if available, rather than $CC.
+           searchpath=`(if test -f /usr/bin/gcc \
+                           && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
+                          LC_ALL=C /usr/bin/gcc -print-search-dirs; \
+                        else \
+                          LC_ALL=C $CC -print-search-dirs; \
+                        fi) 2>/dev/null \
+                       | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+           if test -n "$searchpath"; then
+             acl_save_IFS="${IFS= 	}"; IFS=":"
+             for searchdir in $searchpath; do
+               if test -d "$searchdir"; then
+                 case "$searchdir" in
+                   */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+                   */../ | */.. )
+                     # Better ignore directories of this form. They are misleading.
+                     ;;
+                   *) searchdir=`cd "$searchdir" && pwd`
+                      case "$searchdir" in
+                        */lib64 ) acl_libdirstem=lib64 ;;
+                      esac ;;
+                 esac
+               fi
+             done
+             IFS="$acl_save_IFS"
+           fi
+         fi
+         ;;
+     esac
+     test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+     acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
+    ])
+  # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
+  acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
+  acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/nls.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/nls.m4
new file mode 100644
index 00000000000..b62f6148570
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/nls.m4
@@ -0,0 +1,32 @@
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_NLS],
+[
+  AC_MSG_CHECKING([whether NLS is requested])
+  dnl Default is enabled NLS
+  AC_ARG_ENABLE([nls],
+    [  --disable-nls           do not use Native Language Support],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT([$USE_NLS])
+  AC_SUBST([USE_NLS])
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/po.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/po.m4
new file mode 100644
index 00000000000..143792dba56
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/po.m4
@@ -0,0 +1,450 @@
+# po.m4 serial 30 (gettext-0.20)
+dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.60])
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+  AC_REQUIRE([AC_PROG_SED])dnl
+  AC_REQUIRE([AM_NLS])dnl
+
+  dnl Release version of the gettext macros. This is used to ensure that
+  dnl the gettext macros and po/Makefile.in.in are in sync.
+  AC_SUBST([GETTEXT_MACRO_VERSION], [0.20])
+
+  dnl Perform the following tests also if --disable-nls has been given,
+  dnl because they are needed for "make dist" to work.
+
+  dnl Search for GNU msgfmt in the PATH.
+  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+  dnl The second test excludes FreeBSD msgfmt.
+  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
+
+  dnl Search for GNU xgettext 0.12 or newer in the PATH.
+  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+  dnl The second test excludes FreeBSD xgettext.
+  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  dnl Remove leftover from FreeBSD xgettext call.
+  rm -f messages.po
+
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
+  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+  dnl Test whether it is GNU msgmerge >= 0.20.
+  if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then
+    MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt'
+  else
+    dnl Test whether it is GNU msgmerge >= 0.12.
+    if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then
+      MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet'
+    else
+      dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is
+      dnl slow. But this is not a big problem, as such old gettext versions are
+      dnl hardly in use any more.
+      MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet'
+    fi
+  fi
+  AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION])
+
+  dnl Support for AM_XGETTEXT_OPTION.
+  test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+  AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+  AC_CONFIG_COMMANDS([po-directories], [[
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          gt_tab=`printf '\t'`
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done]],
+   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS.
+    OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS"
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+   ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+  # When this code is run, in config.status, two variables have already been
+  # set:
+  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+  # - LINGUAS is the value of the environment variable LINGUAS at configure
+  #   time.
+
+changequote(,)dnl
+  # Adjust a relative srcdir.
+  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+  ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+  # In autoconf-2.13 it is called $ac_given_srcdir.
+  # In autoconf-2.50 it is called $srcdir.
+  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+  case "$ac_given_srcdir" in
+    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+    /*) top_srcdir="$ac_given_srcdir" ;;
+    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  # Find a way to echo strings without interpreting backslash.
+  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+    gt_echo='echo'
+  else
+    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+      gt_echo='printf %s\n'
+    else
+      echo_func () {
+        cat <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  tab=`printf '\t'`
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
+  # Seen the first line of the variable definition.
+  s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  if test -n "$OBSOLETE_ALL_LINGUAS"; then
+    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+  fi
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Compute POFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+  # Compute UPDATEPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+  # Compute DUMMYPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+  # Compute GMOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  for lang in $ALL_LINGUAS; do
+    POFILES="$POFILES $srcdirpre$lang.po"
+    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+    PROPERTIESFILES="$PROPERTIESFILES \$(srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  done
+  # CATALOGS depends on both $ac_dir and the user's LINGUAS
+  # environment variable.
+  INST_LINGUAS=
+  if test -n "$ALL_LINGUAS"; then
+    for presentlang in $ALL_LINGUAS; do
+      useit=no
+      if test "%UNSET%" != "$LINGUAS"; then
+        desiredlanguages="$LINGUAS"
+      else
+        desiredlanguages="$ALL_LINGUAS"
+      fi
+      for desiredlang in $desiredlanguages; do
+        # Use the presentlang catalog if desiredlang is
+        #   a. equal to presentlang, or
+        #   b. a variant of presentlang (because in this case,
+        #      presentlang can be used as a fallback for messages
+        #      which are not translated in the desiredlang catalog).
+        case "$desiredlang" in
+          "$presentlang"*) useit=yes;;
+        esac
+      done
+      if test $useit = yes; then
+        INST_LINGUAS="$INST_LINGUAS $presentlang"
+      fi
+    done
+  fi
+  CATALOGS=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  tab=`printf '\t'`
+  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+  XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+  AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+  XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/progtest.m4 b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/progtest.m4
new file mode 100644
index 00000000000..5f186b14909
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/aclocal/progtest.m4
@@ -0,0 +1,91 @@
+# progtest.m4 serial 7 (gettext-0.18.2)
+dnl Copyright (C) 1996-2003, 2005, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ([2.50])
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+  # contains only /bin. Note that ksh looks also at the FPATH variable,
+  # so we have to set that as well for the test.
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+    && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+           || PATH_SEPARATOR=';'
+       }
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL([ac_cv_path_$1],
+[case "[$]$1" in
+  [[\\/]]* | ?:[[\\/]]*)
+    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in ifelse([$5], , $PATH, [$5]); do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+          if [$3]; then
+            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+    ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$][$1])
+else
+  AC_MSG_RESULT([no])
+fi
+AC_SUBST([$1])dnl
+])
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath b/meta/recipes-core/gettext/gettext-minimal-0.20.1/config.rpath
similarity index 99%
rename from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath
rename to meta/recipes-core/gettext/gettext-minimal-0.20.1/config.rpath
index 98183ff2f2e..be202c1a9e7 100755
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/config.rpath
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/config.rpath
@@ -2,7 +2,7 @@
 # Output a system dependent set of variables, describing how to set the
 # run time search path of shared libraries in an executable.
 #
-#   Copyright 1996-2016 Free Software Foundation, Inc.
+#   Copyright 1996-2019 Free Software Foundation, Inc.
 #   Taken from GNU libtool, 2001
 #   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
diff --git a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin b/meta/recipes-core/gettext/gettext-minimal-0.20.1/remove-potcdate.sin
similarity index 50%
rename from meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin
rename to meta/recipes-core/gettext/gettext-minimal-0.20.1/remove-potcdate.sin
index 2436c49e786..8c70dfbf148 100644
--- a/meta/recipes-core/gettext/gettext-minimal-0.19.8.1/remove-potcdate.sin
+++ b/meta/recipes-core/gettext/gettext-minimal-0.20.1/remove-potcdate.sin
@@ -1,6 +1,12 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
+# Sed script that removes the POT-Creation-Date line in the header entry
 # from a POT file.
 #
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without any warranty.
+#
 # The distinction between the first and the following occurrences of the
 # pattern is achieved by looking at the hold space.
 /^"POT-Creation-Date: .*"$/{
diff --git a/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb b/meta/recipes-core/gettext/gettext-minimal-native_0.20.1.bb
similarity index 86%
rename from meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb
rename to meta/recipes-core/gettext/gettext-minimal-native_0.20.1.bb
index 26ff19975d2..7a4dcbec57b 100644
--- a/meta/recipes-core/gettext/gettext-minimal-native_0.19.8.1.bb
+++ b/meta/recipes-core/gettext/gettext-minimal-native_0.20.1.bb
@@ -3,12 +3,11 @@ DESCRIPTION = "Contains the m4 macros sufficient to support building \
 autoconf/automake. This provides a significant build time speedup by \
 the removal of gettext-native from most dependency chains (now only \
 needed for gettext for the target)."
-SRC_URI = "file://aclocal.tgz \
+SRC_URI = "file://aclocal/ \
            file://config.rpath \
            file://Makefile.in.in \
            file://remove-potcdate.sin \
            file://COPYING \
-           file://0001-PATCH-Disable-the-test-to-convert-euc-jp.patch \
 "
 
 INHIBIT_DEFAULT_DEPS = "1"
@@ -23,7 +22,7 @@ S = "${WORKDIR}"
 
 do_install () {
 	install -d ${D}${datadir}/aclocal/
-	cp ${WORKDIR}/*.m4 ${D}${datadir}/aclocal/
+	cp ${WORKDIR}/aclocal/*.m4 ${D}${datadir}/aclocal/
 	install -d ${D}${datadir}/gettext/po/
 	cp ${WORKDIR}/config.rpath ${D}${datadir}/gettext/
 	cp ${WORKDIR}/Makefile.in.in ${D}${datadir}/gettext/po/
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 03/24] gettext: update to 0.20.1
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 02/24] gettext-minimal-native: update to 0.20.1 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-07  9:21   ` Khem Raj
  2019-12-05 15:43 ` [PATCH 04/24] psmisc: revert to default autopoint exclusion Alexander Kanavin
                   ` (22 subsequent siblings)
  24 siblings, 1 reply; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

License-Update: URLs changed from http to https
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../gettext-0.19.8.1/fix-CVE-2018-18751.patch | 141 ----
 .../gettext/gettext-0.19.8.1/parallel.patch   |  23 -
 .../gettext-0.19.8.1/use-pkgconfig.patch      | 321 --------
 .../add-with-bisonlocaledir.patch             |   0
 ...nt.c-timsort.h-fix-formatting-issues.patch |  30 +-
 .../gettext/gettext-0.20.1/parallel.patch     |  32 +
 .../run-ptest                                 |   0
 .../serial-tests-config.patch                 |  26 +-
 .../gettext-0.20.1/use-pkgconfig.patch        | 713 ++++++++++++++++++
 ...{gettext_0.19.8.1.bb => gettext_0.20.1.bb} |  23 +-
 10 files changed, 775 insertions(+), 534 deletions(-)
 delete mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
 delete mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
 delete mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
 rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/add-with-bisonlocaledir.patch (100%)
 rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/cr-statement.c-timsort.h-fix-formatting-issues.patch (68%)
 create mode 100644 meta/recipes-core/gettext/gettext-0.20.1/parallel.patch
 rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/run-ptest (100%)
 rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/serial-tests-config.patch (75%)
 create mode 100644 meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch
 rename meta/recipes-core/gettext/{gettext_0.19.8.1.bb => gettext_0.20.1.bb} (94%)

diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
deleted file mode 100644
index 6dfe200d654..00000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-Upstream-Status: Backport [https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commit;h=dce3a16]
-CVE: CVE-2018-18751
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-From dce3a16e5e9368245735e29bf498dcd5e3e474a4 Mon Sep 17 00:00:00 2001
-From: Daiki Ueno <ueno@gnu.org>
-Date: Thu, 15 Sep 2016 13:57:24 +0200
-Subject: [PATCH] xgettext: Fix crash with *.po file input
-
-When xgettext was given two *.po files with the same msgid_plural, it
-crashed with double-free.  Problem reported by Davlet Panech in:
-http://lists.gnu.org/archive/html/bug-gettext/2016-09/msg00001.html
-* gettext-tools/src/po-gram-gen.y: Don't free msgid_pluralform after
-calling do_callback_message, assuming that it takes ownership.
-* gettext-tools/src/read-catalog.c (default_add_message): Free
-msgid_plural after calling message_alloc.
-* gettext-tools/tests/xgettext-po-2: New file.
-* gettext-tools/tests/Makefile.am (TESTS): Add new test.
----
- gettext-tools/src/po-gram-gen.y   | 13 ++++-----
- gettext-tools/src/read-catalog.c  |  2 ++
- gettext-tools/tests/Makefile.am   |  2 +-
- gettext-tools/tests/xgettext-po-2 | 55 +++++++++++++++++++++++++++++++++++++++
- 4 files changed, 63 insertions(+), 9 deletions(-)
- create mode 100755 gettext-tools/tests/xgettext-po-2
-
-diff --git a/gettext-tools/src/po-gram-gen.y b/gettext-tools/src/po-gram-gen.y
-index becf5e6..4428e77 100644
---- a/gettext-tools/src/po-gram-gen.y
-+++ b/gettext-tools/src/po-gram-gen.y
-@@ -221,14 +221,11 @@ message
-                   check_obsolete ($1, $3);
-                   check_obsolete ($1, $4);
-                   if (!$1.obsolete || pass_obsolete_entries)
--                    {
--                      do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
--                                           $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
--                                           $1.prev_ctxt,
--                                           $1.prev_id, $1.prev_id_plural,
--                                           $1.obsolete);
--                      free ($3.string);
--                    }
-+                    do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
-+                                         $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
-+                                         $1.prev_ctxt,
-+                                         $1.prev_id, $1.prev_id_plural,
-+                                         $1.obsolete);
-                   else
-                     {
-                       free_message_intro ($1);
-diff --git a/gettext-tools/src/read-catalog.c b/gettext-tools/src/read-catalog.c
-index 571d18e..6af6d20 100644
---- a/gettext-tools/src/read-catalog.c
-+++ b/gettext-tools/src/read-catalog.c
-@@ -397,6 +397,8 @@ default_add_message (default_catalog_reader_ty *this,
-          appropriate.  */
-       mp = message_alloc (msgctxt, msgid, msgid_plural, msgstr, msgstr_len,
-                           msgstr_pos);
-+      if (msgid_plural != NULL)
-+        free (msgid_plural);
-       mp->prev_msgctxt = prev_msgctxt;
-       mp->prev_msgid = prev_msgid;
-       mp->prev_msgid_plural = prev_msgid_plural;
-diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am
-index 23b09b1..0dfb4d8 100644
---- a/gettext-tools/tests/Makefile.am
-+++ b/gettext-tools/tests/Makefile.am
-@@ -95,7 +95,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \
- 	xgettext-perl-1 xgettext-perl-2 xgettext-perl-3 xgettext-perl-4 \
- 	xgettext-perl-5 xgettext-perl-6 xgettext-perl-7 xgettext-perl-8 \
- 	xgettext-php-1 xgettext-php-2 xgettext-php-3 xgettext-php-4 \
--	xgettext-po-1 \
-+	xgettext-po-1 xgettext-po-2 \
- 	xgettext-properties-1 \
- 	xgettext-python-1 xgettext-python-2 xgettext-python-3 \
- 	xgettext-python-4 \
-diff --git a/gettext-tools/tests/xgettext-po-2 b/gettext-tools/tests/xgettext-po-2
-new file mode 100755
-index 0000000..c4bd9d0
---- /dev/null
-+++ b/gettext-tools/tests/xgettext-po-2
-@@ -0,0 +1,55 @@
-+#! /bin/sh
-+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
-+
-+# Test PO extractors with multiple input files.
-+
-+cat <<EOF > xg-po-2-1.po
-+msgid "first msgid"
-+msgid_plural "first msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "second msgid"
-+msgid_plural "second msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+EOF
-+
-+cat <<EOF > xg-po-2-2.po
-+msgid "third msgid"
-+msgid_plural "third msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "second msgid"
-+msgid_plural "second msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+EOF
-+
-+: ${XGETTEXT=xgettext}
-+${XGETTEXT} --omit-header xg-po-2-1.po xg-po-2-2.po -o xg-po-2.tmp.po || Exit 1
-+LC_ALL=C tr -d '\r' < xg-po-2.tmp.po > xg-po-2.po || Exit 1
-+
-+cat <<EOF > xg-po-2.ok
-+msgid "first msgid"
-+msgid_plural "first msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "second msgid"
-+msgid_plural "second msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+
-+msgid "third msgid"
-+msgid_plural "third msgid (plural)"
-+msgstr[0] ""
-+msgstr[1] ""
-+EOF
-+
-+: ${DIFF=diff}
-+${DIFF} xg-po-2.ok xg-po-2.po
-+result=$?
-+
-+exit $result
--- 
-1.9.1
-
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
deleted file mode 100644
index c8e2c94af0e..00000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-instal libgettextlib.a before removing it
-
-In a multiple job build, Makefile can simultaneously
-be installing and removing libgettextlib.a.  We serialize
-the operations.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <jslater@windriver.com>
-
---- a/gettext-tools/gnulib-lib/Makefile.am
-+++ b/gettext-tools/gnulib-lib/Makefile.am
-@@ -57,6 +57,10 @@ endif
- # Rules generated and collected by gnulib-tool.
- include Makefile.gnulib
- 
-+# defined in Makefile.gnulib but missing this dependency
-+#
-+install-exec-clean: install-libLTLIBRARIES
-+
- # Which classes to export from the shared library.
- MOOPPFLAGS += --dllexport=styled_ostream
- 
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
deleted file mode 100644
index 6156a153f74..00000000000
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
+++ /dev/null
@@ -1,321 +0,0 @@
-For reasons which I just can't fathom gnulib doesn't use the expected tools to
-find libraries but badly reinvents the wheel.  This will trivially lead to host
-contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
-canonicalisation resulting in relative paths).
-
-Simply delete all the crazy, and replace with a single call to pkg-config.
-
-Upstream-Status: Inappropriate (upstream still refuse to consider pkg-config)
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/gnulib-local/m4/libcroco.m4 b/gnulib-local/m4/libcroco.m4
-index f79ea82f1..1f67274db 100644
---- a/gettext-tools/gnulib-m4/libcroco.m4
-+++ b/gettext-tools/gnulib-m4/libcroco.m4
-@@ -8,6 +8,7 @@ dnl From Bruno Haible.
- 
- AC_DEFUN([gl_LIBCROCO],
- [
-+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-   dnl libcroco depends on libglib.
-   AC_REQUIRE([gl_LIBGLIB])
- 
-@@ -23,65 +24,10 @@ AC_DEFUN([gl_LIBCROCO],
-   LTLIBCROCO=
-   INCCROCO=
-   if test "$gl_cv_libcroco_use_included" != yes; then
--    dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
--    dnl use the included one.
--    AC_CACHE_VAL([gl_cv_libcroco], [
--      gl_cv_libcroco=no
--      gl_cv_LIBCROCO=
--      gl_cv_LTLIBCROCO=
--      gl_cv_INCCROCO=
--      gl_save_LIBS="$LIBS"
--      dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
--      dnl INCCROCO_0_6 accordingly.
--      dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
--      dnl cross-compiling or when the C compiler in use is different from the
--      dnl one that built the library.
--      AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
--      LIBS="$gl_save_LIBS $LIBCROCO_0_6"
--      AC_TRY_LINK([#include <libcroco-config.h>],
--        [const char *version = LIBCROCO_VERSION; return !version;],
--        [gl_cv_libcroco=yes
--         gl_cv_LIBCROCO="$LIBCROCO_0_6"
--         gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
--        ])
--      if test "$gl_cv_libcroco" != yes; then
--        gl_save_CPPFLAGS="$CPPFLAGS"
--        CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
--        AC_TRY_LINK([#include <libcroco-config.h>],
--          [const char *version = LIBCROCO_VERSION; return !version;],
--          [gl_cv_libcroco=yes
--           gl_cv_LIBCROCO="$LIBCROCO_0_6"
--           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
--           gl_cv_INCCROCO="$INCCROCO_0_6"
--          ])
--        if test "$gl_cv_libcroco" != yes; then
--          dnl Often the include files are installed in
--          dnl /usr/include/libcroco-0.6/libcroco.
--          AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
--            [const char *version = LIBCROCO_VERSION; return !version;],
--            [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
--             libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
--             if test -d "$libcroco_include_dir"; then
--               gl_cv_libcroco=yes
--               gl_cv_LIBCROCO="$LIBCROCO_0_6"
--               gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
--               gl_cv_INCCROCO="-I$libcroco_include_dir"
--             fi
--            ])
--        fi
--        CPPFLAGS="$gl_save_CPPFLAGS"
--      fi
--      LIBS="$gl_save_LIBS"
--    ])
--    AC_MSG_CHECKING([for libcroco])
--    AC_MSG_RESULT([$gl_cv_libcroco])
--    if test $gl_cv_libcroco = yes; then
--      LIBCROCO="$gl_cv_LIBCROCO"
--      LTLIBCROCO="$gl_cv_LTLIBCROCO"
--      INCCROCO="$gl_cv_INCCROCO"
--    else
--      gl_cv_libcroco_use_included=yes
--    fi
-+    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
-+    LIBCROCO=$CROCO_LIBS
-+    LTLIBCROCO=$CROCO_LIBS
-+    INCCROCO=$CROCO_CFLAGS
-   fi
-   AC_SUBST([LIBCROCO])
-   AC_SUBST([LTLIBCROCO])
-diff --git a/gnulib-local/m4/libglib.m4 b/gnulib-local/m4/libglib.m4
-index 42e55e6fd..ab25a5b22 100644
---- a/gettext-tools/gnulib-m4/libglib.m4
-+++ b/gettext-tools/gnulib-m4/libglib.m4
-@@ -8,6 +8,7 @@ dnl From Bruno Haible.
- 
- AC_DEFUN([gl_LIBGLIB],
- [
-+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-   AC_MSG_CHECKING([whether included glib is requested])
-   AC_ARG_WITH([included-glib],
-     [  --with-included-glib    use the glib2 included here],
-@@ -20,76 +21,10 @@ AC_DEFUN([gl_LIBGLIB],
-   LTLIBGLIB=
-   INCGLIB=
-   if test "$gl_cv_libglib_use_included" != yes; then
--    dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
--    dnl the included one.
--    AC_CACHE_VAL([gl_cv_libglib], [
--      gl_cv_libglib=no
--      gl_cv_LIBGLIB=
--      gl_cv_LTLIBGLIB=
--      gl_cv_INCGLIB=
--      gl_save_LIBS="$LIBS"
--      dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
--      dnl INCGLIB_2_0 accordingly.
--      dnl Don't use glib-config nor pkg-config, since it doesn't work when
--      dnl cross-compiling or when the C compiler in use is different from the
--      dnl one that built the library.
--      AC_LIB_LINKFLAGS_BODY([glib-2.0])
--      LIBS="$gl_save_LIBS $LIBGLIB_2_0"
--      AC_TRY_LINK([#include <glib.h>
--#ifndef G_BEGIN_DECLS
--error this glib.h includes a glibconfig.h from a glib version 1.x
--#endif
--],
--        [g_string_new ("foo");],
--        [gl_cv_libglib=yes
--         gl_cv_LIBGLIB="$LIBGLIB_2_0"
--         gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
--        ])
--      if test "$gl_cv_libglib" != yes; then
--        gl_save_CPPFLAGS="$CPPFLAGS"
--        CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
--        AC_TRY_LINK([#include <glib.h>
--#ifndef G_BEGIN_DECLS
--error this glib.h includes a glibconfig.h from a glib version 1.x
--#endif
--],
--          [g_string_new ("foo");],
--          [gl_cv_libglib=yes
--           gl_cv_LIBGLIB="$LIBGLIB_2_0"
--           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
--           gl_cv_INCGLIB="$INCGLIB_2_0"
--          ])
--        if test "$gl_cv_libglib" != yes; then
--          dnl Often the include files are installed in /usr/include/glib-2.0
--          dnl and /usr/lib/glib-2.0/include.
--          if test -n "$LIBGLIB_2_0_PREFIX"; then
--            CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
--            AC_TRY_LINK([#include <glib.h>
--#ifndef G_BEGIN_DECLS
--error this glib.h includes a glibconfig.h from a glib version 1.x
--#endif
--],
--              [g_string_new ("foo");],
--              [gl_cv_libglib=yes
--               gl_cv_LIBGLIB="$LIBGLIB_2_0"
--               gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
--               gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
--              ])
--          fi
--        fi
--        CPPFLAGS="$gl_save_CPPFLAGS"
--      fi
--      LIBS="$gl_save_LIBS"
--    ])
--    AC_MSG_CHECKING([for glib])
--    AC_MSG_RESULT([$gl_cv_libglib])
--    if test $gl_cv_libglib = yes; then
--      LIBGLIB="$gl_cv_LIBGLIB"
--      LTLIBGLIB="$gl_cv_LTLIBGLIB"
--      INCGLIB="$gl_cv_INCGLIB"
--    else
--      gl_cv_libglib_use_included=yes
--    fi
-+    PKG_CHECK_MODULES([GLIB], [glib-2.0])
-+    LIBGLIB="$GLIB_LIBS"
-+    LTLIBGLIB="$GLIB_LIBS"
-+    INCGLIB="$GLIB_CFLAGS"
-   fi
-   AC_SUBST([LIBGLIB])
-   AC_SUBST([LTLIBGLIB])
-diff --git a/gnulib-local/m4/libxml.m4 b/gnulib-local/m4/libxml.m4
-index 480c700d2..cb39309d5 100644
---- a/gettext-tools/gnulib-m4/libxml.m4
-+++ b/gettext-tools/gnulib-m4/libxml.m4
-@@ -8,6 +8,7 @@ dnl From Bruno Haible.
-
- AC_DEFUN([gl_LIBXML],
- [
-+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-   AC_REQUIRE([AM_ICONV_LINK])
-
-   AC_MSG_CHECKING([whether included libxml is requested])
-@@ -22,100 +22,10 @@ AC_DEFUN([gl_LIBXML],
-   LTLIBXML=
-   INCXML=
-   if test "$gl_cv_libxml_use_included" != yes; then
--    dnl Figure out whether we can use a preinstalled libxml2, or have to use
--    dnl the included one.
--    AC_CACHE_VAL([gl_cv_libxml], [
--      gl_cv_libxml=no
--      gl_cv_LIBXML=
--      gl_cv_LTLIBXML=
--      gl_cv_INCXML=
--      gl_save_LIBS="$LIBS"
--      LIBS="$LIBS $LIBICONV"
--      dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
--      dnl accordingly.
--      dnl Don't use xml2-config nor pkg-config, since it doesn't work when
--      dnl cross-compiling or when the C compiler in use is different from the
--      dnl one that built the library.
--      dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
--      dnl libxml2 is built in such a way that uses of xmlFree work fine with
--      dnl -Wl,--enable-auto-import but lead to a link error with
--      dnl -Wl,--disable-auto-import.
--      AC_LIB_LINKFLAGS_BODY([xml2])
--      LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
--      AC_TRY_LINK([#include <libxml/xmlversion.h>
--                   #include <libxml/xmlmemory.h>
--                   #include <libxml/xpath.h>
--                  ],
--        [xmlCheckVersion (0);
--         xmlFree ((void *) 0);
--         xmlXPathSetContextNode ((void *)0, (void *)0);
--        ],
--        [gl_cv_libxml=yes
--         gl_cv_LIBXML="$LIBXML2 $LIBICONV"
--         gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
--        ])
--      if test "$gl_cv_libxml" != yes; then
--        gl_save_CPPFLAGS="$CPPFLAGS"
--        CPPFLAGS="$CPPFLAGS $INCXML2"
--        AC_TRY_LINK([#include <libxml/xmlversion.h>
--                     #include <libxml/xmlmemory.h>
--                     #include <libxml/xpath.h>
--                    ],
--          [xmlCheckVersion (0);
--           xmlFree ((void *) 0);
--           xmlXPathSetContextNode ((void *)0, (void *)0);
--          ],
--          [gl_cv_libxml=yes
--           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
--           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
--           gl_cv_INCXML="$INCXML2"
--          ])
--        if test "$gl_cv_libxml" != yes; then
--          dnl Often the include files are installed in /usr/include/libxml2.
--          dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
--          dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
--          dnl self-contained.
--          libxml2_include_dir=
--          AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
--            [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
--             libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
--            ])
--          if test -z "$libxml2_include_dir"; then
--            AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
--              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
--               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
--              ])
--          fi
--          if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
--            CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
--            AC_TRY_LINK([#include <libxml/xmlversion.h>
--                         #include <libxml/xmlmemory.h>
--                         #include <libxml/xpath.h>
--                        ],
--              [xmlCheckVersion (0);
--               xmlFree ((void *) 0);
--               xmlXPathSetContextNode ((void *)0, (void *)0);
--              ],
--              [gl_cv_libxml=yes
--               gl_cv_LIBXML="$LIBXML2 $LIBICONV"
--               gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
--               gl_cv_INCXML="-I$libxml2_include_dir"
--              ])
--          fi
--        fi
--        CPPFLAGS="$gl_save_CPPFLAGS"
--      fi
--      LIBS="$gl_save_LIBS"
--    ])
--    AC_MSG_CHECKING([for libxml])
--    AC_MSG_RESULT([$gl_cv_libxml])
--    if test $gl_cv_libxml = yes; then
--      LIBXML="$gl_cv_LIBXML"
--      LTLIBXML="$gl_cv_LTLIBXML"
--      INCXML="$gl_cv_INCXML"
--    else
--      gl_cv_libxml_use_included=yes
--    fi
-+    PKG_CHECK_MODULES([XML], [libxml-2.0])
-+    LIBXML=$XML_LIBS
-+    LTLIBXML=$XML_LIBS
-+    INCXML=$XML_CFLAGS
-   fi
-   AC_SUBST([LIBXML])
-   AC_SUBST([LTLIBXML])
-diff --git a/gnulib-local/lib/term-styled-ostream.oo.c b/gnulib-local/lib/term-styled-ostream.oo.c
-index 81a407467..218565329 100644
---- a/gettext-tools/gnulib-lib/term-styled-ostream.oo.c
-+++ b/gettext-tools/gnulib-lib/term-styled-ostream.oo.c
-@@ -25,4 +25,4 @@
--#include <cr-om-parser.h>
--#include <cr-sel-eng.h>
--#include <cr-style.h>
--#include <cr-rgb.h>
-+#include <libcroco/cr-om-parser.h>
-+#include <libcroco/cr-sel-eng.h>
-+#include <libcroco/cr-style.h>
-+#include <libcroco/cr-rgb.h>
-@@ -31 +31 @@
--# include <cr-fonts.h>
-+# include <libcroco/cr-fonts.h>
-@@ -33 +33 @@
--#include <cr-string.h>
-+#include <libcroco/cr-string.h>
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch b/meta/recipes-core/gettext/gettext-0.20.1/add-with-bisonlocaledir.patch
similarity index 100%
rename from meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch
rename to meta/recipes-core/gettext/gettext-0.20.1/add-with-bisonlocaledir.patch
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch b/meta/recipes-core/gettext/gettext-0.20.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
similarity index 68%
rename from meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
rename to meta/recipes-core/gettext/gettext-0.20.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
index 6af16041987..0561ed7d32c 100644
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
+++ b/meta/recipes-core/gettext/gettext-0.20.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
@@ -1,4 +1,4 @@
-From e546de65a333789e83f5485757967cee29ee3681 Mon Sep 17 00:00:00 2001
+From f6245ef5530fc37a6243e798df34162fbbeab6f0 Mon Sep 17 00:00:00 2001
 From: Robert Yang <liezhi.yang@windriver.com>
 Date: Sun, 19 Feb 2017 23:32:46 -0800
 Subject: [PATCH] cr-statement.c/timsort.h: fix formatting issues
@@ -15,15 +15,15 @@ gettext-tools/gnulib-lib/libxml/timsort.h:326:80: warning: format '%lu' expects
 Upstream-Status: Pending
 
 Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
 ---
- gettext-tools/gnulib-lib/libcroco/cr-statement.c | 10 +++++-----
- gettext-tools/gnulib-lib/libxml/timsort.h        |  2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
+ libtextstyle/lib/libcroco/cr-statement.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
 
-diff --git a/gettext-tools/gnulib-lib/libcroco/cr-statement.c b/gettext-tools/gnulib-lib/libcroco/cr-statement.c
+diff --git a/libtextstyle/lib/libcroco/cr-statement.c b/libtextstyle/lib/libcroco/cr-statement.c
 index 617520f..100104b 100644
---- a/gettext-tools/gnulib-lib/libcroco/cr-statement.c
-+++ b/gettext-tools/gnulib-lib/libcroco/cr-statement.c
+--- a/libtextstyle/lib/libcroco/cr-statement.c
++++ b/libtextstyle/lib/libcroco/cr-statement.c
 @@ -2607,7 +2607,7 @@ cr_statement_dump_ruleset (CRStatement * a_this, FILE * a_fp, glong a_indent)
          g_return_if_fail (a_fp && a_this);
          str = cr_statement_ruleset_to_string (a_this, a_indent);
@@ -69,19 +69,3 @@ index 617520f..100104b 100644
                  g_free (str) ;
                  str = NULL ;
          }
-diff --git a/gettext-tools/gnulib-lib/libxml/timsort.h b/gettext-tools/gnulib-lib/libxml/timsort.h
-index 795f272..443918a 100644
---- a/gettext-tools/gnulib-lib/libxml/timsort.h
-+++ b/gettext-tools/gnulib-lib/libxml/timsort.h
-@@ -323,7 +323,7 @@ static void TIM_SORT_RESIZE(TEMP_STORAGE_T *store, const size_t new_size)
-     SORT_TYPE *tempstore = (SORT_TYPE *)realloc(store->storage, new_size * sizeof(SORT_TYPE));
-     if (tempstore == NULL)
-     {
--      fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
-+      fprintf(stderr, "Error allocating temporary storage for tim sort: need %zu bytes", sizeof(SORT_TYPE) * new_size);
-       exit(1);
-     }
-     store->storage = tempstore;
--- 
-2.10.2
-
diff --git a/meta/recipes-core/gettext/gettext-0.20.1/parallel.patch b/meta/recipes-core/gettext/gettext-0.20.1/parallel.patch
new file mode 100644
index 00000000000..d96a376b7d1
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.20.1/parallel.patch
@@ -0,0 +1,32 @@
+From 4a2a0a93b469093b60ffd0bec55d33d1e03d4713 Mon Sep 17 00:00:00 2001
+From: Joe Slater <jslater@windriver.com>
+Date: Thu, 7 Jun 2012 16:37:01 -0700
+Subject: [PATCH] instal libgettextlib.a before removing it
+
+In a multiple job build, Makefile can simultaneously
+be installing and removing libgettextlib.a.  We serialize
+the operations.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <jslater@windriver.com>
+
+---
+ gettext-tools/gnulib-lib/Makefile.am | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gettext-tools/gnulib-lib/Makefile.am b/gettext-tools/gnulib-lib/Makefile.am
+index 2126699..d2dd7e4 100644
+--- a/gettext-tools/gnulib-lib/Makefile.am
++++ b/gettext-tools/gnulib-lib/Makefile.am
+@@ -58,6 +58,10 @@ endif
+ # Rules generated and collected by gnulib-tool.
+ include Makefile.gnulib
+ 
++# defined in Makefile.gnulib but missing this dependency
++#
++install-exec-clean: install-libLTLIBRARIES
++
+ # OS/2 does not support a DLL name longer than 8 characters.
+ if OS2
+ libgettextlib_la_LDFLAGS += -os2dllname gtlib
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest b/meta/recipes-core/gettext/gettext-0.20.1/run-ptest
similarity index 100%
rename from meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest
rename to meta/recipes-core/gettext/gettext-0.20.1/run-ptest
diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch b/meta/recipes-core/gettext/gettext-0.20.1/serial-tests-config.patch
similarity index 75%
rename from meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch
rename to meta/recipes-core/gettext/gettext-0.20.1/serial-tests-config.patch
index 31ff9138a91..93f7c03334a 100644
--- a/meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch
+++ b/meta/recipes-core/gettext/gettext-0.20.1/serial-tests-config.patch
@@ -1,4 +1,4 @@
-From c4b1f3a0c7b7c40b343be9b95deb84e0485643be Mon Sep 17 00:00:00 2001
+From ed64a5724ef7d6eb4e9a876f817ea266a536e195 Mon Sep 17 00:00:00 2001
 From: "Hongjun.Yang" <hongjun.yang@windriver.com>
 Date: Thu, 28 Jul 2016 12:36:15 +0800
 Subject: [PATCH] fix for ptest
@@ -8,6 +8,7 @@ Add serial-tests support, ptest need it
 Upstream-Status: Inappropriate [oe specific]
 
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
 ---
  configure.ac                 | 2 +-
  gettext-runtime/configure.ac | 2 +-
@@ -15,24 +16,24 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
  3 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 5e996fa..880581f 100644
+index 38db6fd..f019ae0 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -23,7 +23,7 @@ AC_INIT([gettext],
- 	[bug-gnu-gettext@gnu.org])
+@@ -22,7 +22,7 @@ AC_INIT([gettext],
+ 	[bug-gettext@gnu.org])
  AC_CONFIG_SRCDIR([gettext-tools/src/msgfmt.c])
  AC_CONFIG_AUX_DIR([build-aux])
--AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests dist-xz dist-lzip])
-+AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests dist-xz dist-lzip])
+-AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests tar-ustar])
++AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests tar-ustar])
  
  dnl Override automake's tar command used for creating distributions.
- am__tar='${AMTAR} chof - --owner=root --group=root "$$tardir"'
+ am__tar='${AMTAR} chf - --format=ustar --owner=root --group=root "$$tardir"'
 diff --git a/gettext-runtime/configure.ac b/gettext-runtime/configure.ac
-index e9299b6..d4f5528 100644
+index de203e7..138a07f 100644
 --- a/gettext-runtime/configure.ac
 +++ b/gettext-runtime/configure.ac
 @@ -22,7 +22,7 @@ AC_INIT([gettext-runtime],
- 	[bug-gnu-gettext@gnu.org])
+ 	[bug-gettext@gnu.org])
  AC_CONFIG_SRCDIR([intl/dcigettext.c])
  AC_CONFIG_AUX_DIR([../build-aux])
 -AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
@@ -41,11 +42,11 @@ index e9299b6..d4f5528 100644
  
  dnl Installation directories.
 diff --git a/gettext-tools/configure.ac b/gettext-tools/configure.ac
-index 920eeb6..c507434 100644
+index cf1dd73..b544d6d 100644
 --- a/gettext-tools/configure.ac
 +++ b/gettext-tools/configure.ac
 @@ -22,7 +22,7 @@ AC_INIT([gettext-tools],
- 	[bug-gnu-gettext@gnu.org])
+ 	[bug-gettext@gnu.org])
  AC_CONFIG_SRCDIR([src/msgfmt.c])
  AC_CONFIG_AUX_DIR([../build-aux])
 -AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
@@ -53,6 +54,3 @@ index 920eeb6..c507434 100644
  AC_CONFIG_HEADERS([config.h])
  
  dnl Installation directories.
--- 
-2.1.4
-
diff --git a/meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch b/meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch
new file mode 100644
index 00000000000..d1b2603779b
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch
@@ -0,0 +1,713 @@
+From ef414b06be80c6f605731abc9e674e396b80ec9e Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Tue, 23 Jan 2018 00:54:13 +0000
+Subject: [PATCH] gettext: beat library detection into shape
+
+For reasons which I just can't fathom gnulib doesn't use the expected tools to
+find libraries but badly reinvents the wheel.  This will trivially lead to host
+contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
+canonicalisation resulting in relative paths).
+
+Simply delete all the crazy, and replace with a single call to pkg-config.
+
+Upstream-Status: Inappropriate (upstream still refuse to consider pkg-config)
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+
+---
+ gettext-tools/gnulib-m4/libxml.m4             |  99 +----------------
+ .../gnulib-local/lib/term-styled-ostream.oo.c |  12 +-
+ libtextstyle/gnulib-local/m4/libcroco.m4      |  99 +++--------------
+ libtextstyle/gnulib-local/m4/libglib.m4       | 104 +++---------------
+ libtextstyle/gnulib-m4/libcroco.m4            |  99 +++--------------
+ libtextstyle/gnulib-m4/libglib.m4             | 104 +++---------------
+ libtextstyle/lib/term-styled-ostream.c        |  12 +-
+ libtextstyle/lib/term-styled-ostream.oo.c     |  12 +-
+ 8 files changed, 87 insertions(+), 454 deletions(-)
+
+diff --git a/gettext-tools/gnulib-m4/libxml.m4 b/gettext-tools/gnulib-m4/libxml.m4
+index 05b9550..031ee65 100644
+--- a/gettext-tools/gnulib-m4/libxml.m4
++++ b/gettext-tools/gnulib-m4/libxml.m4
+@@ -13,6 +13,7 @@ dnl gl_LIBXML(FORCE-INCLUDED)
+ dnl   forces the use of the included or an external libxml.
+ AC_DEFUN([gl_LIBXML],
+ [
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+   AC_REQUIRE([AM_ICONV_LINK])
+ 
+   ifelse([$1], , [
+@@ -30,100 +31,10 @@ AC_DEFUN([gl_LIBXML],
+   INCXML=
+   ifelse([$1], [yes], , [
+     if test "$gl_cv_libxml_use_included" != yes; then
+-      dnl Figure out whether we can use a preinstalled libxml2, or have to use
+-      dnl the included one.
+-      AC_CACHE_VAL([gl_cv_libxml], [
+-        gl_cv_libxml=no
+-        gl_cv_LIBXML=
+-        gl_cv_LTLIBXML=
+-        gl_cv_INCXML=
+-        gl_save_LIBS="$LIBS"
+-        LIBS="$LIBS $LIBICONV"
+-        dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
+-        dnl accordingly.
+-        dnl Don't use xml2-config nor pkg-config, since it doesn't work when
+-        dnl cross-compiling or when the C compiler in use is different from the
+-        dnl one that built the library.
+-        dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
+-        dnl libxml2 is built in such a way that uses of xmlFree work fine with
+-        dnl -Wl,--enable-auto-import but lead to a link error with
+-        dnl -Wl,--disable-auto-import.
+-        AC_LIB_LINKFLAGS_BODY([xml2])
+-        LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
+-        AC_TRY_LINK([#include <libxml/xmlversion.h>
+-                     #include <libxml/xmlmemory.h>
+-                     #include <libxml/xpath.h>
+-                    ],
+-          [xmlCheckVersion (0);
+-           xmlFree ((void *) 0);
+-           xmlXPathSetContextNode ((void *)0, (void *)0);
+-          ],
+-          [gl_cv_libxml=yes
+-           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
+-           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
+-          ])
+-        if test "$gl_cv_libxml" != yes; then
+-          gl_save_CPPFLAGS="$CPPFLAGS"
+-          CPPFLAGS="$CPPFLAGS $INCXML2"
+-          AC_TRY_LINK([#include <libxml/xmlversion.h>
+-                       #include <libxml/xmlmemory.h>
+-                       #include <libxml/xpath.h>
+-                      ],
+-            [xmlCheckVersion (0);
+-             xmlFree ((void *) 0);
+-             xmlXPathSetContextNode ((void *)0, (void *)0);
+-            ],
+-            [gl_cv_libxml=yes
+-             gl_cv_LIBXML="$LIBXML2 $LIBICONV"
+-             gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
+-             gl_cv_INCXML="$INCXML2"
+-            ])
+-          if test "$gl_cv_libxml" != yes; then
+-            dnl Often the include files are installed in /usr/include/libxml2.
+-            dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
+-            dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
+-            dnl self-contained.
+-            libxml2_include_dir=
+-            AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
+-              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
+-               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
+-              ])
+-            if test -z "$libxml2_include_dir"; then
+-              AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
+-                [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
+-                 libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
+-                ])
+-            fi
+-            if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
+-              CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
+-              AC_TRY_LINK([#include <libxml/xmlversion.h>
+-                           #include <libxml/xmlmemory.h>
+-                           #include <libxml/xpath.h>
+-                          ],
+-                [xmlCheckVersion (0);
+-                 xmlFree ((void *) 0);
+-                 xmlXPathSetContextNode ((void *)0, (void *)0);
+-                ],
+-                [gl_cv_libxml=yes
+-                 gl_cv_LIBXML="$LIBXML2 $LIBICONV"
+-                 gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
+-                 gl_cv_INCXML="-I$libxml2_include_dir"
+-                ])
+-            fi
+-          fi
+-          CPPFLAGS="$gl_save_CPPFLAGS"
+-        fi
+-        LIBS="$gl_save_LIBS"
+-      ])
+-      AC_MSG_CHECKING([for libxml])
+-      AC_MSG_RESULT([$gl_cv_libxml])
+-      if test $gl_cv_libxml = yes; then
+-        LIBXML="$gl_cv_LIBXML"
+-        LTLIBXML="$gl_cv_LTLIBXML"
+-        INCXML="$gl_cv_INCXML"
+-      else
+-        gl_cv_libxml_use_included=yes
+-      fi
++      PKG_CHECK_MODULES([XML], [libxml-2.0])
++      LIBXML=$XML_LIBS
++      LTLIBXML=$XML_LIBS
++      INCXML=$XML_CFLAGS
+     fi
+   ])
+   AC_SUBST([LIBXML])
+diff --git a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
+index 2cfd4a8..d42c8b4 100644
+--- a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
++++ b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
+@@ -22,15 +22,15 @@
+ 
+ #include <stdlib.h>
+ 
+-#include <cr-om-parser.h>
+-#include <cr-sel-eng.h>
+-#include <cr-style.h>
+-#include <cr-rgb.h>
++#include <libcroco/cr-om-parser.h>
++#include <libcroco/cr-sel-eng.h>
++#include <libcroco/cr-style.h>
++#include <libcroco/cr-rgb.h>
+ /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
+ #ifndef __CR_FONTS_H__
+-# include <cr-fonts.h>
++# include <libcroco/cr-fonts.h>
+ #endif
+-#include <cr-string.h>
++#include <libcroco/cr-string.h>
+ 
+ #include "term-ostream.h"
+ #include "hash.h"
+diff --git a/libtextstyle/gnulib-local/m4/libcroco.m4 b/libtextstyle/gnulib-local/m4/libcroco.m4
+index bc53cc6..10b2455 100644
+--- a/libtextstyle/gnulib-local/m4/libcroco.m4
++++ b/libtextstyle/gnulib-local/m4/libcroco.m4
+@@ -1,99 +1,34 @@
+-# libcroco.m4 serial 3
+-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
++# libcroco.m4 serial 2 (gettext-0.17)
++dnl Copyright (C) 2006, 2015-2016 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+ 
+ dnl From Bruno Haible.
+ 
+-dnl gl_LIBCROCO
+-dnl   gives the user the option to decide whether to use the included or
+-dnl   an external libcroco.
+-dnl gl_LIBCROCO(FORCE-INCLUDED)
+-dnl   forces the use of the included or an external libcroco.
+ AC_DEFUN([gl_LIBCROCO],
+ [
+-  ifelse([$1], [yes], , [
+-    dnl libcroco depends on libglib.
+-    AC_REQUIRE([gl_LIBGLIB])
+-  ])
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++  dnl libcroco depends on libglib.
++  AC_REQUIRE([gl_LIBGLIB])
+ 
+-  ifelse([$1], , [
+-    AC_MSG_CHECKING([whether included libcroco is requested])
+-    AC_ARG_WITH([included-libcroco],
+-      [  --with-included-libcroco  use the libcroco included here],
+-      [gl_cv_libcroco_force_included=$withval],
+-      [gl_cv_libcroco_force_included=no])
+-    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+-  ], [gl_cv_libcroco_force_included=$1])
++  AC_MSG_CHECKING([whether included libcroco is requested])
++  AC_ARG_WITH([included-libcroco],
++    [  --with-included-libcroco  use the libcroco included here],
++    [gl_cv_libcroco_force_included=$withval],
++    [gl_cv_libcroco_force_included=no])
++  AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+ 
+   gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
+   LIBCROCO=
+   LTLIBCROCO=
+   INCCROCO=
+-  ifelse([$1], [yes], , [
+-    if test "$gl_cv_libcroco_use_included" != yes; then
+-      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
+-      dnl use the included one.
+-      AC_CACHE_VAL([gl_cv_libcroco], [
+-        gl_cv_libcroco=no
+-        gl_cv_LIBCROCO=
+-        gl_cv_LTLIBCROCO=
+-        gl_cv_INCCROCO=
+-        gl_save_LIBS="$LIBS"
+-        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
+-        dnl INCCROCO_0_6 accordingly.
+-        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
+-        dnl cross-compiling or when the C compiler in use is different from the
+-        dnl one that built the library.
+-        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
+-        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
+-        AC_TRY_LINK([#include <libcroco-config.h>],
+-          [const char *version = LIBCROCO_VERSION; return !version;],
+-          [gl_cv_libcroco=yes
+-           gl_cv_LIBCROCO="$LIBCROCO_0_6"
+-           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+-          ])
+-        if test "$gl_cv_libcroco" != yes; then
+-          gl_save_CPPFLAGS="$CPPFLAGS"
+-          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
+-          AC_TRY_LINK([#include <libcroco-config.h>],
+-            [const char *version = LIBCROCO_VERSION; return !version;],
+-            [gl_cv_libcroco=yes
+-             gl_cv_LIBCROCO="$LIBCROCO_0_6"
+-             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+-             gl_cv_INCCROCO="$INCCROCO_0_6"
+-            ])
+-          if test "$gl_cv_libcroco" != yes; then
+-            dnl Often the include files are installed in
+-            dnl /usr/include/libcroco-0.6/libcroco.
+-            AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
+-              [const char *version = LIBCROCO_VERSION; return !version;],
+-              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
+-               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
+-               if test -d "$libcroco_include_dir"; then
+-                 gl_cv_libcroco=yes
+-                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
+-                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+-                 gl_cv_INCCROCO="-I$libcroco_include_dir"
+-               fi
+-              ])
+-          fi
+-          CPPFLAGS="$gl_save_CPPFLAGS"
+-        fi
+-        LIBS="$gl_save_LIBS"
+-      ])
+-      AC_MSG_CHECKING([for libcroco])
+-      AC_MSG_RESULT([$gl_cv_libcroco])
+-      if test $gl_cv_libcroco = yes; then
+-        LIBCROCO="$gl_cv_LIBCROCO"
+-        LTLIBCROCO="$gl_cv_LTLIBCROCO"
+-        INCCROCO="$gl_cv_INCCROCO"
+-      else
+-        gl_cv_libcroco_use_included=yes
+-      fi
+-    fi
+-  ])
++  if test "$gl_cv_libcroco_use_included" != yes; then
++    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
++    LIBCROCO=$CROCO_LIBS
++    LTLIBCROCO=$CROCO_LIBS
++    INCCROCO=$CROCO_CFLAGS
++  fi
+   AC_SUBST([LIBCROCO])
+   AC_SUBST([LTLIBCROCO])
+   AC_SUBST([INCCROCO])
+diff --git a/libtextstyle/gnulib-local/m4/libglib.m4 b/libtextstyle/gnulib-local/m4/libglib.m4
+index bef6fa3..8841755 100644
+--- a/libtextstyle/gnulib-local/m4/libglib.m4
++++ b/libtextstyle/gnulib-local/m4/libglib.m4
+@@ -1,105 +1,31 @@
+-# libglib.m4 serial 4
+-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
++# libglib.m4 serial 3 (gettext-0.17)
++dnl Copyright (C) 2006-2007, 2015-2016 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+ 
+ dnl From Bruno Haible.
+ 
+-dnl gl_LIBGLIB
+-dnl   gives the user the option to decide whether to use the included or
+-dnl   an external libglib.
+-dnl gl_LIBGLIB(FORCE-INCLUDED)
+-dnl   forces the use of the included or an external libglib.
+ AC_DEFUN([gl_LIBGLIB],
+ [
+-  ifelse([$1], , [
+-    AC_MSG_CHECKING([whether included glib is requested])
+-    AC_ARG_WITH([included-glib],
+-      [  --with-included-glib    use the glib2 included here],
+-      [gl_cv_libglib_force_included=$withval],
+-      [gl_cv_libglib_force_included=no])
+-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
+-  ], [gl_cv_libglib_force_included=$1])
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++  AC_MSG_CHECKING([whether included glib is requested])
++  AC_ARG_WITH([included-glib],
++    [  --with-included-glib    use the glib2 included here],
++    [gl_cv_libglib_force_included=$withval],
++    [gl_cv_libglib_force_included=no])
++  AC_MSG_RESULT([$gl_cv_libglib_force_included])
+ 
+   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
+   LIBGLIB=
+   LTLIBGLIB=
+   INCGLIB=
+-  ifelse([$1], [yes], , [
+-    if test "$gl_cv_libglib_use_included" != yes; then
+-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
+-      dnl the included one.
+-      AC_CACHE_VAL([gl_cv_libglib], [
+-        gl_cv_libglib=no
+-        gl_cv_LIBGLIB=
+-        gl_cv_LTLIBGLIB=
+-        gl_cv_INCGLIB=
+-        gl_save_LIBS="$LIBS"
+-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
+-        dnl INCGLIB_2_0 accordingly.
+-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
+-        dnl cross-compiling or when the C compiler in use is different from the
+-        dnl one that built the library.
+-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
+-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
+-        AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+-          [g_string_new ("foo");],
+-          [gl_cv_libglib=yes
+-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
+-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+-          ])
+-        if test "$gl_cv_libglib" != yes; then
+-          gl_save_CPPFLAGS="$CPPFLAGS"
+-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
+-          AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+-            [g_string_new ("foo");],
+-            [gl_cv_libglib=yes
+-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
+-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+-             gl_cv_INCGLIB="$INCGLIB_2_0"
+-            ])
+-          if test "$gl_cv_libglib" != yes; then
+-            dnl Often the include files are installed in /usr/include/glib-2.0
+-            dnl and /usr/lib/glib-2.0/include.
+-            if test -n "$LIBGLIB_2_0_PREFIX"; then
+-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+-              AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+-                [g_string_new ("foo");],
+-                [gl_cv_libglib=yes
+-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
+-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+-                ])
+-            fi
+-          fi
+-          CPPFLAGS="$gl_save_CPPFLAGS"
+-        fi
+-        LIBS="$gl_save_LIBS"
+-      ])
+-      AC_MSG_CHECKING([for glib])
+-      AC_MSG_RESULT([$gl_cv_libglib])
+-      if test $gl_cv_libglib = yes; then
+-        LIBGLIB="$gl_cv_LIBGLIB"
+-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
+-        INCGLIB="$gl_cv_INCGLIB"
+-      else
+-        gl_cv_libglib_use_included=yes
+-      fi
+-    fi
+-  ])
++  if test "$gl_cv_libglib_use_included" != yes; then
++    PKG_CHECK_MODULES([GLIB], [glib-2.0])
++    LIBGLIB="$GLIB_LIBS"
++    LTLIBGLIB="$GLIB_LIBS"
++    INCGLIB="$GLIB_CFLAGS"
++  fi
+   AC_SUBST([LIBGLIB])
+   AC_SUBST([LTLIBGLIB])
+   AC_SUBST([INCGLIB])
+diff --git a/libtextstyle/gnulib-m4/libcroco.m4 b/libtextstyle/gnulib-m4/libcroco.m4
+index bc53cc6..10b2455 100644
+--- a/libtextstyle/gnulib-m4/libcroco.m4
++++ b/libtextstyle/gnulib-m4/libcroco.m4
+@@ -1,99 +1,34 @@
+-# libcroco.m4 serial 3
+-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
++# libcroco.m4 serial 2 (gettext-0.17)
++dnl Copyright (C) 2006, 2015-2016 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+ 
+ dnl From Bruno Haible.
+ 
+-dnl gl_LIBCROCO
+-dnl   gives the user the option to decide whether to use the included or
+-dnl   an external libcroco.
+-dnl gl_LIBCROCO(FORCE-INCLUDED)
+-dnl   forces the use of the included or an external libcroco.
+ AC_DEFUN([gl_LIBCROCO],
+ [
+-  ifelse([$1], [yes], , [
+-    dnl libcroco depends on libglib.
+-    AC_REQUIRE([gl_LIBGLIB])
+-  ])
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++  dnl libcroco depends on libglib.
++  AC_REQUIRE([gl_LIBGLIB])
+ 
+-  ifelse([$1], , [
+-    AC_MSG_CHECKING([whether included libcroco is requested])
+-    AC_ARG_WITH([included-libcroco],
+-      [  --with-included-libcroco  use the libcroco included here],
+-      [gl_cv_libcroco_force_included=$withval],
+-      [gl_cv_libcroco_force_included=no])
+-    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+-  ], [gl_cv_libcroco_force_included=$1])
++  AC_MSG_CHECKING([whether included libcroco is requested])
++  AC_ARG_WITH([included-libcroco],
++    [  --with-included-libcroco  use the libcroco included here],
++    [gl_cv_libcroco_force_included=$withval],
++    [gl_cv_libcroco_force_included=no])
++  AC_MSG_RESULT([$gl_cv_libcroco_force_included])
+ 
+   gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
+   LIBCROCO=
+   LTLIBCROCO=
+   INCCROCO=
+-  ifelse([$1], [yes], , [
+-    if test "$gl_cv_libcroco_use_included" != yes; then
+-      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
+-      dnl use the included one.
+-      AC_CACHE_VAL([gl_cv_libcroco], [
+-        gl_cv_libcroco=no
+-        gl_cv_LIBCROCO=
+-        gl_cv_LTLIBCROCO=
+-        gl_cv_INCCROCO=
+-        gl_save_LIBS="$LIBS"
+-        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
+-        dnl INCCROCO_0_6 accordingly.
+-        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
+-        dnl cross-compiling or when the C compiler in use is different from the
+-        dnl one that built the library.
+-        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
+-        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
+-        AC_TRY_LINK([#include <libcroco-config.h>],
+-          [const char *version = LIBCROCO_VERSION; return !version;],
+-          [gl_cv_libcroco=yes
+-           gl_cv_LIBCROCO="$LIBCROCO_0_6"
+-           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+-          ])
+-        if test "$gl_cv_libcroco" != yes; then
+-          gl_save_CPPFLAGS="$CPPFLAGS"
+-          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
+-          AC_TRY_LINK([#include <libcroco-config.h>],
+-            [const char *version = LIBCROCO_VERSION; return !version;],
+-            [gl_cv_libcroco=yes
+-             gl_cv_LIBCROCO="$LIBCROCO_0_6"
+-             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+-             gl_cv_INCCROCO="$INCCROCO_0_6"
+-            ])
+-          if test "$gl_cv_libcroco" != yes; then
+-            dnl Often the include files are installed in
+-            dnl /usr/include/libcroco-0.6/libcroco.
+-            AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
+-              [const char *version = LIBCROCO_VERSION; return !version;],
+-              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
+-               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
+-               if test -d "$libcroco_include_dir"; then
+-                 gl_cv_libcroco=yes
+-                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
+-                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
+-                 gl_cv_INCCROCO="-I$libcroco_include_dir"
+-               fi
+-              ])
+-          fi
+-          CPPFLAGS="$gl_save_CPPFLAGS"
+-        fi
+-        LIBS="$gl_save_LIBS"
+-      ])
+-      AC_MSG_CHECKING([for libcroco])
+-      AC_MSG_RESULT([$gl_cv_libcroco])
+-      if test $gl_cv_libcroco = yes; then
+-        LIBCROCO="$gl_cv_LIBCROCO"
+-        LTLIBCROCO="$gl_cv_LTLIBCROCO"
+-        INCCROCO="$gl_cv_INCCROCO"
+-      else
+-        gl_cv_libcroco_use_included=yes
+-      fi
+-    fi
+-  ])
++  if test "$gl_cv_libcroco_use_included" != yes; then
++    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
++    LIBCROCO=$CROCO_LIBS
++    LTLIBCROCO=$CROCO_LIBS
++    INCCROCO=$CROCO_CFLAGS
++  fi
+   AC_SUBST([LIBCROCO])
+   AC_SUBST([LTLIBCROCO])
+   AC_SUBST([INCCROCO])
+diff --git a/libtextstyle/gnulib-m4/libglib.m4 b/libtextstyle/gnulib-m4/libglib.m4
+index bef6fa3..8841755 100644
+--- a/libtextstyle/gnulib-m4/libglib.m4
++++ b/libtextstyle/gnulib-m4/libglib.m4
+@@ -1,105 +1,31 @@
+-# libglib.m4 serial 4
+-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
++# libglib.m4 serial 3 (gettext-0.17)
++dnl Copyright (C) 2006-2007, 2015-2016 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+ 
+ dnl From Bruno Haible.
+ 
+-dnl gl_LIBGLIB
+-dnl   gives the user the option to decide whether to use the included or
+-dnl   an external libglib.
+-dnl gl_LIBGLIB(FORCE-INCLUDED)
+-dnl   forces the use of the included or an external libglib.
+ AC_DEFUN([gl_LIBGLIB],
+ [
+-  ifelse([$1], , [
+-    AC_MSG_CHECKING([whether included glib is requested])
+-    AC_ARG_WITH([included-glib],
+-      [  --with-included-glib    use the glib2 included here],
+-      [gl_cv_libglib_force_included=$withval],
+-      [gl_cv_libglib_force_included=no])
+-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
+-  ], [gl_cv_libglib_force_included=$1])
++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++  AC_MSG_CHECKING([whether included glib is requested])
++  AC_ARG_WITH([included-glib],
++    [  --with-included-glib    use the glib2 included here],
++    [gl_cv_libglib_force_included=$withval],
++    [gl_cv_libglib_force_included=no])
++  AC_MSG_RESULT([$gl_cv_libglib_force_included])
+ 
+   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
+   LIBGLIB=
+   LTLIBGLIB=
+   INCGLIB=
+-  ifelse([$1], [yes], , [
+-    if test "$gl_cv_libglib_use_included" != yes; then
+-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
+-      dnl the included one.
+-      AC_CACHE_VAL([gl_cv_libglib], [
+-        gl_cv_libglib=no
+-        gl_cv_LIBGLIB=
+-        gl_cv_LTLIBGLIB=
+-        gl_cv_INCGLIB=
+-        gl_save_LIBS="$LIBS"
+-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
+-        dnl INCGLIB_2_0 accordingly.
+-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
+-        dnl cross-compiling or when the C compiler in use is different from the
+-        dnl one that built the library.
+-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
+-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
+-        AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+-          [g_string_new ("foo");],
+-          [gl_cv_libglib=yes
+-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
+-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+-          ])
+-        if test "$gl_cv_libglib" != yes; then
+-          gl_save_CPPFLAGS="$CPPFLAGS"
+-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
+-          AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+-            [g_string_new ("foo");],
+-            [gl_cv_libglib=yes
+-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
+-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+-             gl_cv_INCGLIB="$INCGLIB_2_0"
+-            ])
+-          if test "$gl_cv_libglib" != yes; then
+-            dnl Often the include files are installed in /usr/include/glib-2.0
+-            dnl and /usr/lib/glib-2.0/include.
+-            if test -n "$LIBGLIB_2_0_PREFIX"; then
+-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+-              AC_TRY_LINK([#include <glib.h>
+-#ifndef G_BEGIN_DECLS
+-error this glib.h includes a glibconfig.h from a glib version 1.x
+-#endif
+-],
+-                [g_string_new ("foo");],
+-                [gl_cv_libglib=yes
+-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
+-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
+-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
+-                ])
+-            fi
+-          fi
+-          CPPFLAGS="$gl_save_CPPFLAGS"
+-        fi
+-        LIBS="$gl_save_LIBS"
+-      ])
+-      AC_MSG_CHECKING([for glib])
+-      AC_MSG_RESULT([$gl_cv_libglib])
+-      if test $gl_cv_libglib = yes; then
+-        LIBGLIB="$gl_cv_LIBGLIB"
+-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
+-        INCGLIB="$gl_cv_INCGLIB"
+-      else
+-        gl_cv_libglib_use_included=yes
+-      fi
+-    fi
+-  ])
++  if test "$gl_cv_libglib_use_included" != yes; then
++    PKG_CHECK_MODULES([GLIB], [glib-2.0])
++    LIBGLIB="$GLIB_LIBS"
++    LTLIBGLIB="$GLIB_LIBS"
++    INCGLIB="$GLIB_CFLAGS"
++  fi
+   AC_SUBST([LIBGLIB])
+   AC_SUBST([LTLIBGLIB])
+   AC_SUBST([INCGLIB])
+diff --git a/libtextstyle/lib/term-styled-ostream.c b/libtextstyle/lib/term-styled-ostream.c
+index 3675b5f..811e546 100644
+--- a/libtextstyle/lib/term-styled-ostream.c
++++ b/libtextstyle/lib/term-styled-ostream.c
+@@ -28,15 +28,15 @@
+ 
+ #include <stdlib.h>
+ 
+-#include <cr-om-parser.h>
+-#include <cr-sel-eng.h>
+-#include <cr-style.h>
+-#include <cr-rgb.h>
++#include <libcroco/cr-om-parser.h>
++#include <libcroco/cr-sel-eng.h>
++#include <libcroco/cr-style.h>
++#include <libcroco/cr-rgb.h>
+ /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
+ #ifndef __CR_FONTS_H__
+-# include <cr-fonts.h>
++# include <libcroco/cr-fonts.h>
+ #endif
+-#include <cr-string.h>
++#include <libcroco/cr-string.h>
+ 
+ #include "term-ostream.h"
+ #include "hash.h"
+diff --git a/libtextstyle/lib/term-styled-ostream.oo.c b/libtextstyle/lib/term-styled-ostream.oo.c
+index 2cfd4a8..d42c8b4 100644
+--- a/libtextstyle/lib/term-styled-ostream.oo.c
++++ b/libtextstyle/lib/term-styled-ostream.oo.c
+@@ -22,15 +22,15 @@
+ 
+ #include <stdlib.h>
+ 
+-#include <cr-om-parser.h>
+-#include <cr-sel-eng.h>
+-#include <cr-style.h>
+-#include <cr-rgb.h>
++#include <libcroco/cr-om-parser.h>
++#include <libcroco/cr-sel-eng.h>
++#include <libcroco/cr-style.h>
++#include <libcroco/cr-rgb.h>
+ /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
+ #ifndef __CR_FONTS_H__
+-# include <cr-fonts.h>
++# include <libcroco/cr-fonts.h>
+ #endif
+-#include <cr-string.h>
++#include <libcroco/cr-string.h>
+ 
+ #include "term-ostream.h"
+ #include "hash.h"
diff --git a/meta/recipes-core/gettext/gettext_0.19.8.1.bb b/meta/recipes-core/gettext/gettext_0.20.1.bb
similarity index 94%
rename from meta/recipes-core/gettext/gettext_0.19.8.1.bb
rename to meta/recipes-core/gettext/gettext_0.20.1.bb
index 30121ad23e1..fc05ef2e0a3 100644
--- a/meta/recipes-core/gettext/gettext_0.19.8.1.bb
+++ b/meta/recipes-core/gettext/gettext_0.20.1.bb
@@ -6,7 +6,7 @@ a few stand-alone programs to massage in various ways the sets of translatable a
 HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
 SECTION = "libs"
 LICENSE = "GPLv3+ & LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e"
 
 # Because po-gram-gen.y has been modified by fix-CVE-2018-18751.patch,
 # it requires yacc which provided by bison-native
@@ -17,17 +17,16 @@ PROVIDES = "virtual/libintl virtual/gettext"
 PROVIDES_class-native = "virtual/gettext-native"
 RCONFLICTS_${PN} = "proxy-libintl"
 SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
-	   file://parallel.patch \
-	   file://add-with-bisonlocaledir.patch \
-	   file://cr-statement.c-timsort.h-fix-formatting-issues.patch \
-	   file://use-pkgconfig.patch \
-	   file://fix-CVE-2018-18751.patch \
-	   file://run-ptest \
-	   file://serial-tests-config.patch \
-"
+           file://parallel.patch \
+           file://add-with-bisonlocaledir.patch \
+           file://cr-statement.c-timsort.h-fix-formatting-issues.patch \
+           file://use-pkgconfig.patch \
+           file://run-ptest \
+           file://serial-tests-config.patch \
+           "
 
-SRC_URI[md5sum] = "97e034cf8ce5ba73a28ff6c3c0638092"
-SRC_URI[sha256sum] = "ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43"
+SRC_URI[md5sum] = "bb5b0c0caa028105f3ca1905ddc306e2"
+SRC_URI[sha256sum] = "66415634c6e8c3fa8b71362879ec7575e27da43da562c798a8a2f223e6e47f5c"
 
 inherit autotools texinfo pkgconfig ptest
 
@@ -127,7 +126,7 @@ do_install_append_class-native () {
 	rm ${D}${datadir}/gettext/po/remove-potcdate.sin
 
         create_wrapper ${D}${bindir}/msgfmt \
-                GETTEXTDATADIR="${STAGING_DATADIR_NATIVE}/gettext-0.19.8/"
+                GETTEXTDATADIR="${STAGING_DATADIR_NATIVE}/gettext-0.20/"
 
 }
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 04/24] psmisc: revert to default autopoint exclusion
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 02/24] gettext-minimal-native: update to 0.20.1 Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 03/24] gettext: " Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 05/24] gettext: fix failing ptests Alexander Kanavin
                   ` (21 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Otherwise, builds break with latest gettext.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-extended/psmisc/psmisc.inc | 1 -
 1 file changed, 1 deletion(-)

diff --git a/meta/recipes-extended/psmisc/psmisc.inc b/meta/recipes-extended/psmisc/psmisc.inc
index 594a10cf222..a75b04702c3 100644
--- a/meta/recipes-extended/psmisc/psmisc.inc
+++ b/meta/recipes-extended/psmisc/psmisc.inc
@@ -19,7 +19,6 @@ inherit autotools gettext
 # Upstream has a custom autogen.sh which invokes po/update-potfiles as they 
 # don't ship a po/POTFILES.in (which is silly).  Without that file gettext 
 # doesn't believe po/ is a gettext directory and won't generate po/Makefile.
-EXTRA_AUTORECONF_remove = "--exclude=autopoint"
 do_configure_prepend() {
     ( cd ${S} && po/update-potfiles )
 }
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 05/24] gettext: fix failing ptests
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (2 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 04/24] psmisc: revert to default autopoint exclusion Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 06/24] python3: update to 3.8.0 Alexander Kanavin
                   ` (20 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Results:

pass 400
fail 0
skip 32

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-core/gettext/gettext_0.20.1.bb | 23 +++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-core/gettext/gettext_0.20.1.bb b/meta/recipes-core/gettext/gettext_0.20.1.bb
index fc05ef2e0a3..a6fc2195685 100644
--- a/meta/recipes-core/gettext/gettext_0.20.1.bb
+++ b/meta/recipes-core/gettext/gettext_0.20.1.bb
@@ -44,6 +44,10 @@ EXTRA_OECONF += "--without-lispdir \
                 "
 EXTRA_OECONF_append_class-target = " \
                  --with-bisonlocaledir=${datadir}/locale \
+                 gt_cv_locale_fr_utf8=fr_FR \
+                 gt_cv_locale_fr=fr_FR.ISO-8859-1 \
+                 gt_cv_locale_de_utf8=de_DE \
+                 gt_cv_locale_de=de_DE.ISO-8859-1 \
 "
 
 PACKAGECONFIG ??= "croco glib libxml"
@@ -143,13 +147,17 @@ do_install_ptest() {
         mkdir -p                                        ${D}${PTEST_PATH}/src
         mkdir -p                                        ${D}${PTEST_PATH}/po
         mkdir -p                                        ${D}${PTEST_PATH}/misc
+        mkdir -p                                        ${D}${PTEST_PATH}/its
+        mkdir -p                                        ${D}${PTEST_PATH}/styles
+        cp -rf ${S}/gettext-tools/its/*                 ${D}${PTEST_PATH}/its
+        cp -rf ${S}/gettext-tools/styles/*              ${D}${PTEST_PATH}/styles
         cp -rf ${S}/gettext-tools/tests/*               ${D}${PTEST_PATH}/tests
         cp -rf ${B}/gettext-tools/tests/.libs/*         ${D}${PTEST_PATH}/tests
         cp -rf ${B}/gettext-runtime/intl/.libs/libgnuintl.so.8*         ${D}${libdir}/
         cp -rf ${B}/gettext-tools/tests/Makefile        ${D}${PTEST_PATH}/tests
+        cp -rf ${B}/gettext-tools/tests/init-env        ${D}${PTEST_PATH}/tests
         sed -i '/^Makefile:/c Makefile:'                ${D}${PTEST_PATH}/tests/Makefile
-        sed -i -e 's:CONFIG_SHELL=.*:& LOCALE_FR='fr_FR.iso88591' LOCALE_FR_UTF8='fr_FR.utf8' LOCALE_JA='ja_JP.eucjp':g' \
-            -e 's:lang-c lang-c++:lang-c++:g' ${D}${PTEST_PATH}/tests/Makefile
+        sed -i -e 's:lang-c lang-c++:lang-c++:g'        ${D}${PTEST_PATH}/tests/Makefile
         install ${S}/gettext-tools/src/msgunfmt.tcl     ${D}${PTEST_PATH}/src
         install ${S}/gettext-tools/src/project-id       ${D}${PTEST_PATH}/src
         install ${B}/gettext-runtime/src/gettext.sh     ${D}${PTEST_PATH}/src
@@ -177,8 +185,19 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = "\
     glibc-gconv-koi8-r \
     glibc-gconv-iso8859-2 \
     glibc-charmap-iso-8859-2 \
+    glibc-gconv-iso8859-1 \
+    glibc-charmap-iso-8859-1 \
     glibc-gconv-euc-kr \
     glibc-charmap-euc-kr \
+    glibc-gconv-euc-jp \
+    glibc-charmap-euc-jp \
+    locale-base-de-de \
+    locale-base-fr-fr \
+"
+
+RRECOMMENDS_${PN}-ptest_append_libc-glibc = "\
+    locale-base-de-de.iso-8859-1 \
+    locale-base-fr-fr.iso-8859-1 \
 "
 
 INSANE_SKIP_${PN}-ptest += "ldflags"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 06/24] python3: update to 3.8.0
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (3 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 05/24] gettext: fix failing ptests Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-07 15:47   ` Khem Raj
  2019-12-05 15:43 ` [PATCH 07/24] gstreamer1.0-python: add a patch to fix python 3.8 builds Alexander Kanavin
                   ` (19 subsequent siblings)
  24 siblings, 1 reply; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop backports, rebase other patches.

One patch I wasn't able to rebase as upstream code changed too much:
0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
Please determine if it is still needed, produce a new version,
and work with upstream to get it merged.

0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
is removed as the use case (allowing python 2 and 3 to coexist
in SDKs) is no longer relevant with Python 2.x reaching end of line
and upstream has refactored the code making a rebase difficult.
If needed, please re-add the patch to py2, rather than py3.

Python 3.8 no longer adds "m" to "3.8" in paths, so adjust the recipes
and classes accordingly.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/classes/python3-dir.bbclass              |   4 +-
 ...ib-termcap-to-linker-flags-to-avoid-.patch |  14 +-
 ...lib-as-location-for-site-packages-an.patch | 156 ++++++++------
 ...-detection-of-mips-architecture-for-.patch |  16 +-
 ...fig-append-STAGING_LIBDIR-python-sys.patch |   2 +-
 ...ON3HOME-is-set-use-instead-of-PYTHON.patch |  47 -----
 ...asename-to-replace-CC-for-checking-c.patch |  37 ++--
 ...runtime-test-to-get-float-byte-order.patch | 199 ------------------
 ...ssing-libraries-to-Extension-for-mul.patch |  80 -------
 ...report-missing-dependencies-for-disa.patch |  11 +-
 ...tutils-prefix-is-inside-staging-area.patch |   2 +-
 .../python3/avoid_warning_about_tkinter.patch |  33 ++-
 .../python/python3/python-config.patch        |  24 ++-
 .../python/python3/python3-manifest.json      |   4 +-
 .../{python3_3.7.5.bb => python3_3.8.0.bb}    |  28 ++-
 15 files changed, 175 insertions(+), 482 deletions(-)
 delete mode 100644 meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
 delete mode 100644 meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
 delete mode 100644 meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
 rename meta/recipes-devtools/python/{python3_3.7.5.bb => python3_3.8.0.bb} (91%)

diff --git a/meta/classes/python3-dir.bbclass b/meta/classes/python3-dir.bbclass
index 7dd130bad99..036d7140d99 100644
--- a/meta/classes/python3-dir.bbclass
+++ b/meta/classes/python3-dir.bbclass
@@ -1,5 +1,5 @@
-PYTHON_BASEVERSION = "3.7"
-PYTHON_ABI = "m"
+PYTHON_BASEVERSION = "3.8"
+PYTHON_ABI = ""
 PYTHON_DIR = "python${PYTHON_BASEVERSION}"
 PYTHON_PN = "python3"
 PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
index 09f279ba1d7..59592821d7f 100644
--- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
+++ b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
@@ -1,4 +1,4 @@
-From 23294c6ba6896115828293fdb7e67b47b38ba675 Mon Sep 17 00:00:00 2001
+From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Fri, 25 Jan 2019 19:04:13 +0100
 Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host
@@ -12,14 +12,14 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
  1 file changed, 1 deletion(-)
 
 diff --git a/setup.py b/setup.py
-index b4357e3..fbec00d 100644
+index 20d7f35..ab18ff0 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -856,7 +856,6 @@ class PyBuildExt(build_ext):
+@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):
                                                       'termcap'):
                  readline_libs.append('termcap')
-             exts.append( Extension('readline', ['readline.c'],
--                                   library_dirs=['/usr/lib/termcap'],
-                                    extra_link_args=readline_extra_link_args,
-                                    libraries=readline_libs) )
+             self.add(Extension('readline', ['readline.c'],
+-                               library_dirs=['/usr/lib/termcap'],
+                                extra_link_args=readline_extra_link_args,
+                                libraries=readline_libs))
          else:
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
index ea75262c4f6..112c979441f 100644
--- a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
+++ b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
@@ -1,4 +1,4 @@
-From 0fbdad1eaf541a8e92be81f39514cd249b3b0801 Mon Sep 17 00:00:00 2001
+From a078b6ff1492e848ad1055764fb9a414abaf3e12 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Tue, 5 Feb 2019 15:52:02 +0100
 Subject: [PATCH] Do not hardcode "lib" as location for modules, site-packages
@@ -11,13 +11,13 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
  Include/pythonrun.h  |  2 ++
  Lib/site.py          |  4 ++--
  Makefile.pre.in      |  5 +++--
- Modules/getpath.c    | 18 ++++++++++++------
+ Modules/getpath.c    | 22 ++++++++++++++--------
  Python/getplatform.c | 10 ++++++++++
  Python/sysmodule.c   |  2 ++
- 6 files changed, 31 insertions(+), 10 deletions(-)
+ 6 files changed, 33 insertions(+), 12 deletions(-)
 
 diff --git a/Include/pythonrun.h b/Include/pythonrun.h
-index 6f0c6fc..0a17edd 100644
+index 46091e0..61b2e15 100644
 --- a/Include/pythonrun.h
 +++ b/Include/pythonrun.h
 @@ -7,6 +7,8 @@
@@ -28,12 +28,12 @@ index 6f0c6fc..0a17edd 100644
 +
  #ifndef Py_LIMITED_API
  PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
- PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
+ PyAPI_FUNC(int) PyRun_AnyFileExFlags(
 diff --git a/Lib/site.py b/Lib/site.py
-index ffd132b..b55f6d8 100644
+index a065ab0..1d720ef 100644
 --- a/Lib/site.py
 +++ b/Lib/site.py
-@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):
+@@ -335,12 +335,12 @@ def getsitepackages(prefixes=None):
          seen.add(prefix)
  
          if os.sep == '/':
@@ -49,10 +49,10 @@ index ffd132b..b55f6d8 100644
  
  def addsitepackages(known_paths, prefixes=None):
 diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 6e81b2f..671a20e 100644
+index 65665df..be49140 100644
 --- a/Makefile.pre.in
 +++ b/Makefile.pre.in
-@@ -142,7 +142,7 @@ LIBDIR=		@libdir@
+@@ -143,7 +143,7 @@ LIBDIR=		@libdir@
  MANDIR=		@mandir@
  INCLUDEDIR=	@includedir@
  CONFINCLUDEDIR=	$(exec_prefix)/include
@@ -61,7 +61,7 @@ index 6e81b2f..671a20e 100644
  ABIFLAGS=	@ABIFLAGS@
  
  # Detailed destination directories
-@@ -768,6 +768,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
+@@ -753,6 +753,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
  		-DEXEC_PREFIX='"$(exec_prefix)"' \
  		-DVERSION='"$(VERSION)"' \
  		-DVPATH='"$(VPATH)"' \
@@ -69,7 +69,7 @@ index 6e81b2f..671a20e 100644
  		-o $@ $(srcdir)/Modules/getpath.c
  
  Programs/python.o: $(srcdir)/Programs/python.c
-@@ -856,7 +857,7 @@ regen-opcode:
+@@ -868,7 +869,7 @@ regen-symbol: $(srcdir)/Include/graminit.h
  Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
  
  Python/getplatform.o: $(srcdir)/Python/getplatform.c
@@ -79,72 +79,90 @@ index 6e81b2f..671a20e 100644
  Python/importdl.o: $(srcdir)/Python/importdl.c
  		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
 diff --git a/Modules/getpath.c b/Modules/getpath.c
-index e6a3e8e..0c62af6 100644
+index b727f66..c003e46 100644
 --- a/Modules/getpath.c
 +++ b/Modules/getpath.c
-@@ -123,6 +123,7 @@ typedef struct {
-     wchar_t *exec_prefix;              /* EXEC_PREFIX define */
+@@ -128,6 +128,7 @@ typedef struct {
+     wchar_t *exec_prefix;              /* EXEC_PREFIX macro */
  
      wchar_t *lib_python;               /* "lib/pythonX.Y" */
 +    wchar_t *multilib_python;               /* "lib[suffix]/pythonX.Y" */
-     wchar_t argv0_path[MAXPATHLEN+1];
-     wchar_t zip_path[MAXPATHLEN+1];    /* ".../lib/pythonXY.zip" */
  
-@@ -314,7 +315,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
+     int prefix_found;         /* found platform independent libraries? */
+     int exec_prefix_found;    /* found the platform dependent libraries? */
+@@ -386,7 +387,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
          if (delim) {
              *delim = L'\0';
          }
--        joinpath(prefix, calculate->lib_python);
-+        joinpath(prefix, calculate->multilib_python);
-         joinpath(prefix, LANDMARK);
-         return 1;
-     }
-@@ -343,7 +344,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
-     copy_absolute(prefix, calculate->argv0_path, MAXPATHLEN+1);
+-        status = joinpath(prefix, calculate->lib_python, prefix_len);
++        status = joinpath(prefix, calculate->multilib_python, prefix_len);
+         if (_PyStatus_EXCEPTION(status)) {
+             return status;
+         }
+@@ -444,7 +445,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
      do {
-         n = wcslen(prefix);
--        joinpath(prefix, calculate->lib_python);
-+        joinpath(prefix, calculate->multilib_python);
-         joinpath(prefix, LANDMARK);
-         if (ismodule(prefix)) {
-             return 1;
-@@ -355,7 +356,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
-     /* Look at configure's PREFIX */
-     wcsncpy(prefix, calculate->prefix, MAXPATHLEN);
-     prefix[MAXPATHLEN] = L'\0';
--    joinpath(prefix, calculate->lib_python);
-+    joinpath(prefix, calculate->multilib_python);
-     joinpath(prefix, LANDMARK);
-     if (ismodule(prefix)) {
-         return 1;
-@@ -427,7 +428,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
-             wcsncpy(exec_prefix, core_config->home, MAXPATHLEN);
+         /* Path: <argv0_path or substring> / <lib_python> / LANDMARK */
+         size_t n = wcslen(prefix);
+-        status = joinpath(prefix, calculate->lib_python, prefix_len);
++        status = joinpath(prefix, calculate->multilib_python, prefix_len);
+         if (_PyStatus_EXCEPTION(status)) {
+             return status;
          }
-         exec_prefix[MAXPATHLEN] = L'\0';
--        joinpath(exec_prefix, calculate->lib_python);
-+        joinpath(exec_prefix, calculate->multilib_python);
-         joinpath(exec_prefix, L"lib-dynload");
-         return 1;
+@@ -467,7 +468,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
+     if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
+         return PATHLEN_ERR();
+     }
+-    status = joinpath(prefix, calculate->lib_python, prefix_len);
++    status = joinpath(prefix, calculate->multilib_python, prefix_len);
+     if (_PyStatus_EXCEPTION(status)) {
+         return status;
      }
-@@ -464,7 +465,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
-     copy_absolute(exec_prefix, calculate->argv0_path, MAXPATHLEN+1);
+@@ -510,7 +511,7 @@ calculate_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
+         if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
+             return PATHLEN_ERR();
+         }
+-        status = joinpath(prefix, calculate->lib_python, prefix_len);
++        status = joinpath(prefix, calculate->multilib_python, prefix_len);
+         if (_PyStatus_EXCEPTION(status)) {
+             return status;
+         }
+@@ -635,7 +636,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
+                 return PATHLEN_ERR();
+             }
+         }
+-        status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
++        status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
+         if (_PyStatus_EXCEPTION(status)) {
+             return status;
+         }
+@@ -667,7 +668,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
      do {
-         n = wcslen(exec_prefix);
--        joinpath(exec_prefix, calculate->lib_python);
-+        joinpath(exec_prefix, calculate->multilib_python);
-         joinpath(exec_prefix, L"lib-dynload");
-         if (isdir(exec_prefix)) {
-             return 1;
-@@ -476,7 +477,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
-     /* Look at configure's EXEC_PREFIX */
-     wcsncpy(exec_prefix, calculate->exec_prefix, MAXPATHLEN);
-     exec_prefix[MAXPATHLEN] = L'\0';
--    joinpath(exec_prefix, calculate->lib_python);
-+    joinpath(exec_prefix, calculate->multilib_python);
-     joinpath(exec_prefix, L"lib-dynload");
-     if (isdir(exec_prefix)) {
-         return 1;
-@@ -871,6 +872,10 @@ calculate_init(PyCalculatePath *calculate,
+         /* Path: <argv0_path or substring> / <lib_python> / "lib-dynload" */
+         size_t n = wcslen(exec_prefix);
+-        status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
++        status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
+         if (_PyStatus_EXCEPTION(status)) {
+             return status;
+         }
+@@ -689,7 +690,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
+     if (safe_wcscpy(exec_prefix, calculate->exec_prefix, exec_prefix_len) < 0) {
+         return PATHLEN_ERR();
+     }
+-    status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
++    status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
+     if (_PyStatus_EXCEPTION(status)) {
+         return status;
+     }
+@@ -928,7 +929,7 @@ calculate_argv0_path(PyCalculatePath *calculate, const wchar_t *program_full_pat
+             return PATHLEN_ERR();
+         }
+         reduce(argv0_path);
+-        status = joinpath(argv0_path, calculate->lib_python, argv0_path_len);
++        status = joinpath(argv0_path, calculate->multilib_python, argv0_path_len);
+         if (_PyStatus_EXCEPTION(status)) {
+             PyMem_RawFree(wbuf);
+             return status;
+@@ -1201,6 +1202,10 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config)
      if (!calculate->lib_python) {
          return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
      }
@@ -152,10 +170,10 @@ index e6a3e8e..0c62af6 100644
 +    if (!calculate->multilib_python) {
 +        return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
 +    }
-     return _Py_INIT_OK();
- }
  
-@@ -882,6 +887,7 @@ calculate_free(PyCalculatePath *calculate)
+     calculate->warnings = config->pathconfig_warnings;
+     calculate->pythonpath_env = config->pythonpath_env;
+@@ -1216,6 +1221,7 @@ calculate_free(PyCalculatePath *calculate)
      PyMem_RawFree(calculate->prefix);
      PyMem_RawFree(calculate->exec_prefix);
      PyMem_RawFree(calculate->lib_python);
@@ -182,10 +200,10 @@ index 81a0f7a..d55396b 100644
 +	return LIB;
 +}
 diff --git a/Python/sysmodule.c b/Python/sysmodule.c
-index efe5b29..de77b17 100644
+index 5b0fb81..0dce754 100644
 --- a/Python/sysmodule.c
 +++ b/Python/sysmodule.c
-@@ -2319,6 +2319,8 @@ _PySys_BeginInit(PyObject **sysmod)
+@@ -2668,6 +2668,8 @@ _PySys_InitCore(_PyRuntimeState *runtime, PyInterpreterState *interp,
                          PyUnicode_FromString(Py_GetCopyright()));
      SET_SYS_FROM_STRING("platform",
                          PyUnicode_FromString(Py_GetPlatform()));
diff --git a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
index e7af88654da..fe0aa8aabed 100644
--- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
+++ b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
@@ -1,4 +1,4 @@
-From 7535c39951b9d15dd64c4669092a8582ba555466 Mon Sep 17 00:00:00 2001
+From 2581ebe3cd9686089aed223651e1b8bf0b862b48 Mon Sep 17 00:00:00 2001
 From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
 Date: Fri, 31 May 2019 15:34:34 +0200
 Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
@@ -12,15 +12,16 @@ to do this in a more autoconf/autotools manner.
 
 Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
 Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
+
 ---
- configure.ac | 169 ++++++---------------------------------------------
- 1 file changed, 17 insertions(+), 152 deletions(-)
+ configure.ac | 171 +++++----------------------------------------------
+ 1 file changed, 17 insertions(+), 154 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index a7de901e08..a73e2de51b 100644
+index 0f85486..0ca7e24 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -727,158 +727,23 @@ fi
+@@ -704,160 +704,23 @@ fi
  MULTIARCH=$($CC --print-multiarch 2>/dev/null)
  AC_SUBST(MULTIARCH)
  
@@ -163,6 +164,8 @@ index a7de901e08..a73e2de51b 100644
 -        i386-gnu
 -#elif defined(__APPLE__)
 -        darwin
+-#elif defined(__VXWORKS__)
+-        vxworks
 -#else
 -# error unknown platform triplet
 -#endif
@@ -196,6 +199,3 @@ index a7de901e08..a73e2de51b 100644
  
  if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
    if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
--- 
-2.21.0
-
diff --git a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
index 1709011be8a..ee37f6bd52d 100644
--- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+++ b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
@@ -1,4 +1,4 @@
-From eff903c600f4c40f5753e95ab1557126fc6e0c9c Mon Sep 17 00:00:00 2001
+From cf676775109c0a7fb38058bb60b453ff8f1a166b Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Thu, 31 Jan 2019 16:46:30 +0100
 Subject: [PATCH] distutils/sysconfig: append
diff --git a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch b/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
deleted file mode 100644
index a146c747f83..00000000000
--- a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5ce3ac59531828ff682646fbba59b2126b28a8aa Mon Sep 17 00:00:00 2001
-From: Jaewon Lee <jaewon.lee@xilinx.com>
-Date: Thu, 25 Apr 2019 15:34:26 -0700
-Subject: [PATCH] main.c: if OEPYTHON3HOME is set use instead of PYTHONHOME
-
-There is one variable PYTHONHOME to determine where libraries are coming
-from for both python2 and python3. This becomes an issue if only one has
-libraries in the specified PYTHONHOME path, but they are using the same
-PYTHONHOME. Creating another variable OEPYTHON3HOME to allow for a way
-to set a different path for python3
-
-Signed-off-by: Jaewon Lee <jaewon.lee@xilinx.com>
-
-Upstream-Status: Inappropriate [OE specific configuration]
-
----
- Modules/main.c | 17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/Modules/main.c b/Modules/main.c
-index acc59c6..407085a 100644
---- a/Modules/main.c
-+++ b/Modules/main.c
-@@ -1834,10 +1834,19 @@ config_init_home(_PyCoreConfig *config)
-         }
-         return _Py_INIT_OK();
-     }
--
--    int res = config_get_env_var_dup(&home, L"PYTHONHOME", "PYTHONHOME");
--    if (res < 0) {
--        return DECODE_LOCALE_ERR("PYTHONHOME", res);
-+    int res;
-+    const char *oepython3home = config_get_env_var("OEPYTHON3HOME");
-+    if (oepython3home) {
-+        res = config_get_env_var_dup(&home, L"OEPYTHON3HOME", "OEPYTHON3HOME");
-+        if (res < 0) {
-+            return DECODE_LOCALE_ERR("OEPYTHON3HOME", res);
-+        }
-+    }
-+    else {
-+        res = config_get_env_var_dup(&home, L"PYTHONHOME", "PYTHONHOME");
-+        if (res < 0) {
-+            return DECODE_LOCALE_ERR("PYTHONHOME", res);
-+        }
-     }
-     config->home = home;
-     return _Py_INIT_OK();
diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
index a0ea897f4e8..fb10ca94b31 100644
--- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
@@ -1,4 +1,4 @@
-From 2645317fef09afe31b01bb2c1d4fe5b9afdbb11a Mon Sep 17 00:00:00 2001
+From 994783da5c21cab81b6589ed2d4275e665a946f9 Mon Sep 17 00:00:00 2001
 From: Changqing Li <changqing.li@windriver.com>
 Date: Mon, 22 Oct 2018 15:19:51 +0800
 Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
@@ -21,12 +21,13 @@ Signed-off-by: Li Zhou <li.zhou@windriver.com>
 patch originally from Li Zhou, I just rework it to new version
 
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
 ---
  configure.ac | 19 ++++++++++---------
  1 file changed, 10 insertions(+), 9 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index a7de901..4a3681f 100644
+index a189d42..0f85486 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
@@ -37,7 +38,7 @@ index a7de901..4a3681f 100644
  
  # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
  rm -f pybuilddir.txt
-@@ -695,7 +696,7 @@ AC_MSG_RESULT($with_cxx_main)
+@@ -671,7 +672,7 @@ AC_MSG_RESULT($with_cxx_main)
  preset_cxx="$CXX"
  if test -z "$CXX"
  then
@@ -46,7 +47,7 @@ index a7de901..4a3681f 100644
          gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
          cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
          clang|*/clang)     AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
-@@ -979,7 +980,7 @@ rmdir CaseSensitiveTestDir
+@@ -957,7 +958,7 @@ rmdir CaseSensitiveTestDir
  
  case $ac_sys_system in
  hp*|HP*)
@@ -55,7 +56,7 @@ index a7de901..4a3681f 100644
      cc|*/cc) CC="$CC -Ae";;
      esac;;
  esac
-@@ -1336,7 +1337,7 @@ else
+@@ -1335,7 +1336,7 @@ else
  fi],
  [AC_MSG_RESULT(no)])
  if test "$Py_LTO" = 'true' ; then
@@ -64,7 +65,7 @@ index a7de901..4a3681f 100644
      *clang*)
        AC_SUBST(LLVM_AR)
        AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
-@@ -1426,7 +1427,7 @@ then
+@@ -1425,7 +1426,7 @@ then
    fi
  fi
  LLVM_PROF_ERR=no
@@ -73,16 +74,16 @@ index a7de901..4a3681f 100644
    *clang*)
      # Any changes made here should be reflected in the GCC+Darwin case below
      PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
-@@ -1500,7 +1501,7 @@ then
-            WRAP="-fwrapv"
-         fi
+@@ -1486,7 +1487,7 @@ esac
+ # compiler and platform.  BASECFLAGS tweaks need to be made even if the
+ # user set OPT.
  
--        case $CC in
-+        case $cc_basename in
-             *clang*)
-                 cc_is_clang=1
-                 ;;
-@@ -1623,7 +1624,7 @@ yes)
+-case $CC in
++case $cc_basename in
+     *clang*)
+         cc_is_clang=1
+         ;;
+@@ -1622,7 +1623,7 @@ yes)
  
      # ICC doesn't recognize the option, but only emits a warning
      ## XXX does it emit an unused result warning and can it be disabled?
@@ -91,7 +92,7 @@ index a7de901..4a3681f 100644
      *icc*)
      ac_cv_disable_unused_result_warning=no
      ;;
-@@ -1965,7 +1966,7 @@ yes)
+@@ -1943,7 +1944,7 @@ yes)
  esac
  
  # ICC needs -fp-model strict or floats behave badly
@@ -100,7 +101,7 @@ index a7de901..4a3681f 100644
  *icc*)
      CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
      ;;
-@@ -2727,7 +2728,7 @@ then
+@@ -2711,7 +2712,7 @@ then
  		then
  			LINKFORSHARED="-Wl,--export-dynamic"
  		fi;;
@@ -109,7 +110,7 @@ index a7de901..4a3681f 100644
  		  *gcc*)
  		    if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
  		    then
-@@ -5429,7 +5430,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
+@@ -5362,7 +5363,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
      # Some versions of gcc miscompile inline asm:
      # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
      # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
diff --git a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch b/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
deleted file mode 100644
index 58ab709028e..00000000000
--- a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From fa96a7fd19e17b9c6b4dd01c3c3774fb382dddc6 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 5 Sep 2018 11:45:52 +0100
-Subject: [PATCH] Don't do runtime test to get float byte order
-
-Python uses AC_RUN_IFELSE to determine the byte order for floats and doubles,
-and falls back onto "I don't know" if it can't run code.  This results in
-crippled floating point numbers in Python, and the regression tests fail.
-
-Instead of running code, take a macro from autoconf-archive which compiles C
-with a special double in which has an ASCII representation, and then greps the
-binary to identify the format.
-
-Upstream-Status: Backport [2a9c3805ddedf282881ef7811a561c70b74f80b1]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- configure.ac                     | 72 +++------------------------
- m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++++++++++++
- 2 files changed, 90 insertions(+), 65 deletions(-)
- create mode 100644 m4/ax_c_float_words_bigendian.m4
-
-diff --git a/configure.ac b/configure.ac
-index 4a3681f..4ab19a6 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -4328,77 +4328,19 @@ fi
- # * Check for various properties of floating point *
- # **************************************************
- 
--AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_little_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
--    double x = 9006104071832581.0;
--    if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
--        return 0;
--    else
--        return 1;
--}
--]])],
--[ac_cv_little_endian_double=yes],
--[ac_cv_little_endian_double=no],
--[ac_cv_little_endian_double=no])])
--AC_MSG_RESULT($ac_cv_little_endian_double)
--if test "$ac_cv_little_endian_double" = yes
--then
--  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
--  [Define if C doubles are 64-bit IEEE 754 binary format, stored
--   with the least significant byte first])
--fi
--
--AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_big_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
--    double x = 9006104071832581.0;
--    if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
--        return 0;
--    else
--        return 1;
--}
--]])],
--[ac_cv_big_endian_double=yes],
--[ac_cv_big_endian_double=no],
--[ac_cv_big_endian_double=no])])
--AC_MSG_RESULT($ac_cv_big_endian_double)
--if test "$ac_cv_big_endian_double" = yes
-+AX_C_FLOAT_WORDS_BIGENDIAN
-+if test "$ax_cv_c_float_words_bigendian" = "yes"
- then
-   AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
-   [Define if C doubles are 64-bit IEEE 754 binary format, stored
-    with the most significant byte first])
--fi
--
--# Some ARM platforms use a mixed-endian representation for doubles.
--# While Python doesn't currently have full support for these platforms
--# (see e.g., issue 1762561), we can at least make sure that float <-> string
--# conversions work.
--AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
--AC_CACHE_VAL(ac_cv_mixed_endian_double, [
--AC_RUN_IFELSE([AC_LANG_SOURCE([[
--#include <string.h>
--int main() {
--    double x = 9006104071832581.0;
--    if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
--        return 0;
--    else
--        return 1;
--}
--]])],
--[ac_cv_mixed_endian_double=yes],
--[ac_cv_mixed_endian_double=no],
--[ac_cv_mixed_endian_double=no])])
--AC_MSG_RESULT($ac_cv_mixed_endian_double)
--if test "$ac_cv_mixed_endian_double" = yes
-+elif test "$ax_cv_c_float_words_bigendian" = "no"
- then
--  AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
-+  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
-   [Define if C doubles are 64-bit IEEE 754 binary format, stored
--   in ARM mixed-endian order (byte order 45670123)])
-+   with the least significant byte first])
-+else
-+  AC_MSG_ERROR([Cannot identify floating point byte order])
- fi
- 
- # The short float repr introduced in Python 3.1 requires the
-diff --git a/m4/ax_c_float_words_bigendian.m4 b/m4/ax_c_float_words_bigendian.m4
-new file mode 100644
-index 0000000..216b90d
---- /dev/null
-+++ b/m4/ax_c_float_words_bigendian.m4
-@@ -0,0 +1,83 @@
-+# ===============================================================================
-+#  https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html
-+# ===============================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_C_FLOAT_WORDS_BIGENDIAN([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
-+#
-+# DESCRIPTION
-+#
-+#   Checks the ordering of words within a multi-word float. This check is
-+#   necessary because on some systems (e.g. certain ARM systems), the float
-+#   word ordering can be different from the byte ordering. In a multi-word
-+#   float context, "big-endian" implies that the word containing the sign
-+#   bit is found in the memory location with the lowest address. This
-+#   implementation was inspired by the AC_C_BIGENDIAN macro in autoconf.
-+#
-+#   The endianness is detected by first compiling C code that contains a
-+#   special double float value, then grepping the resulting object file for
-+#   certain strings of ASCII values. The double is specially crafted to have
-+#   a binary representation that corresponds with a simple string. In this
-+#   implementation, the string "noonsees" was selected because the
-+#   individual word values ("noon" and "sees") are palindromes, thus making
-+#   this test byte-order agnostic. If grep finds the string "noonsees" in
-+#   the object file, the target platform stores float words in big-endian
-+#   order. If grep finds "seesnoon", float words are in little-endian order.
-+#   If neither value is found, the user is instructed to specify the
-+#   ordering.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Daniel Amelang <dan@amelang.net>
-+#
-+#   Copying and distribution of this file, with or without modification, are
-+#   permitted in any medium without royalty provided the copyright notice
-+#   and this notice are preserved. This file is offered as-is, without any
-+#   warranty.
-+
-+#serial 11
-+
-+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
-+  [AC_CACHE_CHECK(whether float word ordering is bigendian,
-+                  ax_cv_c_float_words_bigendian, [
-+
-+ax_cv_c_float_words_bigendian=unknown
-+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-+
-+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
-+
-+]])], [
-+
-+if grep noonsees conftest.$ac_objext >/dev/null ; then
-+  ax_cv_c_float_words_bigendian=yes
-+fi
-+if grep seesnoon conftest.$ac_objext >/dev/null ; then
-+  if test "$ax_cv_c_float_words_bigendian" = unknown; then
-+    ax_cv_c_float_words_bigendian=no
-+  else
-+    ax_cv_c_float_words_bigendian=unknown
-+  fi
-+fi
-+
-+])])
-+
-+case $ax_cv_c_float_words_bigendian in
-+  yes)
-+    m4_default([$1],
-+      [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
-+                 [Define to 1 if your system stores words within floats
-+                  with the most significant word first])]) ;;
-+  no)
-+    $2 ;;
-+  *)
-+    m4_default([$3],
-+      [AC_MSG_ERROR([
-+
-+Unknown float word ordering. You need to manually preset
-+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
-+
-+    ])]) ;;
-+esac
-+
-+])# AX_C_FLOAT_WORDS_BIGENDIAN
diff --git a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
deleted file mode 100644
index b9d5bc9c516..00000000000
--- a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From b881a79adcd4ae5ac8fe4f49d0fc77c47f777919 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 4 Aug 2017 11:16:14 +0800
-Subject: [PATCH] setup.py: pass missing libraries to Extension for
- multiprocessing module
-
-In the following commit:
-...
-commit e711cafab13efc9c1fe6c5cd75826401445eb585
-Author: Benjamin Peterson <benjamin@python.org>
-Date:   Wed Jun 11 16:44:04 2008 +0000
-
-    Merged revisions 64104,64117 via svnmerge from
-    svn+ssh://pythondev@svn.python.org/python/trunk
-...
-(see diff in setup.py)
-It assigned libraries for multiprocessing module according
-the host_platform, but not pass it to Extension.
-
-In glibc, the following commit caused two definition of
-sem_getvalue are different.
-https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
-(see diff in nptl/sem_getvalue.c for detail)
-`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
-and `__old_sem_getvalue' is to compat the old version
-sem_getvalue@GLIBC_2.0.
-
-To build python for embedded Linux systems:
-http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
-If not explicitly link to library pthread (-lpthread), it will
-load glibc's sem_getvalue randomly at runtime.
-
-Such as build python on linux x86_64 host and run the python
-on linux x86_32 target. If not link library pthread, it caused
-multiprocessing bounded semaphore could not work correctly.
-...
->>> import multiprocessing
->>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
->>> pool_sema.acquire()
-True
->>> pool_sema.release()
-Traceback (most recent call last):
-  File "<stdin>", line 1, in <module>
-ValueError: semaphore or lock released too many times
-...
-
-And the semaphore issue also caused multiprocessing.Queue().put() hung.
-
-Upstream-Status: Submitted [https://github.com/python/cpython/pull/2999]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- setup.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index b7a36a6..658ead3 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1584,8 +1584,10 @@ class PyBuildExt(build_ext):
-         elif host_platform.startswith('netbsd'):
-             macros = dict()
-             libraries = []
--
--        else:                                   # Linux and other unices
-+        elif host_platform.startswith(('linux')):
-+            macros = dict()
-+            libraries = ['pthread']
-+        else:                                   # Other unices
-             macros = dict()
-             libraries = ['rt']
- 
-@@ -1603,6 +1605,7 @@ class PyBuildExt(build_ext):
- 
-         exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
-                                 define_macros=list(macros.items()),
-+                                libraries=libraries,
-                                 include_dirs=["Modules/_multiprocessing"]))
-         # End multiprocessing
- 
diff --git a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
index c15295c034c..4bd98f62fd6 100644
--- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
+++ b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
@@ -1,4 +1,4 @@
-From e3b59cb9658e1d3efa3535840939a0fa92a70a5a Mon Sep 17 00:00:00 2001
+From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 7 Oct 2019 13:22:14 +0200
 Subject: [PATCH] setup.py: do not report missing dependencies for disabled
@@ -10,22 +10,23 @@ build completeness checker which relies on the report.
 
 Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
 ---
  setup.py | 4 ++++
  1 file changed, 4 insertions(+)
 
 diff --git a/setup.py b/setup.py
-index 4b53668..0097643 100644
+index 7691258..ec3f2a4 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -365,6 +365,10 @@ class PyBuildExt(build_ext):
+@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
                  print("%-*s   %-*s   %-*s" % (longest, e, longest, f,
                                                longest, g))
  
 +        # There is no need to report missing module dependencies,
 +        # if the modules have been disabled in the first place.
-+        missing = list(set(missing) - set(sysconf_dis))
++        self.missing = list(set(self.missing) - set(sysconf_dis))
 +
-         if missing:
+         if self.missing:
              print()
              print("Python build finished successfully!")
diff --git a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
index d49604ba4d9..219b3551b8b 100644
--- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
+++ b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
@@ -1,4 +1,4 @@
-From a274ba778838824efcacaba57c415b7262f779ec Mon Sep 17 00:00:00 2001
+From 93b2c26467b0ea9a18c178e4e1371d52e917a68b Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 14 May 2013 15:00:26 -0700
 Subject: [PATCH] python3: Add target and native recipes
diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
index 24e67b4ca14..184540e794c 100644
--- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
+++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
@@ -1,4 +1,4 @@
-From fead48c8b501a8d7c3db21df2e599f90f38f11d3 Mon Sep 17 00:00:00 2001
+From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
 From: Andrei Gherzan <andrei@gherzan.ro>
 Date: Mon, 28 Jan 2019 15:57:54 +0000
 Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet
@@ -11,26 +11,21 @@ Also simply disable the tk module since its not in DEPENDS.
 Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
 
 ---
- setup.py | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/setup.py b/setup.py
-index fbec00d..b7a36a6 100644
+index ab18ff0..7691258 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -1623,10 +1623,12 @@ class PyBuildExt(build_ext):
-         self.extensions.extend(exts)
+@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):
+         self.detect_decimal()
+         self.detect_ctypes()
+         self.detect_multiprocessing()
+-        if not self.detect_tkinter():
+-            self.missing.append('_tkinter')
++#        if not self.detect_tkinter():
++#            self.missing.append('_tkinter')
+         self.detect_uuid()
  
-         # Call the method for detecting whether _tkinter can be compiled
--        self.detect_tkinter(inc_dirs, lib_dirs)
-+        # self.detect_tkinter(inc_dirs, lib_dirs)
- 
--        if '_tkinter' not in [e.name for e in self.extensions]:
--            missing.append('_tkinter')
-+        # tkinter module will not be avalaible as yocto
-+        # doesn't have tk integrated (yet)
-+        #if '_tkinter' not in [e.name for e in self.extensions]:
-+        #    missing.append('_tkinter')
- 
-         # Build the _uuid module if possible
-         uuid_incs = find_file("uuid.h", inc_dirs, ["/usr/include/uuid"])
+ ##         # Uncomment these lines if you want to play with xxmodule.c
diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch
index f23b8b7df06..c8a8f3d4aa3 100644
--- a/meta/recipes-devtools/python/python3/python-config.patch
+++ b/meta/recipes-devtools/python/python3/python-config.patch
@@ -1,4 +1,7 @@
-python-config: Revert to using distutils.sysconfig
+From 07df0ae0d70cba6d1847fe1c24a71063930bec60 Mon Sep 17 00:00:00 2001
+From: Tyler Hall <tylerwhall@gmail.com>
+Date: Sun, 4 May 2014 20:06:43 -0400
+Subject: [PATCH] python-config: Revert to using distutils.sysconfig
 
 The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in
 
@@ -12,11 +15,16 @@ Upstream-Status: Inappropriate [Embedded Specific]
 
 Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
 :
-Index: Python-3.3.3/Misc/python-config.in
-===================================================================
---- Python-3.3.3.orig/Misc/python-config.in
-+++ Python-3.3.3/Misc/python-config.in
-@@ -4,7 +4,7 @@
+
+---
+ Misc/python-config.in | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Misc/python-config.in b/Misc/python-config.in
+index 727c4a8..c702829 100644
+--- a/Misc/python-config.in
++++ b/Misc/python-config.in
+@@ -6,7 +6,7 @@
  import getopt
  import os
  import sys
@@ -24,8 +32,8 @@ Index: Python-3.3.3/Misc/python-config.in
 +from distutils import sysconfig
  
  valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
-               'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir']
-@@ -32,14 +32,14 @@ if '--help' in opt_flags:
+               'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir',
+@@ -35,14 +35,14 @@ if '--help' in opt_flags:
  
  for opt in opt_flags:
      if opt == '--prefix':
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index dba92b0e396..ebfc10b4045 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -213,8 +213,8 @@
             "${bindir}/python3",
             "${bindir}/python${PYTHON_MAJMIN}",
             "${bindir}/python${PYTHON_MAJMIN}.real",
-            "${bindir}/python${PYTHON_BINABI}",
-            "${includedir}/python${PYTHON_BINABI}/pyconfig*.h",
+            "${bindir}/python${PYTHON_MAJMIN}",
+            "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h",
             "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]",
             "${libdir}/python${PYTHON_MAJMIN}/UserDict.py",
             "${libdir}/python${PYTHON_MAJMIN}/UserList.py",
diff --git a/meta/recipes-devtools/python/python3_3.7.5.bb b/meta/recipes-devtools/python/python3_3.8.0.bb
similarity index 91%
rename from meta/recipes-devtools/python/python3_3.7.5.bb
rename to meta/recipes-devtools/python/python3_3.8.0.bb
index 57eaaea5e7c..1feaebea8ee 100644
--- a/meta/recipes-devtools/python/python3_3.7.5.bb
+++ b/meta/recipes-devtools/python/python3_3.8.0.bb
@@ -19,8 +19,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
            file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
            file://0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch \
            file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
-           file://0002-Don-t-do-runtime-test-to-get-float-byte-order.patch \
-           file://0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
            file://0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch \
            file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \
            file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
@@ -35,20 +33,16 @@ SRC_URI_append_class-native = " \
            file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
            file://12-distutils-prefix-is-inside-staging-area.patch \
            "
-SRC_URI_append_class-nativesdk = " \
-           file://0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch \
-           "
 
-SRC_URI[md5sum] = "08ed8030b1183107c48f2092e79a87e2"
-SRC_URI[sha256sum] = "e85a76ea9f3d6c485ec1780fca4e500725a4a7bbc63c78ebc44170de9b619d94"
+SRC_URI[md5sum] = "dbac8df9d8b9edc678d0f4cacdb7dbb0"
+SRC_URI[sha256sum] = "b356244e13fb5491da890b35b13b2118c3122977c2cd825e3eb6e7d462030d84"
 
 # exclude pre-releases for both python 2.x and 3.x
 UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
 
 CVE_PRODUCT = "python"
 
-PYTHON_MAJMIN = "3.7"
-PYTHON_BINABI = "${PYTHON_MAJMIN}m"
+PYTHON_MAJMIN = "3.8"
 
 S = "${WORKDIR}/Python-${PV}"
 
@@ -59,8 +53,8 @@ inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
 MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
 
 ALTERNATIVE_${PN}-dev = "python3-config"
-ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_BINABI}-config"
-ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}"
+ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
+ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
 
 
 DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2"
@@ -131,7 +125,7 @@ do_install_prepend() {
 }
 
 do_install_append_class-target() {
-        oe_multilib_header python${PYTHON_BINABI}/pyconfig.h
+        oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
 }
 
 do_install_append_class-native() {
@@ -161,7 +155,7 @@ do_install_append() {
 }
 
 do_install_append_class-nativesdk () {
-    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} OEPYTHON3HOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
+    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
 }
 
 SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
@@ -177,7 +171,7 @@ py_package_preprocess () {
                 -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
                 ${PKGD}/${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
                 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
-                ${PKGD}/${bindir}/python${PYTHON_BINABI}-config
+                ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
 
         # Reformat _sysconfigdata after modifying it so that it remains
         # reproducible
@@ -196,7 +190,7 @@ py_package_preprocess () {
              -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
         cd -
 
-        mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}
+        mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
         
         #Remove the unneeded copy of target sysconfig data
         rm -rf ${PKGD}/${libdir}/python-sysconfigdata
@@ -322,7 +316,7 @@ RPROVIDES_${PN}-venv += "python3-pyvenv"
 # package libpython3
 PACKAGES =+ "libpython3 libpython3-staticdev"
 FILES_libpython3 = "${libdir}/libpython*.so.*"
-FILES_libpython3-staticdev += "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-*/libpython${PYTHON_BINABI}.a"
+FILES_libpython3-staticdev += "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
 INSANE_SKIP_${PN}-dev += "dev-elf"
 
 # catch all the rest (unsorted)
@@ -341,3 +335,5 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9"
 RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
 RDEPENDS_${PN}-dev = ""
 
+RDEPENDS_${PN}-tests_append_class-target = " bash"
+RDEPENDS_${PN}-tests_append_class-nativesdk = " bash"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 07/24] gstreamer1.0-python: add a patch to fix python 3.8 builds
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (4 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 06/24] python3: update to 3.8.0 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 08/24] selftest: skip virgl gtk/sdl test on opensuse 15.0 Alexander Kanavin
                   ` (18 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...son.build-fix-builds-with-python-3.8.patch | 24 +++++++++++++++++++
 .../gstreamer/gstreamer1.0-python_1.16.1.bb   |  4 +++-
 2 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-multimedia/gstreamer/gstreamer1.0-python/0001-meson.build-fix-builds-with-python-3.8.patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python/0001-meson.build-fix-builds-with-python-3.8.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python/0001-meson.build-fix-builds-with-python-3.8.patch
new file mode 100644
index 00000000000..053108ad50b
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python/0001-meson.build-fix-builds-with-python-3.8.patch
@@ -0,0 +1,24 @@
+From 61cfd1b49dc82baf14bb36d88b6c5be7b8c3d23a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 2 Dec 2019 18:16:41 +0100
+Subject: [PATCH] meson.build: fix builds with python 3.8
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gst-python/merge_requests/14]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 1da81d5..3e0db38 100644
+--- a/meson.build
++++ b/meson.build
+@@ -24,7 +24,7 @@ pygobject_dep = dependency('pygobject-3.0', fallback: ['pygobject', 'pygobject_d
+ 
+ pymod = import('python')
+ python = pymod.find_installation(get_option('python'))
+-python_dep = python.dependency(required : true)
++python_dep = dependency('python3-embed', required : true)
+ 
+ python_abi_flags = python.get_variable('ABIFLAGS', '')
+ pylib_loc = get_option('libpython-dir')
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb
index b770ec060e1..0382360ec26 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.16.1.bb
@@ -5,7 +5,9 @@ SECTION = "multimedia"
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
 
-SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz \
+           file://0001-meson.build-fix-builds-with-python-3.8.patch \
+           "
 SRC_URI[md5sum] = "499645fbd1790c5845c02a3998dccc1b"
 SRC_URI[sha256sum] = "b469c8955126f41b8ce0bf689b7029f182cd305f422b3a8df35b780bd8347489"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 08/24] selftest: skip virgl gtk/sdl test on opensuse 15.0
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (5 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 07/24] gstreamer1.0-python: add a patch to fix python 3.8 builds Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 09/24] gtk+3: update to 3.24.13 Alexander Kanavin
                   ` (17 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/lib/oeqa/selftest/cases/runtime_test.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index ccd2c40aa3f..7aa9fb25da2 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -181,6 +181,8 @@ class TestImage(OESelftestTestCase):
             self.skipTest('virgl isn\'t working with Debian 8')
         if distro and distro == 'centos-7':
             self.skipTest('virgl isn\'t working with Centos 7')
+        if distro and distro == 'opensuseleap-15.0':
+            self.skipTest('virgl isn\'t working with Opensuse 15.0')
 
         qemu_packageconfig = get_bb_var('PACKAGECONFIG', 'qemu-system-native')
         sdl_packageconfig = get_bb_var('PACKAGECONFIG', 'libsdl2-native')
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 09/24] gtk+3: update to 3.24.13
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (6 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 08/24] selftest: skip virgl gtk/sdl test on opensuse 15.0 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 10/24] kbd: update to 2.2.0 Alexander Kanavin
                   ` (16 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...t-try-to-initialize-GL-without-libGL.patch |  15 +--
 ...-Add-disable-opengl-configure-option.patch | 103 ++++++++----------
 .../{gtk+3_3.24.8.bb => gtk+3_3.24.13.bb}     |   4 +-
 3 files changed, 56 insertions(+), 66 deletions(-)
 rename meta/recipes-gnome/gtk+/{gtk+3_3.24.8.bb => gtk+3_3.24.13.bb} (84%)

diff --git a/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch b/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
index cc7edf7607c..80dc2d7a05b 100644
--- a/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
+++ b/meta/recipes-gnome/gtk+/gtk+3/0002-Do-not-try-to-initialize-GL-without-libGL.patch
@@ -1,7 +1,7 @@
-From 23a563155406980dfc8cf6f7c2da6cce0ac310f0 Mon Sep 17 00:00:00 2001
+From 6575ab0f0e8c1bba033ad1616511e37a2ec995ff Mon Sep 17 00:00:00 2001
 From: Jussi Kukkonen <jussi.kukkonen@intel.com>
 Date: Fri, 16 Oct 2015 16:35:16 +0300
-Subject: [PATCH 2/4] Do not try to initialize GL without libGL
+Subject: [PATCH] Do not try to initialize GL without libGL
 
 _gdk_x11_screen_update_visuals_for_gl() will end up calling epoxys
 GLX api which will exit() if libGL.so.1 is not present. We do not
@@ -22,10 +22,10 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
  2 files changed, 11 insertions(+)
 
 diff --git a/configure.ac b/configure.ac
-index 757fd7c..0a48875 100644
+index e9f5583..bd651bb 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -351,6 +351,12 @@ AC_ARG_ENABLE(cloudproviders,
+@@ -346,6 +346,12 @@ AC_ARG_ENABLE(cloudproviders,
                [AS_HELP_STRING([--enable-cloudproviders],
                                [enable libcloudproviders integration])],
                                [cloudproviders_set=yes])
@@ -36,8 +36,8 @@ index 757fd7c..0a48875 100644
 +  AC_DEFINE([HAVE_GLX], [], [GLX will be available at runtime])
 +])
  
- if test -z "$backend_set"; then
-   if test "$platform_win32" = yes; then
+ AC_ARG_ENABLE(profiler,
+               [AS_HELP_STRING([--enable-profiler],
 diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c
 index 81479d8..3c8c5c0 100644
 --- a/gdk/x11/gdkvisual-x11.c
@@ -55,6 +55,3 @@ index 81479d8..3c8c5c0 100644
  }
  
  gint
--- 
-2.14.1
-
diff --git a/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch b/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
index 852dc9dfcd3..398c9bc36a1 100644
--- a/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
+++ b/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
@@ -1,4 +1,4 @@
-From d11b41a7ff0234f3832d6aabdf498807d1463c18 Mon Sep 17 00:00:00 2001
+From f83fcf1991afad6d9c15546b2ccd775dad4e314c Mon Sep 17 00:00:00 2001
 From: Jussi Kukkonen <jussi.kukkonen@intel.com>
 Date: Tue, 21 Jun 2016 15:11:39 +0300
 Subject: [PATCH] Add --disable-opengl configure option
@@ -37,20 +37,20 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
  gdk/x11/gdkx-autocleanups.h                |  2 +
  gdk/x11/{gdkx.h => gdkx-with-gl-context.h} |  1 -
  gdk/x11/gdkx-without-gl-context.h          | 58 ++++++++++++++++++++++
- gtk/Makefile.am                            |  3 +-
+ gtk/Makefile.am                            |  2 +-
  gtk/gtkglarea.c                            | 20 +++++++-
  gtk/inspector/general.c                    |  6 +++
  tests/Makefile.am                          | 10 ++--
  testsuite/gtk/objects-finalize.c           |  2 +
- 21 files changed, 208 insertions(+), 20 deletions(-)
+ 21 files changed, 208 insertions(+), 19 deletions(-)
  rename gdk/x11/{gdkx.h => gdkx-with-gl-context.h} (98%)
  create mode 100644 gdk/x11/gdkx-without-gl-context.h
 
 diff --git a/configure.ac b/configure.ac
-index 2c4733b..18ae66c 100644
+index bd651bb..b4c061f 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -352,6 +352,15 @@ AC_ARG_ENABLE(cloudproviders,
+@@ -346,6 +346,15 @@ AC_ARG_ENABLE(cloudproviders,
                [AS_HELP_STRING([--enable-cloudproviders],
                                [enable libcloudproviders integration])],
                                [cloudproviders_set=yes])
@@ -66,21 +66,21 @@ index 2c4733b..18ae66c 100644
  AC_ARG_ENABLE(glx,
                [AS_HELP_STRING([--enable-glx],
                                [When enabled Gdk will try to initialize GLX])])
-@@ -1370,7 +1379,7 @@ CFLAGS="$saved_cflags"
+@@ -1345,7 +1354,7 @@ CFLAGS="$saved_cflags"
  LDFLAGS="$saved_ldflags"
  
  GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
--GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends epoxy >= epoxy_required_version $CLOUDPROVIDER_PACKAGES fribidi >= fribidi_required_version"
-+GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends $EPOXY_PACKAGES $CLOUDPROVIDER_PACKAGES fribidi >= fribidi_required_version"
+-GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends epoxy >= epoxy_required_version $CLOUDPROVIDER_PACKAGES $PROFILER_PACKAGES fribidi >= fribidi_required_version"
++GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends $EPOXY_PACKAGES $CLOUDPROVIDER_PACKAGES $PROFILER_PACKAGES fribidi >= fribidi_required_version"
  
  PKG_CHECK_MODULES(GDK_DEP, $GDK_PACKAGES $GDK_PRIVATE_PACKAGES)
  GDK_DEP_LIBS="$GDK_EXTRA_LIBS $GDK_DEP_LIBS $MATH_LIB"
-@@ -1404,7 +1413,7 @@ fi
+@@ -1379,7 +1388,7 @@ fi
  PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
  
  GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version"
--GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= epoxy_required_version fribidi >= fribidi_required_version"
-+GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $EPOXY_PACKAGES fribidi >= fribidi_required_version"
+-GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES epoxy >= epoxy_required_version fribidi >= fribidi_required_version"
++GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $EPOXY_PACKAGES fribidi >= fribidi_required_version"
  if test "x$enable_x11_backend" = xyes -o "x$enable_wayland_backend" = xyes; then
    GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"
  fi
@@ -168,7 +168,7 @@ index b51e4ae..82409c7 100644
    return TRUE;
  }
 diff --git a/docs/tools/Makefile.am b/docs/tools/Makefile.am
-index 6a6d70f..5cdf312 100644
+index bec43e3..189e8fc 100644
 --- a/docs/tools/Makefile.am
 +++ b/docs/tools/Makefile.am
 @@ -9,13 +9,18 @@ AM_CPPFLAGS = \
@@ -210,7 +210,7 @@ index 932daf1..54239d6 100644
  
    return info;
 diff --git a/gdk/Makefile.am b/gdk/Makefile.am
-index 689ee52..d6b4e70 100644
+index 479d6a1..7edbee8 100644
 --- a/gdk/Makefile.am
 +++ b/gdk/Makefile.am
 @@ -274,7 +274,6 @@ x11_introspection_files = 		\
@@ -243,10 +243,10 @@ index 689ee52..d6b4e70 100644
  GdkX11_3_0_gir_SCANNERFLAGS = 		\
  	--identifier-prefix=Gdk		\
 diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
-index 06d4187..832711c 100644
+index 240c99f..9eb49bf 100644
 --- a/gdk/gdkdisplay.c
 +++ b/gdk/gdkdisplay.c
-@@ -2416,7 +2416,9 @@ gboolean
+@@ -2419,7 +2419,9 @@ gboolean
  gdk_display_make_gl_context_current (GdkDisplay   *display,
                                       GdkGLContext *context)
  {
@@ -380,7 +380,7 @@ index dfbed63..556f0a3 100644
  
  /**
 diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
-index 1416409..e3b5630 100644
+index 6ae0f86..4e48a2a 100644
 --- a/gdk/gdkwindow.c
 +++ b/gdk/gdkwindow.c
 @@ -45,7 +45,9 @@
@@ -393,7 +393,7 @@ index 1416409..e3b5630 100644
  
  /* for the use of round() */
  #include "fallback-c89.c"
-@@ -2822,6 +2824,13 @@ gdk_window_get_paint_gl_context (GdkWindow  *window,
+@@ -2844,6 +2846,13 @@ gdk_window_get_paint_gl_context (GdkWindow  *window,
  {
    GError *internal_error = NULL;
  
@@ -407,7 +407,7 @@ index 1416409..e3b5630 100644
    if (_gdk_gl_flags & GDK_GL_DISABLE)
      {
        g_set_error_literal (error, GDK_GL_ERROR,
-@@ -2957,6 +2966,7 @@ gdk_window_begin_paint_internal (GdkWindow            *window,
+@@ -2979,6 +2988,7 @@ gdk_window_begin_paint_internal (GdkWindow            *window,
          }
        else
          {
@@ -415,7 +415,7 @@ index 1416409..e3b5630 100644
  	  gdk_gl_context_make_current (context);
            /* With gl we always need a surface to combine the gl
               drawing with the native drawing. */
-@@ -2971,6 +2981,7 @@ gdk_window_begin_paint_internal (GdkWindow            *window,
+@@ -2993,6 +3003,7 @@ gdk_window_begin_paint_internal (GdkWindow            *window,
            glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
  
            glViewport (0, 0, ww, wh);
@@ -423,7 +423,7 @@ index 1416409..e3b5630 100644
          }
      }
  
-@@ -3034,6 +3045,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
+@@ -3056,6 +3067,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
  
            gdk_gl_context_make_current (window->gl_paint_context);
  
@@ -431,7 +431,7 @@ index 1416409..e3b5630 100644
            if (!cairo_region_is_empty (opaque_region))
              gdk_gl_texture_from_surface (window->current_paint.surface,
                                           opaque_region);
-@@ -3044,6 +3056,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
+@@ -3066,6 +3078,7 @@ gdk_window_end_paint_internal (GdkWindow *window)
                                             window->current_paint.need_blend_region);
                glDisable(GL_BLEND);
              }
@@ -440,7 +440,7 @@ index 1416409..e3b5630 100644
            cairo_region_destroy (opaque_region);
  
 diff --git a/gdk/x11/Makefile.am b/gdk/x11/Makefile.am
-index 6289f3a..cbbac79 100644
+index 32b1f24..6352313 100644
 --- a/gdk/x11/Makefile.am
 +++ b/gdk/x11/Makefile.am
 @@ -40,8 +40,6 @@ libgdk_x11_la_SOURCES = 	\
@@ -494,7 +494,7 @@ index 6289f3a..cbbac79 100644
  	gdkx11keys.h		\
  	gdkx11monitor.h		\
  	gdkx11property.h	\
-@@ -87,9 +102,16 @@ libgdkx11include_HEADERS = 	\
+@@ -87,10 +102,17 @@ libgdkx11include_HEADERS = 	\
  	gdkx11visual.h		\
  	gdkx11window.h
  
@@ -506,13 +506,14 @@ index 6289f3a..cbbac79 100644
  # don't seem to be correctly expanded for the dist files.
  EXTRA_DIST += 			\
 +	gdkx.h			\
- 	gdksettings.c
+ 	gdksettings.c	\
+ 	meson.build
  
 +MAINTAINERCLEANFILES = gdkx.h
 +
  -include $(top_srcdir)/git.mk
 diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
-index 5b95196..9a2f2a2 100644
+index 817944e..e7a2947 100644
 --- a/gdk/x11/gdkdisplay-x11.c
 +++ b/gdk/x11/gdkdisplay-x11.c
 @@ -37,7 +37,9 @@
@@ -523,9 +524,9 @@ index 5b95196..9a2f2a2 100644
  #include "gdkglcontext-x11.h"
 +#endif
  #include "gdk-private.h"
+ #include "gdkprofilerprivate.h"
  
- #include <glib.h>
-@@ -3184,7 +3186,9 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
+@@ -3188,7 +3190,9 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
    display_class->text_property_to_utf8_list = _gdk_x11_display_text_property_to_utf8_list;
    display_class->utf8_to_string_target = _gdk_x11_display_utf8_to_string_target;
  
@@ -537,10 +538,10 @@ index 5b95196..9a2f2a2 100644
    display_class->get_default_seat = gdk_x11_display_get_default_seat;
  
 diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
-index 272cecd..2bb34ac 100644
+index 8939ae9..931bff9 100644
 --- a/gdk/x11/gdkscreen-x11.c
 +++ b/gdk/x11/gdkscreen-x11.c
-@@ -1675,3 +1675,8 @@ gdk_x11_screen_get_current_desktop (GdkScreen *screen)
+@@ -1723,3 +1723,8 @@ gdk_x11_screen_get_current_desktop (GdkScreen *screen)
  {
    return get_netwm_cardinal_property (screen, "_NET_CURRENT_DESKTOP");
  }
@@ -550,7 +551,7 @@ index 272cecd..2bb34ac 100644
 +void _gdk_x11_screen_update_visuals_for_gl (GdkScreen *screen) {}
 +#endif
 diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
-index f92a146..89f900a 100644
+index 1fe7b90..d23a347 100644
 --- a/gdk/x11/gdkwindow-x11.c
 +++ b/gdk/x11/gdkwindow-x11.c
 @@ -36,7 +36,9 @@
@@ -563,7 +564,7 @@ index f92a146..89f900a 100644
  #include "gdkprivate-x11.h"
  #include "gdk-private.h"
  
-@@ -5839,7 +5841,9 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
+@@ -5861,7 +5863,9 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
    impl_class->set_opaque_region = gdk_x11_window_set_opaque_region;
    impl_class->set_shadow_width = gdk_x11_window_set_shadow_width;
    impl_class->show_window_menu = gdk_x11_window_show_window_menu;
@@ -667,31 +668,23 @@ index 0000000..c9e2617
 +
 +#endif /* __GDK_X_H__ */
 diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index e556e9d..ce912d7 100644
+index eaca473..99352d1 100644
 --- a/gtk/Makefile.am
 +++ b/gtk/Makefile.am
-@@ -1441,7 +1441,6 @@ gtkprivatetypebuiltins.c: $(gtk_private_type_h_sources)  gtkprivatetypebuiltins.
- 	&& cp xgen-gptbc gtkprivatetypebuiltins.c  \
- 	&& rm -f xgen-gptbc
- 
--
- gtktypefuncs.c: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_srcdir)/gtk/*.h $(top_srcdir)/gtk/a11y/*.h $(top_srcdir)/gtk/deprecated/*.h $(top_srcdir)/gdk/*.h Makefile
- 	$(AM_V_GEN) export LC_ALL=C ; \
- 	  (echo '#undef GTK_COMPILATION' && echo '#include <gtk/gtkx.h>') > xgen-gtfsrc.c && \
-@@ -1449,7 +1448,7 @@ gtktypefuncs.c: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_src
+@@ -1449,7 +1449,7 @@ gtktypefuncs.inc: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_s
  	  ${CPP} $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-gtfsrc.c | \
  	  $(GREP) -o '\bg[td]k_[a-zA-Z0-9_]*_get_type\b' | \
  	  sort | uniq | \
 -	  $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; }' >> xgen-gtf \
 +	  $(SED) '{ s/^/*tp++ = /; s/$$/();/; s/^.*\(gdk_x11\|gtk_plug_\|gtk_socket_\).*$$/#ifdef GDK_WINDOWING_X11\n&\n#endif/; s/^.*gdk_x11_gl.*$$/#ifdef HAVE_OPENGL\n&\n#endif/; }' >> xgen-gtf \
  	&& cp xgen-gtf $@ && rm -f xgen-gtf
- $(srcdir)/gtktestutils.c: gtktypefuncs.c
+ $(srcdir)/gtktestutils.c: gtktypefuncs.inc
  
 diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c
-index ea383c0..bb4eb64 100644
+index 9a56443..7de0db2 100644
 --- a/gtk/gtkglarea.c
 +++ b/gtk/gtkglarea.c
-@@ -28,7 +28,9 @@
+@@ -29,7 +29,9 @@
  #include "gtkprivate.h"
  #include "gtkrender.h"
  
@@ -701,7 +694,7 @@ index ea383c0..bb4eb64 100644
  
  /**
   * SECTION:gtkglarea
-@@ -368,9 +370,12 @@ gtk_gl_area_real_create_context (GtkGLArea *area)
+@@ -369,9 +371,12 @@ gtk_gl_area_real_create_context (GtkGLArea *area)
  static void
  gtk_gl_area_resize (GtkGLArea *area, int width, int height)
  {
@@ -714,7 +707,7 @@ index ea383c0..bb4eb64 100644
  /*
   * Creates all the buffer objects needed for rendering the scene
   */
-@@ -482,6 +487,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
+@@ -483,6 +488,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
  
    priv->needs_render = TRUE;
  }
@@ -722,7 +715,7 @@ index ea383c0..bb4eb64 100644
  
  /**
   * gtk_gl_area_attach_buffers:
-@@ -500,6 +506,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
+@@ -501,6 +507,7 @@ gtk_gl_area_allocate_buffers (GtkGLArea *area)
  void
  gtk_gl_area_attach_buffers (GtkGLArea *area)
  {
@@ -730,7 +723,7 @@ index ea383c0..bb4eb64 100644
    GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
  
    g_return_if_fail (GTK_IS_GL_AREA (area));
-@@ -532,11 +539,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
+@@ -533,11 +540,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
          glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,
                                        GL_RENDERBUFFER_EXT, priv->depth_stencil_buffer);
      }
@@ -744,7 +737,7 @@ index ea383c0..bb4eb64 100644
    GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
  
    if (priv->context == NULL)
-@@ -568,6 +577,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
+@@ -569,6 +578,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
        glDeleteFramebuffersEXT (1, &priv->frame_buffer);
        priv->frame_buffer = 0;
      }
@@ -752,7 +745,7 @@ index ea383c0..bb4eb64 100644
  }
  
  static void
-@@ -678,6 +688,7 @@ gtk_gl_area_draw (GtkWidget *widget,
+@@ -679,6 +689,7 @@ gtk_gl_area_draw (GtkWidget *widget,
    GtkGLArea *area = GTK_GL_AREA (widget);
    GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (area);
    gboolean unused;
@@ -760,7 +753,7 @@ index ea383c0..bb4eb64 100644
    int w, h, scale;
    GLenum status;
  
-@@ -689,7 +700,6 @@ gtk_gl_area_draw (GtkWidget *widget,
+@@ -690,7 +701,6 @@ gtk_gl_area_draw (GtkWidget *widget,
                                       gtk_widget_get_allocated_height (widget));
        return FALSE;
      }
@@ -768,7 +761,7 @@ index ea383c0..bb4eb64 100644
    if (priv->context == NULL)
      return FALSE;
  
-@@ -735,6 +745,14 @@ gtk_gl_area_draw (GtkWidget *widget,
+@@ -736,6 +746,14 @@ gtk_gl_area_draw (GtkWidget *widget,
      }
  
    return TRUE;
@@ -831,7 +824,7 @@ index c241ec8..24576dd 100644
    if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ()))
      {
 diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 7c5ca99..e4a4546 100644
+index ee1e8b5..e6c6502 100644
 --- a/tests/Makefile.am
 +++ b/tests/Makefile.am
 @@ -80,8 +80,6 @@ noinst_PROGRAMS =  $(TEST_PROGS)	\
@@ -864,10 +857,10 @@ index 7c5ca99..e4a4546 100644
  noinst_PROGRAMS += testforeign
  endif
 diff --git a/testsuite/gtk/objects-finalize.c b/testsuite/gtk/objects-finalize.c
-index 0b3a519..07b096f 100644
+index 24540e3..e0f863a 100644
 --- a/testsuite/gtk/objects-finalize.c
 +++ b/testsuite/gtk/objects-finalize.c
-@@ -115,7 +115,9 @@ main (int argc, char **argv)
+@@ -116,7 +116,9 @@ main (int argc, char **argv)
  	  all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_CORE &&
  	  all_types[i] != GDK_TYPE_X11_DEVICE_MANAGER_XI2 &&
  	  all_types[i] != GDK_TYPE_X11_DISPLAY_MANAGER &&
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.24.8.bb b/meta/recipes-gnome/gtk+/gtk+3_3.24.13.bb
similarity index 84%
rename from meta/recipes-gnome/gtk+/gtk+3_3.24.8.bb
rename to meta/recipes-gnome/gtk+/gtk+3_3.24.13.bb
index d79b18bee03..18976b54c5c 100644
--- a/meta/recipes-gnome/gtk+/gtk+3_3.24.8.bb
+++ b/meta/recipes-gnome/gtk+/gtk+3_3.24.13.bb
@@ -8,8 +8,8 @@ SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar
            file://0003-Add-disable-opengl-configure-option.patch \
            file://link_fribidi.patch \
           "
-SRC_URI[md5sum] = "eeedde01856238114dcf4df3ebc942a5"
-SRC_URI[sha256sum] = "666962de9b9768fe9ca785b0e2f42c8b9db3868a12fa9b356b167238d70ac799"
+SRC_URI[md5sum] = "f65515e7bfa2199bd2188e871d69c686"
+SRC_URI[sha256sum] = "4c775c38cf1e3c534ef0ca52ca6c7a890fe169981af66141c713e054e68930a9"
 
 S = "${WORKDIR}/gtk+-${PV}"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 10/24] kbd: update to 2.2.0
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (7 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 09/24] gtk+3: update to 3.24.13 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 11/24] perl: update to 5.30.1 Alexander Kanavin
                   ` (15 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Rebase set-proper-path-of-resources.patch

Add a patch to address a string format error; as it modifies
a .l file, add a dependency on flex which is processing that into
C source code.

License-Update: file with copyright statements was replaced with original GPLv2 text
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...-analyze.l-add-missing-string-format.patch | 24 ++++++++
 .../kbd/set-proper-path-of-resources.patch    | 57 ++++++++++++-------
 .../kbd/{kbd_2.0.4.bb => kbd_2.2.0.bb}        | 11 ++--
 3 files changed, 66 insertions(+), 26 deletions(-)
 create mode 100644 meta/recipes-core/kbd/kbd/0001-analyze.l-add-missing-string-format.patch
 rename meta/recipes-core/kbd/{kbd_2.0.4.bb => kbd_2.2.0.bb} (86%)

diff --git a/meta/recipes-core/kbd/kbd/0001-analyze.l-add-missing-string-format.patch b/meta/recipes-core/kbd/kbd/0001-analyze.l-add-missing-string-format.patch
new file mode 100644
index 00000000000..8916fd9f5ee
--- /dev/null
+++ b/meta/recipes-core/kbd/kbd/0001-analyze.l-add-missing-string-format.patch
@@ -0,0 +1,24 @@
+From dc6bf2ae0835c6569b270e8e1f26a3173f3927d9 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 4 Dec 2019 13:14:01 +0100
+Subject: [PATCH] analyze.l: add missing string format
+
+Upstream-Status: Submitted [https://github.com/legionus/kbd/pull/35]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/libkeymap/analyze.l | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libkeymap/analyze.l b/src/libkeymap/analyze.l
+index e32ace6..de62f46 100644
+--- a/src/libkeymap/analyze.l
++++ b/src/libkeymap/analyze.l
+@@ -463,7 +463,7 @@ To                      to|To|TO
+ 
+ 					strerror_r(errno, buf, sizeof(buf));
+ 
+-					ERR(yyextra, buf);
++					ERR(yyextra, "%s", buf);
+ 					return(ERROR);
+ 				}
+ 
diff --git a/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch b/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
index a9a3ab8abfb..5872cef36b7 100644
--- a/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
+++ b/meta/recipes-core/kbd/kbd/set-proper-path-of-resources.patch
@@ -1,3 +1,8 @@
+From 7f953dd689155bc1224a3369205c310bb5b760a7 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Fri, 30 Sep 2016 16:49:55 +0800
+Subject: [PATCH] kbd: create ptest sub-package
+
 Upstream-Status: Inappropriate [embedded specific]
 
 kbd is out of source built, then the value of $(srcdir) is relative path of
@@ -13,38 +18,46 @@ run as expected.
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
 
-Index: kbd-2.0.4/tests/Makefile.am
-===================================================================
---- kbd-2.0.4.orig/tests/Makefile.am
-+++ kbd-2.0.4/tests/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CPPFLAGS = \
- 	-I$(srcdir)/../src/libkeymap \
+---
+ tests/Makefile.am           | 2 +-
+ tests/alt-is-meta.in        | 6 ++----
+ tests/dumpkeys-fulltable.in | 2 +-
+ 3 files changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index f32b9aa..973cd26 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -7,7 +7,7 @@ AM_CPPFLAGS = \
  	-I$(builddir)/../src/libkeymap \
--	-DDATADIR=\"$(srcdir)\" -DBUILDDIR=\"$(builddir)\"
-+	-DDATADIR=\".\" -DBUILDDIR=\"$(builddir)\"
+ 	-I$(srcdir)/../src/libkbdfile \
+ 	-I$(builddir)/../src/libkbdfile \
+-	-DDATADIR=\"$(srcdir)\" \
++	-DDATADIR=\".\" \
+ 	-DABS_DATADIR=\"$(realpath $(srcdir))\" \
+ 	-DBUILDDIR=\"$(builddir)\"
  
- AM_CFLAGS = $(CHECK_CFLAGS)
- LDADD  = $(top_builddir)/src/libkeymap/libkeymap.la $(CHECK_LIBS) @INTLLIBS@
-Index: kbd-2.0.4/tests/alt-is-meta.in
-===================================================================
---- kbd-2.0.4.orig/tests/alt-is-meta.in
-+++ kbd-2.0.4/tests/alt-is-meta.in
-@@ -7,8 +7,8 @@ cd "$cwd"
+diff --git a/tests/alt-is-meta.in b/tests/alt-is-meta.in
+index 3a1441f..772fb51 100755
+--- a/tests/alt-is-meta.in
++++ b/tests/alt-is-meta.in
+@@ -7,10 +7,8 @@ cd "$cwd"
  rc=0
  temp="$(mktemp "@BUILDDIR@/temp.XXXXXXXXX")"
  
--./libkeymap-showmaps "@DATADIR@"/alt-is-meta.map > "$temp" || rc=$?
--cmp -s "@DATADIR@//alt-is-meta.output" "$temp" || rc=$?
+-datadir="@DATADIR@/data/alt-is-meta"
+-
+-./libkeymap-showmaps "$datadir"/alt-is-meta.map > "$temp" || rc=$?
+-cmp -s "$datadir/alt-is-meta.output" "$temp" || rc=$?
 +./libkeymap-showmaps ./alt-is-meta.map > "$temp" || rc=$?
 +cmp -s "./alt-is-meta.output" "$temp" || rc=$?
  
  if [ "$rc" != 0 ]; then
  	printf 'failed\n'
-Index: kbd-2.0.4/tests/dumpkeys-fulltable.in
-===================================================================
---- kbd-2.0.4.orig/tests/dumpkeys-fulltable.in
-+++ kbd-2.0.4/tests/dumpkeys-fulltable.in
+diff --git a/tests/dumpkeys-fulltable.in b/tests/dumpkeys-fulltable.in
+index a3a5ece..67a73ef 100755
+--- a/tests/dumpkeys-fulltable.in
++++ b/tests/dumpkeys-fulltable.in
 @@ -5,7 +5,7 @@ cwd="$(readlink -ev "${0%/*}")"
  cd "$cwd"
  
diff --git a/meta/recipes-core/kbd/kbd_2.0.4.bb b/meta/recipes-core/kbd/kbd_2.2.0.bb
similarity index 86%
rename from meta/recipes-core/kbd/kbd_2.0.4.bb
rename to meta/recipes-core/kbd/kbd_2.2.0.bb
index 4af3256fff0..9556302ab51 100644
--- a/meta/recipes-core/kbd/kbd_2.0.4.bb
+++ b/meta/recipes-core/kbd/kbd_2.2.0.bb
@@ -2,10 +2,12 @@ SUMMARY = "Keytable files and keyboard utilities"
 HOMEPAGE = "http://www.kbd-project.org/"
 # everything minus console-fonts is GPLv2+
 LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a5fcc36121d93e1f69d96a313078c8b5"
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
 
 inherit autotools gettext ptest pkgconfig
 
+DEPENDS += "flex-native"
+
 RREPLACES_${PN} = "console-tools"
 RPROVIDES_${PN} = "console-tools"
 RCONFLICTS_${PN} = "console-tools"
@@ -13,10 +15,11 @@ RCONFLICTS_${PN} = "console-tools"
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
            file://run-ptest \
            ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://set-proper-path-of-resources.patch', '', d)} \
-          "
+           file://0001-analyze.l-add-missing-string-format.patch \
+           "
 
-SRC_URI[md5sum] = "c1635a5a83b63aca7f97a3eab39ebaa6"
-SRC_URI[sha256sum] = "5fd90af6beb225a9bb9b9fb414c090fba53c9a55793e172f508cd43652e59a88"
+SRC_URI[md5sum] = "d1d7ae0b5fb875dc082731e09cd0c8bc"
+SRC_URI[sha256sum] = "21a1bc5f6fb3b18ce9fdd717e4533368060a3182a39c7155eaf7ec0f5f83e9f7"
 
 PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests','', d)} \
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 11/24] perl: update to 5.30.1
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (8 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 10/24] kbd: update to 2.2.0 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-09 23:41   ` Richard Purdie
  2019-12-05 15:43 ` [PATCH 12/24] bluez: update 5.50 -> 5.52 Alexander Kanavin
                   ` (14 subsequent siblings)
  24 siblings, 1 reply; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop fix-setgroup.patch as the upstream has fixed the issue.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../perl/files/fix-setgroup.patch             | 49 -------------------
 .../perl/{perl_5.30.0.bb => perl_5.30.1.bb}   | 11 ++---
 2 files changed, 5 insertions(+), 55 deletions(-)
 delete mode 100644 meta/recipes-devtools/perl/files/fix-setgroup.patch
 rename meta/recipes-devtools/perl/{perl_5.30.0.bb => perl_5.30.1.bb} (97%)

diff --git a/meta/recipes-devtools/perl/files/fix-setgroup.patch b/meta/recipes-devtools/perl/files/fix-setgroup.patch
deleted file mode 100644
index 2b490e60676..00000000000
--- a/meta/recipes-devtools/perl/files/fix-setgroup.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Test script to reproduce the problem:
-
-#!/usr/bin/env perl
-$) = "2 2";
-print $!;
-
-Result from perl 5.28 under strace:
-
-setgroups(1, [2])                       = 0
-setresgid(-1, 2, -1)                    = 0
-
-Result from perl 5.30 under strace:
-
-setgroups(1, [-1])                      = -1 EINVAL (Invalid argument)
-setresgid(-1, 2, -1)                    = 0
-
-Patch which broke this upstream:
-https://perl5.git.perl.org/perl.git/commitdiff/5d4a52b5c68a11bfc97c2e24806993b84a61eade
-
-Issue is that the new function changes the endptr to the end of the
-scanned number and needs to be reset to the end of the string for 
-each iteration of the loop.
-
-[YOCTO #13391]
-
-RP
-2019/6/14
-Upstream-Status: Pending
-
-Index: perl-5.30.0/mg.c
-===================================================================
---- perl-5.30.0.orig/mg.c
-+++ perl-5.30.0/mg.c
-@@ -3179,6 +3256,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
- 	    const char *p = SvPV_const(sv, len);
-             Groups_t *gary = NULL;
-             const char* endptr = p + len;
-+            const char* realend = p + len;
-             UV uv;
- #ifdef _SC_NGROUPS_MAX
-            int maxgrp = sysconf(_SC_NGROUPS_MAX);
-@@ -3209,6 +3287,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
-                     Newx(gary, i + 1, Groups_t);
-                 else
-                     Renew(gary, i + 1, Groups_t);
-+                endptr = realend;
-                 if (grok_atoUV(p, &uv, &endptr))
-                     gary[i] = (Groups_t)uv;
-                 else {
diff --git a/meta/recipes-devtools/perl/perl_5.30.0.bb b/meta/recipes-devtools/perl/perl_5.30.1.bb
similarity index 97%
rename from meta/recipes-devtools/perl/perl_5.30.0.bb
rename to meta/recipes-devtools/perl/perl_5.30.1.bb
index 1d906a75150..9b1f1af0729 100644
--- a/meta/recipes-devtools/perl/perl_5.30.0.bb
+++ b/meta/recipes-devtools/perl/perl_5.30.1.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://Copying;md5=5b122a36d0f6dc55279a0ebc69f3c60b \
 
 
 SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
-           https://github.com/arsv/perl-cross/releases/download/1.3/perl-cross-1.3.tar.gz;name=perl-cross \
+           https://github.com/arsv/perl-cross/releases/download/1.3.1/perl-cross-1.3.1.tar.gz;name=perl-cross \
            file://perl-rdepends.txt \
            file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \
            file://0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch \
@@ -18,7 +18,6 @@ SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
            file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \
            file://perl-dynloader.patch \
            file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \
-           file://fix-setgroup.patch \
            file://0001-enc2xs-Add-environment-variable-to-suppress-comments.patch \
            file://0002-Constant-Fix-up-shebang.patch \
            "
@@ -26,10 +25,10 @@ SRC_URI_append_class-native = " \
            file://perl-configpm-switch.patch \
 "
 
-SRC_URI[perl.md5sum] = "9770584cdf9b5631c38097645ce33549"
-SRC_URI[perl.sha256sum] = "851213c754d98ccff042caa40ba7a796b2cee88c5325f121be5cbb61bbf975f2"
-SRC_URI[perl-cross.md5sum] = "4dda3daf9c4fe42b3d6a5dd052852a48"
-SRC_URI[perl-cross.sha256sum] = "49edea1ea2cd6c5c47386ca71beda8d150c748835781354dbe7f75b1df27e703"
+SRC_URI[perl.md5sum] = "6438eb7b8db9bbde28e01086de376a46"
+SRC_URI[perl.sha256sum] = "bf3d25571ff1ee94186177c2cdef87867fd6a14aa5a84f0b1fb7bf798f42f964"
+SRC_URI[perl-cross.md5sum] = "1e463b105cfa56d251a86979af23e3a7"
+SRC_URI[perl-cross.sha256sum] = "edce0b0c2f725e2db3f203d6d8e9f3f7161256f5d1590551e40694f21200141d"
 
 S = "${WORKDIR}/perl-${PV}"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 12/24] bluez: update 5.50 -> 5.52
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (9 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 11/24] perl: update to 5.30.1 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 13/24] libsoup-2.4: update to 2.68.3 Alexander Kanavin
                   ` (13 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop a big pile of backports.

Disable zsh completions, as they're unlikely to be useful.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-connectivity/bluez5/bluez5.inc   |  22 +-
 ...d-without-systemd-in-the-user-sessio.patch |  12 +-
 ...kefile.am-Fix-a-race-issue-for-tools.patch |  30 --
 ...x-build-after-y2038-changes-in-glibc.patch |  68 ---
 ...1-tools-btpclient.c-include-signal.h.patch |  30 --
 .../bluez5/bluez5/CVE-2018-10910.patch        | 505 ------------------
 .../bluez5/bluez5/gcc9-fixes.patch            | 301 -----------
 .../bluez5/bluez5/out-of-tree.patch           |  26 -
 .../bluez5/{bluez5_5.50.bb => bluez5_5.52.bb} |   4 +-
 9 files changed, 16 insertions(+), 982 deletions(-)
 delete mode 100644 meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch
 delete mode 100644 meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch
 delete mode 100644 meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch
 delete mode 100644 meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch
 delete mode 100644 meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch
 delete mode 100644 meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
 rename meta/recipes-connectivity/bluez5/{bluez5_5.50.bb => bluez5_5.52.bb} (91%)

diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc
index 484509350b0..150d909d735 100644
--- a/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -46,20 +46,13 @@ PACKAGECONFIG[mesh] = "--enable-mesh,--disable-mesh, json-c ell"
 PACKAGECONFIG[btpclient] = "--enable-btpclient,--disable-btpclient, ell"
 PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
 
-SRC_URI = "\
-    ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
-    file://out-of-tree.patch \
-    file://init \
-    file://run-ptest \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
-    file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
-    file://0001-test-gatt-Fix-hung-issue.patch \
-    file://0001-Makefile.am-Fix-a-race-issue-for-tools.patch \
-    file://CVE-2018-10910.patch \
-    file://gcc9-fixes.patch \
-    file://0001-tools-Fix-build-after-y2038-changes-in-glibc.patch \
-    file://0001-tools-btpclient.c-include-signal.h.patch \
-"
+SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
+           file://init \
+           file://run-ptest \
+           ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \
+           file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
+           file://0001-test-gatt-Fix-hung-issue.patch \
+           "
 S = "${WORKDIR}/bluez-${PV}"
 
 CVE_PRODUCT = "bluez"
@@ -70,6 +63,7 @@ EXTRA_OECONF = "\
   --enable-test \
   --enable-datafiles \
   --enable-library \
+  --without-zsh-completion-dir \
 "
 
 # bluez5 builds a large number of useful utilities but does not
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
index da7140922d9..618ed734a96 100644
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
+++ b/meta/recipes-connectivity/bluez5/bluez5/0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch
@@ -1,4 +1,4 @@
-From 99ccdbe155028c4c789803a429072675b87d0c3a Mon Sep 17 00:00:00 2001
+From f74eb97c9fb3c0ee2895742e773ac6a3c41c999c Mon Sep 17 00:00:00 2001
 From: Giovanni Campagna <gcampagna-cNUdlRotFMnNLxjTenLetw@public.gmane.org>
 Date: Sat, 12 Oct 2013 17:45:25 +0200
 Subject: [PATCH] Allow using obexd without systemd in the user session
@@ -17,22 +17,22 @@ http://thread.gmane.org/gmane.linux.bluez.kernel/38725/focus=38843
 Signed-off-by: Javier Viguera <javier.viguera@digi.com>
 
 ---
- Makefile.obexd                                                  | 4 ++--
- obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +-
+ Makefile.obexd                                                | 4 ++--
+ .../src/{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +-
  2 files changed, 3 insertions(+), 3 deletions(-)
  rename obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} (76%)
 
 diff --git a/Makefile.obexd b/Makefile.obexd
-index c462692..0325f66 100644
+index de59d29..73004a3 100644
 --- a/Makefile.obexd
 +++ b/Makefile.obexd
 @@ -1,12 +1,12 @@
  if SYSTEMD
- systemduserunitdir = @SYSTEMD_USERUNITDIR@
+ systemduserunitdir = $(SYSTEMD_USERUNITDIR)
  systemduserunit_DATA = obexd/src/obex.service
 +endif
  
- dbussessionbusdir = @DBUS_SESSIONBUSDIR@
+ dbussessionbusdir = $(DBUS_SESSIONBUSDIR)
  dbussessionbus_DATA = obexd/src/org.bluez.obex.service
 -endif
  
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch
deleted file mode 100644
index b6cb978393e..00000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-Makefile.am-Fix-a-race-issue-for-tools.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 117c41242c01e057295aed80ed973c6dc7e35fe2 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Tue, 8 Oct 2019 11:01:56 +0100
-Subject: [PATCH BlueZ] Makefile.am: add missing mkdir in rules generation
-
-In parallel out-of-tree builds it's possible that tools/*.rules are
-generated before the target directory has been implicitly created. Solve this by
-creating the directory before writing into it.
----
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.am b/Makefile.am
-index 2ac28b23d..e7bcd2366 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -589,6 +589,7 @@ src/builtin.h: src/genbuiltin $(builtin_sources)
- 	$(AM_V_GEN)$(srcdir)/src/genbuiltin $(builtin_modules) > $@
- 
- tools/%.rules:
-+	$(AM_V_at)$(MKDIR_P) tools
- 	$(AM_V_GEN)cp $(srcdir)/$(subst 97-,,$@) $@
- 
- $(lib_libbluetooth_la_OBJECTS): $(local_headers)
--- 
-2.20.1
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch
deleted file mode 100644
index 9ca20ae53b9..00000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-Fix-build-after-y2038-changes-in-glibc.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From f36f71f60b1e68c0f12e615b9b128d089ec3dd19 Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Fri, 7 Jun 2019 09:51:33 +0200
-Subject: [PATCH] tools: Fix build after y2038 changes in glibc
-
-The 32-bit SIOCGSTAMP has been deprecated. Use the deprecated name
-to fix the build.
-
-Upstream-Status: backport commit f36f71f60b1e68c0f12e615b9b128d089ec3dd19
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-
----
- tools/l2test.c | 6 +++++-
- tools/rctest.c | 6 +++++-
- 2 files changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/tools/l2test.c b/tools/l2test.c
-index e755ac881..e787c2ce2 100644
---- a/tools/l2test.c
-+++ b/tools/l2test.c
-@@ -55,6 +55,10 @@
- #define BREDR_DEFAULT_PSM	0x1011
- #define LE_DEFAULT_PSM		0x0080
- 
-+#ifndef SIOCGSTAMP_OLD
-+#define SIOCGSTAMP_OLD SIOCGSTAMP
-+#endif
-+
- /* Test modes */
- enum {
- 	SEND,
-@@ -907,7 +911,7 @@ static void recv_mode(int sk)
- 			if (timestamp) {
- 				struct timeval tv;
- 
--				if (ioctl(sk, SIOCGSTAMP, &tv) < 0) {
-+				if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) {
- 					timestamp = 0;
- 					memset(ts, 0, sizeof(ts));
- 				} else {
-diff --git a/tools/rctest.c b/tools/rctest.c
-index 94490f462..bc8ed875d 100644
---- a/tools/rctest.c
-+++ b/tools/rctest.c
-@@ -50,6 +50,10 @@
- 
- #include "src/shared/util.h"
- 
-+#ifndef SIOCGSTAMP_OLD
-+#define SIOCGSTAMP_OLD SIOCGSTAMP
-+#endif
-+
- /* Test modes */
- enum {
- 	SEND,
-@@ -505,7 +509,7 @@ static void recv_mode(int sk)
- 			if (timestamp) {
- 				struct timeval tv;
- 
--				if (ioctl(sk, SIOCGSTAMP, &tv) < 0) {
-+				if (ioctl(sk, SIOCGSTAMP_OLD, &tv) < 0) {
- 					timestamp = 0;
- 					memset(ts, 0, sizeof(ts));
- 				} else {
--- 
-2.19.1
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch b/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch
deleted file mode 100644
index 620aaabc687..00000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/0001-tools-btpclient.c-include-signal.h.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 0b1766514f6847c7367fce07f19a750ec74c11a6 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Thu, 26 Sep 2019 16:19:34 +0800
-Subject: [PATCH] tools/btpclient.c: include signal.h
-
-Fix compile failure when configure --enable-btpclient:
-btpclient.c:2834:7: error: 'SIGINT' undeclared (first use in this function)
-
-Upstream-Status: Backport [A subset of the full fix that went upstream]
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- tools/btpclient.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tools/btpclient.c b/tools/btpclient.c
-index b217df5..aece7fe 100644
---- a/tools/btpclient.c
-+++ b/tools/btpclient.c
-@@ -29,6 +29,7 @@
- #include <stdlib.h>
- #include <assert.h>
- #include <getopt.h>
-+#include <signal.h>
- 
- #include <ell/ell.h>
- 
--- 
-2.7.4
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch b/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch
deleted file mode 100644
index 2a780774439..00000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/CVE-2018-10910.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-From 977321f2c7f974ea68a3d90df296c66189a3f254 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Fri, 21 Jun 2019 17:57:35 +0900
-Subject: [PATCH] CVE-2018-10910
-
-A bug in Bluez may allow for the Bluetooth Discoverable state being set to on
-when no Bluetooth agent is registered with the system. This situation could
-lead to the unauthorized pairing of certain Bluetooth devices without any
-form of authentication.
-
-CVE: CVE-2018-10910
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-Subject:    [PATCH BlueZ 1/4] client: Add discoverable-timeout command
-From:       Luiz Augusto von Dentz <luiz.dentz () gmail ! com>
-Date:       2018-07-25 10:20:32
-Message-ID: 20180725102035.19439-1-luiz.dentz () gmail ! com
-[Download RAW message or body]
-
-From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
-
-This adds discoverable-timeout command which can be used to get/set
-DiscoverableTimeout property:
-
-[bluetooth]# discoverable-timeout 180
-Changing discoverable-timeout 180 succeeded
----
- client/main.c       |  82 +++++++++++++++++++++++++++++++++-
- doc/adapter-api.txt |   6 +++
- src/adapter.c       | 125 ++++++++++++++++++++++++++++++++++++++++++++++------
- 3 files changed, 198 insertions(+), 15 deletions(-)
-
-diff --git a/client/main.c b/client/main.c
-index 87323d8..1a66a3a 100644
---- a/client/main.c
-+++ b/client/main.c
-@@ -877,6 +877,7 @@ static void cmd_show(int argc, char *argv[])
- 	print_property(proxy, "Class");
- 	print_property(proxy, "Powered");
- 	print_property(proxy, "Discoverable");
-+	print_property(proxy, "DiscoverableTimeout");
- 	print_property(proxy, "Pairable");
- 	print_uuids(proxy);
- 	print_property(proxy, "Modalias");
-@@ -1061,6 +1062,47 @@ static void cmd_discoverable(int argc, char *argv[])
- 	return bt_shell_noninteractive_quit(EXIT_FAILURE);
- }
- 
-+static void cmd_discoverable_timeout(int argc, char *argv[])
-+{
-+	uint32_t value;
-+	char *endptr = NULL;
-+	char *str;
-+
-+	if (argc < 2) {
-+		DBusMessageIter iter;
-+
-+		if (!g_dbus_proxy_get_property(default_ctrl->proxy,
-+					"DiscoverableTimeout", &iter)) {
-+			bt_shell_printf("Unable to get DiscoverableTimeout\n");
-+			return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+		}
-+
-+		dbus_message_iter_get_basic(&iter, &value);
-+
-+		bt_shell_printf("DiscoverableTimeout: %d seconds\n", value);
-+
-+		return;
-+	}
-+
-+	value = strtol(argv[1], &endptr, 0);
-+	if (!endptr || *endptr != '\0' || value > UINT32_MAX) {
-+		bt_shell_printf("Invalid argument\n");
-+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+	}
-+
-+	str = g_strdup_printf("discoverable-timeout %d", value);
-+
-+	if (g_dbus_proxy_set_property_basic(default_ctrl->proxy,
-+					"DiscoverableTimeout",
-+					DBUS_TYPE_UINT32, &value,
-+					generic_callback, str, g_free))
-+		return;
-+
-+	g_free(str);
-+
-+	return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+}
-+
- static void cmd_agent(int argc, char *argv[])
- {
- 	dbus_bool_t enable;
-@@ -1124,6 +1166,7 @@ static struct set_discovery_filter_args {
- 	char **uuids;
- 	size_t uuids_len;
- 	dbus_bool_t duplicate;
-+	dbus_bool_t discoverable;
- 	bool set;
- } filter = {
- 	.rssi = DISTANCE_VAL_INVALID,
-@@ -1163,6 +1206,11 @@ static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data)
- 						DBUS_TYPE_BOOLEAN,
- 						&args->duplicate);
- 
-+	if (args->discoverable)
-+		g_dbus_dict_append_entry(&dict, "Discoverable",
-+						DBUS_TYPE_BOOLEAN,
-+						&args->discoverable);
-+
- 	dbus_message_iter_close_container(iter, &dict);
- }
- 
-@@ -1320,6 +1368,26 @@ static void cmd_scan_filter_duplicate_data(int argc, char *argv[])
- 	filter.set = false;
- }
- 
-+static void cmd_scan_filter_discoverable(int argc, char *argv[])
-+{
-+	if (argc < 2 || !strlen(argv[1])) {
-+		bt_shell_printf("Discoverable: %s\n",
-+				filter.discoverable ? "on" : "off");
-+		return bt_shell_noninteractive_quit(EXIT_SUCCESS);
-+	}
-+
-+	if (!strcmp(argv[1], "on"))
-+		filter.discoverable = true;
-+	else if (!strcmp(argv[1], "off"))
-+		filter.discoverable = false;
-+	else {
-+		bt_shell_printf("Invalid option: %s\n", argv[1]);
-+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
-+	}
-+
-+	filter.set = false;
-+}
-+
- static void filter_clear_uuids(void)
- {
- 	g_strfreev(filter.uuids);
-@@ -1348,6 +1416,11 @@ static void filter_clear_duplicate(void)
- 	filter.duplicate = false;
- }
- 
-+static void filter_clear_discoverable(void)
-+{
-+	filter.discoverable = false;
-+}
-+
- struct clear_entry {
- 	const char *name;
- 	void (*clear) (void);
-@@ -1359,6 +1432,7 @@ static const struct clear_entry filter_clear[] = {
- 	{ "pathloss", filter_clear_pathloss },
- 	{ "transport", filter_clear_transport },
- 	{ "duplicate-data", filter_clear_duplicate },
-+	{ "discoverable", filter_clear_discoverable },
- 	{}
- };
- 
-@@ -2468,7 +2542,11 @@ static const struct bt_shell_menu scan_menu = {
- 	{ "duplicate-data", "[on/off]", cmd_scan_filter_duplicate_data,
- 				"Set/Get duplicate data filter",
- 				NULL },
--	{ "clear", "[uuids/rssi/pathloss/transport/duplicate-data]",
-+	{ "discoverable", "[on/off]", cmd_scan_filter_discoverable,
-+				"Set/Get discoverable filter",
-+				NULL },
-+	{ "clear",
-+		"[uuids/rssi/pathloss/transport/duplicate-data/discoverable]",
- 				cmd_scan_filter_clear,
- 				"Clears discovery filter.",
- 				filter_clear_generator },
-@@ -2549,6 +2627,8 @@ static const struct bt_shell_menu main_menu = {
- 	{ "discoverable", "<on/off>", cmd_discoverable,
- 					"Set controller discoverable mode",
- 							NULL },
-+	{ "discoverable-timeout", "[value]", cmd_discoverable_timeout,
-+					"Set discoverable timeout", NULL },
- 	{ "agent",        "<on/off/capability>", cmd_agent,
- 				"Enable/disable agent with given capability",
- 							capability_generator},
-diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
-index d14d0ca..4791af2 100644
---- a/doc/adapter-api.txt
-+++ b/doc/adapter-api.txt
-@@ -113,6 +113,12 @@ Methods		void StartDiscovery()
- 				generated for either ManufacturerData and
- 				ServiceData everytime they are discovered.
- 
-+			bool Discoverable (Default: false)
-+
-+				Make adapter discoverable while discovering,
-+				if the adapter is already discoverable this
-+				setting this filter won't do anything.
-+
- 			When discovery filter is set, Device objects will be
- 			created as new devices with matching criteria are
- 			discovered regardless of they are connectable or
-diff --git a/src/adapter.c b/src/adapter.c
-index af340fd..822bd34 100644
---- a/src/adapter.c
-+++ b/src/adapter.c
-@@ -157,6 +157,7 @@ struct discovery_filter {
- 	int16_t rssi;
- 	GSList *uuids;
- 	bool duplicate;
-+	bool discoverable;
- };
- 
- struct watch_client {
-@@ -196,6 +197,7 @@ struct btd_adapter {
- 	char *name;			/* controller device name */
- 	char *short_name;		/* controller short name */
- 	uint32_t supported_settings;	/* controller supported settings */
-+	uint32_t pending_settings;	/* pending controller settings */
- 	uint32_t current_settings;	/* current controller settings */
- 
- 	char *path;			/* adapter object path */
-@@ -213,6 +215,7 @@ struct btd_adapter {
- 
- 	bool discovering;		/* discovering property state */
- 	bool filtered_discovery;	/* we are doing filtered discovery */
-+	bool filtered_discoverable;	/* we are doing filtered discovery */
- 	bool no_scan_restart_delay;	/* when this flag is set, restart scan
- 					 * without delay */
- 	uint8_t discovery_type;		/* current active discovery type */
-@@ -509,8 +512,10 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings)
- 	changed_mask = adapter->current_settings ^ settings;
- 
- 	adapter->current_settings = settings;
-+	adapter->pending_settings &= ~changed_mask;
- 
- 	DBG("Changed settings: 0x%08x", changed_mask);
-+	DBG("Pending settings: 0x%08x", adapter->pending_settings);
- 
- 	if (changed_mask & MGMT_SETTING_POWERED) {
- 	        g_dbus_emit_property_changed(dbus_conn, adapter->path,
-@@ -596,10 +601,31 @@ static bool set_mode(struct btd_adapter *adapter, uint16_t opcode,
- 							uint8_t mode)
- {
- 	struct mgmt_mode cp;
-+	uint32_t setting = 0;
- 
- 	memset(&cp, 0, sizeof(cp));
- 	cp.val = mode;
- 
-+	switch (mode) {
-+	case MGMT_OP_SET_POWERED:
-+		setting = MGMT_SETTING_POWERED;
-+		break;
-+	case MGMT_OP_SET_CONNECTABLE:
-+		setting = MGMT_SETTING_CONNECTABLE;
-+		break;
-+	case MGMT_OP_SET_FAST_CONNECTABLE:
-+		setting = MGMT_SETTING_FAST_CONNECTABLE;
-+		break;
-+	case MGMT_OP_SET_DISCOVERABLE:
-+		setting = MGMT_SETTING_DISCOVERABLE;
-+		break;
-+	case MGMT_OP_SET_BONDABLE:
-+		setting = MGMT_SETTING_DISCOVERABLE;
-+		break;
-+	}
-+
-+	adapter->pending_settings |= setting;
-+
- 	DBG("sending set mode command for index %u", adapter->dev_id);
- 
- 	if (mgmt_send(adapter->mgmt, opcode,
-@@ -1818,7 +1844,17 @@ static void discovery_free(void *user_data)
- 	g_free(client);
- }
- 
--static void discovery_remove(struct watch_client *client)
-+static bool set_filtered_discoverable(struct btd_adapter *adapter, bool enable)
-+{
-+	if (adapter->filtered_discoverable == enable)
-+		return true;
-+
-+	adapter->filtered_discoverable = enable;
-+
-+	return set_discoverable(adapter, enable, 0);
-+}
-+
-+static void discovery_remove(struct watch_client *client, bool exit)
- {
- 	struct btd_adapter *adapter = client->adapter;
- 
-@@ -1830,7 +1866,27 @@ static void discovery_remove(struct watch_client *client)
- 	adapter->discovery_list = g_slist_remove(adapter->discovery_list,
- 								client);
- 
--	discovery_free(client);
-+	if (adapter->filtered_discoverable &&
-+			client->discovery_filter->discoverable) {
-+		GSList *l;
-+
-+		for (l = adapter->discovery_list; l; l = g_slist_next(l)) {
-+			struct watch_client *client = l->data;
-+
-+			if (client->discovery_filter->discoverable)
-+				break;
-+		}
-+
-+		/* Disable filtered discoverable if there are no clients */
-+		if (!l)
-+			set_filtered_discoverable(adapter, false);
-+	}
-+
-+	if (!exit && client->discovery_filter)
-+		adapter->set_filter_list = g_slist_prepend(
-+					adapter->set_filter_list, client);
-+	else
-+		discovery_free(client);
- 
- 	/*
- 	 * If there are other client discoveries in progress, then leave
-@@ -1859,8 +1915,11 @@ static void stop_discovery_complete(uint8_t status, uint16_t length,
- 		goto done;
- 	}
- 
--	if (client->msg)
-+	if (client->msg) {
- 		g_dbus_send_reply(dbus_conn, client->msg, DBUS_TYPE_INVALID);
-+		dbus_message_unref(client->msg);
-+		client->msg = NULL;
-+	}
- 
- 	adapter->discovery_type = 0x00;
- 	adapter->discovery_enable = 0x00;
-@@ -1873,7 +1932,7 @@ static void stop_discovery_complete(uint8_t status, uint16_t length,
- 	trigger_passive_scanning(adapter);
- 
- done:
--	discovery_remove(client);
-+	discovery_remove(client, false);
- }
- 
- static int compare_sender(gconstpointer a, gconstpointer b)
-@@ -2094,14 +2153,14 @@ static int update_discovery_filter(struct btd_adapter *adapter)
- 	return -EINPROGRESS;
- }
- 
--static int discovery_stop(struct watch_client *client)
-+static int discovery_stop(struct watch_client *client, bool exit)
- {
- 	struct btd_adapter *adapter = client->adapter;
- 	struct mgmt_cp_stop_discovery cp;
- 
- 	/* Check if there are more client discovering */
- 	if (g_slist_next(adapter->discovery_list)) {
--		discovery_remove(client);
-+		discovery_remove(client, exit);
- 		update_discovery_filter(adapter);
- 		return 0;
- 	}
-@@ -2111,7 +2170,7 @@ static int discovery_stop(struct watch_client *client)
- 	 * and so it is enough to send out the signal and just return.
- 	 */
- 	if (adapter->discovery_enable == 0x00) {
--		discovery_remove(client);
-+		discovery_remove(client, exit);
- 		adapter->discovering = false;
- 		g_dbus_emit_property_changed(dbus_conn, adapter->path,
- 					ADAPTER_INTERFACE, "Discovering");
-@@ -2136,7 +2195,7 @@ static void discovery_disconnect(DBusConnection *conn, void *user_data)
- 
- 	DBG("owner %s", client->owner);
- 
--	discovery_stop(client);
-+	discovery_stop(client, true);
- }
- 
- /*
-@@ -2200,6 +2259,15 @@ static DBusMessage *start_discovery(DBusConnection *conn,
- 					     adapter->set_filter_list, client);
- 		adapter->discovery_list = g_slist_prepend(
- 					      adapter->discovery_list, client);
-+
-+		/* Reset discoverable filter if already set */
-+		if (adapter->current_settings & MGMT_OP_SET_DISCOVERABLE)
-+			goto done;
-+
-+		/* Set discoverable if filter requires and it*/
-+		if (client->discovery_filter->discoverable)
-+			set_filtered_discoverable(adapter, true);
-+
- 		goto done;
- 	}
- 
-@@ -2324,6 +2392,17 @@ static bool parse_duplicate_data(DBusMessageIter *value,
- 	return true;
- }
- 
-+static bool parse_discoverable(DBusMessageIter *value,
-+					struct discovery_filter *filter)
-+{
-+	if (dbus_message_iter_get_arg_type(value) != DBUS_TYPE_BOOLEAN)
-+		return false;
-+
-+	dbus_message_iter_get_basic(value, &filter->discoverable);
-+
-+	return true;
-+}
-+
- struct filter_parser {
- 	const char *name;
- 	bool (*func)(DBusMessageIter *iter, struct discovery_filter *filter);
-@@ -2333,6 +2412,7 @@ struct filter_parser {
- 	{ "Pathloss", parse_pathloss },
- 	{ "Transport", parse_transport },
- 	{ "DuplicateData", parse_duplicate_data },
-+	{ "Discoverable", parse_discoverable },
- 	{ }
- };
- 
-@@ -2372,6 +2452,7 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter,
- 	(*filter)->rssi = DISTANCE_VAL_INVALID;
- 	(*filter)->type = get_scan_type(adapter);
- 	(*filter)->duplicate = false;
-+	(*filter)->discoverable = false;
- 
- 	dbus_message_iter_init(msg, &iter);
- 	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY ||
-@@ -2417,8 +2498,10 @@ static bool parse_discovery_filter_dict(struct btd_adapter *adapter,
- 		goto invalid_args;
- 
- 	DBG("filtered discovery params: transport: %d rssi: %d pathloss: %d "
--		" duplicate data: %s ", (*filter)->type, (*filter)->rssi,
--		(*filter)->pathloss, (*filter)->duplicate ? "true" : "false");
-+		" duplicate data: %s discoverable %s", (*filter)->type,
-+		(*filter)->rssi, (*filter)->pathloss,
-+		(*filter)->duplicate ? "true" : "false",
-+		(*filter)->discoverable ? "true" : "false");
- 
- 	return true;
- 
-@@ -2510,7 +2593,7 @@ static DBusMessage *stop_discovery(DBusConnection *conn,
- 	if (client->msg)
- 		return btd_error_busy(msg);
- 
--	err = discovery_stop(client);
-+	err = discovery_stop(client, false);
- 	switch (err) {
- 	case 0:
- 		return dbus_message_new_method_return(msg);
-@@ -2739,13 +2822,15 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting,
- 	else
- 		current_enable = FALSE;
- 
--	if (enable == current_enable) {
-+	if (enable == current_enable || adapter->pending_settings & setting) {
- 		g_dbus_pending_property_success(id);
- 		return;
- 	}
- 
- 	mode = (enable == TRUE) ? 0x01 : 0x00;
- 
-+	adapter->pending_settings |= setting;
-+
- 	switch (setting) {
- 	case MGMT_SETTING_POWERED:
- 		opcode = MGMT_OP_SET_POWERED;
-@@ -2798,7 +2883,7 @@ static void property_set_mode(struct btd_adapter *adapter, uint32_t setting,
- 	data->id = id;
- 
- 	if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, len, param,
--				property_set_mode_complete, data, g_free) > 0)
-+			property_set_mode_complete, data, g_free) > 0)
- 		return;
- 
- 	g_free(data);
-@@ -2875,6 +2960,7 @@ static void property_set_discoverable_timeout(
- 				GDBusPendingPropertySet id, void *user_data)
- {
- 	struct btd_adapter *adapter = user_data;
-+	bool enabled;
- 	dbus_uint32_t value;
- 
- 	dbus_message_iter_get_basic(iter, &value);
-@@ -2888,8 +2974,19 @@ static void property_set_discoverable_timeout(
- 	g_dbus_emit_property_changed(dbus_conn, adapter->path,
- 				ADAPTER_INTERFACE, "DiscoverableTimeout");
- 
-+	if (adapter->pending_settings & MGMT_SETTING_DISCOVERABLE) {
-+		if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
-+			enabled = false;
-+		else
-+			enabled = true;
-+	} else {
-+		if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
-+			enabled = true;
-+		else
-+			enabled = false;
-+	}
- 
--	if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
-+	if (enabled)
- 		set_discoverable(adapter, 0x01, adapter->discoverable_timeout);
- }
- 
--- 
-2.7.4
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch b/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch
deleted file mode 100644
index ca678e601e7..00000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/gcc9-fixes.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-Backported commit from upstream master branch (post 5.50 release), which
-resolves assertion failures in several unit tests.
-
-https://git.kernel.org/pub/scm/bluetooth/bluez.git/patch/?id=0be5246170
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/unit/test-avctp.c b/unit/test-avctp.c
-index 3bc3569..24de663 100644
---- a/unit/test-avctp.c
-+++ b/unit/test-avctp.c
-@@ -43,7 +43,7 @@
- 
- struct test_pdu {
- 	bool valid;
--	const uint8_t *data;
-+	uint8_t *data;
- 	size_t size;
- };
- 
-@@ -66,7 +66,7 @@ struct context {
- #define raw_pdu(args...)					\
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -91,6 +91,11 @@ static void test_debug(const char *str, void *user_data)
- static void test_free(gconstpointer user_data)
- {
- 	const struct test_data *data = user_data;
-+	struct test_pdu *pdu;
-+	int i;
-+
-+	for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+		g_free(pdu->data);
- 
- 	g_free(data->test_name);
- 	g_free(data->pdu_list);
-diff --git a/unit/test-avdtp.c b/unit/test-avdtp.c
-index dd8aed7..e2c951a 100644
---- a/unit/test-avdtp.c
-+++ b/unit/test-avdtp.c
-@@ -47,7 +47,7 @@
- struct test_pdu {
- 	bool valid;
- 	bool fragmented;
--	const uint8_t *data;
-+	uint8_t *data;
- 	size_t size;
- };
- 
-@@ -61,7 +61,7 @@ struct test_data {
- #define raw_pdu(args...) \
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -69,7 +69,7 @@ struct test_data {
- 	{							\
- 		.valid = true,					\
- 		.fragmented = true,				\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -81,7 +81,7 @@ struct test_data {
- 		static struct test_data data;				\
- 		data.test_name = g_strdup(name);			\
- 		data.pdu_list = g_memdup(pdus, sizeof(pdus));		\
--		tester_add(name, &data, NULL, function, NULL);		\
-+		tester_add(name, &data, NULL, function, NULL);	\
- 	} while (0)
- 
- struct context {
-@@ -109,6 +109,11 @@ static void test_debug(const char *str, void *user_data)
- static void test_free(gconstpointer user_data)
- {
- 	const struct test_data *data = user_data;
-+	struct test_pdu *pdu;
-+	int i;
-+
-+	for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+		g_free(pdu->data);
- 
- 	g_free(data->test_name);
- 	g_free(data->pdu_list);
-diff --git a/unit/test-avrcp.c b/unit/test-avrcp.c
-index 01307e6..f1aa353 100644
---- a/unit/test-avrcp.c
-+++ b/unit/test-avrcp.c
-@@ -49,7 +49,7 @@ struct test_pdu {
- 	bool fragmented;
- 	bool continuing;
- 	bool browse;
--	const uint8_t *data;
-+	uint8_t *data;
- 	size_t size;
- };
- 
-@@ -74,7 +74,7 @@ struct context {
- #define raw_pdu(args...)					\
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -82,7 +82,7 @@ struct context {
- 	{							\
- 		.valid = true,					\
- 		.browse = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -90,7 +90,7 @@ struct context {
- 	{							\
- 		.valid = true,					\
- 		.fragmented = true,				\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -98,7 +98,7 @@ struct context {
- 	{							\
- 		.valid = true,					\
- 		.continuing = true,				\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -123,6 +123,11 @@ static void test_debug(const char *str, void *user_data)
- static void test_free(gconstpointer user_data)
- {
- 	const struct test_data *data = user_data;
-+	struct test_pdu *pdu;
-+	int i;
-+
-+	for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+		g_free(pdu->data);
- 
- 	g_free(data->test_name);
- 	g_free(data->pdu_list);
-diff --git a/unit/test-gatt.c b/unit/test-gatt.c
-index c7e28f8..d49f7a0 100644
---- a/unit/test-gatt.c
-+++ b/unit/test-gatt.c
-@@ -48,7 +48,7 @@
- 
- struct test_pdu {
- 	bool valid;
--	const uint8_t *data;
-+	uint8_t *data;
- 	size_t size;
- };
- 
-@@ -86,7 +86,7 @@ struct context {
- #define raw_pdu(args...)					\
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -306,6 +306,11 @@ static bt_uuid_t uuid_char_128 = {
- static void test_free(gconstpointer user_data)
- {
- 	const struct test_data *data = user_data;
-+	struct test_pdu *pdu;
-+	int i;
-+
-+	for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+		g_free(pdu->data);
- 
- 	g_free(data->test_name);
- 	g_free(data->pdu_list);
-@@ -1911,6 +1916,8 @@ static void test_server(gconstpointer data)
- 	g_assert_cmpint(len, ==, pdu.size);
- 
- 	util_hexdump('<', pdu.data, len, test_debug, "GATT: ");
-+
-+	g_free(pdu.data);
- }
- 
- static void test_search_primary(gconstpointer data)
-diff --git a/unit/test-hfp.c b/unit/test-hfp.c
-index f2b9622..890eee6 100644
---- a/unit/test-hfp.c
-+++ b/unit/test-hfp.c
-@@ -43,7 +43,7 @@ struct context {
- 
- struct test_pdu {
- 	bool valid;
--	const uint8_t *data;
-+	uint8_t *data;
- 	size_t size;
- 	enum hfp_gw_cmd_type type;
- 	bool fragmented;
-@@ -63,7 +63,7 @@ struct test_data {
- #define raw_pdu(args...)					\
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 	}
- 
-@@ -75,7 +75,7 @@ struct test_data {
- #define type_pdu(cmd_type, args...)				\
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 		.type = cmd_type,				\
- 	}
-@@ -83,7 +83,7 @@ struct test_data {
- #define frg_pdu(args...)					\
- 	{							\
- 		.valid = true,					\
--		.data = data(args),				\
-+		.data = g_memdup(data(args), sizeof(data(args))), \
- 		.size = sizeof(data(args)),			\
- 		.fragmented = true,				\
- 	}
-@@ -119,6 +119,11 @@ struct test_data {
- static void test_free(gconstpointer user_data)
- {
- 	const struct test_data *data = user_data;
-+	struct test_pdu *pdu;
-+	int i;
-+
-+	for (i = 0; (pdu = &data->pdu_list[i]) && pdu->valid; i++)
-+		g_free(pdu->data);
- 
- 	g_free(data->test_name);
- 	g_free(data->pdu_list);
-diff --git a/unit/test-hog.c b/unit/test-hog.c
-index d117968..25bdb42 100644
---- a/unit/test-hog.c
-+++ b/unit/test-hog.c
-@@ -68,11 +68,11 @@ struct context {
- 
- #define data(args...) ((const unsigned char[]) { args })
- 
--#define raw_pdu(args...)    \
--{      \
--	.valid = true,		\
--	.data = data(args), \
--	.size = sizeof(data(args)),\
-+#define raw_pdu(args...)					\
-+{								\
-+	.valid = true,						\
-+	.data = g_memdup(data(args), sizeof(data(args))),	\
-+	.size = sizeof(data(args)),				\
- }
- 
- #define false_pdu()	\
-diff --git a/unit/test-sdp.c b/unit/test-sdp.c
-index ac921a9..c71ee1f 100644
---- a/unit/test-sdp.c
-+++ b/unit/test-sdp.c
-@@ -59,14 +59,14 @@ struct test_data {
- #define raw_pdu(args...) \
- 	{							\
- 		.valid = true,					\
--		.raw_data = raw_data(args),			\
-+		.raw_data = g_memdup(raw_data(args), sizeof(raw_data(args))), \
- 		.raw_size = sizeof(raw_data(args)),		\
- 	}
- 
- #define raw_pdu_cont(cont, args...) \
- 	{							\
- 		.valid = true,					\
--		.raw_data = raw_data(args),			\
-+		.raw_data = g_memdup(raw_data(args), sizeof(raw_data(args))), \
- 		.raw_size = sizeof(raw_data(args)),		\
- 		.cont_len = cont,				\
- 	}
-@@ -103,7 +103,7 @@ struct test_data_de {
- #define define_test_de_attr(name, input, exp) \
- 	do {								\
- 		static struct test_data_de data;			\
--		data.input_data = input;				\
-+		data.input_data = g_memdup(input, sizeof(input));	\
- 		data.input_size = sizeof(input);			\
- 		data.expected = exp;					\
- 		tester_add("/sdp/DE/ATTR/" name, &data,	NULL,		\
diff --git a/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch b/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
deleted file mode 100644
index 76ed7792589..00000000000
--- a/meta/recipes-connectivity/bluez5/bluez5/out-of-tree.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From ed55b49a226ca3909f52416be2ae5ce1c5ca2cb2 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Fri, 22 Apr 2016 15:40:37 +0100
-Subject: [PATCH] Makefile.obexd: add missing mkdir in builtin.h generation
-
-In parallel out-of-tree builds it's possible that obexd/src/builtin.h is
-generated before the target directory has been implicitly created. Solve this by
-creating the directory before writing into it.
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- Makefile.obexd | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.obexd b/Makefile.obexd
-index 2e33cbc..c8286f0 100644
---- a/Makefile.obexd
-+++ b/Makefile.obexd
-@@ -105,2 +105,3 @@ obexd/src/plugin.$(OBJEXT): obexd/src/builtin.h
- obexd/src/builtin.h: obexd/src/genbuiltin $(obexd_builtin_sources)
-+	$(AM_V_at)$(MKDIR_P) $(dir $@)
- 	$(AM_V_GEN)$(srcdir)/obexd/src/genbuiltin $(obexd_builtin_modules) > $@
--- 
-2.8.0.rc3
-
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.50.bb b/meta/recipes-connectivity/bluez5/bluez5_5.52.bb
similarity index 91%
rename from meta/recipes-connectivity/bluez5/bluez5_5.50.bb
rename to meta/recipes-connectivity/bluez5/bluez5_5.52.bb
index 4e443e5fb08..b86103014b8 100644
--- a/meta/recipes-connectivity/bluez5/bluez5_5.50.bb
+++ b/meta/recipes-connectivity/bluez5/bluez5_5.52.bb
@@ -1,7 +1,7 @@
 require bluez5.inc
 
-SRC_URI[md5sum] = "8e35c67c81a55d3ad4c9f22280dae178"
-SRC_URI[sha256sum] = "5ffcaae18bbb6155f1591be8c24898dc12f062075a40b538b745bfd477481911"
+SRC_URI[md5sum] = "a33eb9aadf1dd4153420958709d3ce60"
+SRC_URI[sha256sum] = "f7144ce2039202cfac18ccb52426efea11c98e4f6e1bb8041bcb994b8378560a"
 
 # noinst programs in Makefile.tools that are conditional on READLINE
 # support
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 13/24] libsoup-2.4: update to 2.68.3
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (10 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 12/24] bluez: update 5.50 -> 5.52 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 14/24] shadow: update 4.6 -> 4.8 Alexander Kanavin
                   ` (12 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop backported patch.

tls-check merely checks at configure time whether glib-networking has tls
support enabled (by running a target executable which doesn't work for us);
it does not affect the actual build.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...no-introspection-when-cross-building.patch | 28 -------------------
 ...up-2.4_2.66.4.bb => libsoup-2.4_2.68.3.bb} | 15 +++++-----
 2 files changed, 8 insertions(+), 35 deletions(-)
 delete mode 100644 meta/recipes-support/libsoup/libsoup-2.4/0001-Do-not-enforce-no-introspection-when-cross-building.patch
 rename meta/recipes-support/libsoup/{libsoup-2.4_2.66.4.bb => libsoup-2.4_2.68.3.bb} (78%)

diff --git a/meta/recipes-support/libsoup/libsoup-2.4/0001-Do-not-enforce-no-introspection-when-cross-building.patch b/meta/recipes-support/libsoup/libsoup-2.4/0001-Do-not-enforce-no-introspection-when-cross-building.patch
deleted file mode 100644
index d534457e72c..00000000000
--- a/meta/recipes-support/libsoup/libsoup-2.4/0001-Do-not-enforce-no-introspection-when-cross-building.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 85f7b74fc602214297928afe09347c31d696173d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 15 Feb 2019 14:21:06 +0100
-Subject: [PATCH] Do not enforce no-introspection when cross-building
-
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/commit/7ef5ec60c33e254bcd915936bea3f04ba0fe2273]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Alistair Francis <alistair@alistair23.me>
----
- meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 25887f9..6261a7c 100644
---- a/meson.build
-+++ b/meson.build
-@@ -281,7 +281,7 @@ enable_gnome = get_option('gnome') and host_machine.system() != 'windows'
- # FIXME: once we start to require meson 0.49.0+ and gnome-introspection 1.58.1+
- # the we can enable the introspection even for the static build. See
- # https://github.com/mesonbuild/meson/pull/4478.
--enable_introspection = get_option('introspection') and find_program('g-ir-scanner', required: false).found() and not meson.is_cross_build() and not is_static_library
-+enable_introspection = get_option('introspection') and find_program('g-ir-scanner', required: false).found() and not is_static_library
- 
- ############
- # Vala API #
--- 
-2.20.1
-
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.66.4.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.68.3.bb
similarity index 78%
rename from meta/recipes-support/libsoup/libsoup-2.4_2.66.4.bb
rename to meta/recipes-support/libsoup/libsoup-2.4_2.68.3.bb
index 7f5f910d3d6..e8bc7d64705 100644
--- a/meta/recipes-support/libsoup/libsoup-2.4_2.66.4.bb
+++ b/meta/recipes-support/libsoup/libsoup-2.4_2.68.3.bb
@@ -9,11 +9,9 @@ DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 intltool-native libpsl"
 
 SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
 
-SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
-           file://0001-Do-not-enforce-no-introspection-when-cross-building.patch \
-           "
-SRC_URI[md5sum] = "42016d80ecae4cf8eb416631049a273a"
-SRC_URI[sha256sum] = "8308984f1eee1c4f8c113a9c1763b2b22d981bd811b0cc82a9f3f1aa63228779"
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+SRC_URI[md5sum] = "29ee2ee7017945b64ede063b1396011c"
+SRC_URI[sha256sum] = "534bb08e35b0ff3702f3adfde87d3441e27c12f9f5ec351f056fe04cba02bafb"
 
 CVE_PRODUCT = "libsoup"
 
@@ -21,12 +19,15 @@ S = "${WORKDIR}/libsoup-${PV}"
 
 inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
 
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
 # libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
 PACKAGECONFIG ??= ""
 PACKAGECONFIG[gnome] = "-Dgnome=true,-Dgnome=false"
-PACKAGECONFIG[gssapi] = "-Dgssapi=true,-Dgssapi=false,krb5"
+PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
 
-EXTRA_OEMESON_append = " -Dvapi=false"
+EXTRA_OEMESON_append = " -Dvapi=disabled -Dtls_check=false"
 
 GTKDOC_MESON_OPTION = "gtk_doc"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 14/24] shadow: update 4.6 -> 4.8
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (11 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 13/24] libsoup-2.4: update to 2.68.3 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-10  4:56   ` Alex Kiernan
  2019-12-05 15:43 ` [PATCH 15/24] sysklogd: update to 2.0.3 Alexander Kanavin
                   ` (11 subsequent siblings)
  24 siblings, 1 reply; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop two backports.

Refactor 0001-useradd.c-create-parent-directories-when-necessary.patch
to make the changes less invasive (and easier to rebase).

Rebase the rest of the paches.

Add a patch to remove the check for validity of login shells
which does not work in our environment.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...01-Disable-use-of-syslog-for-sysroot.patch |  18 ++-
 ...eck-for-validity-of-shell-executable.patch |  29 +++++
 ...chg-shadow-field-reproducible-re.-71.patch |  89 --------------
 ...ure.ac-fix-configure-error-with-dash.patch |  36 ------
 ...te-parent-directories-when-necessary.patch | 116 ------------------
 ...-for-setting-password-in-clear-text.patch} | 101 +++++++--------
 ...te-parent-directories-when-necessary.patch |  63 ++++++++++
 ...nexpected-open-failure-in-chroot-env.patch |  15 ++-
 .../files/shadow-relaxed-usernames.patch      |  51 +++++---
 meta/recipes-extended/shadow/shadow.inc       |  11 +-
 .../shadow/{shadow_4.6.bb => shadow_4.8.bb}   |   0
 11 files changed, 196 insertions(+), 333 deletions(-)
 create mode 100644 meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
 delete mode 100644 meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
 delete mode 100644 meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
 delete mode 100644 meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
 rename meta/recipes-extended/shadow/files/{allow-for-setting-password-in-clear-text.patch => 0002-Allow-for-setting-password-in-clear-text.patch} (81%)
 create mode 100644 meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
 rename meta/recipes-extended/shadow/{shadow_4.6.bb => shadow_4.8.bb} (100%)

diff --git a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
index aac2d42b12a..ab317b9aa03 100644
--- a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
+++ b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
@@ -1,4 +1,4 @@
-From 8cf3454d567f77233023be49a39a33e9f0836f89 Mon Sep 17 00:00:00 2001
+From fa2d9453656641002802d8165e80adb9e6a729d2 Mon Sep 17 00:00:00 2001
 From: Scott Garman <scott.a.garman@intel.com>
 Date: Thu, 14 Apr 2016 12:28:57 +0200
 Subject: [PATCH] Disable use of syslog for sysroot
@@ -12,6 +12,7 @@ Upstream-Status: Inappropriate [disable feature]
 Signed-off-by: Scott Garman <scott.a.garman@intel.com>
 Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
 ---
  src/groupadd.c  | 3 +++
  src/groupdel.c  | 3 +++
@@ -23,7 +24,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
  7 files changed, 21 insertions(+)
 
 diff --git a/src/groupadd.c b/src/groupadd.c
-index 63e1c48..a596c49 100644
+index 2dd8eec..e9c4bb7 100644
 --- a/src/groupadd.c
 +++ b/src/groupadd.c
 @@ -34,6 +34,9 @@
@@ -37,7 +38,7 @@ index 63e1c48..a596c49 100644
  #include <fcntl.h>
  #include <getopt.h>
 diff --git a/src/groupdel.c b/src/groupdel.c
-index 70bed01..ababd81 100644
+index f941a84..5a70056 100644
 --- a/src/groupdel.c
 +++ b/src/groupdel.c
 @@ -34,6 +34,9 @@
@@ -65,7 +66,7 @@ index fc91c8b..2842514 100644
  #include <getopt.h>
  #include <grp.h>
 diff --git a/src/groupmod.c b/src/groupmod.c
-index 72daf2c..8965f9d 100644
+index 1dca5fc..bc14438 100644
 --- a/src/groupmod.c
 +++ b/src/groupmod.c
 @@ -34,6 +34,9 @@
@@ -79,7 +80,7 @@ index 72daf2c..8965f9d 100644
  #include <fcntl.h>
  #include <getopt.h>
 diff --git a/src/useradd.c b/src/useradd.c
-index 3aaf45c..1ab9174 100644
+index 4af0f7c..1b7bf06 100644
 --- a/src/useradd.c
 +++ b/src/useradd.c
 @@ -34,6 +34,9 @@
@@ -93,7 +94,7 @@ index 3aaf45c..1ab9174 100644
  #include <ctype.h>
  #include <errno.h>
 diff --git a/src/userdel.c b/src/userdel.c
-index c8de1d3..24d3ea9 100644
+index cc951e5..153e0be 100644
 --- a/src/userdel.c
 +++ b/src/userdel.c
 @@ -34,6 +34,9 @@
@@ -107,7 +108,7 @@ index c8de1d3..24d3ea9 100644
  #include <errno.h>
  #include <fcntl.h>
 diff --git a/src/usermod.c b/src/usermod.c
-index ccfbb99..24fb60d 100644
+index 05b9871..21c6da9 100644
 --- a/src/usermod.c
 +++ b/src/usermod.c
 @@ -34,6 +34,9 @@
@@ -120,6 +121,3 @@ index ccfbb99..24fb60d 100644
  #include <assert.h>
  #include <ctype.h>
  #include <errno.h>
--- 
-2.11.0
-
diff --git a/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch b/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
new file mode 100644
index 00000000000..2d15ff0673a
--- /dev/null
+++ b/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
@@ -0,0 +1,29 @@
+From 0d0aded7307a9f4ee0d299951512acd18b3e029e Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 4 Dec 2019 19:28:48 +0100
+Subject: [PATCH] Do not check for validity of shell executable.
+
+This kind of check fails when building a rootfs.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/useradd.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/src/useradd.c b/src/useradd.c
+index 4af0f7c..898fe02 100644
+--- a/src/useradd.c
++++ b/src/useradd.c
+@@ -1328,10 +1328,7 @@ static void process_flags (int argc, char **argv)
+ 				if (   ( !VALID (optarg) )
+ 				    || (   ('\0' != optarg[0])
+ 				        && ('/'  != optarg[0])
+-				        && ('*'  != optarg[0]) )
+-				    || (stat(optarg, &st) != 0)
+-				    || (S_ISDIR(st.st_mode))
+-				    || (access(optarg, X_OK) != 0)) {
++				        && ('*'  != optarg[0]) )) {
+ 					fprintf (stderr,
+ 					         _("%s: invalid shell '%s'\n"),
+ 					         Prog, optarg);
diff --git a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch b/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
deleted file mode 100644
index de0ba3ebb42..00000000000
--- a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From fe34a2a0e44bc80ff213bfd185046a5f10c94997 Mon Sep 17 00:00:00 2001
-From: Chris Lamb <chris@chris-lamb.co.uk>
-Date: Wed, 2 Jan 2019 18:06:16 +0000
-Subject: [PATCH 1/2] Make the sp_lstchg shadow field reproducible (re. #71)
-
-From <https://github.com/shadow-maint/shadow/pull/71>:
-
-```
-The third field in the /etc/shadow file (sp_lstchg) contains the date of
-the last password change expressed as the number of days since Jan 1, 1970.
-As this is a relative time, creating a user today will result in:
-
-username:17238:0:99999:7:::
-whilst creating the same user tomorrow will result in:
-
-username:17239:0:99999:7:::
-This has an impact for the Reproducible Builds[0] project where we aim to
-be independent of as many elements the build environment as possible,
-including the current date.
-
-This patch changes the behaviour to use the SOURCE_DATE_EPOCH[1]
-environment variable (instead of Jan 1, 1970) if valid.
-```
-
-This updated PR adds some missing calls to gettime (). This was originally
-filed by Johannes Schauer in Debian as #917773 [2].
-
-[0] https://reproducible-builds.org/
-[1] https://reproducible-builds.org/specs/source-date-epoch/
-[2] https://bugs.debian.org/917773
-
-Upstream-Status: Backport
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
----
- libmisc/pwd2spwd.c | 3 +--
- src/pwck.c         | 2 +-
- src/pwconv.c       | 2 +-
- 3 files changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c
-index c1b9b29ac873..6799dd50d490 100644
---- a/libmisc/pwd2spwd.c
-+++ b/libmisc/pwd2spwd.c
-@@ -40,7 +40,6 @@
- #include "prototypes.h"
- #include "defines.h"
- #include <pwd.h>
--extern time_t time (time_t *);
- 
- /*
-  * pwd_to_spwd - create entries for new spwd structure
-@@ -66,7 +65,7 @@ struct spwd *pwd_to_spwd (const struct passwd *pw)
- 		 */
- 		sp.sp_min = 0;
- 		sp.sp_max = (10000L * DAY) / SCALE;
--		sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
-+		sp.sp_lstchg = (long) gettime () / SCALE;
- 		if (0 == sp.sp_lstchg) {
- 			/* Better disable aging than requiring a password
- 			 * change */
-diff --git a/src/pwck.c b/src/pwck.c
-index 0ffb711efb13..f70071b12500 100644
---- a/src/pwck.c
-+++ b/src/pwck.c
-@@ -609,7 +609,7 @@ static void check_pw_file (int *errors, bool *changed)
- 					sp.sp_inact  = -1;
- 					sp.sp_expire = -1;
- 					sp.sp_flag   = SHADOW_SP_FLAG_UNSET;
--					sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
-+					sp.sp_lstchg = (long) gettime () / SCALE;
- 					if (0 == sp.sp_lstchg) {
- 						/* Better disable aging than
- 						 * requiring a password change
-diff --git a/src/pwconv.c b/src/pwconv.c
-index 9c69fa131d8e..f932f266c59c 100644
---- a/src/pwconv.c
-+++ b/src/pwconv.c
-@@ -267,7 +267,7 @@ int main (int argc, char **argv)
- 			spent.sp_flag   = SHADOW_SP_FLAG_UNSET;
- 		}
- 		spent.sp_pwdp = pw->pw_passwd;
--		spent.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
-+		spent.sp_lstchg = (long) gettime () / SCALE;
- 		if (0 == spent.sp_lstchg) {
- 			/* Better disable aging than requiring a password
- 			 * change */
--- 
-2.17.1
-
diff --git a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch b/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
deleted file mode 100644
index a74cbb0c0e7..00000000000
--- a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3c52a84ff8775590e7e9da9c0d4408c23494305e Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Mon, 17 Jun 2019 15:36:34 +0800
-Subject: [PATCH] configure.ac: fix configure error with dash
-
-A configure error occurs when /bin/sh -> dash:
-  checking for is_selinux_enabled in -lselinux... yes
-  checking for semanage_connect in -lsemanage... yes
-  configure: 16322: test: yesyes: unexpected operator
-
-Use "=" instead of "==" since dash doesn't support this operator.
-
-Upstream-Status: Backport
-[https://github.com/shadow-maint/shadow/commit/3c52a84ff8775590e7e9da9c0d4408c23494305e]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 6762556..1907afb 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -500,7 +500,7 @@ if test "$with_selinux" != "no"; then
- 			AC_MSG_ERROR([libsemanage not found])
- 		fi
- 
--		if test "$selinux_lib$semanage_lib" == "yesyes" ; then
-+		if test "$selinux_lib$semanage_lib" = "yesyes" ; then
- 			AC_DEFINE(WITH_SELINUX, 1,
- 			          [Build shadow with SELinux support])
- 			LIBSELINUX="-lselinux"
--- 
-2.7.4
-
diff --git a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch b/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
deleted file mode 100644
index faa6f68ebe2..00000000000
--- a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-Subject: [PATCH] useradd.c: create parent directories when necessary
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/useradd.c | 80 +++++++++++++++++++++++++++++++++++++++--------------------
- 1 file changed, 53 insertions(+), 27 deletions(-)
-
-diff --git a/src/useradd.c b/src/useradd.c
-index 00a3c30..9ecbb58 100644
---- a/src/useradd.c
-+++ b/src/useradd.c
-@@ -2021,6 +2021,35 @@ static void usr_update (void)
- }
- 
- /*
-+ * mkdir_p - create directories, including parent directories when needed
-+ *
-+ * similar to `mkdir -p'
-+ */
-+void mkdir_p(const char *path) {
-+	int len = strlen(path);
-+	char newdir[len + 1];
-+	mode_t mode = 0755;
-+	int i = 0;
-+
-+	if (path[i] == '\0') {
-+		return;
-+	}
-+
-+	/* skip the leading '/' */
-+	i++;
-+
-+	while(path[i] != '\0') {
-+		if (path[i] == '/') {
-+			strncpy(newdir, path, i);
-+			newdir[i] = '\0';
-+			mkdir(newdir, mode);
-+		}
-+		i++;
-+	}
-+	mkdir(path, mode);
-+}
-+
-+/*
-  * create_home - create the user's home directory
-  *
-  *	create_home() creates the user's home directory if it does not
-@@ -2038,39 +2067,36 @@ static void create_home (void)
- 			fail_exit (E_HOMEDIR);
- 		}
- #endif
--		/* XXX - create missing parent directories.  --marekm */
--		if (mkdir (prefix_user_home, 0) != 0) {
--			fprintf (stderr,
--			         _("%s: cannot create directory %s\n"),
--			         Prog, prefix_user_home);
-+		mkdir_p(user_home);
-+	}
-+	if (access (prefix_user_home, F_OK) != 0) {
- #ifdef WITH_AUDIT
--			audit_logger (AUDIT_ADD_USER, Prog,
--			              "adding home directory",
--			              user_name, (unsigned int) user_id,
--			              SHADOW_AUDIT_FAILURE);
-+		audit_logger (AUDIT_ADD_USER, Prog,
-+			      "adding home directory",
-+			      user_name, (unsigned int) user_id,
-+			      SHADOW_AUDIT_FAILURE);
- #endif
--			fail_exit (E_HOMEDIR);
--		}
--		(void) chown (prefix_user_home, user_id, user_gid);
--		chmod (prefix_user_home,
--		       0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
--		home_added = true;
-+		fail_exit (E_HOMEDIR);
-+	}
-+	(void) chown (prefix_user_home, user_id, user_gid);
-+	chmod (prefix_user_home,
-+	       0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
-+	home_added = true;
- #ifdef WITH_AUDIT
--		audit_logger (AUDIT_ADD_USER, Prog,
--		              "adding home directory",
--		              user_name, (unsigned int) user_id,
--		              SHADOW_AUDIT_SUCCESS);
-+	audit_logger (AUDIT_ADD_USER, Prog,
-+		      "adding home directory",
-+		      user_name, (unsigned int) user_id,
-+		      SHADOW_AUDIT_SUCCESS);
- #endif
- #ifdef WITH_SELINUX
--		/* Reset SELinux to create files with default contexts */
--		if (reset_selinux_file_context () != 0) {
--			fprintf (stderr,
--			         _("%s: cannot reset SELinux file creation context\n"),
--			         Prog);
--			fail_exit (E_HOMEDIR);
--		}
--#endif
-+	/* Reset SELinux to create files with default contexts */
-+	if (reset_selinux_file_context () != 0) {
-+		fprintf (stderr,
-+			 _("%s: cannot reset SELinux file creation context\n"),
-+			 Prog);
-+		fail_exit (E_HOMEDIR);
- 	}
-+#endif
- }
- 
- /*
--- 
-2.11.0
-
diff --git a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
similarity index 81%
rename from meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
rename to meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
index fa7eb07aa51..c6332e4f766 100644
--- a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
+++ b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
@@ -1,8 +1,12 @@
+From a7d995228491ad5255ad86c1f04ba071f6880897 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Sat, 16 Nov 2013 15:27:47 +0800
 Subject: [PATCH] Allow for setting password in clear text
 
 Upstream-Status: Inappropriate [OE specific]
 
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
 ---
  src/Makefile.am |  8 ++++----
  src/groupadd.c  | 20 +++++++++++++++-----
@@ -12,39 +16,39 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
  5 files changed, 64 insertions(+), 25 deletions(-)
 
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 3c98a8d..b8093d5 100644
+index f31fd7a..4a317a3 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -93,10 +93,10 @@ chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBSELINUX) $(LIBCRYPT)
- chsh_LDADD     = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
- chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT)
- gpasswd_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
--groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
-+groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
- groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
- groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX)
--groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
-+groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
- grpck_LDADD    = $(LDADD) $(LIBSELINUX)
- grpconv_LDADD  = $(LDADD) $(LIBSELINUX)
- grpunconv_LDADD = $(LDADD) $(LIBSELINUX)
-@@ -117,9 +117,9 @@ su_SOURCES     = \
+@@ -103,10 +103,10 @@ chsh_LDADD     = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM)
+ chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
+ expiry_LDADD = $(LDADD) $(LIBECONF)
+ gpasswd_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
+-groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
++groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) $(LIBCRYPT)
+ groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
+ groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
+-groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
++groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) $(LIBCRYPT)
+ grpck_LDADD    = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
+ grpconv_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
+ grpunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
+@@ -127,9 +127,9 @@ su_SOURCES     = \
  	suauth.c
- su_LDADD       = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
- sulogin_LDADD  = $(LDADD) $(LIBCRYPT)
--useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
-+useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
- userdel_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE)
--usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
-+usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
- vipw_LDADD     = $(LDADD) $(LIBSELINUX)
+ su_LDADD       = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF)
+ sulogin_LDADD  = $(LDADD) $(LIBCRYPT) $(LIBECONF)
+-useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
++useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
+ userdel_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF)
+-usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
++usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
+ vipw_LDADD     = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
  
  install-am: all-am
 diff --git a/src/groupadd.c b/src/groupadd.c
-index b57006c..63e1c48 100644
+index e9c4bb7..d572c00 100644
 --- a/src/groupadd.c
 +++ b/src/groupadd.c
-@@ -123,9 +123,10 @@ static /*@noreturn@*/void usage (int status)
+@@ -127,9 +127,10 @@ static /*@noreturn@*/void usage (int status)
  	(void) fputs (_("  -o, --non-unique              allow to create groups with duplicate\n"
  	                "                                (non-unique) GID\n"), usageout);
  	(void) fputs (_("  -p, --password PASSWORD       use this encrypted password for the new group\n"), usageout);
@@ -56,7 +60,7 @@ index b57006c..63e1c48 100644
  	(void) fputs ("\n", usageout);
  	exit (status);
  }
-@@ -387,13 +388,14 @@ static void process_flags (int argc, char **argv)
+@@ -391,13 +392,14 @@ static void process_flags (int argc, char **argv)
  		{"key",        required_argument, NULL, 'K'},
  		{"non-unique", no_argument,       NULL, 'o'},
  		{"password",   required_argument, NULL, 'p'},
@@ -73,7 +77,7 @@ index b57006c..63e1c48 100644
  		                 long_options, NULL)) != -1) {
  		switch (c) {
  		case 'f':
-@@ -445,12 +447,20 @@ static void process_flags (int argc, char **argv)
+@@ -449,12 +451,20 @@ static void process_flags (int argc, char **argv)
  			pflg = true;
  			group_passwd = optarg;
  			break;
@@ -95,7 +99,7 @@ index b57006c..63e1c48 100644
  			break;
  		default:
  			usage (E_USAGE);
-@@ -584,7 +594,7 @@ int main (int argc, char **argv)
+@@ -588,7 +598,7 @@ int main (int argc, char **argv)
  	(void) textdomain (PACKAGE);
  
  	process_root_flag ("-R", argc, argv);
@@ -105,10 +109,10 @@ index b57006c..63e1c48 100644
  	OPENLOG ("groupadd");
  #ifdef WITH_AUDIT
 diff --git a/src/groupmod.c b/src/groupmod.c
-index b293b98..72daf2c 100644
+index bc14438..25ccb44 100644
 --- a/src/groupmod.c
 +++ b/src/groupmod.c
-@@ -134,8 +134,9 @@ static void usage (int status)
+@@ -138,8 +138,9 @@ static void usage (int status)
  	(void) fputs (_("  -o, --non-unique              allow to use a duplicate (non-unique) GID\n"), usageout);
  	(void) fputs (_("  -p, --password PASSWORD       change the password to this (encrypted)\n"
  	                "                                PASSWORD\n"), usageout);
@@ -119,7 +123,7 @@ index b293b98..72daf2c 100644
  	(void) fputs ("\n", usageout);
  	exit (status);
  }
-@@ -383,11 +384,12 @@ static void process_flags (int argc, char **argv)
+@@ -387,11 +388,12 @@ static void process_flags (int argc, char **argv)
  		{"new-name",   required_argument, NULL, 'n'},
  		{"non-unique", no_argument,       NULL, 'o'},
  		{"password",   required_argument, NULL, 'p'},
@@ -134,7 +138,7 @@ index b293b98..72daf2c 100644
  		                 long_options, NULL)) != -1) {
  		switch (c) {
  		case 'g':
-@@ -414,9 +416,17 @@ static void process_flags (int argc, char **argv)
+@@ -418,9 +420,17 @@ static void process_flags (int argc, char **argv)
  			group_passwd = optarg;
  			pflg = true;
  			break;
@@ -153,7 +157,7 @@ index b293b98..72daf2c 100644
  			break;
  		default:
  			usage (E_USAGE);
-@@ -757,7 +767,7 @@ int main (int argc, char **argv)
+@@ -761,7 +771,7 @@ int main (int argc, char **argv)
  	(void) textdomain (PACKAGE);
  
  	process_root_flag ("-R", argc, argv);
@@ -163,10 +167,10 @@ index b293b98..72daf2c 100644
  	OPENLOG ("groupmod");
  #ifdef WITH_AUDIT
 diff --git a/src/useradd.c b/src/useradd.c
-index c74e491..7214e72 100644
+index 1b7bf06..44f09e2 100644
 --- a/src/useradd.c
 +++ b/src/useradd.c
-@@ -829,9 +829,10 @@ static void usage (int status)
+@@ -853,9 +853,10 @@ static void usage (int status)
  	(void) fputs (_("  -o, --non-unique              allow to create users with duplicate\n"
  	                "                                (non-unique) UID\n"), usageout);
  	(void) fputs (_("  -p, --password PASSWORD       encrypted password of the new account\n"), usageout);
@@ -178,7 +182,7 @@ index c74e491..7214e72 100644
  	(void) fputs (_("  -s, --shell SHELL             login shell of the new account\n"), usageout);
  	(void) fputs (_("  -u, --uid UID                 user ID of the new account\n"), usageout);
  	(void) fputs (_("  -U, --user-group              create a group with the same name as the user\n"), usageout);
-@@ -1104,9 +1105,10 @@ static void process_flags (int argc, char **argv)
+@@ -1133,9 +1134,10 @@ static void process_flags (int argc, char **argv)
  			{"no-user-group",  no_argument,       NULL, 'N'},
  			{"non-unique",     no_argument,       NULL, 'o'},
  			{"password",       required_argument, NULL, 'p'},
@@ -190,7 +194,7 @@ index c74e491..7214e72 100644
  			{"shell",          required_argument, NULL, 's'},
  			{"uid",            required_argument, NULL, 'u'},
  			{"user-group",     no_argument,       NULL, 'U'},
-@@ -1117,9 +1119,9 @@ static void process_flags (int argc, char **argv)
+@@ -1146,9 +1148,9 @@ static void process_flags (int argc, char **argv)
  		};
  		while ((c = getopt_long (argc, argv,
  #ifdef WITH_SELINUX
@@ -202,7 +206,7 @@ index c74e491..7214e72 100644
  #endif				/* !WITH_SELINUX */
  		                         long_options, NULL)) != -1) {
  			switch (c) {
-@@ -1285,12 +1287,19 @@ static void process_flags (int argc, char **argv)
+@@ -1320,12 +1322,19 @@ static void process_flags (int argc, char **argv)
  				}
  				user_pass = optarg;
  				break;
@@ -223,7 +227,7 @@ index c74e491..7214e72 100644
  				break;
  			case 's':
  				if (   ( !VALID (optarg) )
-@@ -2148,7 +2157,7 @@ int main (int argc, char **argv)
+@@ -2257,7 +2266,7 @@ int main (int argc, char **argv)
  
  	process_root_flag ("-R", argc, argv);
  
@@ -233,10 +237,10 @@ index c74e491..7214e72 100644
  	OPENLOG ("useradd");
  #ifdef WITH_AUDIT
 diff --git a/src/usermod.c b/src/usermod.c
-index e571426..ccfbb99 100644
+index 21c6da9..cffdb3e 100644
 --- a/src/usermod.c
 +++ b/src/usermod.c
-@@ -424,8 +424,9 @@ static /*@noreturn@*/void usage (int status)
+@@ -431,8 +431,9 @@ static /*@noreturn@*/void usage (int status)
  	                "                                new location (use only with -d)\n"), usageout);
  	(void) fputs (_("  -o, --non-unique              allow using duplicate (non-unique) UID\n"), usageout);
  	(void) fputs (_("  -p, --password PASSWORD       use encrypted password for the new password\n"), usageout);
@@ -247,7 +251,7 @@ index e571426..ccfbb99 100644
  	(void) fputs (_("  -s, --shell SHELL             new login shell for the user account\n"), usageout);
  	(void) fputs (_("  -u, --uid UID                 new UID for the user account\n"), usageout);
  	(void) fputs (_("  -U, --unlock                  unlock the user account\n"), usageout);
-@@ -1002,8 +1003,9 @@ static void process_flags (int argc, char **argv)
+@@ -1010,8 +1011,9 @@ static void process_flags (int argc, char **argv)
  			{"move-home",    no_argument,       NULL, 'm'},
  			{"non-unique",   no_argument,       NULL, 'o'},
  			{"password",     required_argument, NULL, 'p'},
@@ -258,16 +262,16 @@ index e571426..ccfbb99 100644
  			{"shell",        required_argument, NULL, 's'},
  			{"uid",          required_argument, NULL, 'u'},
  			{"unlock",       no_argument,       NULL, 'U'},
-@@ -1019,7 +1021,7 @@ static void process_flags (int argc, char **argv)
+@@ -1027,7 +1029,7 @@ static void process_flags (int argc, char **argv)
  			{NULL, 0, NULL, '\0'}
  		};
  		while ((c = getopt_long (argc, argv,
--		                         "ac:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
-+		                         "ac:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
+-		                         "abc:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
++		                         "abc:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
  #ifdef ENABLE_SUBIDS
  		                         "v:w:V:W:"
  #endif				/* ENABLE_SUBIDS */
-@@ -1119,9 +1121,17 @@ static void process_flags (int argc, char **argv)
+@@ -1130,9 +1132,17 @@ static void process_flags (int argc, char **argv)
  				user_pass = optarg;
  				pflg = true;
  				break;
@@ -286,7 +290,7 @@ index e571426..ccfbb99 100644
  				break;
  			case 's':
  				if (!VALID (optarg)) {
-@@ -2098,7 +2108,7 @@ int main (int argc, char **argv)
+@@ -2127,7 +2137,7 @@ int main (int argc, char **argv)
  	(void) textdomain (PACKAGE);
  
  	process_root_flag ("-R", argc, argv);
@@ -295,6 +299,3 @@ index e571426..ccfbb99 100644
  
  	OPENLOG ("usermod");
  #ifdef WITH_AUDIT
--- 
-2.11.0
-
diff --git a/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch b/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
new file mode 100644
index 00000000000..77357027764
--- /dev/null
+++ b/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
@@ -0,0 +1,63 @@
+From b406a7f4c3d6472885b75320ea63f140e021ff03 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 17 Jul 2014 15:53:34 +0800
+Subject: [PATCH] useradd.c: create parent directories when necessary
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/useradd.c | 32 +++++++++++++++++++++++++++++++-
+ 1 file changed, 31 insertions(+), 1 deletion(-)
+
+diff --git a/src/useradd.c b/src/useradd.c
+index 44f09e2..fec0986 100644
+--- a/src/useradd.c
++++ b/src/useradd.c
+@@ -2065,6 +2065,36 @@ static void usr_update (void)
+ 	}
+ }
+ 
++/*
++ * mkdir_p - create directories, including parent directories when needed
++ *
++ * similar to `mkdir -p'
++ */
++int mkdir_p(const char *path) {
++	int len = strlen(path);
++	char newdir[len + 1];
++	mode_t mode = 0755;
++	int i = 0;
++
++	if (path[i] == '\0') {
++		return 0;
++	}
++
++	/* skip the leading '/' */
++	i++;
++
++	while(path[i] != '\0') {
++		if (path[i] == '/') {
++			strncpy(newdir, path, i);
++			newdir[i] = '\0';
++			mkdir(newdir, mode);
++		}
++		i++;
++	}
++	mkdir(path, mode);
++        return 0;
++}
++
+ /*
+  * create_home - create the user's home directory
+  *
+@@ -2137,7 +2167,7 @@ static void create_home (void)
+ 				}
+ 				else
+ #endif
+-				if (mkdir (path, 0) != 0) {
++				if ((mkdir_p (path) == 0) && (access (prefix_user_home, F_OK) != 0)) {
+ 			fprintf (stderr,
+ 							_("%s: cannot create directory %s\n"),
+ 							Prog, path);
diff --git a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
index 4fa3d184edf..98252163692 100644
--- a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
+++ b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
@@ -1,3 +1,8 @@
+From 66533c7c6f347d257020675a1ed6e0c59cbbc3f0 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 17 Jul 2014 15:53:34 +0800
+Subject: [PATCH] commonio.c-fix-unexpected-open-failure-in-chroot-env
+
 Upstream-Status: Inappropriate [OE specific]
 
 commonio.c: fix unexpected open failure in chroot environment
@@ -10,15 +15,16 @@ Note that this patch doesn't change the logic in the code, it just expands
 the codes.
 
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
 ---
- lib/commonio.c |   16 ++++++++++++----
+ lib/commonio.c | 16 ++++++++++++----
  1 file changed, 12 insertions(+), 4 deletions(-)
 
 diff --git a/lib/commonio.c b/lib/commonio.c
-index cc536bf..51cafd9 100644
+index 16fa7e7..d6bc297 100644
 --- a/lib/commonio.c
 +++ b/lib/commonio.c
-@@ -613,10 +613,18 @@ int commonio_open (struct commonio_db *db, int mode)
+@@ -632,10 +632,18 @@ int commonio_open (struct commonio_db *db, int mode)
  	db->cursor = NULL;
  	db->changed = false;
  
@@ -41,6 +47,3 @@ index cc536bf..51cafd9 100644
  	db->fp = NULL;
  	if (fd >= 0) {
  #ifdef WITH_TCB
--- 
-1.7.9.5
-
diff --git a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
index 1af04d5fe89..cc833362e9a 100644
--- a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
+++ b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
@@ -1,26 +1,37 @@
+From ca472d6866e545aaa70a70020e3226f236a8aafc Mon Sep 17 00:00:00 2001
+From: Shan Hai <shan.hai@windriver.com>
+Date: Tue, 13 Sep 2016 13:45:46 +0800
+Subject: [PATCH] shadow: use relaxed usernames
 
 The groupadd from shadow does not allow upper case group names, the
 same is true for the upstream shadow. But distributions like
 Debian/Ubuntu/CentOS has their own way to cope with this problem,
 this patch is picked up from CentOS release 7.0 to relax the usernames
 restrictions to allow the upper case group names, and the relaxation is
-POSIX compliant because POSIX indicate that usernames are composed of 
+POSIX compliant because POSIX indicate that usernames are composed of
 characters from the portable filename character set [A-Za-z0-9._-].
 
 Upstream-Status: Pending
 
-Signed-off-by: Shan Hai <shan.hai@windriver.com> 
+Signed-off-by: Shan Hai <shan.hai@windriver.com>
 
-diff -urpN a/libmisc/chkname.c b/libmisc/chkname.c
-index 5089112..f40a0da 100644
+---
+ libmisc/chkname.c  | 30 ++++++++++++++++++------------
+ man/groupadd.8.xml |  6 ------
+ man/useradd.8.xml  |  8 +-------
+ 3 files changed, 19 insertions(+), 25 deletions(-)
+
+diff --git a/libmisc/chkname.c b/libmisc/chkname.c
+index 90f185c..65762b4 100644
 --- a/libmisc/chkname.c
 +++ b/libmisc/chkname.c
-@@ -49,21 +49,28 @@
- static bool is_valid_name (const char *name)
- {
+@@ -55,22 +55,28 @@ static bool is_valid_name (const char *name)
+ 	}
+ 
  	/*
 -	 * User/group names must match [a-z_][a-z0-9_-]*[$]
 -	 */
+-
 -	if (('\0' == *name) ||
 -	    !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
 +         * User/group names must match gnu e-regex:
@@ -55,28 +66,28 @@ index 5089112..f40a0da 100644
  			return false;
  		}
  	}
-diff -urpN a/man/groupadd.8.xml b/man/groupadd.8.xml
-index 230fd0c..94f7807 100644
+diff --git a/man/groupadd.8.xml b/man/groupadd.8.xml
+index 1e58f09..d804b61 100644
 --- a/man/groupadd.8.xml
 +++ b/man/groupadd.8.xml
-@@ -222,12 +222,6 @@
+@@ -272,12 +272,6 @@
+ 
     <refsect1 id='caveats'>
       <title>CAVEATS</title>
-      <para>
+-     <para>
 -       Groupnames must start with a lower case letter or an underscore,
 -       followed by lower case letters, digits, underscores, or dashes.
 -       They can end with a dollar sign.
 -       In regular expression terms: [a-z_][a-z0-9_-]*[$]?
 -     </para>
--     <para>
+      <para>
         Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long.
       </para>
-      <para>
-diff -urpN a/man/useradd.8.xml b/man/useradd.8.xml
-index 5dec989..fe623b9 100644
+diff --git a/man/useradd.8.xml b/man/useradd.8.xml
+index a16d730..c0bd777 100644
 --- a/man/useradd.8.xml
 +++ b/man/useradd.8.xml
-@@ -336,7 +336,7 @@
+@@ -366,7 +366,7 @@
  	</term>
  	<listitem>
  	  <para>
@@ -85,16 +96,16 @@ index 5dec989..fe623b9 100644
  	    wide setting from <filename>/etc/login.defs</filename>
  	    (<option>CREATE_HOME</option>) is set to
  	    <replaceable>yes</replaceable>.
-@@ -607,12 +607,6 @@
+@@ -660,12 +660,6 @@
+       the user account creation request.
      </para>
  
-     <para>
+-    <para>
 -      Usernames must start with a lower case letter or an underscore,
 -      followed by lower case letters, digits, underscores, or dashes.
 -      They can end with a dollar sign.
 -      In regular expression terms: [a-z_][a-z0-9_-]*[$]?
 -    </para>
--    <para>
+     <para>
        Usernames may only be up to 32 characters long.
      </para>
-   </refsect1>
diff --git a/meta/recipes-extended/shadow/shadow.inc b/meta/recipes-extended/shadow/shadow.inc
index 770c239e96d..d07b507532f 100644
--- a/meta/recipes-extended/shadow/shadow.inc
+++ b/meta/recipes-extended/shadow/shadow.inc
@@ -11,8 +11,6 @@ DEPENDS = "virtual/crypt"
 UPSTREAM_CHECK_URI = "https://github.com/shadow-maint/shadow/releases"
 SRC_URI = "https://github.com/shadow-maint/shadow/releases/download/${PV}/${BP}.tar.gz \
            file://shadow-4.1.3-dots-in-usernames.patch \
-           file://0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch  \
-           file://0001-configure.ac-fix-configure-error-with-dash.patch \
            ${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
            file://shadow-relaxed-usernames.patch \
            "
@@ -24,16 +22,17 @@ SRC_URI_append_class-target = " \
 
 SRC_URI_append_class-native = " \
            file://0001-Disable-use-of-syslog-for-sysroot.patch \
-           file://allow-for-setting-password-in-clear-text.patch \
+           file://0002-Allow-for-setting-password-in-clear-text.patch \
            file://commonio.c-fix-unexpected-open-failure-in-chroot-env.patch \
-           file://0001-useradd.c-create-parent-directories-when-necessary.patch \
+           file://0004-useradd.c-create-parent-directories-when-necessary.patch \
+           file://0001-Do-not-check-for-validity-of-shell-executable.patch \
            "
 SRC_URI_append_class-nativesdk = " \
            file://0001-Disable-use-of-syslog-for-sysroot.patch \
            "
 
-SRC_URI[md5sum] = "36feb15665338ae3de414f2a88e434db"
-SRC_URI[sha256sum] = "4668f99bd087399c4a586084dc3b046b75f560720d83e92fd23bf7a89dda4d31"
+SRC_URI[md5sum] = "017ac773ba370bc28e157cee30dad71a"
+SRC_URI[sha256sum] = "82016d65317555fc8ce9e669eb187984d8d4b1f8ecda0769f4bc5412aed326e4"
 
 # Additional Policy files for PAM
 PAM_SRC_URI = "file://pam.d/chfn \
diff --git a/meta/recipes-extended/shadow/shadow_4.6.bb b/meta/recipes-extended/shadow/shadow_4.8.bb
similarity index 100%
rename from meta/recipes-extended/shadow/shadow_4.6.bb
rename to meta/recipes-extended/shadow/shadow_4.8.bb
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 15/24] sysklogd: update to 2.0.3
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (12 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 14/24] shadow: update 4.6 -> 4.8 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 23:48   ` Ross Burton
  2019-12-05 15:43 ` [PATCH 16/24] libtasn1: update to 4.15.0 Alexander Kanavin
                   ` (10 subsequent siblings)
  24 siblings, 1 reply; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop all patches as they are no longer necessary with autotools,
fix problems that are addressed upstream, or (in case of no-vectorization.patch)
don't apply to the old version either, which means no one is using that hw target
anymore.

Remove custom systemd configs (provided by upstream), and custom
syslog config (also provided by upstream but not installed by default).

Adjust parselogs to not error out on not being able to find
System.map file during boot (that is packaged into kernel-dev
and is not normally installed).

License-Update: various tweaks; the license terms are the same.
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/lib/oeqa/runtime/cases/parselogs.py      |   3 +-
 .../files/0001-Fix-build-with-musl.patch      | 132 ------------------
 ...t-causes-a-segmentation-fault-under-.patch |  28 ----
 ...or-respecting-flags-from-environment.patch |  35 -----
 .../sysklogd/files/klogd.service              |  13 --
 .../sysklogd/files/no-strip-install.patch     |  17 ---
 .../sysklogd/files/no-vectorization.patch     |  20 ---
 meta/recipes-extended/sysklogd/files/sysklogd |   4 +-
 .../sysklogd/files/syslog.conf                |  71 ----------
 .../sysklogd/files/syslogd.service            |  14 --
 .../sysklogd/files/tmpfiles.sysklogd.conf     |   1 -
 meta/recipes-extended/sysklogd/sysklogd.inc   |  46 ++----
 .../sysklogd/sysklogd_1.5.1.bb                |   3 -
 .../sysklogd/sysklogd_2.0.3.bb                |   3 +
 14 files changed, 19 insertions(+), 371 deletions(-)
 delete mode 100644 meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch
 delete mode 100644 meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch
 delete mode 100644 meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch
 delete mode 100644 meta/recipes-extended/sysklogd/files/klogd.service
 delete mode 100644 meta/recipes-extended/sysklogd/files/no-strip-install.patch
 delete mode 100644 meta/recipes-extended/sysklogd/files/no-vectorization.patch
 delete mode 100644 meta/recipes-extended/sysklogd/files/syslog.conf
 delete mode 100644 meta/recipes-extended/sysklogd/files/syslogd.service
 delete mode 100644 meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf
 delete mode 100644 meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb
 create mode 100644 meta/recipes-extended/sysklogd/sysklogd_2.0.3.bb

diff --git a/meta/lib/oeqa/runtime/cases/parselogs.py b/meta/lib/oeqa/runtime/cases/parselogs.py
index 15343d7abbe..b7c7b30adf5 100644
--- a/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -55,7 +55,8 @@ common_errors = [
     "Failed to read /var/lib/nfs/statd/state: Success",
     "error retry time-out =",
     "logind: cannot setup systemd-logind helper (-61), using legacy fallback",
-    "Error changing net interface name 'eth0' to "
+    "Error changing net interface name 'eth0' to ",
+    "Cannot find a map file"
     ]
 
 video_related = [
diff --git a/meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch b/meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch
deleted file mode 100644
index 9567946c0cb..00000000000
--- a/meta/recipes-extended/sysklogd/files/0001-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From f0af5bcfd753691652eac35efbcb208c933253f1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 31 Aug 2015 05:11:53 +0000
-Subject: [PATCH] Fix build with musl
-
-Explicitly include fcntl.h since with glibc is comes in as indirect
-include but not with musl
-
-linux/time.h inclusion is not required on musl so using !__GLIBC__ is
-not right for musl here
-
-wait type is glibc specific
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- klogd.c    | 10 +---------
- ksym_mod.c |  5 +----
- pidfile.c  |  1 +
- syslog.c   |  3 ++-
- syslogd.c  |  4 +---
- 5 files changed, 6 insertions(+), 17 deletions(-)
-
-diff --git a/klogd.c b/klogd.c
-index 6cc80ed..9219671 100644
---- a/klogd.c
-+++ b/klogd.c
-@@ -260,11 +260,8 @@
- #include <unistd.h>
- #include <signal.h>
- #include <errno.h>
--#include <sys/fcntl.h>
-+#include <fcntl.h>
- #include <sys/stat.h>
--#if !defined(__GLIBC__)
--#include <linux/time.h>
--#endif /* __GLIBC__ */
- #include <stdarg.h>
- #include <paths.h>
- #include <stdlib.h>
-@@ -277,13 +274,8 @@
- 
- #define __LIBRARY__
- #include <linux/unistd.h>
--#if !defined(__GLIBC__)
--# define __NR_ksyslog __NR_syslog
--_syscall3(int,ksyslog,int, type, char *, buf, int, len);
--#else
- #include <sys/klog.h>
- #define ksyslog klogctl
--#endif
- 
- #define LOG_BUFFER_SIZE 4096
- #define LOG_LINE_LENGTH 1000
-diff --git a/ksym_mod.c b/ksym_mod.c
-index 68cd6b6..6e26da1 100644
---- a/ksym_mod.c
-+++ b/ksym_mod.c
-@@ -113,12 +113,9 @@
- #include <unistd.h>
- #include <signal.h>
- #include <errno.h>
--#include <sys/fcntl.h>
-+#include <fcntl.h>
- #include <sys/stat.h>
- #include "module.h"
--#if !defined(__GLIBC__)
--#include <linux/time.h>
--#endif /* __GLIBC__ */
- #include <stdarg.h>
- #include <paths.h>
- #include <linux/version.h>
-diff --git a/pidfile.c b/pidfile.c
-index e0959a0..6daa2e0 100644
---- a/pidfile.c
-+++ b/pidfile.c
-@@ -31,6 +31,7 @@
- #include <string.h>
- #include <errno.h>
- #include <signal.h>
-+#include <fcntl.h>
- 
- /* read_pid
-  *
-diff --git a/syslog.c b/syslog.c
-index bdb3ff2..ef7b34e 100644
---- a/syslog.c
-+++ b/syslog.c
-@@ -55,7 +55,7 @@ static char sccsid[] = "@(#)syslog.c	5.28 (Berkeley) 6/27/90";
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/file.h>
--#include <sys/signal.h>
-+//#include <sys/signal.h>
- #include <sys/syslog.h>
- #if 0
- #include "syslog.h"
-@@ -72,6 +72,7 @@ static char sccsid[] = "@(#)syslog.c	5.28 (Berkeley) 6/27/90";
- #include <stdarg.h>
- #include <paths.h>
- #include <stdio.h>
-+#include <fcntl.h>
- 
- #define	_PATH_LOGNAME	"/dev/log"
- 
-diff --git a/syslogd.c b/syslogd.c
-index ea73ea5..1ca0595 100644
---- a/syslogd.c
-+++ b/syslogd.c
-@@ -818,9 +818,7 @@ void doexit(int sig);
- void init();
- void cfline(char *line, register struct filed *f);
- int decode(char *name, struct code *codetab);
--#if defined(__GLIBC__)
- #define dprintf mydprintf
--#endif /* __GLIBC__ */
- static void dprintf(char *, ...);
- static void allocate_log(void);
- void sighup_handler();
-@@ -2094,7 +2092,7 @@ void reapchild()
- 	(void) signal(SIGCHLD, reapchild);	/* reset signal handler -ASP */
- 	wait ((int *)0);
- #else
--	union wait status;
-+	int status;
- 
- 	while (wait3(&status, WNOHANG, (struct rusage *) NULL) > 0)
- 		;
--- 
-2.5.1
-
diff --git a/meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch b/meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch
deleted file mode 100644
index 56431af8456..00000000000
--- a/meta/recipes-extended/sysklogd/files/0001-fix-problems-that-causes-a-segmentation-fault-under-.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From cb72b3e172c238b4b5ae5935dc6be54f5034fcf1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 30 Jun 2017 18:20:06 -0700
-Subject: [PATCH 1/2] fix problems that causes a segmentation fault under some
- conditions
-
-Upstream-Status: Inappropriate [ no upstream ]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- ksym_mod.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/ksym_mod.c b/ksym_mod.c
-index 6e26da1..a3daa7d 100644
---- a/ksym_mod.c
-+++ b/ksym_mod.c
-@@ -186,7 +186,6 @@ extern int InitMsyms()
- 		else
- 			Syslog(LOG_ERR, "Error loading kernel symbols " \
- 			       "- %s\n", strerror(errno));
--		fclose(ksyms);
- 		return(0);
- 	}
- 
--- 
-2.13.2
-
diff --git a/meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch b/meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch
deleted file mode 100644
index ebbdef303bc..00000000000
--- a/meta/recipes-extended/sysklogd/files/0002-Make-way-for-respecting-flags-from-environment.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b22f244732cd0f475af2f82fc7eecec49f90623b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 1 Jul 2017 00:01:50 -0700
-Subject: [PATCH 2/2] Make way for respecting flags from environment
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 5af1689..af699d2 100644
---- a/Makefile
-+++ b/Makefile
-@@ -17,14 +17,12 @@
- #   along with this program; if not, write to the Free Software
- #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 
--CC= gcc
- #SKFLAGS= -g -DSYSV -Wall
- #LDFLAGS= -g
--SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
-+SKFLAGS = $(CFLAGS) $(CPPFLAGS) -DSYSV -Wall -fno-strength-reduce
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
- # $(shell getconf LFS_SKFLAGS)
--LDFLAGS= -s
- 
- # Look where your install program is.
- INSTALL = /usr/bin/install
--- 
-2.13.2
-
diff --git a/meta/recipes-extended/sysklogd/files/klogd.service b/meta/recipes-extended/sysklogd/files/klogd.service
deleted file mode 100644
index 0c888c497dd..00000000000
--- a/meta/recipes-extended/sysklogd/files/klogd.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Kernel Logging Service
-After=syslogd.service
-
-[Service]
-Type=forking
-ExecStart=/sbin/klogd
-PIDFile=/var/run/klogd.pid
-StandardOutput=null
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta/recipes-extended/sysklogd/files/no-strip-install.patch b/meta/recipes-extended/sysklogd/files/no-strip-install.patch
deleted file mode 100644
index d426c83bf25..00000000000
--- a/meta/recipes-extended/sysklogd/files/no-strip-install.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: sysklogd-1.5.1/Makefile
-===================================================================
---- sysklogd-1.5.1.orig/Makefile
-+++ sysklogd-1.5.1/Makefile
-@@ -127,8 +127,8 @@ clobber: clean
- 	rm -f syslogd klogd ksym syslog_tst oops_test TAGS tsyslogd tklogd
- 
- install_exec: syslogd klogd
--	${INSTALL} -m 500 -s syslogd ${BINDIR}/syslogd
--	${INSTALL} -m 500 -s klogd ${BINDIR}/klogd
-+	${INSTALL} -m 500 syslogd ${BINDIR}/syslogd
-+	${INSTALL} -m 500 klogd ${BINDIR}/klogd
- 
- install_man:
- 	${INSTALL} -o ${MAN_USER} -g ${MAN_GROUP} -m ${MAN_PERMS} sysklogd.8 ${MANDIR}/man8/sysklogd.8
diff --git a/meta/recipes-extended/sysklogd/files/no-vectorization.patch b/meta/recipes-extended/sysklogd/files/no-vectorization.patch
deleted file mode 100644
index c1cc042c9cf..00000000000
--- a/meta/recipes-extended/sysklogd/files/no-vectorization.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Inappropriate
-
-The compiler should not be generating vectorized instructions on this target.
-This is a work around until I can determine why this is occuring on this
-particular recipe
-
-Index: sysklogd-1.5/Makefile
-===================================================================
---- sysklogd-1.5.orig/Makefile
-+++ sysklogd-1.5/Makefile
-@@ -20,7 +20,8 @@
- CC= gcc
- #SKFLAGS= -g -DSYSV -Wall
- #LDFLAGS= -g
--SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
-+SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce \
-+	-fno-tree-vectorize
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
- # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
- # $(shell getconf LFS_SKFLAGS)
diff --git a/meta/recipes-extended/sysklogd/files/sysklogd b/meta/recipes-extended/sysklogd/files/sysklogd
index 73424840ba3..4a4ca8a78ed 100755
--- a/meta/recipes-extended/sysklogd/files/sysklogd
+++ b/meta/recipes-extended/sysklogd/files/sysklogd
@@ -19,8 +19,8 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
 pidfile_syslogd=/var/run/syslogd.pid
 pidfile_klogd=/var/run/klogd.pid
-binpath_syslogd=/sbin/syslogd
-binpath_klogd=/sbin/klogd
+binpath_syslogd=/usr/sbin/syslogd
+binpath_klogd=/usr/sbin/klogd
 
 test -x $binpath || exit 0
 
diff --git a/meta/recipes-extended/sysklogd/files/syslog.conf b/meta/recipes-extended/sysklogd/files/syslog.conf
deleted file mode 100644
index 0849de12687..00000000000
--- a/meta/recipes-extended/sysklogd/files/syslog.conf
+++ /dev/null
@@ -1,71 +0,0 @@
-#  /etc/syslog.conf	Configuration file for syslogd.
-#
-#  Ported from debian by Yu Ke <ke.yu@intel.com>
-#
-
-#
-# First some standard logfiles.  Log by facility.
-#
-
-auth,authpriv.*			/var/log/auth.log
-*.*;auth,authpriv.none		-/var/log/syslog
-#cron.*				/var/log/cron.log
-daemon.*			-/var/log/daemon.log
-kern.*				-/var/log/kern.log
-lpr.*				-/var/log/lpr.log
-mail.*				-/var/log/mail.log
-user.*				-/var/log/user.log
-
-#
-# Logging for the mail system.  Split it up so that
-# it is easy to write scripts to parse these files.
-#
-mail.info			-/var/log/mail.info
-mail.warn			-/var/log/mail.warn
-mail.err			/var/log/mail.err
-
-# Logging for INN news system
-#
-news.crit			/var/log/news.crit
-news.err			/var/log/news.err
-news.notice			-/var/log/news.notice
-
-#
-# Some `catch-all' logfiles.
-#
-*.=debug;\
-auth,authpriv.none;\
-news.none;mail.none	-/var/log/debug
-
-*.=info;*.=notice;*.=warn;\
-auth,authpriv.none;\
-cron,daemon.none;\
-mail,news.none		-/var/log/messages
-
-#
-# Emergencies are sent to everybody logged in.
-#
-*.emerg				*
-
-#
-# I like to have messages displayed on the console, but only on a virtual
-# console I usually leave idle.
-#
-#daemon,mail.*;\
-#news.=crit;news.=err;news.=notice;\
-#*.=debug;*.=info;\
-#*.=notice;*.=warn	/dev/tty8
-
-# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
-# you must invoke `xconsole' with the `-file' option:
-#
-#    $ xconsole -file /dev/xconsole [...]
-#
-# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
-#      busy site..
-#
-daemon.*;mail.*;\
-news.err;\
-*.=debug;*.=info;\
-*.=notice;*.=warn	|/dev/xconsole
-
diff --git a/meta/recipes-extended/sysklogd/files/syslogd.service b/meta/recipes-extended/sysklogd/files/syslogd.service
deleted file mode 100644
index eeaff3d38d6..00000000000
--- a/meta/recipes-extended/sysklogd/files/syslogd.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=System Logging Service
-Requires=syslog.socket
-
-[Service]
-Type=forking
-ExecStart=/sbin/syslogd
-PIDFile=/var/run/syslogd.pid
-StandardOutput=null
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
-Alias=syslog.service
diff --git a/meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf b/meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf
deleted file mode 100644
index f4aecd385b6..00000000000
--- a/meta/recipes-extended/sysklogd/files/tmpfiles.sysklogd.conf
+++ /dev/null
@@ -1 +0,0 @@
-p /dev/xconsole 0640 root adm
diff --git a/meta/recipes-extended/sysklogd/sysklogd.inc b/meta/recipes-extended/sysklogd/sysklogd.inc
index 749026f8533..dad62e421f6 100644
--- a/meta/recipes-extended/sysklogd/sysklogd.inc
+++ b/meta/recipes-extended/sysklogd/sysklogd.inc
@@ -6,27 +6,26 @@ SECTION = "base"
 LICENSE = "GPLv2+ & BSD"
 LICENSE_syslogd = "BSD"
 LICENSE_klogd = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
-                    file://syslogd.c;beginline=2;endline=15;md5=77ffb2fec48c46d7ca0abb2d5813e7fd \
-                    file://klogd.c;beginline=2;endline=19;md5=7e87ed0ae6142de079bce738c10c899d \
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://src/syslogd.c;beginline=2;endline=15;md5=a880fecbc04503f071c494a9c0dd4f97 \
+                    file://src/klogd.c;beginline=2;endline=19;md5=4f5591d04cccbeb0352758ed4a9d7213 \
                    "
 
-inherit update-rc.d update-alternatives systemd
+inherit update-rc.d update-alternatives systemd autotools
 
 SRC_URI = "git://github.com/troglobit/sysklogd.git;nobranch=1 \
-           file://no-strip-install.patch \
-           file://0001-Fix-build-with-musl.patch \
-           file://0001-fix-problems-that-causes-a-segmentation-fault-under-.patch \
-           file://0002-Make-way-for-respecting-flags-from-environment.patch \
            file://sysklogd \
-           file://syslog.conf \
-           file://syslogd.service \
-           file://klogd.service \
-           file://tmpfiles.sysklogd.conf \
            "
 S = "${WORKDIR}/git"
 
-SRC_URI_append_e500v2 = " file://no-vectorization.patch"
+EXTRA_OECONF = "--with-klogd --without-logger"
+
+do_install_append () {
+       install -d ${D}${sysconfdir}
+       install -m 644 ${S}/syslog.conf ${D}${sysconfdir}/syslog.conf
+       install -d ${D}${sysconfdir}/init.d
+       install -m 755 ${WORKDIR}/sysklogd ${D}${sysconfdir}/init.d/syslog
+}
 
 SYSTEMD_PACKAGES = "${PN}"
 SYSTEMD_SERVICE_${PN} = "syslogd.service klogd.service"
@@ -36,27 +35,6 @@ INITSCRIPT_NAME = "syslog"
 CONFFILES_${PN} = "${sysconfdir}/syslog.conf"
 RCONFLICTS_${PN} = "rsyslog busybox-syslog syslog-ng"
 
-CFLAGS += "-DSYSV -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
-
-do_install () {
-	install -d ${D}${mandir}/man8 \
-			${D}${mandir}/man5 \
-			${D}${base_sbindir}
-	oe_runmake 'BINDIR=${D}${base_sbindir}' \
-			'MANDIR=${D}${mandir}' install
-	install -d ${D}${sysconfdir}
-	install -m 644 ${WORKDIR}/syslog.conf ${D}${sysconfdir}/syslog.conf
-	install -d ${D}${sysconfdir}/init.d
-	install -m 755 ${WORKDIR}/sysklogd ${D}${sysconfdir}/init.d/syslog
-	install -d ${D}${systemd_unitdir}/system
-	install -m 644 ${WORKDIR}/syslogd.service ${D}${systemd_unitdir}/system
-	install -m 644 ${WORKDIR}/klogd.service ${D}${systemd_unitdir}/system
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true', 'false', d)}; then
-		install -d ${D}${exec_prefix}/lib/tmpfiles.d
-		install -m 644 ${WORKDIR}/tmpfiles.sysklogd.conf ${D}${exec_prefix}/lib/tmpfiles.d/sysklogd.conf
-	fi
-}
-
 FILES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/sysklogd.conf', '', d)}"
 
 ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb b/meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb
deleted file mode 100644
index 88bcfd9e4a0..00000000000
--- a/meta/recipes-extended/sysklogd/sysklogd_1.5.1.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require sysklogd.inc
-
-SRCREV = "930a2b1c0d15b14309a49f14e3f30e905456af4d"
diff --git a/meta/recipes-extended/sysklogd/sysklogd_2.0.3.bb b/meta/recipes-extended/sysklogd/sysklogd_2.0.3.bb
new file mode 100644
index 00000000000..21f750fa60f
--- /dev/null
+++ b/meta/recipes-extended/sysklogd/sysklogd_2.0.3.bb
@@ -0,0 +1,3 @@
+require sysklogd.inc
+
+SRCREV = "ad686ca86d977f9eac4cd0a0d0e9a5964a4621d3"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 16/24] libtasn1: update to 4.15.0
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (13 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 15/24] sysklogd: update to 2.0.3 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 16:55   ` Khem Raj
  2019-12-05 15:43 ` [PATCH 17/24] texinfo: update to 6.7 Alexander Kanavin
                   ` (9 subsequent siblings)
  24 siblings, 1 reply; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop backports.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../gnutls/libtasn1/fix-gtkdoc.patch          | 38 -------------------
 .../gnutls/libtasn1/fix-ldflags.patch         | 31 ---------------
 .../{libtasn1_4.14.bb => libtasn1_4.15.0.bb}  | 11 ++++--
 3 files changed, 7 insertions(+), 73 deletions(-)
 delete mode 100644 meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
 delete mode 100644 meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
 rename meta/recipes-support/gnutls/{libtasn1_4.14.bb => libtasn1_4.15.0.bb} (71%)

diff --git a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch b/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
deleted file mode 100644
index bfc9b9fca7e..00000000000
--- a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Upstream-Status: Backport [https://gitlab.com/gnutls/libtasn1/merge_requests/49]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From ebd4f871b5241809f6a5b461444a6d331e15c949 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 9 Sep 2019 13:11:39 +0100
-Subject: [PATCH] doc/reference: don't add empty object hierarchy chapter
-
-The object hierarchy section is empty because there are no GObjects in the
-libtasn1 API.  With gtk-doc 1.30 onwards if there are no objects then the object
-hierarchy file won't exist, resulting in a failure when building the
-documentation:
-
-| ../libtasn1-docs.xml:39: element include: XInclude error : could not load ../xml/tree_index.sgml, and no fallback was found
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- doc/reference/libtasn1-docs.xml | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/doc/reference/libtasn1-docs.xml b/doc/reference/libtasn1-docs.xml
-index accdb85..f88b888 100644
---- a/doc/reference/libtasn1-docs.xml
-+++ b/doc/reference/libtasn1-docs.xml
-@@ -34,10 +34,6 @@
-         <xi:include href="xml/libtasn1.xml"/>
- 
-   </chapter>
--  <chapter id="object-tree">
--    <title>Object Hierarchy</title>
--    <xi:include href="xml/tree_index.sgml"/>
--  </chapter>
-   <index id="api-index-full">
-     <title>API Index</title>
-     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
--- 
-2.20.1
-
diff --git a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch b/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
deleted file mode 100644
index f18f3c62679..00000000000
--- a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a6f93b7ace347bc4fe29eb4a8fe4383d786cc8d0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
-Date: Tue, 23 Jul 2019 20:44:01 +0200
-Subject: [PATCH] Fix LDFLAGS to AM_LDFLAGS in src/Makefile.am
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
-Upstream-Status: Backport
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- src/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 5bf3622..4459767 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -21,7 +21,7 @@ AM_CPPFLAGS = -I$(top_builddir)/lib/includes -I$(top_srcdir)/lib/includes \
-  -I$(top_builddir)/lib/gl -I$(top_srcdir)/lib/gl $(CODE_COVERAGE_CPPFLAGS)
- 
- LDADD = ../lib/libtasn1.la
--LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
-+AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
- 
- bin_PROGRAMS = asn1Parser asn1Coding asn1Decoding
- 
--- 
-2.21.0
-
diff --git a/meta/recipes-support/gnutls/libtasn1_4.14.bb b/meta/recipes-support/gnutls/libtasn1_4.15.0.bb
similarity index 71%
rename from meta/recipes-support/gnutls/libtasn1_4.14.bb
rename to meta/recipes-support/gnutls/libtasn1_4.15.0.bb
index ef2c1956a24..cd00d17b803 100644
--- a/meta/recipes-support/gnutls/libtasn1_4.14.bb
+++ b/meta/recipes-support/gnutls/libtasn1_4.15.0.bb
@@ -10,15 +10,18 @@ LIC_FILES_CHKSUM = "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
 
 SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
            file://dont-depend-on-help2man.patch \
-           file://fix-ldflags.patch \
-           file://fix-gtkdoc.patch \
            "
 
 DEPENDS = "bison-native"
 
-SRC_URI[md5sum] = "e9918200ed4a778e2b3cbe34c1be4205"
-SRC_URI[sha256sum] = "9e604ba5c5c8ea403487695c2e407405820d98540d9de884d6e844f9a9c5ba08"
+SRC_URI[md5sum] = "33e3fb5501bb2142184238c815b0beb8"
+SRC_URI[sha256sum] = "dd77509fe8f5304deafbca654dc7f0ea57f5841f41ba530cff9a5bf71382739e"
 
 inherit autotools texinfo lib_package gtk-doc
 
+do_install_append () {
+    # this utility is not useful and has a bogus RPATH
+    rm ${D}/${bindir}/corpus2array
+}
+
 BBCLASSEXTEND = "native nativesdk"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 17/24] texinfo: update to 6.7
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (14 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 16/24] libtasn1: update to 4.15.0 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 18/24] sysstat: update to 12.2.0 Alexander Kanavin
                   ` (8 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Drop 0001-Unset-need_charset_alias-when-building-for-musl.patch
as the problematic code is gone.

Rebase the other patches.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...charset_alias-when-building-for-musl.patch | 30 -----------
 .../texinfo/dont-depend-on-help2man.patch     | 23 ++++----
 .../texinfo/texinfo/link-zip.patch            | 23 +++++---
 .../texinfo/texinfo/texinfo-4.12-zlib.patch   | 38 +++++++------
 .../{texinfo_6.5.bb => texinfo_6.7.bb}        | 54 +++++++++++++++++--
 5 files changed, 94 insertions(+), 74 deletions(-)
 delete mode 100644 meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch
 rename meta/recipes-extended/texinfo/{texinfo_6.5.bb => texinfo_6.7.bb} (57%)

diff --git a/meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index c7338aa470f..00000000000
--- a/meta/recipes-extended/texinfo/texinfo/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 17:02:13 -0700
-Subject: [PATCH] Unset need_charset_alias when building for musl
-
-localcharset uses ac_cv_gnu_library_2_1 from glibc21.m4
-which actually shoudl be fixed in gnulib and then all downstream
-projects will get it eventually. For now we apply the fix to
-coreutils
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/gnulib.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: texinfo-5.2/gnulib/lib/Makefile.am
-===================================================================
---- texinfo-5.2.orig/gnulib/lib/Makefile.am
-+++ texinfo-5.2/gnulib/lib/Makefile.am
-@@ -378,7 +378,7 @@ install-exec-localcharset: all-local
- 	  case '$(host_os)' in \
- 	    darwin[56]*) \
- 	      need_charset_alias=true ;; \
--	    darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-+	    darwin* | cygwin* | mingw* | pw32* | cegcc* | linux-musl*) \
- 	      need_charset_alias=false ;; \
- 	    *) \
- 	      need_charset_alias=true ;; \
diff --git a/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch b/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
index f4184399c79..0d6bbafaddc 100644
--- a/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
+++ b/meta/recipes-extended/texinfo/texinfo/dont-depend-on-help2man.patch
@@ -1,4 +1,4 @@
-From e89b1c57d76f5cf5acbb0d0187374f7a77bce1e2 Mon Sep 17 00:00:00 2001
+From 63a803ead3656353329a801846a9a3beb7210c46 Mon Sep 17 00:00:00 2001
 From: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
 Date: Tue, 29 Nov 2016 13:43:24 -0600
 Subject: [PATCH] dont-depend-on-help2man
@@ -7,29 +7,30 @@ Upstream-Status: Inappropriate
 
 Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
 Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
+
 ---
  doc/Makefile.am |  2 +-
  man/Makefile.am | 12 ++++++------
  2 files changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/doc/Makefile.am b/doc/Makefile.am
-index 39db834..1bb2a4f
+index 732833e..041cb9b 100644
 --- a/doc/Makefile.am
 +++ b/doc/Makefile.am
-@@ -38,7 +38,7 @@ refcard_files = refcard/Makefile refcard/txicmdcheck \
+@@ -37,7 +37,7 @@ refcard_files = refcard/Makefile refcard/txicmdcheck \
  # Include our texinfo.tex, not Automake's.
  EXTRA_DIST = epsf.tex texinfo.tex \
               fdl.texi \
 -	     $(man_MANS) $(TXI_XLATE) \
 +	     $(TXI_XLATE) \
-              $(refcard_files) texinfo-tex-test.texi \
+              $(refcard_files) \
+ 	     texinfo-tex-test.texi texinfo-tex-test.WIDOWs \
               texinfo-ja.tex short-sample-ja.texi
- 
 diff --git a/man/Makefile.am b/man/Makefile.am
-index 6bfcb3d..a820c96
+index d0cd72c..a19e52a 100644
 --- a/man/Makefile.am
 +++ b/man/Makefile.am
-@@ -13,24 +13,24 @@
+@@ -11,27 +11,27 @@
  # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  
  # These are generated using help2man.
@@ -47,10 +48,13 @@ index 6bfcb3d..a820c96
 -man_MANS += info.5 texinfo.5
 +#man_MANS += info.5 texinfo.5
  
- # This is generated by pod2man, but let's just run it by hand.
 -man_MANS += pod2texi.1
 +#man_MANS += pod2texi.1
  
+ pod2texi.1: $(top_srcdir)/Pod-Simple-Texinfo/pod2texi.pl
+ 	$(POD2MAN) $(top_srcdir)/Pod-Simple-Texinfo/pod2texi.pl >"$@"
+ 
+ 
  # These are just .so's to the common program.
 -man_MANS += texi2any.1 texi2pdf.1 pdftexi2dvi.1
 +#man_MANS += texi2any.1 texi2pdf.1 pdftexi2dvi.1
@@ -60,6 +64,3 @@ index 6bfcb3d..a820c96
  
  # Maintainers should be able to regenerate.
  MAINTAINERCLEANFILES = $(man_MANS)
--- 
-2.9.3
-
diff --git a/meta/recipes-extended/texinfo/texinfo/link-zip.patch b/meta/recipes-extended/texinfo/texinfo/link-zip.patch
index 0b6e9fd7ea0..15c030c0c61 100644
--- a/meta/recipes-extended/texinfo/texinfo/link-zip.patch
+++ b/meta/recipes-extended/texinfo/texinfo/link-zip.patch
@@ -1,16 +1,23 @@
-install-info uses symbols from zlib so must link against it.
+From c1002138033fcccb2d1abfc41f5c2e46c836f7a0 Mon Sep 17 00:00:00 2001
+From: Joshua Lock <josh@linux.intel.com>
+Date: Mon, 29 Jul 2013 15:02:34 -0700
+Subject: [PATCH] install-info uses symbols from zlib so must link against it.
 
 Upstream-Status: Pending
 
 Signed-off-by: Joshua Lock <josh@linux.intel.com>
 
-Index: texinfo-5.1/install-info/Makefile.am
-===================================================================
---- texinfo-5.1.orig/install-info/Makefile.am
-+++ texinfo-5.1/install-info/Makefile.am
-@@ -34,4 +34,4 @@ AM_CPPFLAGS = 					\
+---
+ install-info/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/install-info/Makefile.am b/install-info/Makefile.am
+index 9bcff71..68247f9 100644
+--- a/install-info/Makefile.am
++++ b/install-info/Makefile.am
+@@ -33,4 +33,4 @@ AM_CPPFLAGS = 					\
    -I$(top_srcdir)/gnulib/lib			\
    -I$(top_builddir)/gnulib/lib			\
    -DLOCALEDIR=\"$(localedir)\"
--LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL)
-+LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) -lz
+-LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) $(LIBTHREAD)
++LDADD = $(top_builddir)/gnulib/lib/libgnu.a $(LIBINTL) $(LIBTHREAD) -lz
diff --git a/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch b/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch
index f25352c636f..f72097e6394 100644
--- a/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch
+++ b/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch
@@ -1,4 +1,4 @@
-From fe4f00459601efe0cfa75d92749a32237800a530 Mon Sep 17 00:00:00 2001
+From 3d3b66cf398853c666e724c3dbcc37d53a2240d5 Mon Sep 17 00:00:00 2001
 From: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
 Date: Tue, 29 Nov 2016 12:27:17 -0600
 Subject: [PATCH] texinfo-4.12-zlib
@@ -7,16 +7,17 @@ Upstream-Status: Pending
 
 Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
 Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
+
 ---
- install-info/Makefile.in    | 12 ++-----
- install-info/install-info.c | 79 +++++++++++++++++++++++++++------------------
- 2 files changed, 49 insertions(+), 42 deletions(-)
+ install-info/Makefile.in    |  2 +-
+ install-info/install-info.c | 79 ++++++++++++++++++++++---------------
+ 2 files changed, 48 insertions(+), 33 deletions(-)
 
 diff --git a/install-info/Makefile.in b/install-info/Makefile.in
-index 837d020..ba96579 100644
+index c924509..746df05 100644
 --- a/install-info/Makefile.in
 +++ b/install-info/Makefile.in
-@@ -216,7 +208,7 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+@@ -218,7 +218,7 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
  PROGRAMS = $(bin_PROGRAMS)
  am_ginstall_info_OBJECTS = install-info.$(OBJEXT)
  ginstall_info_OBJECTS = $(am_ginstall_info_OBJECTS)
@@ -24,12 +25,12 @@ index 837d020..ba96579 100644
 +ginstall_info_LDADD = $(LDADD) -lz
  am__DEPENDENCIES_1 =
  ginstall_info_DEPENDENCIES = $(top_builddir)/gnulib/lib/libgnu.a \
- 	$(am__DEPENDENCIES_1)
+ 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 diff --git a/install-info/install-info.c b/install-info/install-info.c
-index e58189c..8617787 100644
+index 21f4fe3..a7aba82 100644
 --- a/install-info/install-info.c
 +++ b/install-info/install-info.c
-@@ -22,6 +22,7 @@
+@@ -19,6 +19,7 @@
  #include <getopt.h>
  #include <regex.h>
  #include <argz.h>
@@ -37,7 +38,7 @@ index e58189c..8617787 100644
  
  #define TAB_WIDTH 8
  
-@@ -684,15 +685,15 @@ The first time you invoke Info you start off looking at this node.\n\
+@@ -681,15 +682,15 @@ The first time you invoke Info you start off looking at this node.\n\
     
     Return either stdin reading the file, or a non-stdin pipe reading
     the output of the compression program.  */
@@ -56,7 +57,7 @@ index e58189c..8617787 100644
  
    /* We let them pass NULL if they don't want this info, but it's easier
       to always determine it.  */
-@@ -700,48 +701,48 @@ open_possibly_compressed_file (char *filename,
+@@ -697,48 +698,48 @@ open_possibly_compressed_file (char *filename,
      opened_filename = &local_opened_filename;
  
    *opened_filename = filename;
@@ -113,7 +114,7 @@ index e58189c..8617787 100644
      }
  #endif /* __MSDOS__ */
    if (!f)
-@@ -757,7 +758,7 @@ open_possibly_compressed_file (char *filename,
+@@ -754,7 +755,7 @@ open_possibly_compressed_file (char *filename,
            (*create_callback) (filename);
  
            /* And try opening it again.  */
@@ -122,7 +123,7 @@ index e58189c..8617787 100644
            if (!f)
              return 0;
          }
-@@ -767,26 +768,26 @@ open_possibly_compressed_file (char *filename,
+@@ -764,26 +765,26 @@ open_possibly_compressed_file (char *filename,
  
    /* Read first few bytes of file rather than relying on the filename.
       If the file is shorter than this it can't be usable anyway.  */
@@ -158,7 +159,7 @@ index e58189c..8617787 100644
                  return 0;
                goto determine_file_type; /* success */
              }
-@@ -857,35 +858,40 @@ determine_file_type:
+@@ -854,35 +855,40 @@ determine_file_type:
      *compression_program = NULL;
  
    /* Seek back over the magic bytes.  */
@@ -206,7 +207,7 @@ index e58189c..8617787 100644
      }
  
    return f;
-@@ -904,7 +910,8 @@ readfile (char *filename, int *sizep,
+@@ -901,7 +907,8 @@ readfile (char *filename, int *sizep,
      void (*create_callback) (char *), char **opened_filename,
      char **compression_program)
  {
@@ -216,7 +217,7 @@ index e58189c..8617787 100644
    int filled = 0;
    int data_size = 8192;
    char *data = xmalloc (data_size);
-@@ -912,14 +919,20 @@ readfile (char *filename, int *sizep,
+@@ -909,14 +916,20 @@ readfile (char *filename, int *sizep,
    /* If they passed the space for the file name to return, use it.  */
    f = open_possibly_compressed_file (filename, create_callback,
                                       opened_filename,
@@ -239,7 +240,7 @@ index e58189c..8617787 100644
        if (nread < 0)
          return 0;
        if (nread == 0)
-@@ -938,8 +951,10 @@ readfile (char *filename, int *sizep,
+@@ -935,8 +948,10 @@ readfile (char *filename, int *sizep,
    /* We need to close the stream, since on some systems the pipe created
       by popen is simulated by a temporary file which only gets removed
       inside pclose.  */
@@ -251,6 +252,3 @@ index e58189c..8617787 100644
  
    *sizep = filled;
    return data;
--- 
-2.9.3
-
diff --git a/meta/recipes-extended/texinfo/texinfo_6.5.bb b/meta/recipes-extended/texinfo/texinfo_6.7.bb
similarity index 57%
rename from meta/recipes-extended/texinfo/texinfo_6.5.bb
rename to meta/recipes-extended/texinfo/texinfo_6.7.bb
index 50eae77ad0a..8b222832882 100644
--- a/meta/recipes-extended/texinfo/texinfo_6.5.bb
+++ b/meta/recipes-extended/texinfo/texinfo_6.7.bb
@@ -1,3 +1,48 @@
+# FIXME: the LIC_FILES_CHKSUM values have been updated by 'devtool upgrade'.
+# The following is the difference between the old and the new license text.
+# Please update the LICENSE value if needed, and summarize the changes in
+# the commit message via 'License-Update:' tag.
+# (example: 'License-Update: copyright years updated.')
+#
+# The changes:
+#
+# --- COPYING
+# +++ COPYING
+# @@ -1,7 +1,7 @@
+#                      GNU GENERAL PUBLIC LICENSE
+#                         Version 3, 29 June 2007
+#  
+# - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+# + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+#   Everyone is permitted to copy and distribute verbatim copies
+#   of this license document, but changing it is not allowed.
+#  
+# @@ -645,7 +645,7 @@
+#      GNU General Public License for more details.
+#  
+#      You should have received a copy of the GNU General Public License
+# -    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# +    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+#  
+#  Also add information on how to contact you by electronic and paper mail.
+#  
+# @@ -664,11 +664,11 @@
+#    You should also get your employer (if you work as a programmer) or school,
+#  if any, to sign a "copyright disclaimer" for the program, if necessary.
+#  For more information on this, and how to apply and follow the GNU GPL, see
+# -<http://www.gnu.org/licenses/>.
+# +<https://www.gnu.org/licenses/>.
+#  
+#    The GNU General Public License does not permit incorporating your program
+#  into proprietary programs.  If your program is a subroutine library, you
+#  may consider it more useful to permit linking proprietary applications with
+#  the library.  If this is what you want to do, use the GNU Lesser General
+#  Public License instead of this License.  But first, please read
+# -<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+# +<https://www.gnu.org/licenses/why-not-lgpl.html>.
+# 
+#
+
 SUMMARY = "Documentation system for on-line information and printed output"
 DESCRIPTION = "Texinfo is a documentation system that can produce both \
 online information and printed output from a single source file. The \
@@ -5,7 +50,7 @@ GNU Project uses the Texinfo file format for most of its documentation."
 HOMEPAGE = "http://www.gnu.org/software/texinfo/"
 SECTION = "console/utils"
 LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
 
 PROVIDES_append_class-native = " texinfo-replacement-native"
 
@@ -33,12 +78,11 @@ SRC_URI = "${GNU_MIRROR}/texinfo/${BP}.tar.gz \
            file://disable-native-tools.patch \
            file://link-zip.patch \
            file://dont-depend-on-help2man.patch \
-           file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
            ${TARGET_PATCH} \
-          "
+           "
 
-SRC_URI[md5sum] = "94e8f7149876793030e5518dd8d6e956"
-SRC_URI[sha256sum] = "d34272e4042c46186ddcd66bd5d980c0ca14ff734444686ccf8131f6ec8b1427"
+SRC_URI[md5sum] = "f0c1782f68ef73738d74bd1e9e30793a"
+SRC_URI[sha256sum] = "a52d05076b90032cb2523673c50e53185938746482cf3ca0213e9b4b50ac2d3e"
 
 tex_texinfo = "texmf/tex/texinfo"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 18/24] sysstat: update to 12.2.0
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (15 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 17/24] texinfo: update to 6.7 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 19/24] mkfontscale: update to 1.2.1 Alexander Kanavin
                   ` (7 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...orruption-bug-due-to-Integer-Overflo.patch | 46 -------------------
 .../sysstat/sysstat_12.1.6.bb                 | 11 -----
 .../sysstat/sysstat_12.2.0.bb                 | 10 ++++
 3 files changed, 10 insertions(+), 57 deletions(-)
 delete mode 100644 meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch
 delete mode 100644 meta/recipes-extended/sysstat/sysstat_12.1.6.bb
 create mode 100644 meta/recipes-extended/sysstat/sysstat_12.2.0.bb

diff --git a/meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch b/meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch
deleted file mode 100644
index 46b111806c4..00000000000
--- a/meta/recipes-extended/sysstat/sysstat/0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 603ae4ed8cd65abf0776ef7f68354a5c24a3411c Mon Sep 17 00:00:00 2001
-From: Sebastien GODARD <sysstat@users.noreply.github.com>
-Date: Tue, 15 Oct 2019 14:39:33 +0800
-Subject: [PATCH] Fix #232: Memory corruption bug due to Integer Overflow in
- remap_struct()
-
-Try to avoid integer overflow when reading a corrupted binary datafile
-with sadf.
-
-Upstream-Status: Backport [https://github.com/sysstat/sysstat/commit/83fad9c895d1ac13f76af5883b7451b3302beef5]
-CVE: CVE-2019-16167
-
-Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
-Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
----
- sa_common.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/sa_common.c b/sa_common.c
-index 395c11c..cfa9007 100644
---- a/sa_common.c
-+++ b/sa_common.c
-@@ -1336,7 +1336,8 @@ int remap_struct(unsigned int gtypes_nr[], unsigned int ftypes_nr[],
- 	/* Remap [unsigned] int fields */
- 	d = gtypes_nr[1] - ftypes_nr[1];
- 	if (d) {
--		if (ftypes_nr[1] * UL_ALIGNMENT_WIDTH < ftypes_nr[1])
-+		if (gtypes_nr[0] * ULL_ALIGNMENT_WIDTH +
-+		    ftypes_nr[1] * UL_ALIGNMENT_WIDTH < ftypes_nr[1])
- 			/* Overflow */
- 			return -1;
- 
-@@ -1365,7 +1366,9 @@ int remap_struct(unsigned int gtypes_nr[], unsigned int ftypes_nr[],
- 	/* Remap possible fields (like strings of chars) following int fields */
- 	d = gtypes_nr[2] - ftypes_nr[2];
- 	if (d) {
--		if (ftypes_nr[2] * U_ALIGNMENT_WIDTH < ftypes_nr[2])
-+		if (gtypes_nr[0] * ULL_ALIGNMENT_WIDTH +
-+		    gtypes_nr[1] * UL_ALIGNMENT_WIDTH +
-+		    ftypes_nr[2] * U_ALIGNMENT_WIDTH < ftypes_nr[2])
- 			/* Overflow */
- 			return -1;
- 
--- 
-1.9.1
-
diff --git a/meta/recipes-extended/sysstat/sysstat_12.1.6.bb b/meta/recipes-extended/sysstat/sysstat_12.1.6.bb
deleted file mode 100644
index 83bb45ea258..00000000000
--- a/meta/recipes-extended/sysstat/sysstat_12.1.6.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require sysstat.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
-
-SRC_URI += "file://0001-Include-needed-headers-explicitly.patch \
-	    file://0001-Fix-232-Memory-corruption-bug-due-to-Integer-Overflo.patch \
-	    file://0001-configure.in-remove-check-for-chkconfig.patch \
-"
-
-SRC_URI[md5sum] = "d8e3bbb9c873dd370f6d33664e326570"
-SRC_URI[sha256sum] = "f752f3c406153a6fc446496f1102872505ace3f0931d975c1d664c81ec09f129"
diff --git a/meta/recipes-extended/sysstat/sysstat_12.2.0.bb b/meta/recipes-extended/sysstat/sysstat_12.2.0.bb
new file mode 100644
index 00000000000..e3ae3dd51cd
--- /dev/null
+++ b/meta/recipes-extended/sysstat/sysstat_12.2.0.bb
@@ -0,0 +1,10 @@
+require sysstat.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
+
+SRC_URI += "file://0001-Include-needed-headers-explicitly.patch \
+            file://0001-configure.in-remove-check-for-chkconfig.patch \
+"
+
+SRC_URI[md5sum] = "7deffb18e7f32a0b74ab81f1f75de9ee"
+SRC_URI[sha256sum] = "61aa98eb8b38542eb97defcc2472adee1a24df8252f41b96e20d64c6064a8375"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 19/24] mkfontscale: update to 1.2.1
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (16 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 18/24] sysstat: update to 12.2.0 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 20/24] libxkbcommon: update to 0.9.1 Alexander Kanavin
                   ` (6 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

mkfontdir utility has been merged into mkfontscale source tree,
so a separate recipe is no longer needed (and clashes on install).

License-Update: additional copyright claims from Red Hat and Open Group
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../xorg-app/mkfontdir_1.0.7.bb               | 22 -------------------
 ...ontscale_1.1.3.bb => mkfontscale_1.2.1.bb} |  9 +++++---
 2 files changed, 6 insertions(+), 25 deletions(-)
 delete mode 100644 meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb
 rename meta/recipes-graphics/xorg-app/{mkfontscale_1.1.3.bb => mkfontscale_1.2.1.bb} (65%)

diff --git a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb b/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb
deleted file mode 100644
index a453e24876f..00000000000
--- a/meta/recipes-graphics/xorg-app/mkfontdir_1.0.7.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "A program to create an index of X font files in a directory"
-
-DESCRIPTION = "For each directory argument, mkfontdir reads all of the \
-font files in the directory. The font names and related data are written \
-out to the files \"fonts.dir\", \"fonts.scale\", and \"fonts.alias\".  \
-The X server and font server use these files to find the available font \
-files."
-
-PE = "1"
-PR = "${INC_PR}.0"
-
-RDEPENDS_${PN} += "mkfontscale"
-RDEPENDS_${PN}_class-native += "mkfontscale-native"
-
-BBCLASSEXTEND = "native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b4fcf2b90cadbfc15009b9e124dc3a3f"
-
-SRC_URI[md5sum] = "18c429148c96c2079edda922a2b67632"
-SRC_URI[sha256sum] = "56d52a482df130484e51fd066d1b6eda7c2c02ddbc91fe6e2be1b9c4e7306530"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
similarity index 65%
rename from meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
rename to meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
index 2a6bec16491..a767ee847b7 100644
--- a/meta/recipes-graphics/xorg-app/mkfontscale_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
@@ -10,9 +10,12 @@ is used by the mkfontdir program."
 
 DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto"
 
+PROVIDES += "mkfontdir"
+RPROVIDES_${PN} += "mkfontdir"
+
 BBCLASSEXTEND = "native"
 
-LIC_FILES_CHKSUM = "file://COPYING;md5=2e0d129d05305176d1a790e0ac1acb7f"
+LIC_FILES_CHKSUM = "file://COPYING;md5=99b1e1269aba5179139b9e4380fc0934"
 
-SRC_URI[md5sum] = "987c438e79f5ddb84a9c5726a1610819"
-SRC_URI[sha256sum] = "1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a"
+SRC_URI[md5sum] = "215940de158b1a3d8b3f8b442c606e2f"
+SRC_URI[sha256sum] = "ca0495eb974a179dd742bfa6199d561bda1c8da4a0c5a667f21fd82aaab6bac7"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 20/24] libxkbcommon: update to 0.9.1
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (17 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 19/24] mkfontscale: update to 1.2.1 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 21/24] xkeyboard-config: update to 2.28 Alexander Kanavin
                   ` (5 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Switch over to meson, and add an option for wayland support.

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...{libxkbcommon_0.8.4.bb => libxkbcommon_0.9.1.bb} | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
 rename meta/recipes-graphics/xorg-lib/{libxkbcommon_0.8.4.bb => libxkbcommon_0.9.1.bb} (59%)

diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_0.9.1.bb
similarity index 59%
rename from meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb
rename to meta/recipes-graphics/xorg-lib/libxkbcommon_0.9.1.bb
index 0608fd5af86..c147428a149 100644
--- a/meta/recipes-graphics/xorg-lib/libxkbcommon_0.8.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxkbcommon_0.9.1.bb
@@ -9,17 +9,18 @@ DEPENDS = "util-macros flex-native bison-native"
 
 SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
 
-SRC_URI[md5sum] = "3c4409058dfd203f641a563358e0187d"
-SRC_URI[sha256sum] = "60ddcff932b7fd352752d51a5c4f04f3d0403230a584df9a2e0d5ed87c486c8b"
+SRC_URI[md5sum] = "4662756fd73ab0ac9e32efdad8f807f6"
+SRC_URI[sha256sum] = "d4c6aabf0a5c1fc616f8a6a65c8a818c03773b9a87da9fbc434da5acd1199be0"
 
 UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
 
-inherit autotools pkgconfig
+inherit meson pkgconfig
 
-EXTRA_OECONF = "--disable-docs"
+EXTRA_OEMESON = "-Denable-docs=false"
 
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,libxcb xkeyboard-config,"
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}"
+PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config,"
+PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols,"
 
 # Fix a following runtime error:
 # xkbcommon: ERROR: couldn't find a Compose file for locale "C"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 21/24] xkeyboard-config: update to 2.28
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (18 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 20/24] libxkbcommon: update to 0.9.1 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 22/24] debianutils: update to 4.9 Alexander Kanavin
                   ` (4 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../{xkeyboard-config_2.27.bb => xkeyboard-config_2.28.bb}    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
 rename meta/recipes-graphics/xorg-lib/{xkeyboard-config_2.27.bb => xkeyboard-config_2.28.bb} (87%)

diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.28.bb
similarity index 87%
rename from meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb
rename to meta/recipes-graphics/xorg-lib/xkeyboard-config_2.28.bb
index 02156ad75b4..7a3d694bd62 100644
--- a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.27.bb
+++ b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.28.bb
@@ -13,8 +13,8 @@ LICENSE = "MIT & MIT-style"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
 
 SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
-SRC_URI[md5sum] = "316753e35d3906d042c74230612eab9f"
-SRC_URI[sha256sum] = "690daec8fea63526c07620c90e6f3f10aae34e94b6db6e30906173480721901f"
+SRC_URI[md5sum] = "5a968ab77846ff85a04242410b2a61de"
+SRC_URI[sha256sum] = "69adb25b0fc64e4075f8ec0eab8d869892419f474f91fb69db1713de2062bdce"
 
 SECTION = "x11/libs"
 DEPENDS = "util-macros libxslt-native"
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 22/24] debianutils: update to 4.9
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (19 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 21/24] xkeyboard-config: update to 2.28 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 23/24] nspr: update to 4.24 Alexander Kanavin
                   ` (3 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 .../{debianutils_4.8.6.3.bb => debianutils_4.9.bb}          | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
 rename meta/recipes-support/debianutils/{debianutils_4.8.6.3.bb => debianutils_4.9.bb} (87%)

diff --git a/meta/recipes-support/debianutils/debianutils_4.8.6.3.bb b/meta/recipes-support/debianutils/debianutils_4.9.bb
similarity index 87%
rename from meta/recipes-support/debianutils/debianutils_4.8.6.3.bb
rename to meta/recipes-support/debianutils/debianutils_4.9.bb
index a69d01e0f95..94ac34d15d5 100644
--- a/meta/recipes-support/debianutils/debianutils_4.8.6.3.bb
+++ b/meta/recipes-support/debianutils/debianutils_4.9.bb
@@ -3,13 +3,13 @@ SECTION = "base"
 LICENSE = "GPLv2 & SMAIL_GPL"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=f01a5203d50512fc4830b4332b696a9f"
 
-SRC_URI = "http://snapshot.debian.org/archive/debian/20190717T213444Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
+SRC_URI = "http://snapshot.debian.org/archive/debian/20191205T090816Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
 # the package is taken from snapshots.debian.org; that source is static and goes stale
 # so we check the latest upstream from a directory that does get updated
 UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/"
 
-SRC_URI[md5sum] = "ca57cc6621275346d7d516ab0b5fa1f5"
-SRC_URI[sha256sum] = "2cc7de3afc6df1cf6d00af9938efac7ee8f739228e548e512ddc186b6a7be221"
+SRC_URI[md5sum] = "bc599768703e594b91d8f6172ce82746"
+SRC_URI[sha256sum] = "20975c5cb8cb305f28c2ac35dd99fd9f594f25b6140b5d478a0a364e9fa8073f"
 
 inherit autotools update-alternatives
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 23/24] nspr: update to 4.24
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (20 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 22/24] debianutils: update to 4.9 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 15:43 ` [PATCH 24/24] sysvinit: update 2.88dsf -> 2.96 Alexander Kanavin
                   ` (2 subsequent siblings)
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 meta/recipes-support/nspr/{nspr_4.23.bb => nspr_4.24.bb} | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
 rename meta/recipes-support/nspr/{nspr_4.23.bb => nspr_4.24.bb} (96%)

diff --git a/meta/recipes-support/nspr/nspr_4.23.bb b/meta/recipes-support/nspr/nspr_4.24.bb
similarity index 96%
rename from meta/recipes-support/nspr/nspr_4.23.bb
rename to meta/recipes-support/nspr/nspr_4.24.bb
index 8e2761c20e9..5f823f89414 100644
--- a/meta/recipes-support/nspr/nspr_4.23.bb
+++ b/meta/recipes-support/nspr/nspr_4.24.bb
@@ -23,8 +23,8 @@ CACHED_CONFIGUREVARS_append_libc-musl = " CFLAGS='${CFLAGS} -D_PR_POLL_AVAILABLE
 UPSTREAM_CHECK_URI = "http://ftp.mozilla.org/pub/nspr/releases/"
 UPSTREAM_CHECK_REGEX = "v(?P<pver>\d+(\.\d+)+)/"
 
-SRC_URI[md5sum] = "90af0450423b0588f0eba6255c07ab79"
-SRC_URI[sha256sum] = "4b9d821037faf5723da901515ed9cac8b23ef1ea3729022259777393453477a4"
+SRC_URI[md5sum] = "d630c2111e1db6d2ec2069aad22b4121"
+SRC_URI[sha256sum] = "90a59a0df6a11528749647fe18401cc7e03881e3e63c309f8c520ce06dd413d0"
 
 CVE_PRODUCT = "netscape_portable_runtime"
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 24/24] sysvinit: update 2.88dsf -> 2.96
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (21 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 23/24] nspr: update to 4.24 Alexander Kanavin
@ 2019-12-05 15:43 ` Alexander Kanavin
  2019-12-05 16:02 ` ✗ patchtest: failure for "rpm: upgrade to 4.15.1..." and 23 more Patchwork
  2019-12-07 22:48 ` [PATCH 01/24] rpm: upgrade to 4.15.1 Richard Purdie
  24 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-05 15:43 UTC (permalink / raw)
  To: openembedded-core

Remove 0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch,
the problem has been fixed upstream.

Rebase the other patches.

License-Update: copyright years
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 ...sue-that-clang-reports-about-mutlipl.patch | 52 ------------
 ...acros.h-for-major-minor-defines-in-g.patch | 14 +--
 .../sysvinit/sysvinit/crypt-lib.patch         | 31 ++++---
 .../sysvinit/sysvinit/install.patch           | 47 ++++++----
 .../sysvinit/pidof-add-m-option.patch         | 64 +++++++-------
 .../sysvinit/sysvinit/realpath.patch          | 85 +++++++------------
 .../{sysvinit_2.88dsf.bb => sysvinit_2.96.bb} | 20 +++--
 7 files changed, 135 insertions(+), 178 deletions(-)
 delete mode 100644 meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch
 rename meta/recipes-core/sysvinit/{sysvinit_2.88dsf.bb => sysvinit_2.96.bb} (88%)

diff --git a/meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch b/meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch
deleted file mode 100644
index f35c15cb310..00000000000
--- a/meta/recipes-core/sysvinit/sysvinit/0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 36ac97bfe51797458442a6035219a504a42e703a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 21 Aug 2015 10:56:40 -0700
-Subject: [PATCH] This fixes an issue that clang reports about mutliple output
- files
-
-Issue is that we are passing .h file to link step as seen below.
-
-| arm-oe-linux-gnueabi-clang  -march=armv7-a -mthumb  -mfloat-abi=hard
--mfpu=neon-vfpv4 -mtune=cortex-a7 -D__extern_always_inline=inline
--no-integrated-as
---sysroot=/mnt/home/kraj/work/angstrom/sources/openembedded-core/build/tmp-glibc/sysroots/raspberrypi2
--Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed  halt.o ifdown.o hddown.o
-utmp.o reboot.h   -o halt
-| clang-3.7: error: cannot specify -o when generating multiple output
-files
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/Makefile | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index e77ed5f..a6f9f40 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -103,9 +103,9 @@ all:		$(BIN) $(SBIN) $(USRBIN)
- init:		LDLIBS += $(INITLIBS) $(STATIC)
- init:		init.o init_utmp.o
- 
--halt:		halt.o ifdown.o hddown.o utmp.o reboot.h
-+halt:		halt.o ifdown.o hddown.o utmp.o
- 
--last:		last.o oldutmp.h
-+last:		last.o
- 
- mesg:		mesg.o
- 
-@@ -120,7 +120,7 @@ sulogin:	sulogin.o
- 
- wall:		dowall.o wall.o
- 
--shutdown:	dowall.o shutdown.o utmp.o reboot.h
-+shutdown:	dowall.o shutdown.o utmp.o
- 
- bootlogd:	LDLIBS += -lutil
- bootlogd:	bootlogd.o
--- 
-2.1.4
-
diff --git a/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch b/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
index e13ac9d06bc..60fbd87534b 100644
--- a/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch
@@ -1,4 +1,4 @@
-From 3c29a86f351ea4827dc445bb8e6cb774543c9be6 Mon Sep 17 00:00:00 2001
+From c710a3accd1fabdb671274e1a458405282d51e0c Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 6 Aug 2018 15:38:58 -0700
 Subject: [PATCH] include sys/sysmacros.h for major/minor definitions
@@ -13,10 +13,10 @@ Upstream-Status: Pending
  3 files changed, 3 insertions(+)
 
 diff --git a/src/bootlogd.c b/src/bootlogd.c
-index 570d382..68d62f3 100644
+index 787db87..8b07903 100644
 --- a/src/bootlogd.c
 +++ b/src/bootlogd.c
-@@ -35,6 +35,7 @@
+@@ -29,6 +29,7 @@
  #include <sys/types.h>
  #include <sys/time.h>
  #include <sys/stat.h>
@@ -25,7 +25,7 @@ index 570d382..68d62f3 100644
  #include <sys/utsname.h>
  #include <time.h>
 diff --git a/src/mountpoint.c b/src/mountpoint.c
-index 9e3dd9c..91f74ed 100644
+index 5f20522..94df7a1 100644
 --- a/src/mountpoint.c
 +++ b/src/mountpoint.c
 @@ -25,6 +25,7 @@
@@ -37,7 +37,7 @@ index 9e3dd9c..91f74ed 100644
  #include <stdlib.h>
  #include <string.h>
 diff --git a/src/shutdown.c b/src/shutdown.c
-index 7e997da..17de58d 100644
+index b744a2c..40b7faf 100644
 --- a/src/shutdown.c
 +++ b/src/shutdown.c
 @@ -40,6 +40,7 @@
@@ -46,5 +46,5 @@ index 7e997da..17de58d 100644
  #include <sys/stat.h>
 +#include <sys/sysmacros.h>
  #include <sys/wait.h>
- #include <time.h>
- #include <string.h>
+ #ifdef __linux__
+ #include <sys/sysmacros.h>   /* brought in my LFS patch */
diff --git a/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch b/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch
index 7b342901e1b..bd4444b81ba 100644
--- a/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/crypt-lib.patch
@@ -1,3 +1,8 @@
+From 7276275d9a08d5ae268fb263027bbc60bc0ab2e8 Mon Sep 17 00:00:00 2001
+From: Jeff Dike <jdike@x86_64.user-mode-linux.org>
+Date: Wed, 14 Jul 2010 14:35:52 -0400
+Subject: [PATCH] sysvinit - Remove sulogin dependency on /usr/lib*/libcrypt.a
+
 Upstream-Status: Inappropriate [configuration]
 
 # The src Makefile was checking for libcrypt.a on the host, not in the
@@ -5,21 +10,27 @@ Upstream-Status: Inappropriate [configuration]
 # and uses it if it's there.
 # - jdike@linux.intel.com
 
-Index: sysvinit-2.88dsf/src/Makefile
-===================================================================
---- sysvinit-2.88dsf.orig/src/Makefile
-+++ sysvinit-2.88dsf/src/Makefile
-@@ -85,9 +85,13 @@ else
+---
+ src/Makefile | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 1380d7f..628e77f 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -97,13 +97,8 @@ else
  endif
  
  # Additional libs for GNU libc.
+-ifneq ($(wildcard /usr/lib*/libcrypt.*),)
+-  SULOGINLIBS	+= -lcrypt
+-endif
+-
+-# Additional libs for GNU libc / multiarch on Debian based systems.
+-ifneq ($(wildcard /usr/lib/*/libcrypt.*),)
+-  SULOGINLIBS	+= -lcrypt
 +ifneq ($(LCRYPT),)
 +  SULOGINLIBS	+= $(LCRYPT)
-+else
- ifneq ($(wildcard /usr/lib*/libcrypt.a),)
-   SULOGINLIBS	+= -lcrypt
  endif
-+endif
  
  all:		$(BIN) $(SBIN) $(USRBIN)
- 
diff --git a/meta/recipes-core/sysvinit/sysvinit/install.patch b/meta/recipes-core/sysvinit/sysvinit/install.patch
index 6c4225a678d..2930fb01953 100644
--- a/meta/recipes-core/sysvinit/sysvinit/install.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/install.patch
@@ -1,10 +1,19 @@
+From b6cc66ab245ceb6bca0116dff7a41f6d7677b96a Mon Sep 17 00:00:00 2001
+From: Qing He <qing.he@intel.com>
+Date: Fri, 18 Jun 2010 09:40:30 +0800
+Subject: [PATCH] sysvinit: upgrade to version 2.88dsf
+
 Upstream-Status: Pending
 
+---
+ src/Makefile | 53 +++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 30 insertions(+), 23 deletions(-)
+
 diff --git a/src/Makefile b/src/Makefile
-index e2b8028..3e11e92 100644
+index 9f9f09e..1380d7f 100644
 --- a/src/Makefile
 +++ b/src/Makefile
-@@ -65,7 +65,14 @@ else
+@@ -77,7 +77,14 @@ else
    INSTALL_DATA	= install -m 644
  endif
  INSTALL_DIR	= install -m 755 -d
@@ -20,10 +29,10 @@ index e2b8028..3e11e92 100644
  
  ifeq ($(WITH_SELINUX),yes)
    SELINUX_DEF	=  -DWITH_SELINUX
-@@ -138,39 +145,39 @@ clobber:	cleanobjs
+@@ -189,42 +196,42 @@ clobber:	cleanobjs
  distclean:	clobber
  
- install:
+ install:	all
 -		$(INSTALL_DIR) $(ROOT)/bin/ $(ROOT)/sbin/
 -		$(INSTALL_DIR) $(ROOT)/usr/bin/
 +		$(INSTALL_DIR) $(ROOT)$(base_bindir)/ $(ROOT)$(base_sbindir)/
@@ -40,16 +49,14 @@ index e2b8028..3e11e92 100644
 -			$(INSTALL_EXEC) $$i $(ROOT)/usr/bin/ ; \
 +			$(INSTALL_EXEC) $$i $(ROOT)$(bindir)/ ; \
  		done
--		# $(INSTALL_DIR) $(ROOT)/etc/
--		# $(INSTALL_EXEC) initscript.sample $(ROOT)/etc/
+ 		# $(INSTALL_DIR) $(ROOT)/etc/
+ 		# $(INSTALL_EXEC) ../doc/initscript.sample $(ROOT)/etc/
 -		ln -sf halt $(ROOT)/sbin/reboot
 -		ln -sf halt $(ROOT)/sbin/poweroff
 -		ln -sf init $(ROOT)/sbin/telinit
 -		ln -sf /sbin/killall5 $(ROOT)/bin/pidof
 -		if [ ! -f $(ROOT)/usr/bin/lastb ]; then \
 -			ln -sf last $(ROOT)/usr/bin/lastb; \
-+		# $(INSTALL_DIR) $(ROOT)$(sysconfdir)/
-+		# $(INSTALL_EXEC) initscript.sample $(ROOT)$(sysconfdir)/
 +		ln -sf halt $(ROOT)$(base_sbindir)/reboot
 +		ln -sf halt $(ROOT)$(base_sbindir)/poweroff
 +		ln -sf init $(ROOT)$(base_sbindir)/telinit
@@ -67,17 +74,23 @@ index e2b8028..3e11e92 100644
 +		$(INSTALL_DIR) $(ROOT)$(mandir)/man1/
 +		$(INSTALL_DIR) $(ROOT)$(mandir)/man5/
 +		$(INSTALL_DIR) $(ROOT)$(mandir)/man8/
- 		for i in $(MAN1); do \
--			$(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man1/; \
-+			$(INSTALL_DATA) ../man/$$i $(ROOT)$(mandir)/man1/; \
+ 		for man in $(MAN1); do \
+-			$(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man1/; \
+-			sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man1/$$man ; \
++			$(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man1/; \
++			sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man1/$$man ; \
  		done
- 		for i in $(MAN5); do \
--			$(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man5/; \
-+			$(INSTALL_DATA) ../man/$$i $(ROOT)$(mandir)/man5/; \
+ 		for man in $(MAN5); do \
+-			$(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man5/; \
+-			sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man5/$$man ; \
++			$(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man5/; \
++			sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man5/$$man ; \
  		done
- 		for i in $(MAN8); do \
--			$(INSTALL_DATA) ../man/$$i $(ROOT)$(MANDIR)/man8/; \
-+			$(INSTALL_DATA) ../man/$$i $(ROOT)$(mandir)/man8/; \
+ 		for man in $(MAN8); do \
+-			$(INSTALL_DATA) ../man/$$man $(ROOT)$(MANDIR)/man8/; \
+-			sed -i "1{ $(MANDB); }" $(ROOT)$(MANDIR)/man8/$$man ; \
++			$(INSTALL_DATA) ../man/$$man $(ROOT)$(mandir)/man8/; \
++			sed -i "1{ $(MANDB); }" $(ROOT)$(mandir)/man8/$$man ; \
  		done
  ifeq ($(ROOT),)
  		#
diff --git a/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch b/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
index 5b5dfdc0012..494aa0e0126 100644
--- a/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
@@ -1,4 +1,7 @@
-pidof: add -m option
+From 6c490ea6579a132fabb7dbd25387bb521f820371 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Wed, 24 Jul 2013 17:07:22 +0800
+Subject: [PATCH] pidof: add -m option
 
 When used with -o, will also omit any processes that have the same
 argv[0] and argv[1] as any explicitly omitted process ids. This can be
@@ -11,23 +14,25 @@ Upstream-Status: backport
 Imported patch from: https://bugzilla.redhat.com/attachment.cgi?id=658166
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
 ---
- man/pidof.8    |  6 ++++++
- src/killall5.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ man/pidof.8    |  6 +++++
+ src/killall5.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++---
  2 files changed, 65 insertions(+), 3 deletions(-)
 
 diff --git a/man/pidof.8 b/man/pidof.8
+index ebe5f55..2fdc4d3 100644
 --- a/man/pidof.8
 +++ b/man/pidof.8
-@@ -24,6 +24,7 @@ pidof -- find the process ID of a running program.
- .RB [ \-c ]
+@@ -25,6 +25,7 @@ pidof -- find the process ID of a running program.
  .RB [ \-n ]
  .RB [ \-x ]
+ .RB [ \-z ]
 +.RB [ \-m ]
  .RB [ \-o
- .IR omitpid[,omitpid..] ]
+ .IR omitpid[,omitpid...] ]
  .RB [ \-o
-@@ -63,6 +64,11 @@ shells running the named scripts.
+@@ -76,6 +77,11 @@ is shown. The default separator is a space.
  Tells \fIpidof\fP to omit processes with that process id. The special
  pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP
  program, in other words the calling shell or shell script.
@@ -40,10 +45,10 @@ diff --git a/man/pidof.8 b/man/pidof.8
  .TP
  .B 0
 diff --git a/src/killall5.c b/src/killall5.c
-index 5937d98..e73885e 100644
+index 8b5cb38..a664954 100644
 --- a/src/killall5.c
 +++ b/src/killall5.c
-@@ -118,6 +118,7 @@ typedef struct _s_nfs
+@@ -126,6 +126,7 @@ typedef struct _s_nfs
  
  /* List of processes. */
  PROC *plist;
@@ -51,7 +56,7 @@ index 5937d98..e73885e 100644
  
  /* List of processes to omit. */
  OMIT *omit;
-@@ -345,6 +346,20 @@ static void clear_mnt(void)
+@@ -361,6 +362,20 @@ static void clear_mnt(void)
  	}
  }
  
@@ -70,9 +75,9 @@ index 5937d98..e73885e 100644
 +}
 +
  /*
-  *     Check if path is ia shadow off a NFS partition.
+  *     Check if path is a shadow off a NFS partition.
   */
-@@ -452,6 +467,7 @@ int readproc(int do_stat)
+@@ -486,6 +501,7 @@ int readproc(int do_stat)
  	DIR		*dir;
  	FILE		*fp;
  	PROC		*p, *n;
@@ -80,7 +85,7 @@ index 5937d98..e73885e 100644
  	struct dirent	*d;
  	struct stat	st;
  	char		path[PATH_MAX+1];
-@@ -624,6 +640,17 @@ int readproc(int do_stat)
+@@ -733,6 +749,17 @@ int readproc(int do_stat)
  		p->next = plist;
  		plist = p;
  		p->pid = pid;
@@ -98,7 +103,7 @@ index 5937d98..e73885e 100644
  	}
  	closedir(dir);
  
-@@ -813,6 +840,26 @@ PIDQ_HEAD *pidof(char *prog)
+@@ -944,6 +971,26 @@ PIDQ_HEAD *pidof(char *prog)
  	return q;
  }
  
@@ -125,42 +130,42 @@ index 5937d98..e73885e 100644
  /* Give usage message and exit. */
  void usage(void)
  {
-@@ -845,6 +892,7 @@ void nsyslog(int pri, char *fmt, ...)
- #define PIDOF_SINGLE	0x01
+@@ -994,6 +1041,7 @@ void nsyslog(int pri, char *fmt, ...)
  #define PIDOF_OMIT	0x02
  #define PIDOF_NETFS	0x04
+ #define PIDOF_QUIET     0x08
 +#define PIDOF_OMIT_OMIT_MATCHES	0x08
  
  /*
   *	Pidof functionality.
-@@ -861,6 +909,7 @@ int main_pidof(int argc, char **argv)
- 	struct stat	st;
+@@ -1011,6 +1059,7 @@ int main_pidof(int argc, char **argv)
  	char		tmp[512];
+         char            sep = ' ';
  
 +	olist = (PROC*)0;
  	omit = (OMIT*)0;
  	nlist = (NFS*)0;
  	opterr = 0;
-@@ -868,7 +917,7 @@ int main_pidof(int argc, char **argv)
+@@ -1018,7 +1067,7 @@ int main_pidof(int argc, char **argv)
  	if ((token = getenv("PIDOF_NETFS")) && (strcmp(token,"no") != 0))
  		flags |= PIDOF_NETFS;
  
--	while ((opt = getopt(argc,argv,"hco:sxn")) != EOF) switch (opt) {
-+	while ((opt = getopt(argc,argv,"hcmo:sxn")) != EOF) switch (opt) {
+-	while ((opt = getopt(argc,argv,"qhco:d:sxzn")) != EOF) switch (opt) {
++	while ((opt = getopt(argc,argv,"qhcmo:d:sxzn")) != EOF) switch (opt) {
  		case '?':
  			nsyslog(LOG_ERR,"invalid options on command line!\n");
  			closelog();
-@@ -907,6 +956,9 @@ int main_pidof(int argc, char **argv)
- 		case 'x':
- 			scripts_too++;
- 			break;
+@@ -1069,6 +1118,9 @@ int main_pidof(int argc, char **argv)
+                 case 'z':
+                         list_dz_processes = TRUE;
+                         break;
 +		case 'm':
 +			flags |= PIDOF_OMIT_OMIT_MATCHES;
 +			break;
  		case 'n':
  			flags |= PIDOF_NETFS;
  			break;
-@@ -938,10 +990,13 @@ int main_pidof(int argc, char **argv)
+@@ -1100,10 +1152,13 @@ int main_pidof(int argc, char **argv)
  			pid_t spid = 0;
  			while ((p = get_next_from_pid_q(q))) {
  				if ((flags & PIDOF_OMIT) && omit) {
@@ -176,14 +181,11 @@ index 5937d98..e73885e 100644
  					}
  
  					/*
-@@ -977,6 +1032,7 @@ int main_pidof(int argc, char **argv)
- 	if (!first)
+@@ -1145,6 +1200,7 @@ int main_pidof(int argc, char **argv)
  		printf("\n");
+         }
  
 +	clear_omit();
  	clear_mnt();
  
  	closelog();
--- 
-1.8.1.2
-
diff --git a/meta/recipes-core/sysvinit/sysvinit/realpath.patch b/meta/recipes-core/sysvinit/sysvinit/realpath.patch
index 5e0dca3bf11..859fd8baadd 100644
--- a/meta/recipes-core/sysvinit/sysvinit/realpath.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/realpath.patch
@@ -1,4 +1,8 @@
-Fix build on musl use realpath() API its available on all libcs
+From eb158c97f19d473d01befe96359a7f93ae834517 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 19 Nov 2015 00:10:03 +0000
+Subject: [PATCH] Fix build on musl use realpath() API its available on all
+ libcs
 
 realpath() API doesnt work on systems with PATH_MAX set to be unlimited e.g. GNU/Hurd
 However for Linux it should always work
@@ -7,52 +11,17 @@ Upstream-Status: Inappropriate[Linux specific]
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 
-Index: sysvinit-2.88dsf/src/ifdown.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/ifdown.c	2010-03-23 07:37:01.000000000 -0700
-+++ sysvinit-2.88dsf/src/ifdown.c	2014-04-02 00:43:43.675437029 -0700
-@@ -26,11 +26,11 @@
- #include <unistd.h>
- #include <time.h>
- #include <string.h>
-+#include <errno.h>
- 
- #include <sys/ioctl.h>
- #include <sys/socket.h>
- #include <sys/time.h>
--#include <sys/errno.h>
- 
- #include <net/if.h>
- #include <netinet/in.h>
-Index: sysvinit-2.88dsf/src/init.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/init.c	2014-04-02 00:42:10.488770162 -0700
-+++ sysvinit-2.88dsf/src/init.c	2014-04-02 00:42:59.432103823 -0700
-@@ -49,6 +49,7 @@
- #include <utmp.h>
- #include <ctype.h>
- #include <stdarg.h>
-+#include <sys/ttydefaults.h>
- #include <sys/syslog.h>
- #include <sys/time.h>
- 
-Index: sysvinit-2.88dsf/src/mountpoint.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/mountpoint.c	2009-09-10 01:28:49.000000000 -0700
-+++ sysvinit-2.88dsf/src/mountpoint.c	2014-04-02 00:44:18.248770942 -0700
-@@ -23,6 +23,7 @@
-  *		Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-  */
- 
-+#include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <stdlib.h>
-Index: sysvinit-2.88dsf/src/killall5.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/killall5.c	2014-03-26 00:49:52.982668074 -0700
-+++ sysvinit-2.88dsf/src/killall5.c	2014-04-02 00:46:45.838771653 -0700
-@@ -846,9 +846,9 @@
+---
+ src/killall5.c   | 4 ++--
+ src/mountpoint.c | 1 +
+ src/wall.c       | 1 +
+ 3 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/killall5.c b/src/killall5.c
+index a664954..9798423 100644
+--- a/src/killall5.c
++++ b/src/killall5.c
+@@ -977,9 +977,9 @@ int matches(PROC *o, PROC *p)
  	char *oargv1, *pargv1;
  	if ((o->argv0 && p->argv0 && !strcmp(o->argv0,p->argv0))) {
  		if (o->argv1 && p->argv1) {
@@ -64,14 +33,26 @@ Index: sysvinit-2.88dsf/src/killall5.c
  				pargv1 = strdup(p->argv1);
  			if (! strcmp(oargv1, pargv1)) {
  				ret = 1;
-Index: sysvinit-2.88dsf/src/wall.c
-===================================================================
---- sysvinit-2.88dsf.orig/src/wall.c	2009-11-22 14:05:53.000000000 -0800
-+++ sysvinit-2.88dsf/src/wall.c	2014-04-02 00:49:15.258772217 -0700
-@@ -29,6 +29,7 @@
+diff --git a/src/mountpoint.c b/src/mountpoint.c
+index b24335e..5f20522 100644
+--- a/src/mountpoint.c
++++ b/src/mountpoint.c
+@@ -23,6 +23,7 @@
+  *		Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ 
++#include <sys/types.h>
+ #include <sys/stat.h>
  #include <unistd.h>
+ #include <stdlib.h>
+diff --git a/src/wall.c b/src/wall.c
+index d3a2c70..00826e9 100644
+--- a/src/wall.c
++++ b/src/wall.c
+@@ -30,6 +30,7 @@
  #include <pwd.h>
  #include <syslog.h>
+ #include <sys/types.h>
 +#include <time.h>
  #include "init.h"
  
diff --git a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit_2.96.bb
similarity index 88%
rename from meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
rename to meta/recipes-core/sysvinit/sysvinit_2.96.bb
index 8fd6df9d6b1..2b146b1ef8f 100644
--- a/meta/recipes-core/sysvinit/sysvinit_2.88dsf.bb
+++ b/meta/recipes-core/sysvinit/sysvinit_2.96.bb
@@ -4,16 +4,15 @@ HOMEPAGE = "http://savannah.nongnu.org/projects/sysvinit/"
 SECTION = "base"
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
-                    file://COPYRIGHT;endline=15;md5=349c872e0066155e1818b786938876a4"
-PR = "r14"
+                    file://COPYRIGHT;endline=15;md5=a1d3b3526501d3546d530bbe6ab6cdbe \
+                    "
 
 RDEPENDS_${PN} = "${PN}-inittab"
 
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.bz2 \
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \
            file://install.patch \
            file://crypt-lib.patch \
            file://pidof-add-m-option.patch \
-           file://0001-This-fixes-an-issue-that-clang-reports-about-mutlipl.patch \
            file://realpath.patch \
            file://0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch \
            file://rcS-default \
@@ -21,10 +20,9 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.bz2 \
            file://rcS \
            file://bootlogd.init \
            file://01_bootlogd \
-"
-
-SRC_URI[md5sum] = "6eda8a97b86e0a6f59dabbf25202aa6f"
-SRC_URI[sha256sum] = "60bbc8c1e1792056e23761d22960b30bb13eccc2cabff8c7310a01f4d5df1519"
+           "
+SRC_URI[md5sum] = "48cebffebf2a96ab09bec14bf9976016"
+SRC_URI[sha256sum] = "2a2e26b72aa235a23ab1c8471005f890309ce1196c83fbc9413c57b9ab62b587"
 
 S = "${WORKDIR}/sysvinit-${PV}"
 B = "${S}/src"
@@ -81,7 +79,8 @@ EXTRA_OEMAKE += "'base_bindir=${base_bindir}' \
 		 'sbindir=${sbindir}' \
 		 'sysconfdir=${sysconfdir}' \
 		 'includedir=${includedir}' \
-		 'mandir=${mandir}'"
+		 'mandir=${mandir}' \
+                 MNTPOINT=yes"
 
 do_install () {
 	oe_runmake 'ROOT=${D}' install
@@ -107,4 +106,7 @@ do_install () {
 
 	chown root:shutdown ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
 	chmod o-x,u+s ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
+
+        # Already provided by e2fsprogs; sysvinit's version is a copy from there
+        rm ${D}${base_sbindir}/logsave
 }
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 37+ messages in thread

* ✗ patchtest: failure for "rpm: upgrade to 4.15.1..." and 23 more
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (22 preceding siblings ...)
  2019-12-05 15:43 ` [PATCH 24/24] sysvinit: update 2.88dsf -> 2.96 Alexander Kanavin
@ 2019-12-05 16:02 ` Patchwork
  2019-12-07 22:48 ` [PATCH 01/24] rpm: upgrade to 4.15.1 Richard Purdie
  24 siblings, 0 replies; 37+ messages in thread
From: Patchwork @ 2019-12-05 16:02 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: openembedded-core

== Series Details ==

Series: "rpm: upgrade to 4.15.1..." and 23 more
Revision: 1
URL   : https://patchwork.openembedded.org/series/21464/
State : failure

== Summary ==


Thank you for submitting this patch series to OpenEmbedded Core. This is
an automated response. Several tests have been executed on the proposed
series by patchtest resulting in the following failures:



* Issue             Upstream-Status is Inappropriate, but no reason was provided [test_upstream_status_presence_format] 
  Suggested fix    Include a brief reason why use-pkgconfig.patch is inappropriate
  Current          Upstream-Status: Inappropriate (upstream still refuse to consider pkg-config)
  Standard format  Upstream-Status: Inappropriate [reason]



If you believe any of these test results are incorrect, please reply to the
mailing list (openembedded-core@lists.openembedded.org) raising your concerns.
Otherwise we would appreciate you correcting the issues and submitting a new
version of the patchset if applicable. Please ensure you add/increment the
version number when sending the new version (i.e. [PATCH] -> [PATCH v2] ->
[PATCH v3] -> ...).

---
Guidelines:     https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest
Test suite:     http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe



^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 16/24] libtasn1: update to 4.15.0
  2019-12-05 15:43 ` [PATCH 16/24] libtasn1: update to 4.15.0 Alexander Kanavin
@ 2019-12-05 16:55   ` Khem Raj
  2019-12-06 13:22     ` Alexander Kanavin
  0 siblings, 1 reply; 37+ messages in thread
From: Khem Raj @ 2019-12-05 16:55 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Patches and discussions about the oe-core layer

On Thu, Dec 5, 2019 at 7:47 AM Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>
> Drop backports.
>
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  .../gnutls/libtasn1/fix-gtkdoc.patch          | 38 -------------------
>  .../gnutls/libtasn1/fix-ldflags.patch         | 31 ---------------
>  .../{libtasn1_4.14.bb => libtasn1_4.15.0.bb}  | 11 ++++--
>  3 files changed, 7 insertions(+), 73 deletions(-)
>  delete mode 100644 meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
>  delete mode 100644 meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
>  rename meta/recipes-support/gnutls/{libtasn1_4.14.bb => libtasn1_4.15.0.bb} (71%)
>
> diff --git a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch b/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
> deleted file mode 100644
> index bfc9b9fca7e..00000000000
> --- a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -Upstream-Status: Backport [https://gitlab.com/gnutls/libtasn1/merge_requests/49]
> -Signed-off-by: Ross Burton <ross.burton@intel.com>
> -
> -From ebd4f871b5241809f6a5b461444a6d331e15c949 Mon Sep 17 00:00:00 2001
> -From: Ross Burton <ross.burton@intel.com>
> -Date: Mon, 9 Sep 2019 13:11:39 +0100
> -Subject: [PATCH] doc/reference: don't add empty object hierarchy chapter
> -
> -The object hierarchy section is empty because there are no GObjects in the
> -libtasn1 API.  With gtk-doc 1.30 onwards if there are no objects then the object
> -hierarchy file won't exist, resulting in a failure when building the
> -documentation:
> -
> -| ../libtasn1-docs.xml:39: element include: XInclude error : could not load ../xml/tree_index.sgml, and no fallback was found
> -
> -Signed-off-by: Ross Burton <ross.burton@intel.com>
> ----
> - doc/reference/libtasn1-docs.xml | 4 ----
> - 1 file changed, 4 deletions(-)
> -
> -diff --git a/doc/reference/libtasn1-docs.xml b/doc/reference/libtasn1-docs.xml
> -index accdb85..f88b888 100644
> ---- a/doc/reference/libtasn1-docs.xml
> -+++ b/doc/reference/libtasn1-docs.xml
> -@@ -34,10 +34,6 @@
> -         <xi:include href="xml/libtasn1.xml"/>
> -
> -   </chapter>
> --  <chapter id="object-tree">
> --    <title>Object Hierarchy</title>
> --    <xi:include href="xml/tree_index.sgml"/>
> --  </chapter>
> -   <index id="api-index-full">
> -     <title>API Index</title>
> -     <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
> ---
> -2.20.1
> -
> diff --git a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch b/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
> deleted file mode 100644
> index f18f3c62679..00000000000
> --- a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -From a6f93b7ace347bc4fe29eb4a8fe4383d786cc8d0 Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
> -Date: Tue, 23 Jul 2019 20:44:01 +0200
> -Subject: [PATCH] Fix LDFLAGS to AM_LDFLAGS in src/Makefile.am
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
> -Upstream-Status: Backport
> -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
> ----
> - src/Makefile.am | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/src/Makefile.am b/src/Makefile.am
> -index 5bf3622..4459767 100644
> ---- a/src/Makefile.am
> -+++ b/src/Makefile.am
> -@@ -21,7 +21,7 @@ AM_CPPFLAGS = -I$(top_builddir)/lib/includes -I$(top_srcdir)/lib/includes \
> -  -I$(top_builddir)/lib/gl -I$(top_srcdir)/lib/gl $(CODE_COVERAGE_CPPFLAGS)
> -
> - LDADD = ../lib/libtasn1.la
> --LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> -+AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> -
> - bin_PROGRAMS = asn1Parser asn1Coding asn1Decoding
> -
> ---
> -2.21.0
> -
> diff --git a/meta/recipes-support/gnutls/libtasn1_4.14.bb b/meta/recipes-support/gnutls/libtasn1_4.15.0.bb
> similarity index 71%
> rename from meta/recipes-support/gnutls/libtasn1_4.14.bb
> rename to meta/recipes-support/gnutls/libtasn1_4.15.0.bb
> index ef2c1956a24..cd00d17b803 100644
> --- a/meta/recipes-support/gnutls/libtasn1_4.14.bb
> +++ b/meta/recipes-support/gnutls/libtasn1_4.15.0.bb
> @@ -10,15 +10,18 @@ LIC_FILES_CHKSUM = "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
>
>  SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
>             file://dont-depend-on-help2man.patch \
> -           file://fix-ldflags.patch \
> -           file://fix-gtkdoc.patch \
>             "
>
>  DEPENDS = "bison-native"
>
> -SRC_URI[md5sum] = "e9918200ed4a778e2b3cbe34c1be4205"
> -SRC_URI[sha256sum] = "9e604ba5c5c8ea403487695c2e407405820d98540d9de884d6e844f9a9c5ba08"
> +SRC_URI[md5sum] = "33e3fb5501bb2142184238c815b0beb8"
> +SRC_URI[sha256sum] = "dd77509fe8f5304deafbca654dc7f0ea57f5841f41ba530cff9a5bf71382739e"
>
>  inherit autotools texinfo lib_package gtk-doc
>
> +do_install_append () {
> +    # this utility is not useful and has a bogus RPATH

if bogus rpath is the reason to delete it then its better to nick it
with chrpath --delete

> +    rm ${D}/${bindir}/corpus2array
> +}
> +
>  BBCLASSEXTEND = "native nativesdk"
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 15/24] sysklogd: update to 2.0.3
  2019-12-05 15:43 ` [PATCH 15/24] sysklogd: update to 2.0.3 Alexander Kanavin
@ 2019-12-05 23:48   ` Ross Burton
  2019-12-06 13:15     ` Alexander Kanavin
  0 siblings, 1 reply; 37+ messages in thread
From: Ross Burton @ 2019-12-05 23:48 UTC (permalink / raw)
  To: Alexander Kanavin, openembedded-core

On 05/12/2019 15:43, Alexander Kanavin wrote:
> Drop all patches as they are no longer necessary with autotools,
> fix problems that are addressed upstream, or (in case of no-vectorization.patch)
> don't apply to the old version either, which means no one is using that hw target
> anymore.
> 
> Remove custom systemd configs (provided by upstream), and custom
> syslog config (also provided by upstream but not installed by default).

Sorry, but:

ERROR: sysklogd-2.0.3-r0 do_package: SYSTEMD_SERVICE_sysklogd value 
syslogd.service does not exist

Ross



^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 15/24] sysklogd: update to 2.0.3
  2019-12-05 23:48   ` Ross Burton
@ 2019-12-06 13:15     ` Alexander Kanavin
  0 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-06 13:15 UTC (permalink / raw)
  To: Ross Burton; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 731 bytes --]

Thanks, I fixed this and will resend.

Alex

On Fri, 6 Dec 2019 at 00:48, Ross Burton <ross.burton@intel.com> wrote:

> On 05/12/2019 15:43, Alexander Kanavin wrote:
> > Drop all patches as they are no longer necessary with autotools,
> > fix problems that are addressed upstream, or (in case of
> no-vectorization.patch)
> > don't apply to the old version either, which means no one is using that
> hw target
> > anymore.
> >
> > Remove custom systemd configs (provided by upstream), and custom
> > syslog config (also provided by upstream but not installed by default).
>
> Sorry, but:
>
> ERROR: sysklogd-2.0.3-r0 do_package: SYSTEMD_SERVICE_sysklogd value
> syslogd.service does not exist
>
> Ross
>
>

[-- Attachment #2: Type: text/html, Size: 1099 bytes --]

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 16/24] libtasn1: update to 4.15.0
  2019-12-05 16:55   ` Khem Raj
@ 2019-12-06 13:22     ` Alexander Kanavin
  0 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-06 13:22 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 5963 bytes --]

Thanks, will change that and resend.

Alex

On Thu, 5 Dec 2019 at 17:55, Khem Raj <raj.khem@gmail.com> wrote:

> On Thu, Dec 5, 2019 at 7:47 AM Alexander Kanavin <alex.kanavin@gmail.com>
> wrote:
> >
> > Drop backports.
> >
> > Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ---
> >  .../gnutls/libtasn1/fix-gtkdoc.patch          | 38 -------------------
> >  .../gnutls/libtasn1/fix-ldflags.patch         | 31 ---------------
> >  .../{libtasn1_4.14.bb => libtasn1_4.15.0.bb}  | 11 ++++--
> >  3 files changed, 7 insertions(+), 73 deletions(-)
> >  delete mode 100644 meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
> >  delete mode 100644
> meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
> >  rename meta/recipes-support/gnutls/{libtasn1_4.14.bb =>
> libtasn1_4.15.0.bb} (71%)
> >
> > diff --git a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
> b/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
> > deleted file mode 100644
> > index bfc9b9fca7e..00000000000
> > --- a/meta/recipes-support/gnutls/libtasn1/fix-gtkdoc.patch
> > +++ /dev/null
> > @@ -1,38 +0,0 @@
> > -Upstream-Status: Backport [
> https://gitlab.com/gnutls/libtasn1/merge_requests/49]
> > -Signed-off-by: Ross Burton <ross.burton@intel.com>
> > -
> > -From ebd4f871b5241809f6a5b461444a6d331e15c949 Mon Sep 17 00:00:00 2001
> > -From: Ross Burton <ross.burton@intel.com>
> > -Date: Mon, 9 Sep 2019 13:11:39 +0100
> > -Subject: [PATCH] doc/reference: don't add empty object hierarchy chapter
> > -
> > -The object hierarchy section is empty because there are no GObjects in
> the
> > -libtasn1 API.  With gtk-doc 1.30 onwards if there are no objects then
> the object
> > -hierarchy file won't exist, resulting in a failure when building the
> > -documentation:
> > -
> > -| ../libtasn1-docs.xml:39: element include: XInclude error : could not
> load ../xml/tree_index.sgml, and no fallback was found
> > -
> > -Signed-off-by: Ross Burton <ross.burton@intel.com>
> > ----
> > - doc/reference/libtasn1-docs.xml | 4 ----
> > - 1 file changed, 4 deletions(-)
> > -
> > -diff --git a/doc/reference/libtasn1-docs.xml
> b/doc/reference/libtasn1-docs.xml
> > -index accdb85..f88b888 100644
> > ---- a/doc/reference/libtasn1-docs.xml
> > -+++ b/doc/reference/libtasn1-docs.xml
> > -@@ -34,10 +34,6 @@
> > -         <xi:include href="xml/libtasn1.xml"/>
> > -
> > -   </chapter>
> > --  <chapter id="object-tree">
> > --    <title>Object Hierarchy</title>
> > --    <xi:include href="xml/tree_index.sgml"/>
> > --  </chapter>
> > -   <index id="api-index-full">
> > -     <title>API Index</title>
> > -     <xi:include href="xml/api-index-full.xml"><xi:fallback
> /></xi:include>
> > ---
> > -2.20.1
> > -
> > diff --git a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
> b/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
> > deleted file mode 100644
> > index f18f3c62679..00000000000
> > --- a/meta/recipes-support/gnutls/libtasn1/fix-ldflags.patch
> > +++ /dev/null
> > @@ -1,31 +0,0 @@
> > -From a6f93b7ace347bc4fe29eb4a8fe4383d786cc8d0 Mon Sep 17 00:00:00 2001
> > -From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
> > -Date: Tue, 23 Jul 2019 20:44:01 +0200
> > -Subject: [PATCH] Fix LDFLAGS to AM_LDFLAGS in src/Makefile.am
> > -MIME-Version: 1.0
> > -Content-Type: text/plain; charset=UTF-8
> > -Content-Transfer-Encoding: 8bit
> > -
> > -Signed-off-by: Tim Rühsen <tim.ruehsen@gmx.de>
> > -Upstream-Status: Backport
> > -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
> > ----
> > - src/Makefile.am | 2 +-
> > - 1 file changed, 1 insertion(+), 1 deletion(-)
> > -
> > -diff --git a/src/Makefile.am b/src/Makefile.am
> > -index 5bf3622..4459767 100644
> > ---- a/src/Makefile.am
> > -+++ b/src/Makefile.am
> > -@@ -21,7 +21,7 @@ AM_CPPFLAGS = -I$(top_builddir)/lib/includes
> -I$(top_srcdir)/lib/includes \
> > -  -I$(top_builddir)/lib/gl -I$(top_srcdir)/lib/gl
> $(CODE_COVERAGE_CPPFLAGS)
> > -
> > - LDADD = ../lib/libtasn1.la
> > --LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> > -+AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> > -
> > - bin_PROGRAMS = asn1Parser asn1Coding asn1Decoding
> > -
> > ---
> > -2.21.0
> > -
> > diff --git a/meta/recipes-support/gnutls/libtasn1_4.14.bb
> b/meta/recipes-support/gnutls/libtasn1_4.15.0.bb
> > similarity index 71%
> > rename from meta/recipes-support/gnutls/libtasn1_4.14.bb
> > rename to meta/recipes-support/gnutls/libtasn1_4.15.0.bb
> > index ef2c1956a24..cd00d17b803 100644
> > --- a/meta/recipes-support/gnutls/libtasn1_4.14.bb
> > +++ b/meta/recipes-support/gnutls/libtasn1_4.15.0.bb
> > @@ -10,15 +10,18 @@ LIC_FILES_CHKSUM =
> "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
> >
> >  SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
> >             file://dont-depend-on-help2man.patch \
> > -           file://fix-ldflags.patch \
> > -           file://fix-gtkdoc.patch \
> >             "
> >
> >  DEPENDS = "bison-native"
> >
> > -SRC_URI[md5sum] = "e9918200ed4a778e2b3cbe34c1be4205"
> > -SRC_URI[sha256sum] =
> "9e604ba5c5c8ea403487695c2e407405820d98540d9de884d6e844f9a9c5ba08"
> > +SRC_URI[md5sum] = "33e3fb5501bb2142184238c815b0beb8"
> > +SRC_URI[sha256sum] =
> "dd77509fe8f5304deafbca654dc7f0ea57f5841f41ba530cff9a5bf71382739e"
> >
> >  inherit autotools texinfo lib_package gtk-doc
> >
> > +do_install_append () {
> > +    # this utility is not useful and has a bogus RPATH
>
> if bogus rpath is the reason to delete it then its better to nick it
> with chrpath --delete
>
> > +    rm ${D}/${bindir}/corpus2array
> > +}
> > +
> >  BBCLASSEXTEND = "native nativesdk"
> > --
> > 2.17.1
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>

[-- Attachment #2: Type: text/html, Size: 8775 bytes --]

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 03/24] gettext: update to 0.20.1
  2019-12-05 15:43 ` [PATCH 03/24] gettext: " Alexander Kanavin
@ 2019-12-07  9:21   ` Khem Raj
  0 siblings, 0 replies; 37+ messages in thread
From: Khem Raj @ 2019-12-07  9:21 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Patches and discussions about the oe-core layer

bunch of fails due to this

https://errors.yoctoproject.org/Errors/Build/94021/

needs fixes like
https://github.com/YoeDistro/meta-openembedded/commit/5b5a7a23e34242cb94fe2fdd89f2b060fefba5c5

On Thu, Dec 5, 2019 at 7:44 AM Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>
> License-Update: URLs changed from http to https
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  .../gettext-0.19.8.1/fix-CVE-2018-18751.patch | 141 ----
>  .../gettext/gettext-0.19.8.1/parallel.patch   |  23 -
>  .../gettext-0.19.8.1/use-pkgconfig.patch      | 321 --------
>  .../add-with-bisonlocaledir.patch             |   0
>  ...nt.c-timsort.h-fix-formatting-issues.patch |  30 +-
>  .../gettext/gettext-0.20.1/parallel.patch     |  32 +
>  .../run-ptest                                 |   0
>  .../serial-tests-config.patch                 |  26 +-
>  .../gettext-0.20.1/use-pkgconfig.patch        | 713 ++++++++++++++++++
>  ...{gettext_0.19.8.1.bb => gettext_0.20.1.bb} |  23 +-
>  10 files changed, 775 insertions(+), 534 deletions(-)
>  delete mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
>  delete mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
>  delete mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
>  rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/add-with-bisonlocaledir.patch (100%)
>  rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/cr-statement.c-timsort.h-fix-formatting-issues.patch (68%)
>  create mode 100644 meta/recipes-core/gettext/gettext-0.20.1/parallel.patch
>  rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/run-ptest (100%)
>  rename meta/recipes-core/gettext/{gettext-0.19.8.1 => gettext-0.20.1}/serial-tests-config.patch (75%)
>  create mode 100644 meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch
>  rename meta/recipes-core/gettext/{gettext_0.19.8.1.bb => gettext_0.20.1.bb} (94%)
>
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
> deleted file mode 100644
> index 6dfe200d654..00000000000
> --- a/meta/recipes-core/gettext/gettext-0.19.8.1/fix-CVE-2018-18751.patch
> +++ /dev/null
> @@ -1,141 +0,0 @@
> -Upstream-Status: Backport [https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commit;h=dce3a16]
> -CVE: CVE-2018-18751
> -
> -Signed-off-by: Kai Kang <kai.kang@windriver.com>
> -
> -From dce3a16e5e9368245735e29bf498dcd5e3e474a4 Mon Sep 17 00:00:00 2001
> -From: Daiki Ueno <ueno@gnu.org>
> -Date: Thu, 15 Sep 2016 13:57:24 +0200
> -Subject: [PATCH] xgettext: Fix crash with *.po file input
> -
> -When xgettext was given two *.po files with the same msgid_plural, it
> -crashed with double-free.  Problem reported by Davlet Panech in:
> -http://lists.gnu.org/archive/html/bug-gettext/2016-09/msg00001.html
> -* gettext-tools/src/po-gram-gen.y: Don't free msgid_pluralform after
> -calling do_callback_message, assuming that it takes ownership.
> -* gettext-tools/src/read-catalog.c (default_add_message): Free
> -msgid_plural after calling message_alloc.
> -* gettext-tools/tests/xgettext-po-2: New file.
> -* gettext-tools/tests/Makefile.am (TESTS): Add new test.
> ----
> - gettext-tools/src/po-gram-gen.y   | 13 ++++-----
> - gettext-tools/src/read-catalog.c  |  2 ++
> - gettext-tools/tests/Makefile.am   |  2 +-
> - gettext-tools/tests/xgettext-po-2 | 55 +++++++++++++++++++++++++++++++++++++++
> - 4 files changed, 63 insertions(+), 9 deletions(-)
> - create mode 100755 gettext-tools/tests/xgettext-po-2
> -
> -diff --git a/gettext-tools/src/po-gram-gen.y b/gettext-tools/src/po-gram-gen.y
> -index becf5e6..4428e77 100644
> ---- a/gettext-tools/src/po-gram-gen.y
> -+++ b/gettext-tools/src/po-gram-gen.y
> -@@ -221,14 +221,11 @@ message
> -                   check_obsolete ($1, $3);
> -                   check_obsolete ($1, $4);
> -                   if (!$1.obsolete || pass_obsolete_entries)
> --                    {
> --                      do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
> --                                           $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
> --                                           $1.prev_ctxt,
> --                                           $1.prev_id, $1.prev_id_plural,
> --                                           $1.obsolete);
> --                      free ($3.string);
> --                    }
> -+                    do_callback_message ($1.ctxt, string2, &$1.pos, $3.string,
> -+                                         $4.rhs.msgstr, $4.rhs.msgstr_len, &$4.pos,
> -+                                         $1.prev_ctxt,
> -+                                         $1.prev_id, $1.prev_id_plural,
> -+                                         $1.obsolete);
> -                   else
> -                     {
> -                       free_message_intro ($1);
> -diff --git a/gettext-tools/src/read-catalog.c b/gettext-tools/src/read-catalog.c
> -index 571d18e..6af6d20 100644
> ---- a/gettext-tools/src/read-catalog.c
> -+++ b/gettext-tools/src/read-catalog.c
> -@@ -397,6 +397,8 @@ default_add_message (default_catalog_reader_ty *this,
> -          appropriate.  */
> -       mp = message_alloc (msgctxt, msgid, msgid_plural, msgstr, msgstr_len,
> -                           msgstr_pos);
> -+      if (msgid_plural != NULL)
> -+        free (msgid_plural);
> -       mp->prev_msgctxt = prev_msgctxt;
> -       mp->prev_msgid = prev_msgid;
> -       mp->prev_msgid_plural = prev_msgid_plural;
> -diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am
> -index 23b09b1..0dfb4d8 100644
> ---- a/gettext-tools/tests/Makefile.am
> -+++ b/gettext-tools/tests/Makefile.am
> -@@ -95,7 +95,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \
> -       xgettext-perl-1 xgettext-perl-2 xgettext-perl-3 xgettext-perl-4 \
> -       xgettext-perl-5 xgettext-perl-6 xgettext-perl-7 xgettext-perl-8 \
> -       xgettext-php-1 xgettext-php-2 xgettext-php-3 xgettext-php-4 \
> --      xgettext-po-1 \
> -+      xgettext-po-1 xgettext-po-2 \
> -       xgettext-properties-1 \
> -       xgettext-python-1 xgettext-python-2 xgettext-python-3 \
> -       xgettext-python-4 \
> -diff --git a/gettext-tools/tests/xgettext-po-2 b/gettext-tools/tests/xgettext-po-2
> -new file mode 100755
> -index 0000000..c4bd9d0
> ---- /dev/null
> -+++ b/gettext-tools/tests/xgettext-po-2
> -@@ -0,0 +1,55 @@
> -+#! /bin/sh
> -+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
> -+
> -+# Test PO extractors with multiple input files.
> -+
> -+cat <<EOF > xg-po-2-1.po
> -+msgid "first msgid"
> -+msgid_plural "first msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+
> -+msgid "second msgid"
> -+msgid_plural "second msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+EOF
> -+
> -+cat <<EOF > xg-po-2-2.po
> -+msgid "third msgid"
> -+msgid_plural "third msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+
> -+msgid "second msgid"
> -+msgid_plural "second msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+EOF
> -+
> -+: ${XGETTEXT=xgettext}
> -+${XGETTEXT} --omit-header xg-po-2-1.po xg-po-2-2.po -o xg-po-2.tmp.po || Exit 1
> -+LC_ALL=C tr -d '\r' < xg-po-2.tmp.po > xg-po-2.po || Exit 1
> -+
> -+cat <<EOF > xg-po-2.ok
> -+msgid "first msgid"
> -+msgid_plural "first msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+
> -+msgid "second msgid"
> -+msgid_plural "second msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+
> -+msgid "third msgid"
> -+msgid_plural "third msgid (plural)"
> -+msgstr[0] ""
> -+msgstr[1] ""
> -+EOF
> -+
> -+: ${DIFF=diff}
> -+${DIFF} xg-po-2.ok xg-po-2.po
> -+result=$?
> -+
> -+exit $result
> ---
> -1.9.1
> -
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
> deleted file mode 100644
> index c8e2c94af0e..00000000000
> --- a/meta/recipes-core/gettext/gettext-0.19.8.1/parallel.patch
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -instal libgettextlib.a before removing it
> -
> -In a multiple job build, Makefile can simultaneously
> -be installing and removing libgettextlib.a.  We serialize
> -the operations.
> -
> -Upstream-Status: Pending
> -
> -Signed-off-by: Joe Slater <jslater@windriver.com>
> -
> ---- a/gettext-tools/gnulib-lib/Makefile.am
> -+++ b/gettext-tools/gnulib-lib/Makefile.am
> -@@ -57,6 +57,10 @@ endif
> - # Rules generated and collected by gnulib-tool.
> - include Makefile.gnulib
> -
> -+# defined in Makefile.gnulib but missing this dependency
> -+#
> -+install-exec-clean: install-libLTLIBRARIES
> -+
> - # Which classes to export from the shared library.
> - MOOPPFLAGS += --dllexport=styled_ostream
> -
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch b/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
> deleted file mode 100644
> index 6156a153f74..00000000000
> --- a/meta/recipes-core/gettext/gettext-0.19.8.1/use-pkgconfig.patch
> +++ /dev/null
> @@ -1,321 +0,0 @@
> -For reasons which I just can't fathom gnulib doesn't use the expected tools to
> -find libraries but badly reinvents the wheel.  This will trivially lead to host
> -contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
> -canonicalisation resulting in relative paths).
> -
> -Simply delete all the crazy, and replace with a single call to pkg-config.
> -
> -Upstream-Status: Inappropriate (upstream still refuse to consider pkg-config)
> -Signed-off-by: Ross Burton <ross.burton@intel.com>
> -
> -diff --git a/gnulib-local/m4/libcroco.m4 b/gnulib-local/m4/libcroco.m4
> -index f79ea82f1..1f67274db 100644
> ---- a/gettext-tools/gnulib-m4/libcroco.m4
> -+++ b/gettext-tools/gnulib-m4/libcroco.m4
> -@@ -8,6 +8,7 @@ dnl From Bruno Haible.
> -
> - AC_DEFUN([gl_LIBCROCO],
> - [
> -+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> -   dnl libcroco depends on libglib.
> -   AC_REQUIRE([gl_LIBGLIB])
> -
> -@@ -23,65 +24,10 @@ AC_DEFUN([gl_LIBCROCO],
> -   LTLIBCROCO=
> -   INCCROCO=
> -   if test "$gl_cv_libcroco_use_included" != yes; then
> --    dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
> --    dnl use the included one.
> --    AC_CACHE_VAL([gl_cv_libcroco], [
> --      gl_cv_libcroco=no
> --      gl_cv_LIBCROCO=
> --      gl_cv_LTLIBCROCO=
> --      gl_cv_INCCROCO=
> --      gl_save_LIBS="$LIBS"
> --      dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
> --      dnl INCCROCO_0_6 accordingly.
> --      dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
> --      dnl cross-compiling or when the C compiler in use is different from the
> --      dnl one that built the library.
> --      AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
> --      LIBS="$gl_save_LIBS $LIBCROCO_0_6"
> --      AC_TRY_LINK([#include <libcroco-config.h>],
> --        [const char *version = LIBCROCO_VERSION; return !version;],
> --        [gl_cv_libcroco=yes
> --         gl_cv_LIBCROCO="$LIBCROCO_0_6"
> --         gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> --        ])
> --      if test "$gl_cv_libcroco" != yes; then
> --        gl_save_CPPFLAGS="$CPPFLAGS"
> --        CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
> --        AC_TRY_LINK([#include <libcroco-config.h>],
> --          [const char *version = LIBCROCO_VERSION; return !version;],
> --          [gl_cv_libcroco=yes
> --           gl_cv_LIBCROCO="$LIBCROCO_0_6"
> --           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> --           gl_cv_INCCROCO="$INCCROCO_0_6"
> --          ])
> --        if test "$gl_cv_libcroco" != yes; then
> --          dnl Often the include files are installed in
> --          dnl /usr/include/libcroco-0.6/libcroco.
> --          AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
> --            [const char *version = LIBCROCO_VERSION; return !version;],
> --            [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
> --             libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
> --             if test -d "$libcroco_include_dir"; then
> --               gl_cv_libcroco=yes
> --               gl_cv_LIBCROCO="$LIBCROCO_0_6"
> --               gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> --               gl_cv_INCCROCO="-I$libcroco_include_dir"
> --             fi
> --            ])
> --        fi
> --        CPPFLAGS="$gl_save_CPPFLAGS"
> --      fi
> --      LIBS="$gl_save_LIBS"
> --    ])
> --    AC_MSG_CHECKING([for libcroco])
> --    AC_MSG_RESULT([$gl_cv_libcroco])
> --    if test $gl_cv_libcroco = yes; then
> --      LIBCROCO="$gl_cv_LIBCROCO"
> --      LTLIBCROCO="$gl_cv_LTLIBCROCO"
> --      INCCROCO="$gl_cv_INCCROCO"
> --    else
> --      gl_cv_libcroco_use_included=yes
> --    fi
> -+    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
> -+    LIBCROCO=$CROCO_LIBS
> -+    LTLIBCROCO=$CROCO_LIBS
> -+    INCCROCO=$CROCO_CFLAGS
> -   fi
> -   AC_SUBST([LIBCROCO])
> -   AC_SUBST([LTLIBCROCO])
> -diff --git a/gnulib-local/m4/libglib.m4 b/gnulib-local/m4/libglib.m4
> -index 42e55e6fd..ab25a5b22 100644
> ---- a/gettext-tools/gnulib-m4/libglib.m4
> -+++ b/gettext-tools/gnulib-m4/libglib.m4
> -@@ -8,6 +8,7 @@ dnl From Bruno Haible.
> -
> - AC_DEFUN([gl_LIBGLIB],
> - [
> -+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> -   AC_MSG_CHECKING([whether included glib is requested])
> -   AC_ARG_WITH([included-glib],
> -     [  --with-included-glib    use the glib2 included here],
> -@@ -20,76 +21,10 @@ AC_DEFUN([gl_LIBGLIB],
> -   LTLIBGLIB=
> -   INCGLIB=
> -   if test "$gl_cv_libglib_use_included" != yes; then
> --    dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
> --    dnl the included one.
> --    AC_CACHE_VAL([gl_cv_libglib], [
> --      gl_cv_libglib=no
> --      gl_cv_LIBGLIB=
> --      gl_cv_LTLIBGLIB=
> --      gl_cv_INCGLIB=
> --      gl_save_LIBS="$LIBS"
> --      dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
> --      dnl INCGLIB_2_0 accordingly.
> --      dnl Don't use glib-config nor pkg-config, since it doesn't work when
> --      dnl cross-compiling or when the C compiler in use is different from the
> --      dnl one that built the library.
> --      AC_LIB_LINKFLAGS_BODY([glib-2.0])
> --      LIBS="$gl_save_LIBS $LIBGLIB_2_0"
> --      AC_TRY_LINK([#include <glib.h>
> --#ifndef G_BEGIN_DECLS
> --error this glib.h includes a glibconfig.h from a glib version 1.x
> --#endif
> --],
> --        [g_string_new ("foo");],
> --        [gl_cv_libglib=yes
> --         gl_cv_LIBGLIB="$LIBGLIB_2_0"
> --         gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> --        ])
> --      if test "$gl_cv_libglib" != yes; then
> --        gl_save_CPPFLAGS="$CPPFLAGS"
> --        CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
> --        AC_TRY_LINK([#include <glib.h>
> --#ifndef G_BEGIN_DECLS
> --error this glib.h includes a glibconfig.h from a glib version 1.x
> --#endif
> --],
> --          [g_string_new ("foo");],
> --          [gl_cv_libglib=yes
> --           gl_cv_LIBGLIB="$LIBGLIB_2_0"
> --           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> --           gl_cv_INCGLIB="$INCGLIB_2_0"
> --          ])
> --        if test "$gl_cv_libglib" != yes; then
> --          dnl Often the include files are installed in /usr/include/glib-2.0
> --          dnl and /usr/lib/glib-2.0/include.
> --          if test -n "$LIBGLIB_2_0_PREFIX"; then
> --            CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
> --            AC_TRY_LINK([#include <glib.h>
> --#ifndef G_BEGIN_DECLS
> --error this glib.h includes a glibconfig.h from a glib version 1.x
> --#endif
> --],
> --              [g_string_new ("foo");],
> --              [gl_cv_libglib=yes
> --               gl_cv_LIBGLIB="$LIBGLIB_2_0"
> --               gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> --               gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
> --              ])
> --          fi
> --        fi
> --        CPPFLAGS="$gl_save_CPPFLAGS"
> --      fi
> --      LIBS="$gl_save_LIBS"
> --    ])
> --    AC_MSG_CHECKING([for glib])
> --    AC_MSG_RESULT([$gl_cv_libglib])
> --    if test $gl_cv_libglib = yes; then
> --      LIBGLIB="$gl_cv_LIBGLIB"
> --      LTLIBGLIB="$gl_cv_LTLIBGLIB"
> --      INCGLIB="$gl_cv_INCGLIB"
> --    else
> --      gl_cv_libglib_use_included=yes
> --    fi
> -+    PKG_CHECK_MODULES([GLIB], [glib-2.0])
> -+    LIBGLIB="$GLIB_LIBS"
> -+    LTLIBGLIB="$GLIB_LIBS"
> -+    INCGLIB="$GLIB_CFLAGS"
> -   fi
> -   AC_SUBST([LIBGLIB])
> -   AC_SUBST([LTLIBGLIB])
> -diff --git a/gnulib-local/m4/libxml.m4 b/gnulib-local/m4/libxml.m4
> -index 480c700d2..cb39309d5 100644
> ---- a/gettext-tools/gnulib-m4/libxml.m4
> -+++ b/gettext-tools/gnulib-m4/libxml.m4
> -@@ -8,6 +8,7 @@ dnl From Bruno Haible.
> -
> - AC_DEFUN([gl_LIBXML],
> - [
> -+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> -   AC_REQUIRE([AM_ICONV_LINK])
> -
> -   AC_MSG_CHECKING([whether included libxml is requested])
> -@@ -22,100 +22,10 @@ AC_DEFUN([gl_LIBXML],
> -   LTLIBXML=
> -   INCXML=
> -   if test "$gl_cv_libxml_use_included" != yes; then
> --    dnl Figure out whether we can use a preinstalled libxml2, or have to use
> --    dnl the included one.
> --    AC_CACHE_VAL([gl_cv_libxml], [
> --      gl_cv_libxml=no
> --      gl_cv_LIBXML=
> --      gl_cv_LTLIBXML=
> --      gl_cv_INCXML=
> --      gl_save_LIBS="$LIBS"
> --      LIBS="$LIBS $LIBICONV"
> --      dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
> --      dnl accordingly.
> --      dnl Don't use xml2-config nor pkg-config, since it doesn't work when
> --      dnl cross-compiling or when the C compiler in use is different from the
> --      dnl one that built the library.
> --      dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
> --      dnl libxml2 is built in such a way that uses of xmlFree work fine with
> --      dnl -Wl,--enable-auto-import but lead to a link error with
> --      dnl -Wl,--disable-auto-import.
> --      AC_LIB_LINKFLAGS_BODY([xml2])
> --      LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
> --      AC_TRY_LINK([#include <libxml/xmlversion.h>
> --                   #include <libxml/xmlmemory.h>
> --                   #include <libxml/xpath.h>
> --                  ],
> --        [xmlCheckVersion (0);
> --         xmlFree ((void *) 0);
> --         xmlXPathSetContextNode ((void *)0, (void *)0);
> --        ],
> --        [gl_cv_libxml=yes
> --         gl_cv_LIBXML="$LIBXML2 $LIBICONV"
> --         gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
> --        ])
> --      if test "$gl_cv_libxml" != yes; then
> --        gl_save_CPPFLAGS="$CPPFLAGS"
> --        CPPFLAGS="$CPPFLAGS $INCXML2"
> --        AC_TRY_LINK([#include <libxml/xmlversion.h>
> --                     #include <libxml/xmlmemory.h>
> --                     #include <libxml/xpath.h>
> --                    ],
> --          [xmlCheckVersion (0);
> --           xmlFree ((void *) 0);
> --           xmlXPathSetContextNode ((void *)0, (void *)0);
> --          ],
> --          [gl_cv_libxml=yes
> --           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
> --           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
> --           gl_cv_INCXML="$INCXML2"
> --          ])
> --        if test "$gl_cv_libxml" != yes; then
> --          dnl Often the include files are installed in /usr/include/libxml2.
> --          dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
> --          dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
> --          dnl self-contained.
> --          libxml2_include_dir=
> --          AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
> --            [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
> --             libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
> --            ])
> --          if test -z "$libxml2_include_dir"; then
> --            AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
> --              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
> --               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
> --              ])
> --          fi
> --          if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
> --            CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
> --            AC_TRY_LINK([#include <libxml/xmlversion.h>
> --                         #include <libxml/xmlmemory.h>
> --                         #include <libxml/xpath.h>
> --                        ],
> --              [xmlCheckVersion (0);
> --               xmlFree ((void *) 0);
> --               xmlXPathSetContextNode ((void *)0, (void *)0);
> --              ],
> --              [gl_cv_libxml=yes
> --               gl_cv_LIBXML="$LIBXML2 $LIBICONV"
> --               gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
> --               gl_cv_INCXML="-I$libxml2_include_dir"
> --              ])
> --          fi
> --        fi
> --        CPPFLAGS="$gl_save_CPPFLAGS"
> --      fi
> --      LIBS="$gl_save_LIBS"
> --    ])
> --    AC_MSG_CHECKING([for libxml])
> --    AC_MSG_RESULT([$gl_cv_libxml])
> --    if test $gl_cv_libxml = yes; then
> --      LIBXML="$gl_cv_LIBXML"
> --      LTLIBXML="$gl_cv_LTLIBXML"
> --      INCXML="$gl_cv_INCXML"
> --    else
> --      gl_cv_libxml_use_included=yes
> --    fi
> -+    PKG_CHECK_MODULES([XML], [libxml-2.0])
> -+    LIBXML=$XML_LIBS
> -+    LTLIBXML=$XML_LIBS
> -+    INCXML=$XML_CFLAGS
> -   fi
> -   AC_SUBST([LIBXML])
> -   AC_SUBST([LTLIBXML])
> -diff --git a/gnulib-local/lib/term-styled-ostream.oo.c b/gnulib-local/lib/term-styled-ostream.oo.c
> -index 81a407467..218565329 100644
> ---- a/gettext-tools/gnulib-lib/term-styled-ostream.oo.c
> -+++ b/gettext-tools/gnulib-lib/term-styled-ostream.oo.c
> -@@ -25,4 +25,4 @@
> --#include <cr-om-parser.h>
> --#include <cr-sel-eng.h>
> --#include <cr-style.h>
> --#include <cr-rgb.h>
> -+#include <libcroco/cr-om-parser.h>
> -+#include <libcroco/cr-sel-eng.h>
> -+#include <libcroco/cr-style.h>
> -+#include <libcroco/cr-rgb.h>
> -@@ -31 +31 @@
> --# include <cr-fonts.h>
> -+# include <libcroco/cr-fonts.h>
> -@@ -33 +33 @@
> --#include <cr-string.h>
> -+#include <libcroco/cr-string.h>
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch b/meta/recipes-core/gettext/gettext-0.20.1/add-with-bisonlocaledir.patch
> similarity index 100%
> rename from meta/recipes-core/gettext/gettext-0.19.8.1/add-with-bisonlocaledir.patch
> rename to meta/recipes-core/gettext/gettext-0.20.1/add-with-bisonlocaledir.patch
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch b/meta/recipes-core/gettext/gettext-0.20.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
> similarity index 68%
> rename from meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
> rename to meta/recipes-core/gettext/gettext-0.20.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
> index 6af16041987..0561ed7d32c 100644
> --- a/meta/recipes-core/gettext/gettext-0.19.8.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
> +++ b/meta/recipes-core/gettext/gettext-0.20.1/cr-statement.c-timsort.h-fix-formatting-issues.patch
> @@ -1,4 +1,4 @@
> -From e546de65a333789e83f5485757967cee29ee3681 Mon Sep 17 00:00:00 2001
> +From f6245ef5530fc37a6243e798df34162fbbeab6f0 Mon Sep 17 00:00:00 2001
>  From: Robert Yang <liezhi.yang@windriver.com>
>  Date: Sun, 19 Feb 2017 23:32:46 -0800
>  Subject: [PATCH] cr-statement.c/timsort.h: fix formatting issues
> @@ -15,15 +15,15 @@ gettext-tools/gnulib-lib/libxml/timsort.h:326:80: warning: format '%lu' expects
>  Upstream-Status: Pending
>
>  Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> +
>  ---
> - gettext-tools/gnulib-lib/libcroco/cr-statement.c | 10 +++++-----
> - gettext-tools/gnulib-lib/libxml/timsort.h        |  2 +-
> - 2 files changed, 6 insertions(+), 6 deletions(-)
> + libtextstyle/lib/libcroco/cr-statement.c | 10 +++++-----
> + 1 file changed, 5 insertions(+), 5 deletions(-)
>
> -diff --git a/gettext-tools/gnulib-lib/libcroco/cr-statement.c b/gettext-tools/gnulib-lib/libcroco/cr-statement.c
> +diff --git a/libtextstyle/lib/libcroco/cr-statement.c b/libtextstyle/lib/libcroco/cr-statement.c
>  index 617520f..100104b 100644
> ---- a/gettext-tools/gnulib-lib/libcroco/cr-statement.c
> -+++ b/gettext-tools/gnulib-lib/libcroco/cr-statement.c
> +--- a/libtextstyle/lib/libcroco/cr-statement.c
> ++++ b/libtextstyle/lib/libcroco/cr-statement.c
>  @@ -2607,7 +2607,7 @@ cr_statement_dump_ruleset (CRStatement * a_this, FILE * a_fp, glong a_indent)
>           g_return_if_fail (a_fp && a_this);
>           str = cr_statement_ruleset_to_string (a_this, a_indent);
> @@ -69,19 +69,3 @@ index 617520f..100104b 100644
>                   g_free (str) ;
>                   str = NULL ;
>           }
> -diff --git a/gettext-tools/gnulib-lib/libxml/timsort.h b/gettext-tools/gnulib-lib/libxml/timsort.h
> -index 795f272..443918a 100644
> ---- a/gettext-tools/gnulib-lib/libxml/timsort.h
> -+++ b/gettext-tools/gnulib-lib/libxml/timsort.h
> -@@ -323,7 +323,7 @@ static void TIM_SORT_RESIZE(TEMP_STORAGE_T *store, const size_t new_size)
> -     SORT_TYPE *tempstore = (SORT_TYPE *)realloc(store->storage, new_size * sizeof(SORT_TYPE));
> -     if (tempstore == NULL)
> -     {
> --      fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
> -+      fprintf(stderr, "Error allocating temporary storage for tim sort: need %zu bytes", sizeof(SORT_TYPE) * new_size);
> -       exit(1);
> -     }
> -     store->storage = tempstore;
> ---
> -2.10.2
> -
> diff --git a/meta/recipes-core/gettext/gettext-0.20.1/parallel.patch b/meta/recipes-core/gettext/gettext-0.20.1/parallel.patch
> new file mode 100644
> index 00000000000..d96a376b7d1
> --- /dev/null
> +++ b/meta/recipes-core/gettext/gettext-0.20.1/parallel.patch
> @@ -0,0 +1,32 @@
> +From 4a2a0a93b469093b60ffd0bec55d33d1e03d4713 Mon Sep 17 00:00:00 2001
> +From: Joe Slater <jslater@windriver.com>
> +Date: Thu, 7 Jun 2012 16:37:01 -0700
> +Subject: [PATCH] instal libgettextlib.a before removing it
> +
> +In a multiple job build, Makefile can simultaneously
> +be installing and removing libgettextlib.a.  We serialize
> +the operations.
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Joe Slater <jslater@windriver.com>
> +
> +---
> + gettext-tools/gnulib-lib/Makefile.am | 4 ++++
> + 1 file changed, 4 insertions(+)
> +
> +diff --git a/gettext-tools/gnulib-lib/Makefile.am b/gettext-tools/gnulib-lib/Makefile.am
> +index 2126699..d2dd7e4 100644
> +--- a/gettext-tools/gnulib-lib/Makefile.am
> ++++ b/gettext-tools/gnulib-lib/Makefile.am
> +@@ -58,6 +58,10 @@ endif
> + # Rules generated and collected by gnulib-tool.
> + include Makefile.gnulib
> +
> ++# defined in Makefile.gnulib but missing this dependency
> ++#
> ++install-exec-clean: install-libLTLIBRARIES
> ++
> + # OS/2 does not support a DLL name longer than 8 characters.
> + if OS2
> + libgettextlib_la_LDFLAGS += -os2dllname gtlib
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest b/meta/recipes-core/gettext/gettext-0.20.1/run-ptest
> similarity index 100%
> rename from meta/recipes-core/gettext/gettext-0.19.8.1/run-ptest
> rename to meta/recipes-core/gettext/gettext-0.20.1/run-ptest
> diff --git a/meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch b/meta/recipes-core/gettext/gettext-0.20.1/serial-tests-config.patch
> similarity index 75%
> rename from meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch
> rename to meta/recipes-core/gettext/gettext-0.20.1/serial-tests-config.patch
> index 31ff9138a91..93f7c03334a 100644
> --- a/meta/recipes-core/gettext/gettext-0.19.8.1/serial-tests-config.patch
> +++ b/meta/recipes-core/gettext/gettext-0.20.1/serial-tests-config.patch
> @@ -1,4 +1,4 @@
> -From c4b1f3a0c7b7c40b343be9b95deb84e0485643be Mon Sep 17 00:00:00 2001
> +From ed64a5724ef7d6eb4e9a876f817ea266a536e195 Mon Sep 17 00:00:00 2001
>  From: "Hongjun.Yang" <hongjun.yang@windriver.com>
>  Date: Thu, 28 Jul 2016 12:36:15 +0800
>  Subject: [PATCH] fix for ptest
> @@ -8,6 +8,7 @@ Add serial-tests support, ptest need it
>  Upstream-Status: Inappropriate [oe specific]
>
>  Signed-off-by: Changqing Li <changqing.li@windriver.com>
> +
>  ---
>   configure.ac                 | 2 +-
>   gettext-runtime/configure.ac | 2 +-
> @@ -15,24 +16,24 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
>   3 files changed, 3 insertions(+), 3 deletions(-)
>
>  diff --git a/configure.ac b/configure.ac
> -index 5e996fa..880581f 100644
> +index 38db6fd..f019ae0 100644
>  --- a/configure.ac
>  +++ b/configure.ac
> -@@ -23,7 +23,7 @@ AC_INIT([gettext],
> -       [bug-gnu-gettext@gnu.org])
> +@@ -22,7 +22,7 @@ AC_INIT([gettext],
> +       [bug-gettext@gnu.org])
>   AC_CONFIG_SRCDIR([gettext-tools/src/msgfmt.c])
>   AC_CONFIG_AUX_DIR([build-aux])
> --AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests dist-xz dist-lzip])
> -+AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests dist-xz dist-lzip])
> +-AM_INIT_AUTOMAKE([1.13 silent-rules parallel-tests tar-ustar])
> ++AM_INIT_AUTOMAKE([1.13 silent-rules serial-tests tar-ustar])
>
>   dnl Override automake's tar command used for creating distributions.
> - am__tar='${AMTAR} chof - --owner=root --group=root "$$tardir"'
> + am__tar='${AMTAR} chf - --format=ustar --owner=root --group=root "$$tardir"'
>  diff --git a/gettext-runtime/configure.ac b/gettext-runtime/configure.ac
> -index e9299b6..d4f5528 100644
> +index de203e7..138a07f 100644
>  --- a/gettext-runtime/configure.ac
>  +++ b/gettext-runtime/configure.ac
>  @@ -22,7 +22,7 @@ AC_INIT([gettext-runtime],
> -       [bug-gnu-gettext@gnu.org])
> +       [bug-gettext@gnu.org])
>   AC_CONFIG_SRCDIR([intl/dcigettext.c])
>   AC_CONFIG_AUX_DIR([../build-aux])
>  -AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
> @@ -41,11 +42,11 @@ index e9299b6..d4f5528 100644
>
>   dnl Installation directories.
>  diff --git a/gettext-tools/configure.ac b/gettext-tools/configure.ac
> -index 920eeb6..c507434 100644
> +index cf1dd73..b544d6d 100644
>  --- a/gettext-tools/configure.ac
>  +++ b/gettext-tools/configure.ac
>  @@ -22,7 +22,7 @@ AC_INIT([gettext-tools],
> -       [bug-gnu-gettext@gnu.org])
> +       [bug-gettext@gnu.org])
>   AC_CONFIG_SRCDIR([src/msgfmt.c])
>   AC_CONFIG_AUX_DIR([../build-aux])
>  -AM_INIT_AUTOMAKE([1.11.1 silent-rules parallel-tests])
> @@ -53,6 +54,3 @@ index 920eeb6..c507434 100644
>   AC_CONFIG_HEADERS([config.h])
>
>   dnl Installation directories.
> ---
> -2.1.4
> -
> diff --git a/meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch b/meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch
> new file mode 100644
> index 00000000000..d1b2603779b
> --- /dev/null
> +++ b/meta/recipes-core/gettext/gettext-0.20.1/use-pkgconfig.patch
> @@ -0,0 +1,713 @@
> +From ef414b06be80c6f605731abc9e674e396b80ec9e Mon Sep 17 00:00:00 2001
> +From: Ross Burton <ross.burton@intel.com>
> +Date: Tue, 23 Jan 2018 00:54:13 +0000
> +Subject: [PATCH] gettext: beat library detection into shape
> +
> +For reasons which I just can't fathom gnulib doesn't use the expected tools to
> +find libraries but badly reinvents the wheel.  This will trivially lead to host
> +contamination (explicit searches of /usr/lib) or incorrect RPATHs (bad
> +canonicalisation resulting in relative paths).
> +
> +Simply delete all the crazy, and replace with a single call to pkg-config.
> +
> +Upstream-Status: Inappropriate (upstream still refuse to consider pkg-config)
> +Signed-off-by: Ross Burton <ross.burton@intel.com>
> +
> +---
> + gettext-tools/gnulib-m4/libxml.m4             |  99 +----------------
> + .../gnulib-local/lib/term-styled-ostream.oo.c |  12 +-
> + libtextstyle/gnulib-local/m4/libcroco.m4      |  99 +++--------------
> + libtextstyle/gnulib-local/m4/libglib.m4       | 104 +++---------------
> + libtextstyle/gnulib-m4/libcroco.m4            |  99 +++--------------
> + libtextstyle/gnulib-m4/libglib.m4             | 104 +++---------------
> + libtextstyle/lib/term-styled-ostream.c        |  12 +-
> + libtextstyle/lib/term-styled-ostream.oo.c     |  12 +-
> + 8 files changed, 87 insertions(+), 454 deletions(-)
> +
> +diff --git a/gettext-tools/gnulib-m4/libxml.m4 b/gettext-tools/gnulib-m4/libxml.m4
> +index 05b9550..031ee65 100644
> +--- a/gettext-tools/gnulib-m4/libxml.m4
> ++++ b/gettext-tools/gnulib-m4/libxml.m4
> +@@ -13,6 +13,7 @@ dnl gl_LIBXML(FORCE-INCLUDED)
> + dnl   forces the use of the included or an external libxml.
> + AC_DEFUN([gl_LIBXML],
> + [
> ++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> +   AC_REQUIRE([AM_ICONV_LINK])
> +
> +   ifelse([$1], , [
> +@@ -30,100 +31,10 @@ AC_DEFUN([gl_LIBXML],
> +   INCXML=
> +   ifelse([$1], [yes], , [
> +     if test "$gl_cv_libxml_use_included" != yes; then
> +-      dnl Figure out whether we can use a preinstalled libxml2, or have to use
> +-      dnl the included one.
> +-      AC_CACHE_VAL([gl_cv_libxml], [
> +-        gl_cv_libxml=no
> +-        gl_cv_LIBXML=
> +-        gl_cv_LTLIBXML=
> +-        gl_cv_INCXML=
> +-        gl_save_LIBS="$LIBS"
> +-        LIBS="$LIBS $LIBICONV"
> +-        dnl Search for libxml2 and define LIBXML2, LTLIBXML2 and INCXML2
> +-        dnl accordingly.
> +-        dnl Don't use xml2-config nor pkg-config, since it doesn't work when
> +-        dnl cross-compiling or when the C compiler in use is different from the
> +-        dnl one that built the library.
> +-        dnl Use a test program that tries to invoke xmlFree. On Cygwin 1.7.x,
> +-        dnl libxml2 is built in such a way that uses of xmlFree work fine with
> +-        dnl -Wl,--enable-auto-import but lead to a link error with
> +-        dnl -Wl,--disable-auto-import.
> +-        AC_LIB_LINKFLAGS_BODY([xml2])
> +-        LIBS="$gl_save_LIBS $LIBXML2 $LIBICONV"
> +-        AC_TRY_LINK([#include <libxml/xmlversion.h>
> +-                     #include <libxml/xmlmemory.h>
> +-                     #include <libxml/xpath.h>
> +-                    ],
> +-          [xmlCheckVersion (0);
> +-           xmlFree ((void *) 0);
> +-           xmlXPathSetContextNode ((void *)0, (void *)0);
> +-          ],
> +-          [gl_cv_libxml=yes
> +-           gl_cv_LIBXML="$LIBXML2 $LIBICONV"
> +-           gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
> +-          ])
> +-        if test "$gl_cv_libxml" != yes; then
> +-          gl_save_CPPFLAGS="$CPPFLAGS"
> +-          CPPFLAGS="$CPPFLAGS $INCXML2"
> +-          AC_TRY_LINK([#include <libxml/xmlversion.h>
> +-                       #include <libxml/xmlmemory.h>
> +-                       #include <libxml/xpath.h>
> +-                      ],
> +-            [xmlCheckVersion (0);
> +-             xmlFree ((void *) 0);
> +-             xmlXPathSetContextNode ((void *)0, (void *)0);
> +-            ],
> +-            [gl_cv_libxml=yes
> +-             gl_cv_LIBXML="$LIBXML2 $LIBICONV"
> +-             gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
> +-             gl_cv_INCXML="$INCXML2"
> +-            ])
> +-          if test "$gl_cv_libxml" != yes; then
> +-            dnl Often the include files are installed in /usr/include/libxml2.
> +-            dnl In libxml2-2.5, <libxml/xmlversion.h> is self-contained.
> +-            dnl In libxml2-2.6, it includes <libxml/xmlexports.h> which is
> +-            dnl self-contained.
> +-            libxml2_include_dir=
> +-            AC_TRY_CPP([#include <libxml2/libxml/xmlexports.h>],
> +-              [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlexports.h])
> +-               libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlexports_h" | sed -e 's,.libxml.xmlexports\.h$,,'`
> +-              ])
> +-            if test -z "$libxml2_include_dir"; then
> +-              AC_TRY_CPP([#include <libxml2/libxml/xmlversion.h>],
> +-                [gl_ABSOLUTE_HEADER([libxml2/libxml/xmlversion.h])
> +-                 libxml2_include_dir=`echo "$gl_cv_absolute_libxml2_libxml_xmlversion_h" | sed -e 's,.libxml.xmlversion\.h$,,'`
> +-                ])
> +-            fi
> +-            if test -n "$libxml2_include_dir" && test -d "$libxml2_include_dir"; then
> +-              CPPFLAGS="$gl_save_CPPFLAGS -I$libxml2_include_dir"
> +-              AC_TRY_LINK([#include <libxml/xmlversion.h>
> +-                           #include <libxml/xmlmemory.h>
> +-                           #include <libxml/xpath.h>
> +-                          ],
> +-                [xmlCheckVersion (0);
> +-                 xmlFree ((void *) 0);
> +-                 xmlXPathSetContextNode ((void *)0, (void *)0);
> +-                ],
> +-                [gl_cv_libxml=yes
> +-                 gl_cv_LIBXML="$LIBXML2 $LIBICONV"
> +-                 gl_cv_LTLIBXML="$LTLIBXML2 $LTLIBICONV"
> +-                 gl_cv_INCXML="-I$libxml2_include_dir"
> +-                ])
> +-            fi
> +-          fi
> +-          CPPFLAGS="$gl_save_CPPFLAGS"
> +-        fi
> +-        LIBS="$gl_save_LIBS"
> +-      ])
> +-      AC_MSG_CHECKING([for libxml])
> +-      AC_MSG_RESULT([$gl_cv_libxml])
> +-      if test $gl_cv_libxml = yes; then
> +-        LIBXML="$gl_cv_LIBXML"
> +-        LTLIBXML="$gl_cv_LTLIBXML"
> +-        INCXML="$gl_cv_INCXML"
> +-      else
> +-        gl_cv_libxml_use_included=yes
> +-      fi
> ++      PKG_CHECK_MODULES([XML], [libxml-2.0])
> ++      LIBXML=$XML_LIBS
> ++      LTLIBXML=$XML_LIBS
> ++      INCXML=$XML_CFLAGS
> +     fi
> +   ])
> +   AC_SUBST([LIBXML])
> +diff --git a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
> +index 2cfd4a8..d42c8b4 100644
> +--- a/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
> ++++ b/libtextstyle/gnulib-local/lib/term-styled-ostream.oo.c
> +@@ -22,15 +22,15 @@
> +
> + #include <stdlib.h>
> +
> +-#include <cr-om-parser.h>
> +-#include <cr-sel-eng.h>
> +-#include <cr-style.h>
> +-#include <cr-rgb.h>
> ++#include <libcroco/cr-om-parser.h>
> ++#include <libcroco/cr-sel-eng.h>
> ++#include <libcroco/cr-style.h>
> ++#include <libcroco/cr-rgb.h>
> + /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
> + #ifndef __CR_FONTS_H__
> +-# include <cr-fonts.h>
> ++# include <libcroco/cr-fonts.h>
> + #endif
> +-#include <cr-string.h>
> ++#include <libcroco/cr-string.h>
> +
> + #include "term-ostream.h"
> + #include "hash.h"
> +diff --git a/libtextstyle/gnulib-local/m4/libcroco.m4 b/libtextstyle/gnulib-local/m4/libcroco.m4
> +index bc53cc6..10b2455 100644
> +--- a/libtextstyle/gnulib-local/m4/libcroco.m4
> ++++ b/libtextstyle/gnulib-local/m4/libcroco.m4
> +@@ -1,99 +1,34 @@
> +-# libcroco.m4 serial 3
> +-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
> ++# libcroco.m4 serial 2 (gettext-0.17)
> ++dnl Copyright (C) 2006, 2015-2016 Free Software Foundation, Inc.
> + dnl This file is free software; the Free Software Foundation
> + dnl gives unlimited permission to copy and/or distribute it,
> + dnl with or without modifications, as long as this notice is preserved.
> +
> + dnl From Bruno Haible.
> +
> +-dnl gl_LIBCROCO
> +-dnl   gives the user the option to decide whether to use the included or
> +-dnl   an external libcroco.
> +-dnl gl_LIBCROCO(FORCE-INCLUDED)
> +-dnl   forces the use of the included or an external libcroco.
> + AC_DEFUN([gl_LIBCROCO],
> + [
> +-  ifelse([$1], [yes], , [
> +-    dnl libcroco depends on libglib.
> +-    AC_REQUIRE([gl_LIBGLIB])
> +-  ])
> ++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> ++  dnl libcroco depends on libglib.
> ++  AC_REQUIRE([gl_LIBGLIB])
> +
> +-  ifelse([$1], , [
> +-    AC_MSG_CHECKING([whether included libcroco is requested])
> +-    AC_ARG_WITH([included-libcroco],
> +-      [  --with-included-libcroco  use the libcroco included here],
> +-      [gl_cv_libcroco_force_included=$withval],
> +-      [gl_cv_libcroco_force_included=no])
> +-    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
> +-  ], [gl_cv_libcroco_force_included=$1])
> ++  AC_MSG_CHECKING([whether included libcroco is requested])
> ++  AC_ARG_WITH([included-libcroco],
> ++    [  --with-included-libcroco  use the libcroco included here],
> ++    [gl_cv_libcroco_force_included=$withval],
> ++    [gl_cv_libcroco_force_included=no])
> ++  AC_MSG_RESULT([$gl_cv_libcroco_force_included])
> +
> +   gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
> +   LIBCROCO=
> +   LTLIBCROCO=
> +   INCCROCO=
> +-  ifelse([$1], [yes], , [
> +-    if test "$gl_cv_libcroco_use_included" != yes; then
> +-      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
> +-      dnl use the included one.
> +-      AC_CACHE_VAL([gl_cv_libcroco], [
> +-        gl_cv_libcroco=no
> +-        gl_cv_LIBCROCO=
> +-        gl_cv_LTLIBCROCO=
> +-        gl_cv_INCCROCO=
> +-        gl_save_LIBS="$LIBS"
> +-        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
> +-        dnl INCCROCO_0_6 accordingly.
> +-        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
> +-        dnl cross-compiling or when the C compiler in use is different from the
> +-        dnl one that built the library.
> +-        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
> +-        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
> +-        AC_TRY_LINK([#include <libcroco-config.h>],
> +-          [const char *version = LIBCROCO_VERSION; return !version;],
> +-          [gl_cv_libcroco=yes
> +-           gl_cv_LIBCROCO="$LIBCROCO_0_6"
> +-           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> +-          ])
> +-        if test "$gl_cv_libcroco" != yes; then
> +-          gl_save_CPPFLAGS="$CPPFLAGS"
> +-          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
> +-          AC_TRY_LINK([#include <libcroco-config.h>],
> +-            [const char *version = LIBCROCO_VERSION; return !version;],
> +-            [gl_cv_libcroco=yes
> +-             gl_cv_LIBCROCO="$LIBCROCO_0_6"
> +-             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> +-             gl_cv_INCCROCO="$INCCROCO_0_6"
> +-            ])
> +-          if test "$gl_cv_libcroco" != yes; then
> +-            dnl Often the include files are installed in
> +-            dnl /usr/include/libcroco-0.6/libcroco.
> +-            AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
> +-              [const char *version = LIBCROCO_VERSION; return !version;],
> +-              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
> +-               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
> +-               if test -d "$libcroco_include_dir"; then
> +-                 gl_cv_libcroco=yes
> +-                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
> +-                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> +-                 gl_cv_INCCROCO="-I$libcroco_include_dir"
> +-               fi
> +-              ])
> +-          fi
> +-          CPPFLAGS="$gl_save_CPPFLAGS"
> +-        fi
> +-        LIBS="$gl_save_LIBS"
> +-      ])
> +-      AC_MSG_CHECKING([for libcroco])
> +-      AC_MSG_RESULT([$gl_cv_libcroco])
> +-      if test $gl_cv_libcroco = yes; then
> +-        LIBCROCO="$gl_cv_LIBCROCO"
> +-        LTLIBCROCO="$gl_cv_LTLIBCROCO"
> +-        INCCROCO="$gl_cv_INCCROCO"
> +-      else
> +-        gl_cv_libcroco_use_included=yes
> +-      fi
> +-    fi
> +-  ])
> ++  if test "$gl_cv_libcroco_use_included" != yes; then
> ++    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
> ++    LIBCROCO=$CROCO_LIBS
> ++    LTLIBCROCO=$CROCO_LIBS
> ++    INCCROCO=$CROCO_CFLAGS
> ++  fi
> +   AC_SUBST([LIBCROCO])
> +   AC_SUBST([LTLIBCROCO])
> +   AC_SUBST([INCCROCO])
> +diff --git a/libtextstyle/gnulib-local/m4/libglib.m4 b/libtextstyle/gnulib-local/m4/libglib.m4
> +index bef6fa3..8841755 100644
> +--- a/libtextstyle/gnulib-local/m4/libglib.m4
> ++++ b/libtextstyle/gnulib-local/m4/libglib.m4
> +@@ -1,105 +1,31 @@
> +-# libglib.m4 serial 4
> +-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
> ++# libglib.m4 serial 3 (gettext-0.17)
> ++dnl Copyright (C) 2006-2007, 2015-2016 Free Software Foundation, Inc.
> + dnl This file is free software; the Free Software Foundation
> + dnl gives unlimited permission to copy and/or distribute it,
> + dnl with or without modifications, as long as this notice is preserved.
> +
> + dnl From Bruno Haible.
> +
> +-dnl gl_LIBGLIB
> +-dnl   gives the user the option to decide whether to use the included or
> +-dnl   an external libglib.
> +-dnl gl_LIBGLIB(FORCE-INCLUDED)
> +-dnl   forces the use of the included or an external libglib.
> + AC_DEFUN([gl_LIBGLIB],
> + [
> +-  ifelse([$1], , [
> +-    AC_MSG_CHECKING([whether included glib is requested])
> +-    AC_ARG_WITH([included-glib],
> +-      [  --with-included-glib    use the glib2 included here],
> +-      [gl_cv_libglib_force_included=$withval],
> +-      [gl_cv_libglib_force_included=no])
> +-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
> +-  ], [gl_cv_libglib_force_included=$1])
> ++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> ++  AC_MSG_CHECKING([whether included glib is requested])
> ++  AC_ARG_WITH([included-glib],
> ++    [  --with-included-glib    use the glib2 included here],
> ++    [gl_cv_libglib_force_included=$withval],
> ++    [gl_cv_libglib_force_included=no])
> ++  AC_MSG_RESULT([$gl_cv_libglib_force_included])
> +
> +   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
> +   LIBGLIB=
> +   LTLIBGLIB=
> +   INCGLIB=
> +-  ifelse([$1], [yes], , [
> +-    if test "$gl_cv_libglib_use_included" != yes; then
> +-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
> +-      dnl the included one.
> +-      AC_CACHE_VAL([gl_cv_libglib], [
> +-        gl_cv_libglib=no
> +-        gl_cv_LIBGLIB=
> +-        gl_cv_LTLIBGLIB=
> +-        gl_cv_INCGLIB=
> +-        gl_save_LIBS="$LIBS"
> +-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
> +-        dnl INCGLIB_2_0 accordingly.
> +-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
> +-        dnl cross-compiling or when the C compiler in use is different from the
> +-        dnl one that built the library.
> +-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
> +-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
> +-        AC_TRY_LINK([#include <glib.h>
> +-#ifndef G_BEGIN_DECLS
> +-error this glib.h includes a glibconfig.h from a glib version 1.x
> +-#endif
> +-],
> +-          [g_string_new ("foo");],
> +-          [gl_cv_libglib=yes
> +-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
> +-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> +-          ])
> +-        if test "$gl_cv_libglib" != yes; then
> +-          gl_save_CPPFLAGS="$CPPFLAGS"
> +-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
> +-          AC_TRY_LINK([#include <glib.h>
> +-#ifndef G_BEGIN_DECLS
> +-error this glib.h includes a glibconfig.h from a glib version 1.x
> +-#endif
> +-],
> +-            [g_string_new ("foo");],
> +-            [gl_cv_libglib=yes
> +-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
> +-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> +-             gl_cv_INCGLIB="$INCGLIB_2_0"
> +-            ])
> +-          if test "$gl_cv_libglib" != yes; then
> +-            dnl Often the include files are installed in /usr/include/glib-2.0
> +-            dnl and /usr/lib/glib-2.0/include.
> +-            if test -n "$LIBGLIB_2_0_PREFIX"; then
> +-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
> +-              AC_TRY_LINK([#include <glib.h>
> +-#ifndef G_BEGIN_DECLS
> +-error this glib.h includes a glibconfig.h from a glib version 1.x
> +-#endif
> +-],
> +-                [g_string_new ("foo");],
> +-                [gl_cv_libglib=yes
> +-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
> +-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> +-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
> +-                ])
> +-            fi
> +-          fi
> +-          CPPFLAGS="$gl_save_CPPFLAGS"
> +-        fi
> +-        LIBS="$gl_save_LIBS"
> +-      ])
> +-      AC_MSG_CHECKING([for glib])
> +-      AC_MSG_RESULT([$gl_cv_libglib])
> +-      if test $gl_cv_libglib = yes; then
> +-        LIBGLIB="$gl_cv_LIBGLIB"
> +-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
> +-        INCGLIB="$gl_cv_INCGLIB"
> +-      else
> +-        gl_cv_libglib_use_included=yes
> +-      fi
> +-    fi
> +-  ])
> ++  if test "$gl_cv_libglib_use_included" != yes; then
> ++    PKG_CHECK_MODULES([GLIB], [glib-2.0])
> ++    LIBGLIB="$GLIB_LIBS"
> ++    LTLIBGLIB="$GLIB_LIBS"
> ++    INCGLIB="$GLIB_CFLAGS"
> ++  fi
> +   AC_SUBST([LIBGLIB])
> +   AC_SUBST([LTLIBGLIB])
> +   AC_SUBST([INCGLIB])
> +diff --git a/libtextstyle/gnulib-m4/libcroco.m4 b/libtextstyle/gnulib-m4/libcroco.m4
> +index bc53cc6..10b2455 100644
> +--- a/libtextstyle/gnulib-m4/libcroco.m4
> ++++ b/libtextstyle/gnulib-m4/libcroco.m4
> +@@ -1,99 +1,34 @@
> +-# libcroco.m4 serial 3
> +-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
> ++# libcroco.m4 serial 2 (gettext-0.17)
> ++dnl Copyright (C) 2006, 2015-2016 Free Software Foundation, Inc.
> + dnl This file is free software; the Free Software Foundation
> + dnl gives unlimited permission to copy and/or distribute it,
> + dnl with or without modifications, as long as this notice is preserved.
> +
> + dnl From Bruno Haible.
> +
> +-dnl gl_LIBCROCO
> +-dnl   gives the user the option to decide whether to use the included or
> +-dnl   an external libcroco.
> +-dnl gl_LIBCROCO(FORCE-INCLUDED)
> +-dnl   forces the use of the included or an external libcroco.
> + AC_DEFUN([gl_LIBCROCO],
> + [
> +-  ifelse([$1], [yes], , [
> +-    dnl libcroco depends on libglib.
> +-    AC_REQUIRE([gl_LIBGLIB])
> +-  ])
> ++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> ++  dnl libcroco depends on libglib.
> ++  AC_REQUIRE([gl_LIBGLIB])
> +
> +-  ifelse([$1], , [
> +-    AC_MSG_CHECKING([whether included libcroco is requested])
> +-    AC_ARG_WITH([included-libcroco],
> +-      [  --with-included-libcroco  use the libcroco included here],
> +-      [gl_cv_libcroco_force_included=$withval],
> +-      [gl_cv_libcroco_force_included=no])
> +-    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
> +-  ], [gl_cv_libcroco_force_included=$1])
> ++  AC_MSG_CHECKING([whether included libcroco is requested])
> ++  AC_ARG_WITH([included-libcroco],
> ++    [  --with-included-libcroco  use the libcroco included here],
> ++    [gl_cv_libcroco_force_included=$withval],
> ++    [gl_cv_libcroco_force_included=no])
> ++  AC_MSG_RESULT([$gl_cv_libcroco_force_included])
> +
> +   gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
> +   LIBCROCO=
> +   LTLIBCROCO=
> +   INCCROCO=
> +-  ifelse([$1], [yes], , [
> +-    if test "$gl_cv_libcroco_use_included" != yes; then
> +-      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
> +-      dnl use the included one.
> +-      AC_CACHE_VAL([gl_cv_libcroco], [
> +-        gl_cv_libcroco=no
> +-        gl_cv_LIBCROCO=
> +-        gl_cv_LTLIBCROCO=
> +-        gl_cv_INCCROCO=
> +-        gl_save_LIBS="$LIBS"
> +-        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
> +-        dnl INCCROCO_0_6 accordingly.
> +-        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
> +-        dnl cross-compiling or when the C compiler in use is different from the
> +-        dnl one that built the library.
> +-        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
> +-        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
> +-        AC_TRY_LINK([#include <libcroco-config.h>],
> +-          [const char *version = LIBCROCO_VERSION; return !version;],
> +-          [gl_cv_libcroco=yes
> +-           gl_cv_LIBCROCO="$LIBCROCO_0_6"
> +-           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> +-          ])
> +-        if test "$gl_cv_libcroco" != yes; then
> +-          gl_save_CPPFLAGS="$CPPFLAGS"
> +-          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
> +-          AC_TRY_LINK([#include <libcroco-config.h>],
> +-            [const char *version = LIBCROCO_VERSION; return !version;],
> +-            [gl_cv_libcroco=yes
> +-             gl_cv_LIBCROCO="$LIBCROCO_0_6"
> +-             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> +-             gl_cv_INCCROCO="$INCCROCO_0_6"
> +-            ])
> +-          if test "$gl_cv_libcroco" != yes; then
> +-            dnl Often the include files are installed in
> +-            dnl /usr/include/libcroco-0.6/libcroco.
> +-            AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
> +-              [const char *version = LIBCROCO_VERSION; return !version;],
> +-              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
> +-               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
> +-               if test -d "$libcroco_include_dir"; then
> +-                 gl_cv_libcroco=yes
> +-                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
> +-                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
> +-                 gl_cv_INCCROCO="-I$libcroco_include_dir"
> +-               fi
> +-              ])
> +-          fi
> +-          CPPFLAGS="$gl_save_CPPFLAGS"
> +-        fi
> +-        LIBS="$gl_save_LIBS"
> +-      ])
> +-      AC_MSG_CHECKING([for libcroco])
> +-      AC_MSG_RESULT([$gl_cv_libcroco])
> +-      if test $gl_cv_libcroco = yes; then
> +-        LIBCROCO="$gl_cv_LIBCROCO"
> +-        LTLIBCROCO="$gl_cv_LTLIBCROCO"
> +-        INCCROCO="$gl_cv_INCCROCO"
> +-      else
> +-        gl_cv_libcroco_use_included=yes
> +-      fi
> +-    fi
> +-  ])
> ++  if test "$gl_cv_libcroco_use_included" != yes; then
> ++    PKG_CHECK_MODULES([CROCO], [libcroco-0.6])
> ++    LIBCROCO=$CROCO_LIBS
> ++    LTLIBCROCO=$CROCO_LIBS
> ++    INCCROCO=$CROCO_CFLAGS
> ++  fi
> +   AC_SUBST([LIBCROCO])
> +   AC_SUBST([LTLIBCROCO])
> +   AC_SUBST([INCCROCO])
> +diff --git a/libtextstyle/gnulib-m4/libglib.m4 b/libtextstyle/gnulib-m4/libglib.m4
> +index bef6fa3..8841755 100644
> +--- a/libtextstyle/gnulib-m4/libglib.m4
> ++++ b/libtextstyle/gnulib-m4/libglib.m4
> +@@ -1,105 +1,31 @@
> +-# libglib.m4 serial 4
> +-dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
> ++# libglib.m4 serial 3 (gettext-0.17)
> ++dnl Copyright (C) 2006-2007, 2015-2016 Free Software Foundation, Inc.
> + dnl This file is free software; the Free Software Foundation
> + dnl gives unlimited permission to copy and/or distribute it,
> + dnl with or without modifications, as long as this notice is preserved.
> +
> + dnl From Bruno Haible.
> +
> +-dnl gl_LIBGLIB
> +-dnl   gives the user the option to decide whether to use the included or
> +-dnl   an external libglib.
> +-dnl gl_LIBGLIB(FORCE-INCLUDED)
> +-dnl   forces the use of the included or an external libglib.
> + AC_DEFUN([gl_LIBGLIB],
> + [
> +-  ifelse([$1], , [
> +-    AC_MSG_CHECKING([whether included glib is requested])
> +-    AC_ARG_WITH([included-glib],
> +-      [  --with-included-glib    use the glib2 included here],
> +-      [gl_cv_libglib_force_included=$withval],
> +-      [gl_cv_libglib_force_included=no])
> +-    AC_MSG_RESULT([$gl_cv_libglib_force_included])
> +-  ], [gl_cv_libglib_force_included=$1])
> ++  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
> ++  AC_MSG_CHECKING([whether included glib is requested])
> ++  AC_ARG_WITH([included-glib],
> ++    [  --with-included-glib    use the glib2 included here],
> ++    [gl_cv_libglib_force_included=$withval],
> ++    [gl_cv_libglib_force_included=no])
> ++  AC_MSG_RESULT([$gl_cv_libglib_force_included])
> +
> +   gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
> +   LIBGLIB=
> +   LTLIBGLIB=
> +   INCGLIB=
> +-  ifelse([$1], [yes], , [
> +-    if test "$gl_cv_libglib_use_included" != yes; then
> +-      dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
> +-      dnl the included one.
> +-      AC_CACHE_VAL([gl_cv_libglib], [
> +-        gl_cv_libglib=no
> +-        gl_cv_LIBGLIB=
> +-        gl_cv_LTLIBGLIB=
> +-        gl_cv_INCGLIB=
> +-        gl_save_LIBS="$LIBS"
> +-        dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
> +-        dnl INCGLIB_2_0 accordingly.
> +-        dnl Don't use glib-config nor pkg-config, since it doesn't work when
> +-        dnl cross-compiling or when the C compiler in use is different from the
> +-        dnl one that built the library.
> +-        AC_LIB_LINKFLAGS_BODY([glib-2.0])
> +-        LIBS="$gl_save_LIBS $LIBGLIB_2_0"
> +-        AC_TRY_LINK([#include <glib.h>
> +-#ifndef G_BEGIN_DECLS
> +-error this glib.h includes a glibconfig.h from a glib version 1.x
> +-#endif
> +-],
> +-          [g_string_new ("foo");],
> +-          [gl_cv_libglib=yes
> +-           gl_cv_LIBGLIB="$LIBGLIB_2_0"
> +-           gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> +-          ])
> +-        if test "$gl_cv_libglib" != yes; then
> +-          gl_save_CPPFLAGS="$CPPFLAGS"
> +-          CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
> +-          AC_TRY_LINK([#include <glib.h>
> +-#ifndef G_BEGIN_DECLS
> +-error this glib.h includes a glibconfig.h from a glib version 1.x
> +-#endif
> +-],
> +-            [g_string_new ("foo");],
> +-            [gl_cv_libglib=yes
> +-             gl_cv_LIBGLIB="$LIBGLIB_2_0"
> +-             gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> +-             gl_cv_INCGLIB="$INCGLIB_2_0"
> +-            ])
> +-          if test "$gl_cv_libglib" != yes; then
> +-            dnl Often the include files are installed in /usr/include/glib-2.0
> +-            dnl and /usr/lib/glib-2.0/include.
> +-            if test -n "$LIBGLIB_2_0_PREFIX"; then
> +-              CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
> +-              AC_TRY_LINK([#include <glib.h>
> +-#ifndef G_BEGIN_DECLS
> +-error this glib.h includes a glibconfig.h from a glib version 1.x
> +-#endif
> +-],
> +-                [g_string_new ("foo");],
> +-                [gl_cv_libglib=yes
> +-                 gl_cv_LIBGLIB="$LIBGLIB_2_0"
> +-                 gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
> +-                 gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
> +-                ])
> +-            fi
> +-          fi
> +-          CPPFLAGS="$gl_save_CPPFLAGS"
> +-        fi
> +-        LIBS="$gl_save_LIBS"
> +-      ])
> +-      AC_MSG_CHECKING([for glib])
> +-      AC_MSG_RESULT([$gl_cv_libglib])
> +-      if test $gl_cv_libglib = yes; then
> +-        LIBGLIB="$gl_cv_LIBGLIB"
> +-        LTLIBGLIB="$gl_cv_LTLIBGLIB"
> +-        INCGLIB="$gl_cv_INCGLIB"
> +-      else
> +-        gl_cv_libglib_use_included=yes
> +-      fi
> +-    fi
> +-  ])
> ++  if test "$gl_cv_libglib_use_included" != yes; then
> ++    PKG_CHECK_MODULES([GLIB], [glib-2.0])
> ++    LIBGLIB="$GLIB_LIBS"
> ++    LTLIBGLIB="$GLIB_LIBS"
> ++    INCGLIB="$GLIB_CFLAGS"
> ++  fi
> +   AC_SUBST([LIBGLIB])
> +   AC_SUBST([LTLIBGLIB])
> +   AC_SUBST([INCGLIB])
> +diff --git a/libtextstyle/lib/term-styled-ostream.c b/libtextstyle/lib/term-styled-ostream.c
> +index 3675b5f..811e546 100644
> +--- a/libtextstyle/lib/term-styled-ostream.c
> ++++ b/libtextstyle/lib/term-styled-ostream.c
> +@@ -28,15 +28,15 @@
> +
> + #include <stdlib.h>
> +
> +-#include <cr-om-parser.h>
> +-#include <cr-sel-eng.h>
> +-#include <cr-style.h>
> +-#include <cr-rgb.h>
> ++#include <libcroco/cr-om-parser.h>
> ++#include <libcroco/cr-sel-eng.h>
> ++#include <libcroco/cr-style.h>
> ++#include <libcroco/cr-rgb.h>
> + /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
> + #ifndef __CR_FONTS_H__
> +-# include <cr-fonts.h>
> ++# include <libcroco/cr-fonts.h>
> + #endif
> +-#include <cr-string.h>
> ++#include <libcroco/cr-string.h>
> +
> + #include "term-ostream.h"
> + #include "hash.h"
> +diff --git a/libtextstyle/lib/term-styled-ostream.oo.c b/libtextstyle/lib/term-styled-ostream.oo.c
> +index 2cfd4a8..d42c8b4 100644
> +--- a/libtextstyle/lib/term-styled-ostream.oo.c
> ++++ b/libtextstyle/lib/term-styled-ostream.oo.c
> +@@ -22,15 +22,15 @@
> +
> + #include <stdlib.h>
> +
> +-#include <cr-om-parser.h>
> +-#include <cr-sel-eng.h>
> +-#include <cr-style.h>
> +-#include <cr-rgb.h>
> ++#include <libcroco/cr-om-parser.h>
> ++#include <libcroco/cr-sel-eng.h>
> ++#include <libcroco/cr-style.h>
> ++#include <libcroco/cr-rgb.h>
> + /* <cr-fonts.h> has a broken double-inclusion guard in libcroco-0.6.1.  */
> + #ifndef __CR_FONTS_H__
> +-# include <cr-fonts.h>
> ++# include <libcroco/cr-fonts.h>
> + #endif
> +-#include <cr-string.h>
> ++#include <libcroco/cr-string.h>
> +
> + #include "term-ostream.h"
> + #include "hash.h"
> diff --git a/meta/recipes-core/gettext/gettext_0.19.8.1.bb b/meta/recipes-core/gettext/gettext_0.20.1.bb
> similarity index 94%
> rename from meta/recipes-core/gettext/gettext_0.19.8.1.bb
> rename to meta/recipes-core/gettext/gettext_0.20.1.bb
> index 30121ad23e1..fc05ef2e0a3 100644
> --- a/meta/recipes-core/gettext/gettext_0.19.8.1.bb
> +++ b/meta/recipes-core/gettext/gettext_0.20.1.bb
> @@ -6,7 +6,7 @@ a few stand-alone programs to massage in various ways the sets of translatable a
>  HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
>  SECTION = "libs"
>  LICENSE = "GPLv3+ & LGPL-2.1+"
> -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e"
>
>  # Because po-gram-gen.y has been modified by fix-CVE-2018-18751.patch,
>  # it requires yacc which provided by bison-native
> @@ -17,17 +17,16 @@ PROVIDES = "virtual/libintl virtual/gettext"
>  PROVIDES_class-native = "virtual/gettext-native"
>  RCONFLICTS_${PN} = "proxy-libintl"
>  SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
> -          file://parallel.patch \
> -          file://add-with-bisonlocaledir.patch \
> -          file://cr-statement.c-timsort.h-fix-formatting-issues.patch \
> -          file://use-pkgconfig.patch \
> -          file://fix-CVE-2018-18751.patch \
> -          file://run-ptest \
> -          file://serial-tests-config.patch \
> -"
> +           file://parallel.patch \
> +           file://add-with-bisonlocaledir.patch \
> +           file://cr-statement.c-timsort.h-fix-formatting-issues.patch \
> +           file://use-pkgconfig.patch \
> +           file://run-ptest \
> +           file://serial-tests-config.patch \
> +           "
>
> -SRC_URI[md5sum] = "97e034cf8ce5ba73a28ff6c3c0638092"
> -SRC_URI[sha256sum] = "ff942af0e438ced4a8b0ea4b0b6e0d6d657157c5e2364de57baa279c1c125c43"
> +SRC_URI[md5sum] = "bb5b0c0caa028105f3ca1905ddc306e2"
> +SRC_URI[sha256sum] = "66415634c6e8c3fa8b71362879ec7575e27da43da562c798a8a2f223e6e47f5c"
>
>  inherit autotools texinfo pkgconfig ptest
>
> @@ -127,7 +126,7 @@ do_install_append_class-native () {
>         rm ${D}${datadir}/gettext/po/remove-potcdate.sin
>
>          create_wrapper ${D}${bindir}/msgfmt \
> -                GETTEXTDATADIR="${STAGING_DATADIR_NATIVE}/gettext-0.19.8/"
> +                GETTEXTDATADIR="${STAGING_DATADIR_NATIVE}/gettext-0.20/"
>
>  }
>
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 06/24] python3: update to 3.8.0
  2019-12-05 15:43 ` [PATCH 06/24] python3: update to 3.8.0 Alexander Kanavin
@ 2019-12-07 15:47   ` Khem Raj
  2019-12-09 11:40     ` Alexander Kanavin
  0 siblings, 1 reply; 37+ messages in thread
From: Khem Raj @ 2019-12-07 15:47 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Patches and discussions about the oe-core layer

besides gettext this is another reason I suppose causing a few more failures see


http://errors.yoctoproject.org/Errors/Build/94077/

all do_prepare_recipe_sysroot seems to be failing in python snippets.
and do_configure aree also related to native python missing modules
do_compile are mostly related to gettext.

On Thu, Dec 5, 2019 at 7:45 AM Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>
> Drop backports, rebase other patches.
>
> One patch I wasn't able to rebase as upstream code changed too much:
> 0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> Please determine if it is still needed, produce a new version,
> and work with upstream to get it merged.
>
> 0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> is removed as the use case (allowing python 2 and 3 to coexist
> in SDKs) is no longer relevant with Python 2.x reaching end of line
> and upstream has refactored the code making a rebase difficult.
> If needed, please re-add the patch to py2, rather than py3.
>
> Python 3.8 no longer adds "m" to "3.8" in paths, so adjust the recipes
> and classes accordingly.
>
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  meta/classes/python3-dir.bbclass              |   4 +-
>  ...ib-termcap-to-linker-flags-to-avoid-.patch |  14 +-
>  ...lib-as-location-for-site-packages-an.patch | 156 ++++++++------
>  ...-detection-of-mips-architecture-for-.patch |  16 +-
>  ...fig-append-STAGING_LIBDIR-python-sys.patch |   2 +-
>  ...ON3HOME-is-set-use-instead-of-PYTHON.patch |  47 -----
>  ...asename-to-replace-CC-for-checking-c.patch |  37 ++--
>  ...runtime-test-to-get-float-byte-order.patch | 199 ------------------
>  ...ssing-libraries-to-Extension-for-mul.patch |  80 -------
>  ...report-missing-dependencies-for-disa.patch |  11 +-
>  ...tutils-prefix-is-inside-staging-area.patch |   2 +-
>  .../python3/avoid_warning_about_tkinter.patch |  33 ++-
>  .../python/python3/python-config.patch        |  24 ++-
>  .../python/python3/python3-manifest.json      |   4 +-
>  .../{python3_3.7.5.bb => python3_3.8.0.bb}    |  28 ++-
>  15 files changed, 175 insertions(+), 482 deletions(-)
>  delete mode 100644 meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
>  delete mode 100644 meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
>  delete mode 100644 meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
>  rename meta/recipes-devtools/python/{python3_3.7.5.bb => python3_3.8.0.bb} (91%)
>
> diff --git a/meta/classes/python3-dir.bbclass b/meta/classes/python3-dir.bbclass
> index 7dd130bad99..036d7140d99 100644
> --- a/meta/classes/python3-dir.bbclass
> +++ b/meta/classes/python3-dir.bbclass
> @@ -1,5 +1,5 @@
> -PYTHON_BASEVERSION = "3.7"
> -PYTHON_ABI = "m"
> +PYTHON_BASEVERSION = "3.8"
> +PYTHON_ABI = ""
>  PYTHON_DIR = "python${PYTHON_BASEVERSION}"
>  PYTHON_PN = "python3"
>  PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
> diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> index 09f279ba1d7..59592821d7f 100644
> --- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> +++ b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> @@ -1,4 +1,4 @@
> -From 23294c6ba6896115828293fdb7e67b47b38ba675 Mon Sep 17 00:00:00 2001
> +From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
>  From: Alexander Kanavin <alex.kanavin@gmail.com>
>  Date: Fri, 25 Jan 2019 19:04:13 +0100
>  Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host
> @@ -12,14 +12,14 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
>   1 file changed, 1 deletion(-)
>
>  diff --git a/setup.py b/setup.py
> -index b4357e3..fbec00d 100644
> +index 20d7f35..ab18ff0 100644
>  --- a/setup.py
>  +++ b/setup.py
> -@@ -856,7 +856,6 @@ class PyBuildExt(build_ext):
> +@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):
>                                                        'termcap'):
>                   readline_libs.append('termcap')
> -             exts.append( Extension('readline', ['readline.c'],
> --                                   library_dirs=['/usr/lib/termcap'],
> -                                    extra_link_args=readline_extra_link_args,
> -                                    libraries=readline_libs) )
> +             self.add(Extension('readline', ['readline.c'],
> +-                               library_dirs=['/usr/lib/termcap'],
> +                                extra_link_args=readline_extra_link_args,
> +                                libraries=readline_libs))
>           else:
> diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> index ea75262c4f6..112c979441f 100644
> --- a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> +++ b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> @@ -1,4 +1,4 @@
> -From 0fbdad1eaf541a8e92be81f39514cd249b3b0801 Mon Sep 17 00:00:00 2001
> +From a078b6ff1492e848ad1055764fb9a414abaf3e12 Mon Sep 17 00:00:00 2001
>  From: Alexander Kanavin <alex.kanavin@gmail.com>
>  Date: Tue, 5 Feb 2019 15:52:02 +0100
>  Subject: [PATCH] Do not hardcode "lib" as location for modules, site-packages
> @@ -11,13 +11,13 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
>   Include/pythonrun.h  |  2 ++
>   Lib/site.py          |  4 ++--
>   Makefile.pre.in      |  5 +++--
> - Modules/getpath.c    | 18 ++++++++++++------
> + Modules/getpath.c    | 22 ++++++++++++++--------
>   Python/getplatform.c | 10 ++++++++++
>   Python/sysmodule.c   |  2 ++
> - 6 files changed, 31 insertions(+), 10 deletions(-)
> + 6 files changed, 33 insertions(+), 12 deletions(-)
>
>  diff --git a/Include/pythonrun.h b/Include/pythonrun.h
> -index 6f0c6fc..0a17edd 100644
> +index 46091e0..61b2e15 100644
>  --- a/Include/pythonrun.h
>  +++ b/Include/pythonrun.h
>  @@ -7,6 +7,8 @@
> @@ -28,12 +28,12 @@ index 6f0c6fc..0a17edd 100644
>  +
>   #ifndef Py_LIMITED_API
>   PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
> - PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
> + PyAPI_FUNC(int) PyRun_AnyFileExFlags(
>  diff --git a/Lib/site.py b/Lib/site.py
> -index ffd132b..b55f6d8 100644
> +index a065ab0..1d720ef 100644
>  --- a/Lib/site.py
>  +++ b/Lib/site.py
> -@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):
> +@@ -335,12 +335,12 @@ def getsitepackages(prefixes=None):
>           seen.add(prefix)
>
>           if os.sep == '/':
> @@ -49,10 +49,10 @@ index ffd132b..b55f6d8 100644
>
>   def addsitepackages(known_paths, prefixes=None):
>  diff --git a/Makefile.pre.in b/Makefile.pre.in
> -index 6e81b2f..671a20e 100644
> +index 65665df..be49140 100644
>  --- a/Makefile.pre.in
>  +++ b/Makefile.pre.in
> -@@ -142,7 +142,7 @@ LIBDIR=            @libdir@
> +@@ -143,7 +143,7 @@ LIBDIR=            @libdir@
>   MANDIR=               @mandir@
>   INCLUDEDIR=   @includedir@
>   CONFINCLUDEDIR=       $(exec_prefix)/include
> @@ -61,7 +61,7 @@ index 6e81b2f..671a20e 100644
>   ABIFLAGS=     @ABIFLAGS@
>
>   # Detailed destination directories
> -@@ -768,6 +768,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
> +@@ -753,6 +753,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
>                 -DEXEC_PREFIX='"$(exec_prefix)"' \
>                 -DVERSION='"$(VERSION)"' \
>                 -DVPATH='"$(VPATH)"' \
> @@ -69,7 +69,7 @@ index 6e81b2f..671a20e 100644
>                 -o $@ $(srcdir)/Modules/getpath.c
>
>   Programs/python.o: $(srcdir)/Programs/python.c
> -@@ -856,7 +857,7 @@ regen-opcode:
> +@@ -868,7 +869,7 @@ regen-symbol: $(srcdir)/Include/graminit.h
>   Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
>
>   Python/getplatform.o: $(srcdir)/Python/getplatform.c
> @@ -79,72 +79,90 @@ index 6e81b2f..671a20e 100644
>   Python/importdl.o: $(srcdir)/Python/importdl.c
>                 $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
>  diff --git a/Modules/getpath.c b/Modules/getpath.c
> -index e6a3e8e..0c62af6 100644
> +index b727f66..c003e46 100644
>  --- a/Modules/getpath.c
>  +++ b/Modules/getpath.c
> -@@ -123,6 +123,7 @@ typedef struct {
> -     wchar_t *exec_prefix;              /* EXEC_PREFIX define */
> +@@ -128,6 +128,7 @@ typedef struct {
> +     wchar_t *exec_prefix;              /* EXEC_PREFIX macro */
>
>       wchar_t *lib_python;               /* "lib/pythonX.Y" */
>  +    wchar_t *multilib_python;               /* "lib[suffix]/pythonX.Y" */
> -     wchar_t argv0_path[MAXPATHLEN+1];
> -     wchar_t zip_path[MAXPATHLEN+1];    /* ".../lib/pythonXY.zip" */
>
> -@@ -314,7 +315,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
> +     int prefix_found;         /* found platform independent libraries? */
> +     int exec_prefix_found;    /* found the platform dependent libraries? */
> +@@ -386,7 +387,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
>           if (delim) {
>               *delim = L'\0';
>           }
> --        joinpath(prefix, calculate->lib_python);
> -+        joinpath(prefix, calculate->multilib_python);
> -         joinpath(prefix, LANDMARK);
> -         return 1;
> -     }
> -@@ -343,7 +344,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
> -     copy_absolute(prefix, calculate->argv0_path, MAXPATHLEN+1);
> +-        status = joinpath(prefix, calculate->lib_python, prefix_len);
> ++        status = joinpath(prefix, calculate->multilib_python, prefix_len);
> +         if (_PyStatus_EXCEPTION(status)) {
> +             return status;
> +         }
> +@@ -444,7 +445,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
>       do {
> -         n = wcslen(prefix);
> --        joinpath(prefix, calculate->lib_python);
> -+        joinpath(prefix, calculate->multilib_python);
> -         joinpath(prefix, LANDMARK);
> -         if (ismodule(prefix)) {
> -             return 1;
> -@@ -355,7 +356,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
> -     /* Look at configure's PREFIX */
> -     wcsncpy(prefix, calculate->prefix, MAXPATHLEN);
> -     prefix[MAXPATHLEN] = L'\0';
> --    joinpath(prefix, calculate->lib_python);
> -+    joinpath(prefix, calculate->multilib_python);
> -     joinpath(prefix, LANDMARK);
> -     if (ismodule(prefix)) {
> -         return 1;
> -@@ -427,7 +428,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
> -             wcsncpy(exec_prefix, core_config->home, MAXPATHLEN);
> +         /* Path: <argv0_path or substring> / <lib_python> / LANDMARK */
> +         size_t n = wcslen(prefix);
> +-        status = joinpath(prefix, calculate->lib_python, prefix_len);
> ++        status = joinpath(prefix, calculate->multilib_python, prefix_len);
> +         if (_PyStatus_EXCEPTION(status)) {
> +             return status;
>           }
> -         exec_prefix[MAXPATHLEN] = L'\0';
> --        joinpath(exec_prefix, calculate->lib_python);
> -+        joinpath(exec_prefix, calculate->multilib_python);
> -         joinpath(exec_prefix, L"lib-dynload");
> -         return 1;
> +@@ -467,7 +468,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
> +     if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
> +         return PATHLEN_ERR();
> +     }
> +-    status = joinpath(prefix, calculate->lib_python, prefix_len);
> ++    status = joinpath(prefix, calculate->multilib_python, prefix_len);
> +     if (_PyStatus_EXCEPTION(status)) {
> +         return status;
>       }
> -@@ -464,7 +465,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
> -     copy_absolute(exec_prefix, calculate->argv0_path, MAXPATHLEN+1);
> +@@ -510,7 +511,7 @@ calculate_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
> +         if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
> +             return PATHLEN_ERR();
> +         }
> +-        status = joinpath(prefix, calculate->lib_python, prefix_len);
> ++        status = joinpath(prefix, calculate->multilib_python, prefix_len);
> +         if (_PyStatus_EXCEPTION(status)) {
> +             return status;
> +         }
> +@@ -635,7 +636,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
> +                 return PATHLEN_ERR();
> +             }
> +         }
> +-        status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
> ++        status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
> +         if (_PyStatus_EXCEPTION(status)) {
> +             return status;
> +         }
> +@@ -667,7 +668,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
>       do {
> -         n = wcslen(exec_prefix);
> --        joinpath(exec_prefix, calculate->lib_python);
> -+        joinpath(exec_prefix, calculate->multilib_python);
> -         joinpath(exec_prefix, L"lib-dynload");
> -         if (isdir(exec_prefix)) {
> -             return 1;
> -@@ -476,7 +477,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
> -     /* Look at configure's EXEC_PREFIX */
> -     wcsncpy(exec_prefix, calculate->exec_prefix, MAXPATHLEN);
> -     exec_prefix[MAXPATHLEN] = L'\0';
> --    joinpath(exec_prefix, calculate->lib_python);
> -+    joinpath(exec_prefix, calculate->multilib_python);
> -     joinpath(exec_prefix, L"lib-dynload");
> -     if (isdir(exec_prefix)) {
> -         return 1;
> -@@ -871,6 +872,10 @@ calculate_init(PyCalculatePath *calculate,
> +         /* Path: <argv0_path or substring> / <lib_python> / "lib-dynload" */
> +         size_t n = wcslen(exec_prefix);
> +-        status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
> ++        status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
> +         if (_PyStatus_EXCEPTION(status)) {
> +             return status;
> +         }
> +@@ -689,7 +690,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
> +     if (safe_wcscpy(exec_prefix, calculate->exec_prefix, exec_prefix_len) < 0) {
> +         return PATHLEN_ERR();
> +     }
> +-    status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
> ++    status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
> +     if (_PyStatus_EXCEPTION(status)) {
> +         return status;
> +     }
> +@@ -928,7 +929,7 @@ calculate_argv0_path(PyCalculatePath *calculate, const wchar_t *program_full_pat
> +             return PATHLEN_ERR();
> +         }
> +         reduce(argv0_path);
> +-        status = joinpath(argv0_path, calculate->lib_python, argv0_path_len);
> ++        status = joinpath(argv0_path, calculate->multilib_python, argv0_path_len);
> +         if (_PyStatus_EXCEPTION(status)) {
> +             PyMem_RawFree(wbuf);
> +             return status;
> +@@ -1201,6 +1202,10 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config)
>       if (!calculate->lib_python) {
>           return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
>       }
> @@ -152,10 +170,10 @@ index e6a3e8e..0c62af6 100644
>  +    if (!calculate->multilib_python) {
>  +        return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
>  +    }
> -     return _Py_INIT_OK();
> - }
>
> -@@ -882,6 +887,7 @@ calculate_free(PyCalculatePath *calculate)
> +     calculate->warnings = config->pathconfig_warnings;
> +     calculate->pythonpath_env = config->pythonpath_env;
> +@@ -1216,6 +1221,7 @@ calculate_free(PyCalculatePath *calculate)
>       PyMem_RawFree(calculate->prefix);
>       PyMem_RawFree(calculate->exec_prefix);
>       PyMem_RawFree(calculate->lib_python);
> @@ -182,10 +200,10 @@ index 81a0f7a..d55396b 100644
>  +      return LIB;
>  +}
>  diff --git a/Python/sysmodule.c b/Python/sysmodule.c
> -index efe5b29..de77b17 100644
> +index 5b0fb81..0dce754 100644
>  --- a/Python/sysmodule.c
>  +++ b/Python/sysmodule.c
> -@@ -2319,6 +2319,8 @@ _PySys_BeginInit(PyObject **sysmod)
> +@@ -2668,6 +2668,8 @@ _PySys_InitCore(_PyRuntimeState *runtime, PyInterpreterState *interp,
>                           PyUnicode_FromString(Py_GetCopyright()));
>       SET_SYS_FROM_STRING("platform",
>                           PyUnicode_FromString(Py_GetPlatform()));
> diff --git a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> index e7af88654da..fe0aa8aabed 100644
> --- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> +++ b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> @@ -1,4 +1,4 @@
> -From 7535c39951b9d15dd64c4669092a8582ba555466 Mon Sep 17 00:00:00 2001
> +From 2581ebe3cd9686089aed223651e1b8bf0b862b48 Mon Sep 17 00:00:00 2001
>  From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
>  Date: Fri, 31 May 2019 15:34:34 +0200
>  Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
> @@ -12,15 +12,16 @@ to do this in a more autoconf/autotools manner.
>
>  Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
>  Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
> +
>  ---
> - configure.ac | 169 ++++++---------------------------------------------
> - 1 file changed, 17 insertions(+), 152 deletions(-)
> + configure.ac | 171 +++++----------------------------------------------
> + 1 file changed, 17 insertions(+), 154 deletions(-)
>
>  diff --git a/configure.ac b/configure.ac
> -index a7de901e08..a73e2de51b 100644
> +index 0f85486..0ca7e24 100644
>  --- a/configure.ac
>  +++ b/configure.ac
> -@@ -727,158 +727,23 @@ fi
> +@@ -704,160 +704,23 @@ fi
>   MULTIARCH=$($CC --print-multiarch 2>/dev/null)
>   AC_SUBST(MULTIARCH)
>
> @@ -163,6 +164,8 @@ index a7de901e08..a73e2de51b 100644
>  -        i386-gnu
>  -#elif defined(__APPLE__)
>  -        darwin
> +-#elif defined(__VXWORKS__)
> +-        vxworks
>  -#else
>  -# error unknown platform triplet
>  -#endif
> @@ -196,6 +199,3 @@ index a7de901e08..a73e2de51b 100644
>
>   if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
>     if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
> ---
> -2.21.0
> -
> diff --git a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> index 1709011be8a..ee37f6bd52d 100644
> --- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> +++ b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> @@ -1,4 +1,4 @@
> -From eff903c600f4c40f5753e95ab1557126fc6e0c9c Mon Sep 17 00:00:00 2001
> +From cf676775109c0a7fb38058bb60b453ff8f1a166b Mon Sep 17 00:00:00 2001
>  From: Alexander Kanavin <alex.kanavin@gmail.com>
>  Date: Thu, 31 Jan 2019 16:46:30 +0100
>  Subject: [PATCH] distutils/sysconfig: append
> diff --git a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch b/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> deleted file mode 100644
> index a146c747f83..00000000000
> --- a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> +++ /dev/null
> @@ -1,47 +0,0 @@
> -From 5ce3ac59531828ff682646fbba59b2126b28a8aa Mon Sep 17 00:00:00 2001
> -From: Jaewon Lee <jaewon.lee@xilinx.com>
> -Date: Thu, 25 Apr 2019 15:34:26 -0700
> -Subject: [PATCH] main.c: if OEPYTHON3HOME is set use instead of PYTHONHOME
> -
> -There is one variable PYTHONHOME to determine where libraries are coming
> -from for both python2 and python3. This becomes an issue if only one has
> -libraries in the specified PYTHONHOME path, but they are using the same
> -PYTHONHOME. Creating another variable OEPYTHON3HOME to allow for a way
> -to set a different path for python3
> -
> -Signed-off-by: Jaewon Lee <jaewon.lee@xilinx.com>
> -
> -Upstream-Status: Inappropriate [OE specific configuration]
> -
> ----
> - Modules/main.c | 17 +++++++++++++----
> - 1 file changed, 13 insertions(+), 4 deletions(-)
> -
> -diff --git a/Modules/main.c b/Modules/main.c
> -index acc59c6..407085a 100644
> ---- a/Modules/main.c
> -+++ b/Modules/main.c
> -@@ -1834,10 +1834,19 @@ config_init_home(_PyCoreConfig *config)
> -         }
> -         return _Py_INIT_OK();
> -     }
> --
> --    int res = config_get_env_var_dup(&home, L"PYTHONHOME", "PYTHONHOME");
> --    if (res < 0) {
> --        return DECODE_LOCALE_ERR("PYTHONHOME", res);
> -+    int res;
> -+    const char *oepython3home = config_get_env_var("OEPYTHON3HOME");
> -+    if (oepython3home) {
> -+        res = config_get_env_var_dup(&home, L"OEPYTHON3HOME", "OEPYTHON3HOME");
> -+        if (res < 0) {
> -+            return DECODE_LOCALE_ERR("OEPYTHON3HOME", res);
> -+        }
> -+    }
> -+    else {
> -+        res = config_get_env_var_dup(&home, L"PYTHONHOME", "PYTHONHOME");
> -+        if (res < 0) {
> -+            return DECODE_LOCALE_ERR("PYTHONHOME", res);
> -+        }
> -     }
> -     config->home = home;
> -     return _Py_INIT_OK();
> diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> index a0ea897f4e8..fb10ca94b31 100644
> --- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> +++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> @@ -1,4 +1,4 @@
> -From 2645317fef09afe31b01bb2c1d4fe5b9afdbb11a Mon Sep 17 00:00:00 2001
> +From 994783da5c21cab81b6589ed2d4275e665a946f9 Mon Sep 17 00:00:00 2001
>  From: Changqing Li <changqing.li@windriver.com>
>  Date: Mon, 22 Oct 2018 15:19:51 +0800
>  Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
> @@ -21,12 +21,13 @@ Signed-off-by: Li Zhou <li.zhou@windriver.com>
>  patch originally from Li Zhou, I just rework it to new version
>
>  Signed-off-by: Changqing Li <changqing.li@windriver.com>
> +
>  ---
>   configure.ac | 19 ++++++++++---------
>   1 file changed, 10 insertions(+), 9 deletions(-)
>
>  diff --git a/configure.ac b/configure.ac
> -index a7de901..4a3681f 100644
> +index a189d42..0f85486 100644
>  --- a/configure.ac
>  +++ b/configure.ac
>  @@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
> @@ -37,7 +38,7 @@ index a7de901..4a3681f 100644
>
>   # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
>   rm -f pybuilddir.txt
> -@@ -695,7 +696,7 @@ AC_MSG_RESULT($with_cxx_main)
> +@@ -671,7 +672,7 @@ AC_MSG_RESULT($with_cxx_main)
>   preset_cxx="$CXX"
>   if test -z "$CXX"
>   then
> @@ -46,7 +47,7 @@ index a7de901..4a3681f 100644
>           gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
>           cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
>           clang|*/clang)     AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
> -@@ -979,7 +980,7 @@ rmdir CaseSensitiveTestDir
> +@@ -957,7 +958,7 @@ rmdir CaseSensitiveTestDir
>
>   case $ac_sys_system in
>   hp*|HP*)
> @@ -55,7 +56,7 @@ index a7de901..4a3681f 100644
>       cc|*/cc) CC="$CC -Ae";;
>       esac;;
>   esac
> -@@ -1336,7 +1337,7 @@ else
> +@@ -1335,7 +1336,7 @@ else
>   fi],
>   [AC_MSG_RESULT(no)])
>   if test "$Py_LTO" = 'true' ; then
> @@ -64,7 +65,7 @@ index a7de901..4a3681f 100644
>       *clang*)
>         AC_SUBST(LLVM_AR)
>         AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
> -@@ -1426,7 +1427,7 @@ then
> +@@ -1425,7 +1426,7 @@ then
>     fi
>   fi
>   LLVM_PROF_ERR=no
> @@ -73,16 +74,16 @@ index a7de901..4a3681f 100644
>     *clang*)
>       # Any changes made here should be reflected in the GCC+Darwin case below
>       PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
> -@@ -1500,7 +1501,7 @@ then
> -            WRAP="-fwrapv"
> -         fi
> +@@ -1486,7 +1487,7 @@ esac
> + # compiler and platform.  BASECFLAGS tweaks need to be made even if the
> + # user set OPT.
>
> --        case $CC in
> -+        case $cc_basename in
> -             *clang*)
> -                 cc_is_clang=1
> -                 ;;
> -@@ -1623,7 +1624,7 @@ yes)
> +-case $CC in
> ++case $cc_basename in
> +     *clang*)
> +         cc_is_clang=1
> +         ;;
> +@@ -1622,7 +1623,7 @@ yes)
>
>       # ICC doesn't recognize the option, but only emits a warning
>       ## XXX does it emit an unused result warning and can it be disabled?
> @@ -91,7 +92,7 @@ index a7de901..4a3681f 100644
>       *icc*)
>       ac_cv_disable_unused_result_warning=no
>       ;;
> -@@ -1965,7 +1966,7 @@ yes)
> +@@ -1943,7 +1944,7 @@ yes)
>   esac
>
>   # ICC needs -fp-model strict or floats behave badly
> @@ -100,7 +101,7 @@ index a7de901..4a3681f 100644
>   *icc*)
>       CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
>       ;;
> -@@ -2727,7 +2728,7 @@ then
> +@@ -2711,7 +2712,7 @@ then
>                 then
>                         LINKFORSHARED="-Wl,--export-dynamic"
>                 fi;;
> @@ -109,7 +110,7 @@ index a7de901..4a3681f 100644
>                   *gcc*)
>                     if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
>                     then
> -@@ -5429,7 +5430,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
> +@@ -5362,7 +5363,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
>       # Some versions of gcc miscompile inline asm:
>       # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
>       # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
> diff --git a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch b/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
> deleted file mode 100644
> index 58ab709028e..00000000000
> --- a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
> +++ /dev/null
> @@ -1,199 +0,0 @@
> -From fa96a7fd19e17b9c6b4dd01c3c3774fb382dddc6 Mon Sep 17 00:00:00 2001
> -From: Ross Burton <ross.burton@intel.com>
> -Date: Wed, 5 Sep 2018 11:45:52 +0100
> -Subject: [PATCH] Don't do runtime test to get float byte order
> -
> -Python uses AC_RUN_IFELSE to determine the byte order for floats and doubles,
> -and falls back onto "I don't know" if it can't run code.  This results in
> -crippled floating point numbers in Python, and the regression tests fail.
> -
> -Instead of running code, take a macro from autoconf-archive which compiles C
> -with a special double in which has an ASCII representation, and then greps the
> -binary to identify the format.
> -
> -Upstream-Status: Backport [2a9c3805ddedf282881ef7811a561c70b74f80b1]
> -Signed-off-by: Ross Burton <ross.burton@intel.com>
> ----
> - configure.ac                     | 72 +++------------------------
> - m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++++++++++++
> - 2 files changed, 90 insertions(+), 65 deletions(-)
> - create mode 100644 m4/ax_c_float_words_bigendian.m4
> -
> -diff --git a/configure.ac b/configure.ac
> -index 4a3681f..4ab19a6 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -4328,77 +4328,19 @@ fi
> - # * Check for various properties of floating point *
> - # **************************************************
> -
> --AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
> --AC_CACHE_VAL(ac_cv_little_endian_double, [
> --AC_RUN_IFELSE([AC_LANG_SOURCE([[
> --#include <string.h>
> --int main() {
> --    double x = 9006104071832581.0;
> --    if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
> --        return 0;
> --    else
> --        return 1;
> --}
> --]])],
> --[ac_cv_little_endian_double=yes],
> --[ac_cv_little_endian_double=no],
> --[ac_cv_little_endian_double=no])])
> --AC_MSG_RESULT($ac_cv_little_endian_double)
> --if test "$ac_cv_little_endian_double" = yes
> --then
> --  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
> --  [Define if C doubles are 64-bit IEEE 754 binary format, stored
> --   with the least significant byte first])
> --fi
> --
> --AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
> --AC_CACHE_VAL(ac_cv_big_endian_double, [
> --AC_RUN_IFELSE([AC_LANG_SOURCE([[
> --#include <string.h>
> --int main() {
> --    double x = 9006104071832581.0;
> --    if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
> --        return 0;
> --    else
> --        return 1;
> --}
> --]])],
> --[ac_cv_big_endian_double=yes],
> --[ac_cv_big_endian_double=no],
> --[ac_cv_big_endian_double=no])])
> --AC_MSG_RESULT($ac_cv_big_endian_double)
> --if test "$ac_cv_big_endian_double" = yes
> -+AX_C_FLOAT_WORDS_BIGENDIAN
> -+if test "$ax_cv_c_float_words_bigendian" = "yes"
> - then
> -   AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
> -   [Define if C doubles are 64-bit IEEE 754 binary format, stored
> -    with the most significant byte first])
> --fi
> --
> --# Some ARM platforms use a mixed-endian representation for doubles.
> --# While Python doesn't currently have full support for these platforms
> --# (see e.g., issue 1762561), we can at least make sure that float <-> string
> --# conversions work.
> --AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)
> --AC_CACHE_VAL(ac_cv_mixed_endian_double, [
> --AC_RUN_IFELSE([AC_LANG_SOURCE([[
> --#include <string.h>
> --int main() {
> --    double x = 9006104071832581.0;
> --    if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
> --        return 0;
> --    else
> --        return 1;
> --}
> --]])],
> --[ac_cv_mixed_endian_double=yes],
> --[ac_cv_mixed_endian_double=no],
> --[ac_cv_mixed_endian_double=no])])
> --AC_MSG_RESULT($ac_cv_mixed_endian_double)
> --if test "$ac_cv_mixed_endian_double" = yes
> -+elif test "$ax_cv_c_float_words_bigendian" = "no"
> - then
> --  AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
> -+  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
> -   [Define if C doubles are 64-bit IEEE 754 binary format, stored
> --   in ARM mixed-endian order (byte order 45670123)])
> -+   with the least significant byte first])
> -+else
> -+  AC_MSG_ERROR([Cannot identify floating point byte order])
> - fi
> -
> - # The short float repr introduced in Python 3.1 requires the
> -diff --git a/m4/ax_c_float_words_bigendian.m4 b/m4/ax_c_float_words_bigendian.m4
> -new file mode 100644
> -index 0000000..216b90d
> ---- /dev/null
> -+++ b/m4/ax_c_float_words_bigendian.m4
> -@@ -0,0 +1,83 @@
> -+# ===============================================================================
> -+#  https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html
> -+# ===============================================================================
> -+#
> -+# SYNOPSIS
> -+#
> -+#   AX_C_FLOAT_WORDS_BIGENDIAN([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
> -+#
> -+# DESCRIPTION
> -+#
> -+#   Checks the ordering of words within a multi-word float. This check is
> -+#   necessary because on some systems (e.g. certain ARM systems), the float
> -+#   word ordering can be different from the byte ordering. In a multi-word
> -+#   float context, "big-endian" implies that the word containing the sign
> -+#   bit is found in the memory location with the lowest address. This
> -+#   implementation was inspired by the AC_C_BIGENDIAN macro in autoconf.
> -+#
> -+#   The endianness is detected by first compiling C code that contains a
> -+#   special double float value, then grepping the resulting object file for
> -+#   certain strings of ASCII values. The double is specially crafted to have
> -+#   a binary representation that corresponds with a simple string. In this
> -+#   implementation, the string "noonsees" was selected because the
> -+#   individual word values ("noon" and "sees") are palindromes, thus making
> -+#   this test byte-order agnostic. If grep finds the string "noonsees" in
> -+#   the object file, the target platform stores float words in big-endian
> -+#   order. If grep finds "seesnoon", float words are in little-endian order.
> -+#   If neither value is found, the user is instructed to specify the
> -+#   ordering.
> -+#
> -+# LICENSE
> -+#
> -+#   Copyright (c) 2008 Daniel Amelang <dan@amelang.net>
> -+#
> -+#   Copying and distribution of this file, with or without modification, are
> -+#   permitted in any medium without royalty provided the copyright notice
> -+#   and this notice are preserved. This file is offered as-is, without any
> -+#   warranty.
> -+
> -+#serial 11
> -+
> -+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
> -+  [AC_CACHE_CHECK(whether float word ordering is bigendian,
> -+                  ax_cv_c_float_words_bigendian, [
> -+
> -+ax_cv_c_float_words_bigendian=unknown
> -+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
> -+
> -+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
> -+
> -+]])], [
> -+
> -+if grep noonsees conftest.$ac_objext >/dev/null ; then
> -+  ax_cv_c_float_words_bigendian=yes
> -+fi
> -+if grep seesnoon conftest.$ac_objext >/dev/null ; then
> -+  if test "$ax_cv_c_float_words_bigendian" = unknown; then
> -+    ax_cv_c_float_words_bigendian=no
> -+  else
> -+    ax_cv_c_float_words_bigendian=unknown
> -+  fi
> -+fi
> -+
> -+])])
> -+
> -+case $ax_cv_c_float_words_bigendian in
> -+  yes)
> -+    m4_default([$1],
> -+      [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
> -+                 [Define to 1 if your system stores words within floats
> -+                  with the most significant word first])]) ;;
> -+  no)
> -+    $2 ;;
> -+  *)
> -+    m4_default([$3],
> -+      [AC_MSG_ERROR([
> -+
> -+Unknown float word ordering. You need to manually preset
> -+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
> -+
> -+    ])]) ;;
> -+esac
> -+
> -+])# AX_C_FLOAT_WORDS_BIGENDIAN
> diff --git a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> deleted file mode 100644
> index b9d5bc9c516..00000000000
> --- a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> +++ /dev/null
> @@ -1,80 +0,0 @@
> -From b881a79adcd4ae5ac8fe4f49d0fc77c47f777919 Mon Sep 17 00:00:00 2001
> -From: Hongxu Jia <hongxu.jia@windriver.com>
> -Date: Fri, 4 Aug 2017 11:16:14 +0800
> -Subject: [PATCH] setup.py: pass missing libraries to Extension for
> - multiprocessing module
> -
> -In the following commit:
> -...
> -commit e711cafab13efc9c1fe6c5cd75826401445eb585
> -Author: Benjamin Peterson <benjamin@python.org>
> -Date:   Wed Jun 11 16:44:04 2008 +0000
> -
> -    Merged revisions 64104,64117 via svnmerge from
> -    svn+ssh://pythondev@svn.python.org/python/trunk
> -...
> -(see diff in setup.py)
> -It assigned libraries for multiprocessing module according
> -the host_platform, but not pass it to Extension.
> -
> -In glibc, the following commit caused two definition of
> -sem_getvalue are different.
> -https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
> -(see diff in nptl/sem_getvalue.c for detail)
> -`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
> -and `__old_sem_getvalue' is to compat the old version
> -sem_getvalue@GLIBC_2.0.
> -
> -To build python for embedded Linux systems:
> -http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
> -If not explicitly link to library pthread (-lpthread), it will
> -load glibc's sem_getvalue randomly at runtime.
> -
> -Such as build python on linux x86_64 host and run the python
> -on linux x86_32 target. If not link library pthread, it caused
> -multiprocessing bounded semaphore could not work correctly.
> -...
> ->>> import multiprocessing
> ->>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
> ->>> pool_sema.acquire()
> -True
> ->>> pool_sema.release()
> -Traceback (most recent call last):
> -  File "<stdin>", line 1, in <module>
> -ValueError: semaphore or lock released too many times
> -...
> -
> -And the semaphore issue also caused multiprocessing.Queue().put() hung.
> -
> -Upstream-Status: Submitted [https://github.com/python/cpython/pull/2999]
> -
> -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ----
> - setup.py | 7 +++++--
> - 1 file changed, 5 insertions(+), 2 deletions(-)
> -
> -diff --git a/setup.py b/setup.py
> -index b7a36a6..658ead3 100644
> ---- a/setup.py
> -+++ b/setup.py
> -@@ -1584,8 +1584,10 @@ class PyBuildExt(build_ext):
> -         elif host_platform.startswith('netbsd'):
> -             macros = dict()
> -             libraries = []
> --
> --        else:                                   # Linux and other unices
> -+        elif host_platform.startswith(('linux')):
> -+            macros = dict()
> -+            libraries = ['pthread']
> -+        else:                                   # Other unices
> -             macros = dict()
> -             libraries = ['rt']
> -
> -@@ -1603,6 +1605,7 @@ class PyBuildExt(build_ext):
> -
> -         exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
> -                                 define_macros=list(macros.items()),
> -+                                libraries=libraries,
> -                                 include_dirs=["Modules/_multiprocessing"]))
> -         # End multiprocessing
> -
> diff --git a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> index c15295c034c..4bd98f62fd6 100644
> --- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> +++ b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> @@ -1,4 +1,4 @@
> -From e3b59cb9658e1d3efa3535840939a0fa92a70a5a Mon Sep 17 00:00:00 2001
> +From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
>  From: Alexander Kanavin <alex.kanavin@gmail.com>
>  Date: Mon, 7 Oct 2019 13:22:14 +0200
>  Subject: [PATCH] setup.py: do not report missing dependencies for disabled
> @@ -10,22 +10,23 @@ build completeness checker which relies on the report.
>
>  Upstream-Status: Inappropriate [oe-core specific]
>  Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> +
>  ---
>   setup.py | 4 ++++
>   1 file changed, 4 insertions(+)
>
>  diff --git a/setup.py b/setup.py
> -index 4b53668..0097643 100644
> +index 7691258..ec3f2a4 100644
>  --- a/setup.py
>  +++ b/setup.py
> -@@ -365,6 +365,10 @@ class PyBuildExt(build_ext):
> +@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
>                   print("%-*s   %-*s   %-*s" % (longest, e, longest, f,
>                                                 longest, g))
>
>  +        # There is no need to report missing module dependencies,
>  +        # if the modules have been disabled in the first place.
> -+        missing = list(set(missing) - set(sysconf_dis))
> ++        self.missing = list(set(self.missing) - set(sysconf_dis))
>  +
> -         if missing:
> +         if self.missing:
>               print()
>               print("Python build finished successfully!")
> diff --git a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> index d49604ba4d9..219b3551b8b 100644
> --- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> +++ b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> @@ -1,4 +1,4 @@
> -From a274ba778838824efcacaba57c415b7262f779ec Mon Sep 17 00:00:00 2001
> +From 93b2c26467b0ea9a18c178e4e1371d52e917a68b Mon Sep 17 00:00:00 2001
>  From: Khem Raj <raj.khem@gmail.com>
>  Date: Tue, 14 May 2013 15:00:26 -0700
>  Subject: [PATCH] python3: Add target and native recipes
> diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> index 24e67b4ca14..184540e794c 100644
> --- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> +++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> @@ -1,4 +1,4 @@
> -From fead48c8b501a8d7c3db21df2e599f90f38f11d3 Mon Sep 17 00:00:00 2001
> +From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
>  From: Andrei Gherzan <andrei@gherzan.ro>
>  Date: Mon, 28 Jan 2019 15:57:54 +0000
>  Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet
> @@ -11,26 +11,21 @@ Also simply disable the tk module since its not in DEPENDS.
>  Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
>
>  ---
> - setup.py | 8 +++++---
> - 1 file changed, 5 insertions(+), 3 deletions(-)
> + setup.py | 4 ++--
> + 1 file changed, 2 insertions(+), 2 deletions(-)
>
>  diff --git a/setup.py b/setup.py
> -index fbec00d..b7a36a6 100644
> +index ab18ff0..7691258 100644
>  --- a/setup.py
>  +++ b/setup.py
> -@@ -1623,10 +1623,12 @@ class PyBuildExt(build_ext):
> -         self.extensions.extend(exts)
> +@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):
> +         self.detect_decimal()
> +         self.detect_ctypes()
> +         self.detect_multiprocessing()
> +-        if not self.detect_tkinter():
> +-            self.missing.append('_tkinter')
> ++#        if not self.detect_tkinter():
> ++#            self.missing.append('_tkinter')
> +         self.detect_uuid()
>
> -         # Call the method for detecting whether _tkinter can be compiled
> --        self.detect_tkinter(inc_dirs, lib_dirs)
> -+        # self.detect_tkinter(inc_dirs, lib_dirs)
> -
> --        if '_tkinter' not in [e.name for e in self.extensions]:
> --            missing.append('_tkinter')
> -+        # tkinter module will not be avalaible as yocto
> -+        # doesn't have tk integrated (yet)
> -+        #if '_tkinter' not in [e.name for e in self.extensions]:
> -+        #    missing.append('_tkinter')
> -
> -         # Build the _uuid module if possible
> -         uuid_incs = find_file("uuid.h", inc_dirs, ["/usr/include/uuid"])
> + ##         # Uncomment these lines if you want to play with xxmodule.c
> diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch
> index f23b8b7df06..c8a8f3d4aa3 100644
> --- a/meta/recipes-devtools/python/python3/python-config.patch
> +++ b/meta/recipes-devtools/python/python3/python-config.patch
> @@ -1,4 +1,7 @@
> -python-config: Revert to using distutils.sysconfig
> +From 07df0ae0d70cba6d1847fe1c24a71063930bec60 Mon Sep 17 00:00:00 2001
> +From: Tyler Hall <tylerwhall@gmail.com>
> +Date: Sun, 4 May 2014 20:06:43 -0400
> +Subject: [PATCH] python-config: Revert to using distutils.sysconfig
>
>  The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in
>
> @@ -12,11 +15,16 @@ Upstream-Status: Inappropriate [Embedded Specific]
>
>  Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
>  :
> -Index: Python-3.3.3/Misc/python-config.in
> -===================================================================
> ---- Python-3.3.3.orig/Misc/python-config.in
> -+++ Python-3.3.3/Misc/python-config.in
> -@@ -4,7 +4,7 @@
> +
> +---
> + Misc/python-config.in | 10 +++++-----
> + 1 file changed, 5 insertions(+), 5 deletions(-)
> +
> +diff --git a/Misc/python-config.in b/Misc/python-config.in
> +index 727c4a8..c702829 100644
> +--- a/Misc/python-config.in
> ++++ b/Misc/python-config.in
> +@@ -6,7 +6,7 @@
>   import getopt
>   import os
>   import sys
> @@ -24,8 +32,8 @@ Index: Python-3.3.3/Misc/python-config.in
>  +from distutils import sysconfig
>
>   valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
> -               'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir']
> -@@ -32,14 +32,14 @@ if '--help' in opt_flags:
> +               'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir',
> +@@ -35,14 +35,14 @@ if '--help' in opt_flags:
>
>   for opt in opt_flags:
>       if opt == '--prefix':
> diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
> index dba92b0e396..ebfc10b4045 100644
> --- a/meta/recipes-devtools/python/python3/python3-manifest.json
> +++ b/meta/recipes-devtools/python/python3/python3-manifest.json
> @@ -213,8 +213,8 @@
>              "${bindir}/python3",
>              "${bindir}/python${PYTHON_MAJMIN}",
>              "${bindir}/python${PYTHON_MAJMIN}.real",
> -            "${bindir}/python${PYTHON_BINABI}",
> -            "${includedir}/python${PYTHON_BINABI}/pyconfig*.h",
> +            "${bindir}/python${PYTHON_MAJMIN}",
> +            "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h",
>              "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]",
>              "${libdir}/python${PYTHON_MAJMIN}/UserDict.py",
>              "${libdir}/python${PYTHON_MAJMIN}/UserList.py",
> diff --git a/meta/recipes-devtools/python/python3_3.7.5.bb b/meta/recipes-devtools/python/python3_3.8.0.bb
> similarity index 91%
> rename from meta/recipes-devtools/python/python3_3.7.5.bb
> rename to meta/recipes-devtools/python/python3_3.8.0.bb
> index 57eaaea5e7c..1feaebea8ee 100644
> --- a/meta/recipes-devtools/python/python3_3.7.5.bb
> +++ b/meta/recipes-devtools/python/python3_3.8.0.bb
> @@ -19,8 +19,6 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
>             file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
>             file://0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch \
>             file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
> -           file://0002-Don-t-do-runtime-test-to-get-float-byte-order.patch \
> -           file://0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
>             file://0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch \
>             file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \
>             file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
> @@ -35,20 +33,16 @@ SRC_URI_append_class-native = " \
>             file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
>             file://12-distutils-prefix-is-inside-staging-area.patch \
>             "
> -SRC_URI_append_class-nativesdk = " \
> -           file://0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch \
> -           "
>
> -SRC_URI[md5sum] = "08ed8030b1183107c48f2092e79a87e2"
> -SRC_URI[sha256sum] = "e85a76ea9f3d6c485ec1780fca4e500725a4a7bbc63c78ebc44170de9b619d94"
> +SRC_URI[md5sum] = "dbac8df9d8b9edc678d0f4cacdb7dbb0"
> +SRC_URI[sha256sum] = "b356244e13fb5491da890b35b13b2118c3122977c2cd825e3eb6e7d462030d84"
>
>  # exclude pre-releases for both python 2.x and 3.x
>  UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
>
>  CVE_PRODUCT = "python"
>
> -PYTHON_MAJMIN = "3.7"
> -PYTHON_BINABI = "${PYTHON_MAJMIN}m"
> +PYTHON_MAJMIN = "3.8"
>
>  S = "${WORKDIR}/Python-${PV}"
>
> @@ -59,8 +53,8 @@ inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
>  MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
>
>  ALTERNATIVE_${PN}-dev = "python3-config"
> -ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_BINABI}-config"
> -ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}"
> +ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
> +ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
>
>
>  DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2"
> @@ -131,7 +125,7 @@ do_install_prepend() {
>  }
>
>  do_install_append_class-target() {
> -        oe_multilib_header python${PYTHON_BINABI}/pyconfig.h
> +        oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
>  }
>
>  do_install_append_class-native() {
> @@ -161,7 +155,7 @@ do_install_append() {
>  }
>
>  do_install_append_class-nativesdk () {
> -    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} OEPYTHON3HOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
> +    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
>  }
>
>  SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
> @@ -177,7 +171,7 @@ py_package_preprocess () {
>                  -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
>                  ${PKGD}/${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
>                  ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
> -                ${PKGD}/${bindir}/python${PYTHON_BINABI}-config
> +                ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
>
>          # Reformat _sysconfigdata after modifying it so that it remains
>          # reproducible
> @@ -196,7 +190,7 @@ py_package_preprocess () {
>               -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
>          cd -
>
> -        mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}
> +        mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
>
>          #Remove the unneeded copy of target sysconfig data
>          rm -rf ${PKGD}/${libdir}/python-sysconfigdata
> @@ -322,7 +316,7 @@ RPROVIDES_${PN}-venv += "python3-pyvenv"
>  # package libpython3
>  PACKAGES =+ "libpython3 libpython3-staticdev"
>  FILES_libpython3 = "${libdir}/libpython*.so.*"
> -FILES_libpython3-staticdev += "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-*/libpython${PYTHON_BINABI}.a"
> +FILES_libpython3-staticdev += "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
>  INSANE_SKIP_${PN}-dev += "dev-elf"
>
>  # catch all the rest (unsorted)
> @@ -341,3 +335,5 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9"
>  RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
>  RDEPENDS_${PN}-dev = ""
>
> +RDEPENDS_${PN}-tests_append_class-target = " bash"
> +RDEPENDS_${PN}-tests_append_class-nativesdk = " bash"
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 01/24] rpm: upgrade to 4.15.1
  2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
                   ` (23 preceding siblings ...)
  2019-12-05 16:02 ` ✗ patchtest: failure for "rpm: upgrade to 4.15.1..." and 23 more Patchwork
@ 2019-12-07 22:48 ` Richard Purdie
  24 siblings, 0 replies; 37+ messages in thread
From: Richard Purdie @ 2019-12-07 22:48 UTC (permalink / raw)
  To: Alexander Kanavin, openembedded-core

On Thu, 2019-12-05 at 16:43 +0100, Alexander Kanavin wrote:
> Drop patches that were merged upstream.
> 
> 0001-mono-find-provides-requires-do-not-use-monodis-from-.patch
> modifies a file that was removed upstream.
> 
> Add a 0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch
> as unfortunately the new parallel file classification feature from
> upstream trips over somewhere in libmagic when inspected files are
> compressed:
> https://github.com/rpm-software-management/rpm/issues/756
> 
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>

This patch series (and your following patches) is showing quite a few
problems. This gives an idea:

http://errors.yoctoproject.org/Errors/Latest/?filter=2cfc5dd223815df65d2001a6a9c352eadf936f94&type=commit&limit=150

I'm going to drop:
* gettext changes (needs testing in isolation)
* python 3.8 (build failures)
* debianutil upgrade (build failure)
* sysklogd upgrade (build failure)
* atk/at-spi2* (build failures)
* rpm upgrade (load of segfaults in do_package_write_rpm in previous build)
* libtasn upgrade (build failure)

so we can at least try and get the simpler pieces sorted out first...

Cheers,

Richard



^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 06/24] python3: update to 3.8.0
  2019-12-07 15:47   ` Khem Raj
@ 2019-12-09 11:40     ` Alexander Kanavin
  0 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-09 11:40 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 55768 bytes --]

As RP said, the problematic pieces will be tested and fixed one by one, I
guess I was too optimistic about this patchset's maturity.

Alex

On Sat, 7 Dec 2019 at 16:48, Khem Raj <raj.khem@gmail.com> wrote:

> besides gettext this is another reason I suppose causing a few more
> failures see
>
>
> http://errors.yoctoproject.org/Errors/Build/94077/
>
> all do_prepare_recipe_sysroot seems to be failing in python snippets.
> and do_configure aree also related to native python missing modules
> do_compile are mostly related to gettext.
>
> On Thu, Dec 5, 2019 at 7:45 AM Alexander Kanavin <alex.kanavin@gmail.com>
> wrote:
> >
> > Drop backports, rebase other patches.
> >
> > One patch I wasn't able to rebase as upstream code changed too much:
> > 0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> > Please determine if it is still needed, produce a new version,
> > and work with upstream to get it merged.
> >
> > 0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> > is removed as the use case (allowing python 2 and 3 to coexist
> > in SDKs) is no longer relevant with Python 2.x reaching end of line
> > and upstream has refactored the code making a rebase difficult.
> > If needed, please re-add the patch to py2, rather than py3.
> >
> > Python 3.8 no longer adds "m" to "3.8" in paths, so adjust the recipes
> > and classes accordingly.
> >
> > Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ---
> >  meta/classes/python3-dir.bbclass              |   4 +-
> >  ...ib-termcap-to-linker-flags-to-avoid-.patch |  14 +-
> >  ...lib-as-location-for-site-packages-an.patch | 156 ++++++++------
> >  ...-detection-of-mips-architecture-for-.patch |  16 +-
> >  ...fig-append-STAGING_LIBDIR-python-sys.patch |   2 +-
> >  ...ON3HOME-is-set-use-instead-of-PYTHON.patch |  47 -----
> >  ...asename-to-replace-CC-for-checking-c.patch |  37 ++--
> >  ...runtime-test-to-get-float-byte-order.patch | 199 ------------------
> >  ...ssing-libraries-to-Extension-for-mul.patch |  80 -------
> >  ...report-missing-dependencies-for-disa.patch |  11 +-
> >  ...tutils-prefix-is-inside-staging-area.patch |   2 +-
> >  .../python3/avoid_warning_about_tkinter.patch |  33 ++-
> >  .../python/python3/python-config.patch        |  24 ++-
> >  .../python/python3/python3-manifest.json      |   4 +-
> >  .../{python3_3.7.5.bb => python3_3.8.0.bb}    |  28 ++-
> >  15 files changed, 175 insertions(+), 482 deletions(-)
> >  delete mode 100644
> meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> >  delete mode 100644
> meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
> >  delete mode 100644
> meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> >  rename meta/recipes-devtools/python/{python3_3.7.5.bb =>
> python3_3.8.0.bb} (91%)
> >
> > diff --git a/meta/classes/python3-dir.bbclass
> b/meta/classes/python3-dir.bbclass
> > index 7dd130bad99..036d7140d99 100644
> > --- a/meta/classes/python3-dir.bbclass
> > +++ b/meta/classes/python3-dir.bbclass
> > @@ -1,5 +1,5 @@
> > -PYTHON_BASEVERSION = "3.7"
> > -PYTHON_ABI = "m"
> > +PYTHON_BASEVERSION = "3.8"
> > +PYTHON_ABI = ""
> >  PYTHON_DIR = "python${PYTHON_BASEVERSION}"
> >  PYTHON_PN = "python3"
> >  PYTHON_SITEPACKAGES_DIR = "${libdir}/${PYTHON_DIR}/site-packages"
> > diff --git
> a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> > index 09f279ba1d7..59592821d7f 100644
> > ---
> a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> > +++
> b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
> > @@ -1,4 +1,4 @@
> > -From 23294c6ba6896115828293fdb7e67b47b38ba675 Mon Sep 17 00:00:00 2001
> > +From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
> >  From: Alexander Kanavin <alex.kanavin@gmail.com>
> >  Date: Fri, 25 Jan 2019 19:04:13 +0100
> >  Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid
> host
> > @@ -12,14 +12,14 @@ Signed-off-by: Alexander Kanavin <
> alex.kanavin@gmail.com>
> >   1 file changed, 1 deletion(-)
> >
> >  diff --git a/setup.py b/setup.py
> > -index b4357e3..fbec00d 100644
> > +index 20d7f35..ab18ff0 100644
> >  --- a/setup.py
> >  +++ b/setup.py
> > -@@ -856,7 +856,6 @@ class PyBuildExt(build_ext):
> > +@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):
> >                                                        'termcap'):
> >                   readline_libs.append('termcap')
> > -             exts.append( Extension('readline', ['readline.c'],
> > --                                   library_dirs=['/usr/lib/termcap'],
> > -
> extra_link_args=readline_extra_link_args,
> > -                                    libraries=readline_libs) )
> > +             self.add(Extension('readline', ['readline.c'],
> > +-                               library_dirs=['/usr/lib/termcap'],
> > +
> extra_link_args=readline_extra_link_args,
> > +                                libraries=readline_libs))
> >           else:
> > diff --git
> a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> > index ea75262c4f6..112c979441f 100644
> > ---
> a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> > +++
> b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch
> > @@ -1,4 +1,4 @@
> > -From 0fbdad1eaf541a8e92be81f39514cd249b3b0801 Mon Sep 17 00:00:00 2001
> > +From a078b6ff1492e848ad1055764fb9a414abaf3e12 Mon Sep 17 00:00:00 2001
> >  From: Alexander Kanavin <alex.kanavin@gmail.com>
> >  Date: Tue, 5 Feb 2019 15:52:02 +0100
> >  Subject: [PATCH] Do not hardcode "lib" as location for modules,
> site-packages
> > @@ -11,13 +11,13 @@ Signed-off-by: Alexander Kanavin <
> alex.kanavin@gmail.com>
> >   Include/pythonrun.h  |  2 ++
> >   Lib/site.py          |  4 ++--
> >   Makefile.pre.in      |  5 +++--
> > - Modules/getpath.c    | 18 ++++++++++++------
> > + Modules/getpath.c    | 22 ++++++++++++++--------
> >   Python/getplatform.c | 10 ++++++++++
> >   Python/sysmodule.c   |  2 ++
> > - 6 files changed, 31 insertions(+), 10 deletions(-)
> > + 6 files changed, 33 insertions(+), 12 deletions(-)
> >
> >  diff --git a/Include/pythonrun.h b/Include/pythonrun.h
> > -index 6f0c6fc..0a17edd 100644
> > +index 46091e0..61b2e15 100644
> >  --- a/Include/pythonrun.h
> >  +++ b/Include/pythonrun.h
> >  @@ -7,6 +7,8 @@
> > @@ -28,12 +28,12 @@ index 6f0c6fc..0a17edd 100644
> >  +
> >   #ifndef Py_LIMITED_API
> >   PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags
> *);
> > - PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *,
> PyCompilerFlags *);
> > + PyAPI_FUNC(int) PyRun_AnyFileExFlags(
> >  diff --git a/Lib/site.py b/Lib/site.py
> > -index ffd132b..b55f6d8 100644
> > +index a065ab0..1d720ef 100644
> >  --- a/Lib/site.py
> >  +++ b/Lib/site.py
> > -@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):
> > +@@ -335,12 +335,12 @@ def getsitepackages(prefixes=None):
> >           seen.add(prefix)
> >
> >           if os.sep == '/':
> > @@ -49,10 +49,10 @@ index ffd132b..b55f6d8 100644
> >
> >   def addsitepackages(known_paths, prefixes=None):
> >  diff --git a/Makefile.pre.in b/Makefile.pre.in
> > -index 6e81b2f..671a20e 100644
> > +index 65665df..be49140 100644
> >  --- a/Makefile.pre.in
> >  +++ b/Makefile.pre.in
> > -@@ -142,7 +142,7 @@ LIBDIR=            @libdir@
> > +@@ -143,7 +143,7 @@ LIBDIR=            @libdir@
> >   MANDIR=               @mandir@
> >   INCLUDEDIR=   @includedir@
> >   CONFINCLUDEDIR=       $(exec_prefix)/include
> > @@ -61,7 +61,7 @@ index 6e81b2f..671a20e 100644
> >   ABIFLAGS=     @ABIFLAGS@
> >
> >   # Detailed destination directories
> > -@@ -768,6 +768,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c
> Makefile
> > +@@ -753,6 +753,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c
> Makefile
> >                 -DEXEC_PREFIX='"$(exec_prefix)"' \
> >                 -DVERSION='"$(VERSION)"' \
> >                 -DVPATH='"$(VPATH)"' \
> > @@ -69,7 +69,7 @@ index 6e81b2f..671a20e 100644
> >                 -o $@ $(srcdir)/Modules/getpath.c
> >
> >   Programs/python.o: $(srcdir)/Programs/python.c
> > -@@ -856,7 +857,7 @@ regen-opcode:
> > +@@ -868,7 +869,7 @@ regen-symbol: $(srcdir)/Include/graminit.h
> >   Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o
> Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h
> $(srcdir)/Include/Python-ast.h
> >
> >   Python/getplatform.o: $(srcdir)/Python/getplatform.c
> > @@ -79,72 +79,90 @@ index 6e81b2f..671a20e 100644
> >   Python/importdl.o: $(srcdir)/Python/importdl.c
> >                 $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@
> $(srcdir)/Python/importdl.c
> >  diff --git a/Modules/getpath.c b/Modules/getpath.c
> > -index e6a3e8e..0c62af6 100644
> > +index b727f66..c003e46 100644
> >  --- a/Modules/getpath.c
> >  +++ b/Modules/getpath.c
> > -@@ -123,6 +123,7 @@ typedef struct {
> > -     wchar_t *exec_prefix;              /* EXEC_PREFIX define */
> > +@@ -128,6 +128,7 @@ typedef struct {
> > +     wchar_t *exec_prefix;              /* EXEC_PREFIX macro */
> >
> >       wchar_t *lib_python;               /* "lib/pythonX.Y" */
> >  +    wchar_t *multilib_python;               /* "lib[suffix]/pythonX.Y"
> */
> > -     wchar_t argv0_path[MAXPATHLEN+1];
> > -     wchar_t zip_path[MAXPATHLEN+1];    /* ".../lib/pythonXY.zip" */
> >
> > -@@ -314,7 +315,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
> > +     int prefix_found;         /* found platform independent libraries?
> */
> > +     int exec_prefix_found;    /* found the platform dependent
> libraries? */
> > +@@ -386,7 +387,7 @@ search_for_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> >           if (delim) {
> >               *delim = L'\0';
> >           }
> > --        joinpath(prefix, calculate->lib_python);
> > -+        joinpath(prefix, calculate->multilib_python);
> > -         joinpath(prefix, LANDMARK);
> > -         return 1;
> > -     }
> > -@@ -343,7 +344,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
> > -     copy_absolute(prefix, calculate->argv0_path, MAXPATHLEN+1);
> > +-        status = joinpath(prefix, calculate->lib_python, prefix_len);
> > ++        status = joinpath(prefix, calculate->multilib_python,
> prefix_len);
> > +         if (_PyStatus_EXCEPTION(status)) {
> > +             return status;
> > +         }
> > +@@ -444,7 +445,7 @@ search_for_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> >       do {
> > -         n = wcslen(prefix);
> > --        joinpath(prefix, calculate->lib_python);
> > -+        joinpath(prefix, calculate->multilib_python);
> > -         joinpath(prefix, LANDMARK);
> > -         if (ismodule(prefix)) {
> > -             return 1;
> > -@@ -355,7 +356,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
> > -     /* Look at configure's PREFIX */
> > -     wcsncpy(prefix, calculate->prefix, MAXPATHLEN);
> > -     prefix[MAXPATHLEN] = L'\0';
> > --    joinpath(prefix, calculate->lib_python);
> > -+    joinpath(prefix, calculate->multilib_python);
> > -     joinpath(prefix, LANDMARK);
> > -     if (ismodule(prefix)) {
> > -         return 1;
> > -@@ -427,7 +428,7 @@ search_for_exec_prefix(const _PyCoreConfig
> *core_config,
> > -             wcsncpy(exec_prefix, core_config->home, MAXPATHLEN);
> > +         /* Path: <argv0_path or substring> / <lib_python> / LANDMARK */
> > +         size_t n = wcslen(prefix);
> > +-        status = joinpath(prefix, calculate->lib_python, prefix_len);
> > ++        status = joinpath(prefix, calculate->multilib_python,
> prefix_len);
> > +         if (_PyStatus_EXCEPTION(status)) {
> > +             return status;
> >           }
> > -         exec_prefix[MAXPATHLEN] = L'\0';
> > --        joinpath(exec_prefix, calculate->lib_python);
> > -+        joinpath(exec_prefix, calculate->multilib_python);
> > -         joinpath(exec_prefix, L"lib-dynload");
> > -         return 1;
> > +@@ -467,7 +468,7 @@ search_for_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> > +     if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
> > +         return PATHLEN_ERR();
> > +     }
> > +-    status = joinpath(prefix, calculate->lib_python, prefix_len);
> > ++    status = joinpath(prefix, calculate->multilib_python, prefix_len);
> > +     if (_PyStatus_EXCEPTION(status)) {
> > +         return status;
> >       }
> > -@@ -464,7 +465,7 @@ search_for_exec_prefix(const _PyCoreConfig
> *core_config,
> > -     copy_absolute(exec_prefix, calculate->argv0_path, MAXPATHLEN+1);
> > +@@ -510,7 +511,7 @@ calculate_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> > +         if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
> > +             return PATHLEN_ERR();
> > +         }
> > +-        status = joinpath(prefix, calculate->lib_python, prefix_len);
> > ++        status = joinpath(prefix, calculate->multilib_python,
> prefix_len);
> > +         if (_PyStatus_EXCEPTION(status)) {
> > +             return status;
> > +         }
> > +@@ -635,7 +636,7 @@ search_for_exec_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> > +                 return PATHLEN_ERR();
> > +             }
> > +         }
> > +-        status = joinpath(exec_prefix, calculate->lib_python,
> exec_prefix_len);
> > ++        status = joinpath(exec_prefix, calculate->multilib_python,
> exec_prefix_len);
> > +         if (_PyStatus_EXCEPTION(status)) {
> > +             return status;
> > +         }
> > +@@ -667,7 +668,7 @@ search_for_exec_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> >       do {
> > -         n = wcslen(exec_prefix);
> > --        joinpath(exec_prefix, calculate->lib_python);
> > -+        joinpath(exec_prefix, calculate->multilib_python);
> > -         joinpath(exec_prefix, L"lib-dynload");
> > -         if (isdir(exec_prefix)) {
> > -             return 1;
> > -@@ -476,7 +477,7 @@ search_for_exec_prefix(const _PyCoreConfig
> *core_config,
> > -     /* Look at configure's EXEC_PREFIX */
> > -     wcsncpy(exec_prefix, calculate->exec_prefix, MAXPATHLEN);
> > -     exec_prefix[MAXPATHLEN] = L'\0';
> > --    joinpath(exec_prefix, calculate->lib_python);
> > -+    joinpath(exec_prefix, calculate->multilib_python);
> > -     joinpath(exec_prefix, L"lib-dynload");
> > -     if (isdir(exec_prefix)) {
> > -         return 1;
> > -@@ -871,6 +872,10 @@ calculate_init(PyCalculatePath *calculate,
> > +         /* Path: <argv0_path or substring> / <lib_python> /
> "lib-dynload" */
> > +         size_t n = wcslen(exec_prefix);
> > +-        status = joinpath(exec_prefix, calculate->lib_python,
> exec_prefix_len);
> > ++        status = joinpath(exec_prefix, calculate->multilib_python,
> exec_prefix_len);
> > +         if (_PyStatus_EXCEPTION(status)) {
> > +             return status;
> > +         }
> > +@@ -689,7 +690,7 @@ search_for_exec_prefix(PyCalculatePath *calculate,
> _PyPathConfig *pathconfig,
> > +     if (safe_wcscpy(exec_prefix, calculate->exec_prefix,
> exec_prefix_len) < 0) {
> > +         return PATHLEN_ERR();
> > +     }
> > +-    status = joinpath(exec_prefix, calculate->lib_python,
> exec_prefix_len);
> > ++    status = joinpath(exec_prefix, calculate->multilib_python,
> exec_prefix_len);
> > +     if (_PyStatus_EXCEPTION(status)) {
> > +         return status;
> > +     }
> > +@@ -928,7 +929,7 @@ calculate_argv0_path(PyCalculatePath *calculate,
> const wchar_t *program_full_pat
> > +             return PATHLEN_ERR();
> > +         }
> > +         reduce(argv0_path);
> > +-        status = joinpath(argv0_path, calculate->lib_python,
> argv0_path_len);
> > ++        status = joinpath(argv0_path, calculate->multilib_python,
> argv0_path_len);
> > +         if (_PyStatus_EXCEPTION(status)) {
> > +             PyMem_RawFree(wbuf);
> > +             return status;
> > +@@ -1201,6 +1202,10 @@ calculate_init(PyCalculatePath *calculate, const
> PyConfig *config)
> >       if (!calculate->lib_python) {
> >           return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
> >       }
> > @@ -152,10 +170,10 @@ index e6a3e8e..0c62af6 100644
> >  +    if (!calculate->multilib_python) {
> >  +        return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
> >  +    }
> > -     return _Py_INIT_OK();
> > - }
> >
> > -@@ -882,6 +887,7 @@ calculate_free(PyCalculatePath *calculate)
> > +     calculate->warnings = config->pathconfig_warnings;
> > +     calculate->pythonpath_env = config->pythonpath_env;
> > +@@ -1216,6 +1221,7 @@ calculate_free(PyCalculatePath *calculate)
> >       PyMem_RawFree(calculate->prefix);
> >       PyMem_RawFree(calculate->exec_prefix);
> >       PyMem_RawFree(calculate->lib_python);
> > @@ -182,10 +200,10 @@ index 81a0f7a..d55396b 100644
> >  +      return LIB;
> >  +}
> >  diff --git a/Python/sysmodule.c b/Python/sysmodule.c
> > -index efe5b29..de77b17 100644
> > +index 5b0fb81..0dce754 100644
> >  --- a/Python/sysmodule.c
> >  +++ b/Python/sysmodule.c
> > -@@ -2319,6 +2319,8 @@ _PySys_BeginInit(PyObject **sysmod)
> > +@@ -2668,6 +2668,8 @@ _PySys_InitCore(_PyRuntimeState *runtime,
> PyInterpreterState *interp,
> >                           PyUnicode_FromString(Py_GetCopyright()));
> >       SET_SYS_FROM_STRING("platform",
> >                           PyUnicode_FromString(Py_GetPlatform()));
> > diff --git
> a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> > index e7af88654da..fe0aa8aabed 100644
> > ---
> a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> > +++
> b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
> > @@ -1,4 +1,4 @@
> > -From 7535c39951b9d15dd64c4669092a8582ba555466 Mon Sep 17 00:00:00 2001
> > +From 2581ebe3cd9686089aed223651e1b8bf0b862b48 Mon Sep 17 00:00:00 2001
> >  From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
> >  Date: Fri, 31 May 2019 15:34:34 +0200
> >  Subject: [PATCH] bpo-36852: proper detection of mips architecture for
> soft
> > @@ -12,15 +12,16 @@ to do this in a more autoconf/autotools manner.
> >
> >  Upstream-Status: Submitted [
> https://github.com/python/cpython/pull/13196]
> >  Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
> > +
> >  ---
> > - configure.ac | 169 ++++++---------------------------------------------
> > - 1 file changed, 17 insertions(+), 152 deletions(-)
> > + configure.ac | 171 +++++----------------------------------------------
> > + 1 file changed, 17 insertions(+), 154 deletions(-)
> >
> >  diff --git a/configure.ac b/configure.ac
> > -index a7de901e08..a73e2de51b 100644
> > +index 0f85486..0ca7e24 100644
> >  --- a/configure.ac
> >  +++ b/configure.ac
> > -@@ -727,158 +727,23 @@ fi
> > +@@ -704,160 +704,23 @@ fi
> >   MULTIARCH=$($CC --print-multiarch 2>/dev/null)
> >   AC_SUBST(MULTIARCH)
> >
> > @@ -163,6 +164,8 @@ index a7de901e08..a73e2de51b 100644
> >  -        i386-gnu
> >  -#elif defined(__APPLE__)
> >  -        darwin
> > +-#elif defined(__VXWORKS__)
> > +-        vxworks
> >  -#else
> >  -# error unknown platform triplet
> >  -#endif
> > @@ -196,6 +199,3 @@ index a7de901e08..a73e2de51b 100644
> >
> >   if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
> >     if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
> > ---
> > -2.21.0
> > -
> > diff --git
> a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> > index 1709011be8a..ee37f6bd52d 100644
> > ---
> a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> > +++
> b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
> > @@ -1,4 +1,4 @@
> > -From eff903c600f4c40f5753e95ab1557126fc6e0c9c Mon Sep 17 00:00:00 2001
> > +From cf676775109c0a7fb38058bb60b453ff8f1a166b Mon Sep 17 00:00:00 2001
> >  From: Alexander Kanavin <alex.kanavin@gmail.com>
> >  Date: Thu, 31 Jan 2019 16:46:30 +0100
> >  Subject: [PATCH] distutils/sysconfig: append
> > diff --git
> a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> b/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> > deleted file mode 100644
> > index a146c747f83..00000000000
> > ---
> a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch
> > +++ /dev/null
> > @@ -1,47 +0,0 @@
> > -From 5ce3ac59531828ff682646fbba59b2126b28a8aa Mon Sep 17 00:00:00 2001
> > -From: Jaewon Lee <jaewon.lee@xilinx.com>
> > -Date: Thu, 25 Apr 2019 15:34:26 -0700
> > -Subject: [PATCH] main.c: if OEPYTHON3HOME is set use instead of
> PYTHONHOME
> > -
> > -There is one variable PYTHONHOME to determine where libraries are coming
> > -from for both python2 and python3. This becomes an issue if only one has
> > -libraries in the specified PYTHONHOME path, but they are using the same
> > -PYTHONHOME. Creating another variable OEPYTHON3HOME to allow for a way
> > -to set a different path for python3
> > -
> > -Signed-off-by: Jaewon Lee <jaewon.lee@xilinx.com>
> > -
> > -Upstream-Status: Inappropriate [OE specific configuration]
> > -
> > ----
> > - Modules/main.c | 17 +++++++++++++----
> > - 1 file changed, 13 insertions(+), 4 deletions(-)
> > -
> > -diff --git a/Modules/main.c b/Modules/main.c
> > -index acc59c6..407085a 100644
> > ---- a/Modules/main.c
> > -+++ b/Modules/main.c
> > -@@ -1834,10 +1834,19 @@ config_init_home(_PyCoreConfig *config)
> > -         }
> > -         return _Py_INIT_OK();
> > -     }
> > --
> > --    int res = config_get_env_var_dup(&home, L"PYTHONHOME",
> "PYTHONHOME");
> > --    if (res < 0) {
> > --        return DECODE_LOCALE_ERR("PYTHONHOME", res);
> > -+    int res;
> > -+    const char *oepython3home = config_get_env_var("OEPYTHON3HOME");
> > -+    if (oepython3home) {
> > -+        res = config_get_env_var_dup(&home, L"OEPYTHON3HOME",
> "OEPYTHON3HOME");
> > -+        if (res < 0) {
> > -+            return DECODE_LOCALE_ERR("OEPYTHON3HOME", res);
> > -+        }
> > -+    }
> > -+    else {
> > -+        res = config_get_env_var_dup(&home, L"PYTHONHOME",
> "PYTHONHOME");
> > -+        if (res < 0) {
> > -+            return DECODE_LOCALE_ERR("PYTHONHOME", res);
> > -+        }
> > -     }
> > -     config->home = home;
> > -     return _Py_INIT_OK();
> > diff --git
> a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> > index a0ea897f4e8..fb10ca94b31 100644
> > ---
> a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> > +++
> b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
> > @@ -1,4 +1,4 @@
> > -From 2645317fef09afe31b01bb2c1d4fe5b9afdbb11a Mon Sep 17 00:00:00 2001
> > +From 994783da5c21cab81b6589ed2d4275e665a946f9 Mon Sep 17 00:00:00 2001
> >  From: Changqing Li <changqing.li@windriver.com>
> >  Date: Mon, 22 Oct 2018 15:19:51 +0800
> >  Subject: [PATCH] python3: use cc_basename to replace CC for checking
> compiler
> > @@ -21,12 +21,13 @@ Signed-off-by: Li Zhou <li.zhou@windriver.com>
> >  patch originally from Li Zhou, I just rework it to new version
> >
> >  Signed-off-by: Changqing Li <changqing.li@windriver.com>
> > +
> >  ---
> >   configure.ac | 19 ++++++++++---------
> >   1 file changed, 10 insertions(+), 9 deletions(-)
> >
> >  diff --git a/configure.ac b/configure.ac
> > -index a7de901..4a3681f 100644
> > +index a189d42..0f85486 100644
> >  --- a/configure.ac
> >  +++ b/configure.ac
> >  @@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
> > @@ -37,7 +38,7 @@ index a7de901..4a3681f 100644
> >
> >   # pybuilddir.txt will be created by --generate-posix-vars in the
> Makefile
> >   rm -f pybuilddir.txt
> > -@@ -695,7 +696,7 @@ AC_MSG_RESULT($with_cxx_main)
> > +@@ -671,7 +672,7 @@ AC_MSG_RESULT($with_cxx_main)
> >   preset_cxx="$CXX"
> >   if test -z "$CXX"
> >   then
> > @@ -46,7 +47,7 @@ index a7de901..4a3681f 100644
> >           gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
> >           cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
> >           clang|*/clang)     AC_PATH_TOOL(CXX, [clang++], [clang++],
> [notfound]) ;;
> > -@@ -979,7 +980,7 @@ rmdir CaseSensitiveTestDir
> > +@@ -957,7 +958,7 @@ rmdir CaseSensitiveTestDir
> >
> >   case $ac_sys_system in
> >   hp*|HP*)
> > @@ -55,7 +56,7 @@ index a7de901..4a3681f 100644
> >       cc|*/cc) CC="$CC -Ae";;
> >       esac;;
> >   esac
> > -@@ -1336,7 +1337,7 @@ else
> > +@@ -1335,7 +1336,7 @@ else
> >   fi],
> >   [AC_MSG_RESULT(no)])
> >   if test "$Py_LTO" = 'true' ; then
> > @@ -64,7 +65,7 @@ index a7de901..4a3681f 100644
> >       *clang*)
> >         AC_SUBST(LLVM_AR)
> >         AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
> > -@@ -1426,7 +1427,7 @@ then
> > +@@ -1425,7 +1426,7 @@ then
> >     fi
> >   fi
> >   LLVM_PROF_ERR=no
> > @@ -73,16 +74,16 @@ index a7de901..4a3681f 100644
> >     *clang*)
> >       # Any changes made here should be reflected in the GCC+Darwin case
> below
> >       PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
> > -@@ -1500,7 +1501,7 @@ then
> > -            WRAP="-fwrapv"
> > -         fi
> > +@@ -1486,7 +1487,7 @@ esac
> > + # compiler and platform.  BASECFLAGS tweaks need to be made even if the
> > + # user set OPT.
> >
> > --        case $CC in
> > -+        case $cc_basename in
> > -             *clang*)
> > -                 cc_is_clang=1
> > -                 ;;
> > -@@ -1623,7 +1624,7 @@ yes)
> > +-case $CC in
> > ++case $cc_basename in
> > +     *clang*)
> > +         cc_is_clang=1
> > +         ;;
> > +@@ -1622,7 +1623,7 @@ yes)
> >
> >       # ICC doesn't recognize the option, but only emits a warning
> >       ## XXX does it emit an unused result warning and can it be
> disabled?
> > @@ -91,7 +92,7 @@ index a7de901..4a3681f 100644
> >       *icc*)
> >       ac_cv_disable_unused_result_warning=no
> >       ;;
> > -@@ -1965,7 +1966,7 @@ yes)
> > +@@ -1943,7 +1944,7 @@ yes)
> >   esac
> >
> >   # ICC needs -fp-model strict or floats behave badly
> > @@ -100,7 +101,7 @@ index a7de901..4a3681f 100644
> >   *icc*)
> >       CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
> >       ;;
> > -@@ -2727,7 +2728,7 @@ then
> > +@@ -2711,7 +2712,7 @@ then
> >                 then
> >                         LINKFORSHARED="-Wl,--export-dynamic"
> >                 fi;;
> > @@ -109,7 +110,7 @@ index a7de901..4a3681f 100644
> >                   *gcc*)
> >                     if $CC -Xlinker --help 2>&1 | grep export-dynamic
> >/dev/null
> >                     then
> > -@@ -5429,7 +5430,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
> > +@@ -5362,7 +5363,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
> >       # Some versions of gcc miscompile inline asm:
> >       # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
> >       # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
> > diff --git
> a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
> b/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
> > deleted file mode 100644
> > index 58ab709028e..00000000000
> > ---
> a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch
> > +++ /dev/null
> > @@ -1,199 +0,0 @@
> > -From fa96a7fd19e17b9c6b4dd01c3c3774fb382dddc6 Mon Sep 17 00:00:00 2001
> > -From: Ross Burton <ross.burton@intel.com>
> > -Date: Wed, 5 Sep 2018 11:45:52 +0100
> > -Subject: [PATCH] Don't do runtime test to get float byte order
> > -
> > -Python uses AC_RUN_IFELSE to determine the byte order for floats and
> doubles,
> > -and falls back onto "I don't know" if it can't run code.  This results
> in
> > -crippled floating point numbers in Python, and the regression tests
> fail.
> > -
> > -Instead of running code, take a macro from autoconf-archive which
> compiles C
> > -with a special double in which has an ASCII representation, and then
> greps the
> > -binary to identify the format.
> > -
> > -Upstream-Status: Backport [2a9c3805ddedf282881ef7811a561c70b74f80b1]
> > -Signed-off-by: Ross Burton <ross.burton@intel.com>
> > ----
> > - configure.ac                     | 72 +++------------------------
> > - m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++++++++++++
> > - 2 files changed, 90 insertions(+), 65 deletions(-)
> > - create mode 100644 m4/ax_c_float_words_bigendian.m4
> > -
> > -diff --git a/configure.ac b/configure.ac
> > -index 4a3681f..4ab19a6 100644
> > ---- a/configure.ac
> > -+++ b/configure.ac
> > -@@ -4328,77 +4328,19 @@ fi
> > - # * Check for various properties of floating point *
> > - # **************************************************
> > -
> > --AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)
> > --AC_CACHE_VAL(ac_cv_little_endian_double, [
> > --AC_RUN_IFELSE([AC_LANG_SOURCE([[
> > --#include <string.h>
> > --int main() {
> > --    double x = 9006104071832581.0;
> > --    if (memcmp(&x, "\x05\x04\x03\x02\x01\xff\x3f\x43", 8) == 0)
> > --        return 0;
> > --    else
> > --        return 1;
> > --}
> > --]])],
> > --[ac_cv_little_endian_double=yes],
> > --[ac_cv_little_endian_double=no],
> > --[ac_cv_little_endian_double=no])])
> > --AC_MSG_RESULT($ac_cv_little_endian_double)
> > --if test "$ac_cv_little_endian_double" = yes
> > --then
> > --  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
> > --  [Define if C doubles are 64-bit IEEE 754 binary format, stored
> > --   with the least significant byte first])
> > --fi
> > --
> > --AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)
> > --AC_CACHE_VAL(ac_cv_big_endian_double, [
> > --AC_RUN_IFELSE([AC_LANG_SOURCE([[
> > --#include <string.h>
> > --int main() {
> > --    double x = 9006104071832581.0;
> > --    if (memcmp(&x, "\x43\x3f\xff\x01\x02\x03\x04\x05", 8) == 0)
> > --        return 0;
> > --    else
> > --        return 1;
> > --}
> > --]])],
> > --[ac_cv_big_endian_double=yes],
> > --[ac_cv_big_endian_double=no],
> > --[ac_cv_big_endian_double=no])])
> > --AC_MSG_RESULT($ac_cv_big_endian_double)
> > --if test "$ac_cv_big_endian_double" = yes
> > -+AX_C_FLOAT_WORDS_BIGENDIAN
> > -+if test "$ax_cv_c_float_words_bigendian" = "yes"
> > - then
> > -   AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,
> > -   [Define if C doubles are 64-bit IEEE 754 binary format, stored
> > -    with the most significant byte first])
> > --fi
> > --
> > --# Some ARM platforms use a mixed-endian representation for doubles.
> > --# While Python doesn't currently have full support for these platforms
> > --# (see e.g., issue 1762561), we can at least make sure that float <->
> string
> > --# conversions work.
> > --AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754
> binary64)
> > --AC_CACHE_VAL(ac_cv_mixed_endian_double, [
> > --AC_RUN_IFELSE([AC_LANG_SOURCE([[
> > --#include <string.h>
> > --int main() {
> > --    double x = 9006104071832581.0;
> > --    if (memcmp(&x, "\x01\xff\x3f\x43\x05\x04\x03\x02", 8) == 0)
> > --        return 0;
> > --    else
> > --        return 1;
> > --}
> > --]])],
> > --[ac_cv_mixed_endian_double=yes],
> > --[ac_cv_mixed_endian_double=no],
> > --[ac_cv_mixed_endian_double=no])])
> > --AC_MSG_RESULT($ac_cv_mixed_endian_double)
> > --if test "$ac_cv_mixed_endian_double" = yes
> > -+elif test "$ax_cv_c_float_words_bigendian" = "no"
> > - then
> > --  AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,
> > -+  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,
> > -   [Define if C doubles are 64-bit IEEE 754 binary format, stored
> > --   in ARM mixed-endian order (byte order 45670123)])
> > -+   with the least significant byte first])
> > -+else
> > -+  AC_MSG_ERROR([Cannot identify floating point byte order])
> > - fi
> > -
> > - # The short float repr introduced in Python 3.1 requires the
> > -diff --git a/m4/ax_c_float_words_bigendian.m4
> b/m4/ax_c_float_words_bigendian.m4
> > -new file mode 100644
> > -index 0000000..216b90d
> > ---- /dev/null
> > -+++ b/m4/ax_c_float_words_bigendian.m4
> > -@@ -0,0 +1,83 @@
> > -+#
> ===============================================================================
> > -+#
> https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html
> > -+#
> ===============================================================================
> > -+#
> > -+# SYNOPSIS
> > -+#
> > -+#   AX_C_FLOAT_WORDS_BIGENDIAN([ACTION-IF-TRUE], [ACTION-IF-FALSE],
> [ACTION-IF-UNKNOWN])
> > -+#
> > -+# DESCRIPTION
> > -+#
> > -+#   Checks the ordering of words within a multi-word float. This check
> is
> > -+#   necessary because on some systems (e.g. certain ARM systems), the
> float
> > -+#   word ordering can be different from the byte ordering. In a
> multi-word
> > -+#   float context, "big-endian" implies that the word containing the
> sign
> > -+#   bit is found in the memory location with the lowest address. This
> > -+#   implementation was inspired by the AC_C_BIGENDIAN macro in
> autoconf.
> > -+#
> > -+#   The endianness is detected by first compiling C code that contains
> a
> > -+#   special double float value, then grepping the resulting object
> file for
> > -+#   certain strings of ASCII values. The double is specially crafted
> to have
> > -+#   a binary representation that corresponds with a simple string. In
> this
> > -+#   implementation, the string "noonsees" was selected because the
> > -+#   individual word values ("noon" and "sees") are palindromes, thus
> making
> > -+#   this test byte-order agnostic. If grep finds the string "noonsees"
> in
> > -+#   the object file, the target platform stores float words in
> big-endian
> > -+#   order. If grep finds "seesnoon", float words are in little-endian
> order.
> > -+#   If neither value is found, the user is instructed to specify the
> > -+#   ordering.
> > -+#
> > -+# LICENSE
> > -+#
> > -+#   Copyright (c) 2008 Daniel Amelang <dan@amelang.net>
> > -+#
> > -+#   Copying and distribution of this file, with or without
> modification, are
> > -+#   permitted in any medium without royalty provided the copyright
> notice
> > -+#   and this notice are preserved. This file is offered as-is, without
> any
> > -+#   warranty.
> > -+
> > -+#serial 11
> > -+
> > -+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
> > -+  [AC_CACHE_CHECK(whether float word ordering is bigendian,
> > -+                  ax_cv_c_float_words_bigendian, [
> > -+
> > -+ax_cv_c_float_words_bigendian=unknown
> > -+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
> > -+
> > -+double d =
> 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
> > -+
> > -+]])], [
> > -+
> > -+if grep noonsees conftest.$ac_objext >/dev/null ; then
> > -+  ax_cv_c_float_words_bigendian=yes
> > -+fi
> > -+if grep seesnoon conftest.$ac_objext >/dev/null ; then
> > -+  if test "$ax_cv_c_float_words_bigendian" = unknown; then
> > -+    ax_cv_c_float_words_bigendian=no
> > -+  else
> > -+    ax_cv_c_float_words_bigendian=unknown
> > -+  fi
> > -+fi
> > -+
> > -+])])
> > -+
> > -+case $ax_cv_c_float_words_bigendian in
> > -+  yes)
> > -+    m4_default([$1],
> > -+      [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
> > -+                 [Define to 1 if your system stores words within floats
> > -+                  with the most significant word first])]) ;;
> > -+  no)
> > -+    $2 ;;
> > -+  *)
> > -+    m4_default([$3],
> > -+      [AC_MSG_ERROR([
> > -+
> > -+Unknown float word ordering. You need to manually preset
> > -+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
> > -+
> > -+    ])]) ;;
> > -+esac
> > -+
> > -+])# AX_C_FLOAT_WORDS_BIGENDIAN
> > diff --git
> a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> b/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> > deleted file mode 100644
> > index b9d5bc9c516..00000000000
> > ---
> a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
> > +++ /dev/null
> > @@ -1,80 +0,0 @@
> > -From b881a79adcd4ae5ac8fe4f49d0fc77c47f777919 Mon Sep 17 00:00:00 2001
> > -From: Hongxu Jia <hongxu.jia@windriver.com>
> > -Date: Fri, 4 Aug 2017 11:16:14 +0800
> > -Subject: [PATCH] setup.py: pass missing libraries to Extension for
> > - multiprocessing module
> > -
> > -In the following commit:
> > -...
> > -commit e711cafab13efc9c1fe6c5cd75826401445eb585
> > -Author: Benjamin Peterson <benjamin@python.org>
> > -Date:   Wed Jun 11 16:44:04 2008 +0000
> > -
> > -    Merged revisions 64104,64117 via svnmerge from
> > -    svn+ssh://pythondev@svn.python.org/python/trunk
> > -...
> > -(see diff in setup.py)
> > -It assigned libraries for multiprocessing module according
> > -the host_platform, but not pass it to Extension.
> > -
> > -In glibc, the following commit caused two definition of
> > -sem_getvalue are different.
> > -
> https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
> > -(see diff in nptl/sem_getvalue.c for detail)
> > -`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
> > -and `__old_sem_getvalue' is to compat the old version
> > -sem_getvalue@GLIBC_2.0.
> > -
> > -To build python for embedded Linux systems:
> > -
> http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
> > -If not explicitly link to library pthread (-lpthread), it will
> > -load glibc's sem_getvalue randomly at runtime.
> > -
> > -Such as build python on linux x86_64 host and run the python
> > -on linux x86_32 target. If not link library pthread, it caused
> > -multiprocessing bounded semaphore could not work correctly.
> > -...
> > ->>> import multiprocessing
> > ->>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
> > ->>> pool_sema.acquire()
> > -True
> > ->>> pool_sema.release()
> > -Traceback (most recent call last):
> > -  File "<stdin>", line 1, in <module>
> > -ValueError: semaphore or lock released too many times
> > -...
> > -
> > -And the semaphore issue also caused multiprocessing.Queue().put() hung.
> > -
> > -Upstream-Status: Submitted [https://github.com/python/cpython/pull/2999
> ]
> > -
> > -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> > ----
> > - setup.py | 7 +++++--
> > - 1 file changed, 5 insertions(+), 2 deletions(-)
> > -
> > -diff --git a/setup.py b/setup.py
> > -index b7a36a6..658ead3 100644
> > ---- a/setup.py
> > -+++ b/setup.py
> > -@@ -1584,8 +1584,10 @@ class PyBuildExt(build_ext):
> > -         elif host_platform.startswith('netbsd'):
> > -             macros = dict()
> > -             libraries = []
> > --
> > --        else:                                   # Linux and other
> unices
> > -+        elif host_platform.startswith(('linux')):
> > -+            macros = dict()
> > -+            libraries = ['pthread']
> > -+        else:                                   # Other unices
> > -             macros = dict()
> > -             libraries = ['rt']
> > -
> > -@@ -1603,6 +1605,7 @@ class PyBuildExt(build_ext):
> > -
> > -         exts.append ( Extension('_multiprocessing',
> multiprocessing_srcs,
> > -                                 define_macros=list(macros.items()),
> > -+                                libraries=libraries,
> > -
>  include_dirs=["Modules/_multiprocessing"]))
> > -         # End multiprocessing
> > -
> > diff --git
> a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> > index c15295c034c..4bd98f62fd6 100644
> > ---
> a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> > +++
> b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
> > @@ -1,4 +1,4 @@
> > -From e3b59cb9658e1d3efa3535840939a0fa92a70a5a Mon Sep 17 00:00:00 2001
> > +From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
> >  From: Alexander Kanavin <alex.kanavin@gmail.com>
> >  Date: Mon, 7 Oct 2019 13:22:14 +0200
> >  Subject: [PATCH] setup.py: do not report missing dependencies for
> disabled
> > @@ -10,22 +10,23 @@ build completeness checker which relies on the
> report.
> >
> >  Upstream-Status: Inappropriate [oe-core specific]
> >  Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > +
> >  ---
> >   setup.py | 4 ++++
> >   1 file changed, 4 insertions(+)
> >
> >  diff --git a/setup.py b/setup.py
> > -index 4b53668..0097643 100644
> > +index 7691258..ec3f2a4 100644
> >  --- a/setup.py
> >  +++ b/setup.py
> > -@@ -365,6 +365,10 @@ class PyBuildExt(build_ext):
> > +@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
> >                   print("%-*s   %-*s   %-*s" % (longest, e, longest, f,
> >                                                 longest, g))
> >
> >  +        # There is no need to report missing module dependencies,
> >  +        # if the modules have been disabled in the first place.
> > -+        missing = list(set(missing) - set(sysconf_dis))
> > ++        self.missing = list(set(self.missing) - set(sysconf_dis))
> >  +
> > -         if missing:
> > +         if self.missing:
> >               print()
> >               print("Python build finished successfully!")
> > diff --git
> a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> > index d49604ba4d9..219b3551b8b 100644
> > ---
> a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> > +++
> b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
> > @@ -1,4 +1,4 @@
> > -From a274ba778838824efcacaba57c415b7262f779ec Mon Sep 17 00:00:00 2001
> > +From 93b2c26467b0ea9a18c178e4e1371d52e917a68b Mon Sep 17 00:00:00 2001
> >  From: Khem Raj <raj.khem@gmail.com>
> >  Date: Tue, 14 May 2013 15:00:26 -0700
> >  Subject: [PATCH] python3: Add target and native recipes
> > diff --git
> a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> > index 24e67b4ca14..184540e794c 100644
> > ---
> a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> > +++
> b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
> > @@ -1,4 +1,4 @@
> > -From fead48c8b501a8d7c3db21df2e599f90f38f11d3 Mon Sep 17 00:00:00 2001
> > +From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
> >  From: Andrei Gherzan <andrei@gherzan.ro>
> >  Date: Mon, 28 Jan 2019 15:57:54 +0000
> >  Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is
> not yet
> > @@ -11,26 +11,21 @@ Also simply disable the tk module since its not in
> DEPENDS.
> >  Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
> >
> >  ---
> > - setup.py | 8 +++++---
> > - 1 file changed, 5 insertions(+), 3 deletions(-)
> > + setup.py | 4 ++--
> > + 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> >  diff --git a/setup.py b/setup.py
> > -index fbec00d..b7a36a6 100644
> > +index ab18ff0..7691258 100644
> >  --- a/setup.py
> >  +++ b/setup.py
> > -@@ -1623,10 +1623,12 @@ class PyBuildExt(build_ext):
> > -         self.extensions.extend(exts)
> > +@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):
> > +         self.detect_decimal()
> > +         self.detect_ctypes()
> > +         self.detect_multiprocessing()
> > +-        if not self.detect_tkinter():
> > +-            self.missing.append('_tkinter')
> > ++#        if not self.detect_tkinter():
> > ++#            self.missing.append('_tkinter')
> > +         self.detect_uuid()
> >
> > -         # Call the method for detecting whether _tkinter can be
> compiled
> > --        self.detect_tkinter(inc_dirs, lib_dirs)
> > -+        # self.detect_tkinter(inc_dirs, lib_dirs)
> > -
> > --        if '_tkinter' not in [e.name for e in self.extensions]:
> > --            missing.append('_tkinter')
> > -+        # tkinter module will not be avalaible as yocto
> > -+        # doesn't have tk integrated (yet)
> > -+        #if '_tkinter' not in [e.name for e in self.extensions]:
> > -+        #    missing.append('_tkinter')
> > -
> > -         # Build the _uuid module if possible
> > -         uuid_incs = find_file("uuid.h", inc_dirs,
> ["/usr/include/uuid"])
> > + ##         # Uncomment these lines if you want to play with xxmodule.c
> > diff --git a/meta/recipes-devtools/python/python3/python-config.patch
> b/meta/recipes-devtools/python/python3/python-config.patch
> > index f23b8b7df06..c8a8f3d4aa3 100644
> > --- a/meta/recipes-devtools/python/python3/python-config.patch
> > +++ b/meta/recipes-devtools/python/python3/python-config.patch
> > @@ -1,4 +1,7 @@
> > -python-config: Revert to using distutils.sysconfig
> > +From 07df0ae0d70cba6d1847fe1c24a71063930bec60 Mon Sep 17 00:00:00 2001
> > +From: Tyler Hall <tylerwhall@gmail.com>
> > +Date: Sun, 4 May 2014 20:06:43 -0400
> > +Subject: [PATCH] python-config: Revert to using distutils.sysconfig
> >
> >  The newer sysconfig module shares some code with distutils.sysconfig,
> but the same modifications as in
> >
> > @@ -12,11 +15,16 @@ Upstream-Status: Inappropriate [Embedded Specific]
> >
> >  Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
> >  :
> > -Index: Python-3.3.3/Misc/python-config.in
> > -===================================================================
> > ---- Python-3.3.3.orig/Misc/python-config.in
> > -+++ Python-3.3.3/Misc/python-config.in
> > -@@ -4,7 +4,7 @@
> > +
> > +---
> > + Misc/python-config.in | 10 +++++-----
> > + 1 file changed, 5 insertions(+), 5 deletions(-)
> > +
> > +diff --git a/Misc/python-config.in b/Misc/python-config.in
> > +index 727c4a8..c702829 100644
> > +--- a/Misc/python-config.in
> > ++++ b/Misc/python-config.in
> > +@@ -6,7 +6,7 @@
> >   import getopt
> >   import os
> >   import sys
> > @@ -24,8 +32,8 @@ Index: Python-3.3.3/Misc/python-config.in
> >  +from distutils import sysconfig
> >
> >   valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
> > -               'ldflags', 'extension-suffix', 'help', 'abiflags',
> 'configdir']
> > -@@ -32,14 +32,14 @@ if '--help' in opt_flags:
> > +               'ldflags', 'extension-suffix', 'help', 'abiflags',
> 'configdir',
> > +@@ -35,14 +35,14 @@ if '--help' in opt_flags:
> >
> >   for opt in opt_flags:
> >       if opt == '--prefix':
> > diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json
> b/meta/recipes-devtools/python/python3/python3-manifest.json
> > index dba92b0e396..ebfc10b4045 100644
> > --- a/meta/recipes-devtools/python/python3/python3-manifest.json
> > +++ b/meta/recipes-devtools/python/python3/python3-manifest.json
> > @@ -213,8 +213,8 @@
> >              "${bindir}/python3",
> >              "${bindir}/python${PYTHON_MAJMIN}",
> >              "${bindir}/python${PYTHON_MAJMIN}.real",
> > -            "${bindir}/python${PYTHON_BINABI}",
> > -            "${includedir}/python${PYTHON_BINABI}/pyconfig*.h",
> > +            "${bindir}/python${PYTHON_MAJMIN}",
> > +            "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h",
> >              "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]",
> >              "${libdir}/python${PYTHON_MAJMIN}/UserDict.py",
> >              "${libdir}/python${PYTHON_MAJMIN}/UserList.py",
> > diff --git a/meta/recipes-devtools/python/python3_3.7.5.bb
> b/meta/recipes-devtools/python/python3_3.8.0.bb
> > similarity index 91%
> > rename from meta/recipes-devtools/python/python3_3.7.5.bb
> > rename to meta/recipes-devtools/python/python3_3.8.0.bb
> > index 57eaaea5e7c..1feaebea8ee 100644
> > --- a/meta/recipes-devtools/python/python3_3.7.5.bb
> > +++ b/meta/recipes-devtools/python/python3_3.8.0.bb
> > @@ -19,8 +19,6 @@ SRC_URI = "
> http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
> >
>  file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
> >
>  file://0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch \
> >
>  file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
> > -
>  file://0002-Don-t-do-runtime-test-to-get-float-byte-order.patch \
> > -
>  file://0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
> >
>  file://0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch \
> >
>  file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \
> >
>  file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
> > @@ -35,20 +33,16 @@ SRC_URI_append_class-native = " \
> >
>  file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
> >             file://12-distutils-prefix-is-inside-staging-area.patch \
> >             "
> > -SRC_URI_append_class-nativesdk = " \
> > -
>  file://0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch \
> > -           "
> >
> > -SRC_URI[md5sum] = "08ed8030b1183107c48f2092e79a87e2"
> > -SRC_URI[sha256sum] =
> "e85a76ea9f3d6c485ec1780fca4e500725a4a7bbc63c78ebc44170de9b619d94"
> > +SRC_URI[md5sum] = "dbac8df9d8b9edc678d0f4cacdb7dbb0"
> > +SRC_URI[sha256sum] =
> "b356244e13fb5491da890b35b13b2118c3122977c2cd825e3eb6e7d462030d84"
> >
> >  # exclude pre-releases for both python 2.x and 3.x
> >  UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
> >
> >  CVE_PRODUCT = "python"
> >
> > -PYTHON_MAJMIN = "3.7"
> > -PYTHON_BINABI = "${PYTHON_MAJMIN}m"
> > +PYTHON_MAJMIN = "3.8"
> >
> >  S = "${WORKDIR}/Python-${PV}"
> >
> > @@ -59,8 +53,8 @@ inherit autotools pkgconfig qemu ptest multilib_header
> update-alternatives
> >  MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
> >
> >  ALTERNATIVE_${PN}-dev = "python3-config"
> > -ALTERNATIVE_LINK_NAME[python3-config] =
> "${bindir}/python${PYTHON_BINABI}-config"
> > -ALTERNATIVE_TARGET[python3-config] =
> "${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}"
> > +ALTERNATIVE_LINK_NAME[python3-config] =
> "${bindir}/python${PYTHON_MAJMIN}-config"
> > +ALTERNATIVE_TARGET[python3-config] =
> "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
> >
> >
> >  DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib
> virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2"
> > @@ -131,7 +125,7 @@ do_install_prepend() {
> >  }
> >
> >  do_install_append_class-target() {
> > -        oe_multilib_header python${PYTHON_BINABI}/pyconfig.h
> > +        oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
> >  }
> >
> >  do_install_append_class-native() {
> > @@ -161,7 +155,7 @@ do_install_append() {
> >  }
> >
> >  do_install_append_class-nativesdk () {
> > -    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN}
> OEPYTHON3HOME='${prefix}'
> TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
> PYTHONNOUSERSITE='1'
> > +    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN}
> TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo'
> PYTHONNOUSERSITE='1'
> >  }
> >
> >  SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
> > @@ -177,7 +171,7 @@ py_package_preprocess () {
> >                  -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
> >
> ${PKGD}/${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile
> \
> >
> ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
> > -                ${PKGD}/${bindir}/python${PYTHON_BINABI}-config
> > +                ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
> >
> >          # Reformat _sysconfigdata after modifying it so that it remains
> >          # reproducible
> > @@ -196,7 +190,7 @@ py_package_preprocess () {
> >               -c "from py_compile import compile;
> compile('$sysconfigfile', optimize=2)"
> >          cd -
> >
> > -        mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config
> ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}
> > +        mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
> ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
> >
> >          #Remove the unneeded copy of target sysconfig data
> >          rm -rf ${PKGD}/${libdir}/python-sysconfigdata
> > @@ -322,7 +316,7 @@ RPROVIDES_${PN}-venv += "python3-pyvenv"
> >  # package libpython3
> >  PACKAGES =+ "libpython3 libpython3-staticdev"
> >  FILES_libpython3 = "${libdir}/libpython*.so.*"
> > -FILES_libpython3-staticdev +=
> "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-*/libpython${PYTHON_BINABI}.a"
> > +FILES_libpython3-staticdev +=
> "${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
> >  INSANE_SKIP_${PN}-dev += "dev-elf"
> >
> >  # catch all the rest (unsorted)
> > @@ -341,3 +335,5 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = "
> locale-base-tr-tr.iso-8859-9"
> >  RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk',
> 'tk tk-lib', '', d)}"
> >  RDEPENDS_${PN}-dev = ""
> >
> > +RDEPENDS_${PN}-tests_append_class-target = " bash"
> > +RDEPENDS_${PN}-tests_append_class-nativesdk = " bash"
> > --
> > 2.17.1
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>

[-- Attachment #2: Type: text/html, Size: 71440 bytes --]

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 11/24] perl: update to 5.30.1
  2019-12-05 15:43 ` [PATCH 11/24] perl: update to 5.30.1 Alexander Kanavin
@ 2019-12-09 23:41   ` Richard Purdie
  2019-12-10 11:48     ` Alexander Kanavin
  0 siblings, 1 reply; 37+ messages in thread
From: Richard Purdie @ 2019-12-09 23:41 UTC (permalink / raw)
  To: Alexander Kanavin, openembedded-core

On Thu, 2019-12-05 at 16:43 +0100, Alexander Kanavin wrote:
> Drop fix-setgroup.patch as the upstream has fixed the issue.
> 
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  .../perl/files/fix-setgroup.patch             | 49 ---------------
> ----
>  .../perl/{perl_5.30.0.bb => perl_5.30.1.bb}   | 11 ++---
>  2 files changed, 5 insertions(+), 55 deletions(-)
>  delete mode 100644 meta/recipes-devtools/perl/files/fix-
> setgroup.patch
>  rename meta/recipes-devtools/perl/{perl_5.30.0.bb => perl_5.30.1.bb}
> (97%)

I think a build race sneaked in with this upgrade:

https://autobuilder.yoctoproject.org/typhoon/#/builders/103/builds/240

  /usr/share/man/man3/TAP::Parser::SourceHandler::Executable.3
  /usr/sinstallman: Can't open cpan/podlators/blib/script/pod2text: No such file or directory
ABORTED
hare/man/man3/TAP::Parser::SourceHandler::File.3
  /usr/share/man/man3/TAP::Parser::SourceHandler::Handle.3

Cheers,

Richard



^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 14/24] shadow: update 4.6 -> 4.8
  2019-12-05 15:43 ` [PATCH 14/24] shadow: update 4.6 -> 4.8 Alexander Kanavin
@ 2019-12-10  4:56   ` Alex Kiernan
  2019-12-10 11:38     ` Alexander Kanavin
  0 siblings, 1 reply; 37+ messages in thread
From: Alex Kiernan @ 2019-12-10  4:56 UTC (permalink / raw)
  To: Alexander Kanavin; +Cc: Patches and discussions about the oe-core layer

On Thu, Dec 5, 2019 at 3:46 PM Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>
> Drop two backports.
>
> Refactor 0001-useradd.c-create-parent-directories-when-necessary.patch
> to make the changes less invasive (and easier to rebase).
>

Is that change even needed any more?

https://github.com/shadow-maint/shadow/commit/b3b6d9d77c1d18b98670b97157777bb74092cd69

Looks like it ought to be doing the same thing.

> Rebase the rest of the paches.
>
> Add a patch to remove the check for validity of login shells
> which does not work in our environment.
>
> Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> ---
>  ...01-Disable-use-of-syslog-for-sysroot.patch |  18 ++-
>  ...eck-for-validity-of-shell-executable.patch |  29 +++++
>  ...chg-shadow-field-reproducible-re.-71.patch |  89 --------------
>  ...ure.ac-fix-configure-error-with-dash.patch |  36 ------
>  ...te-parent-directories-when-necessary.patch | 116 ------------------
>  ...-for-setting-password-in-clear-text.patch} | 101 +++++++--------
>  ...te-parent-directories-when-necessary.patch |  63 ++++++++++
>  ...nexpected-open-failure-in-chroot-env.patch |  15 ++-
>  .../files/shadow-relaxed-usernames.patch      |  51 +++++---
>  meta/recipes-extended/shadow/shadow.inc       |  11 +-
>  .../shadow/{shadow_4.6.bb => shadow_4.8.bb}   |   0
>  11 files changed, 196 insertions(+), 333 deletions(-)
>  create mode 100644 meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
>  delete mode 100644 meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
>  delete mode 100644 meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
>  delete mode 100644 meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
>  rename meta/recipes-extended/shadow/files/{allow-for-setting-password-in-clear-text.patch => 0002-Allow-for-setting-password-in-clear-text.patch} (81%)
>  create mode 100644 meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
>  rename meta/recipes-extended/shadow/{shadow_4.6.bb => shadow_4.8.bb} (100%)
>
> diff --git a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> index aac2d42b12a..ab317b9aa03 100644
> --- a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> +++ b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> @@ -1,4 +1,4 @@
> -From 8cf3454d567f77233023be49a39a33e9f0836f89 Mon Sep 17 00:00:00 2001
> +From fa2d9453656641002802d8165e80adb9e6a729d2 Mon Sep 17 00:00:00 2001
>  From: Scott Garman <scott.a.garman@intel.com>
>  Date: Thu, 14 Apr 2016 12:28:57 +0200
>  Subject: [PATCH] Disable use of syslog for sysroot
> @@ -12,6 +12,7 @@ Upstream-Status: Inappropriate [disable feature]
>  Signed-off-by: Scott Garman <scott.a.garman@intel.com>
>  Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
>  Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> +
>  ---
>   src/groupadd.c  | 3 +++
>   src/groupdel.c  | 3 +++
> @@ -23,7 +24,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>   7 files changed, 21 insertions(+)
>
>  diff --git a/src/groupadd.c b/src/groupadd.c
> -index 63e1c48..a596c49 100644
> +index 2dd8eec..e9c4bb7 100644
>  --- a/src/groupadd.c
>  +++ b/src/groupadd.c
>  @@ -34,6 +34,9 @@
> @@ -37,7 +38,7 @@ index 63e1c48..a596c49 100644
>   #include <fcntl.h>
>   #include <getopt.h>
>  diff --git a/src/groupdel.c b/src/groupdel.c
> -index 70bed01..ababd81 100644
> +index f941a84..5a70056 100644
>  --- a/src/groupdel.c
>  +++ b/src/groupdel.c
>  @@ -34,6 +34,9 @@
> @@ -65,7 +66,7 @@ index fc91c8b..2842514 100644
>   #include <getopt.h>
>   #include <grp.h>
>  diff --git a/src/groupmod.c b/src/groupmod.c
> -index 72daf2c..8965f9d 100644
> +index 1dca5fc..bc14438 100644
>  --- a/src/groupmod.c
>  +++ b/src/groupmod.c
>  @@ -34,6 +34,9 @@
> @@ -79,7 +80,7 @@ index 72daf2c..8965f9d 100644
>   #include <fcntl.h>
>   #include <getopt.h>
>  diff --git a/src/useradd.c b/src/useradd.c
> -index 3aaf45c..1ab9174 100644
> +index 4af0f7c..1b7bf06 100644
>  --- a/src/useradd.c
>  +++ b/src/useradd.c
>  @@ -34,6 +34,9 @@
> @@ -93,7 +94,7 @@ index 3aaf45c..1ab9174 100644
>   #include <ctype.h>
>   #include <errno.h>
>  diff --git a/src/userdel.c b/src/userdel.c
> -index c8de1d3..24d3ea9 100644
> +index cc951e5..153e0be 100644
>  --- a/src/userdel.c
>  +++ b/src/userdel.c
>  @@ -34,6 +34,9 @@
> @@ -107,7 +108,7 @@ index c8de1d3..24d3ea9 100644
>   #include <errno.h>
>   #include <fcntl.h>
>  diff --git a/src/usermod.c b/src/usermod.c
> -index ccfbb99..24fb60d 100644
> +index 05b9871..21c6da9 100644
>  --- a/src/usermod.c
>  +++ b/src/usermod.c
>  @@ -34,6 +34,9 @@
> @@ -120,6 +121,3 @@ index ccfbb99..24fb60d 100644
>   #include <assert.h>
>   #include <ctype.h>
>   #include <errno.h>
> ---
> -2.11.0
> -
> diff --git a/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch b/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
> new file mode 100644
> index 00000000000..2d15ff0673a
> --- /dev/null
> +++ b/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
> @@ -0,0 +1,29 @@
> +From 0d0aded7307a9f4ee0d299951512acd18b3e029e Mon Sep 17 00:00:00 2001
> +From: Alexander Kanavin <alex.kanavin@gmail.com>
> +Date: Wed, 4 Dec 2019 19:28:48 +0100
> +Subject: [PATCH] Do not check for validity of shell executable.
> +
> +This kind of check fails when building a rootfs.
> +
> +Upstream-Status: Inappropriate [oe-core specific]
> +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> +---
> + src/useradd.c | 5 +----
> + 1 file changed, 1 insertion(+), 4 deletions(-)
> +
> +diff --git a/src/useradd.c b/src/useradd.c
> +index 4af0f7c..898fe02 100644
> +--- a/src/useradd.c
> ++++ b/src/useradd.c
> +@@ -1328,10 +1328,7 @@ static void process_flags (int argc, char **argv)
> +                               if (   ( !VALID (optarg) )
> +                                   || (   ('\0' != optarg[0])
> +                                       && ('/'  != optarg[0])
> +-                                      && ('*'  != optarg[0]) )
> +-                                  || (stat(optarg, &st) != 0)
> +-                                  || (S_ISDIR(st.st_mode))
> +-                                  || (access(optarg, X_OK) != 0)) {
> ++                                      && ('*'  != optarg[0]) )) {
> +                                       fprintf (stderr,
> +                                                _("%s: invalid shell '%s'\n"),
> +                                                Prog, optarg);
> diff --git a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch b/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
> deleted file mode 100644
> index de0ba3ebb42..00000000000
> --- a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
> +++ /dev/null
> @@ -1,89 +0,0 @@
> -From fe34a2a0e44bc80ff213bfd185046a5f10c94997 Mon Sep 17 00:00:00 2001
> -From: Chris Lamb <chris@chris-lamb.co.uk>
> -Date: Wed, 2 Jan 2019 18:06:16 +0000
> -Subject: [PATCH 1/2] Make the sp_lstchg shadow field reproducible (re. #71)
> -
> -From <https://github.com/shadow-maint/shadow/pull/71>:
> -
> -```
> -The third field in the /etc/shadow file (sp_lstchg) contains the date of
> -the last password change expressed as the number of days since Jan 1, 1970.
> -As this is a relative time, creating a user today will result in:
> -
> -username:17238:0:99999:7:::
> -whilst creating the same user tomorrow will result in:
> -
> -username:17239:0:99999:7:::
> -This has an impact for the Reproducible Builds[0] project where we aim to
> -be independent of as many elements the build environment as possible,
> -including the current date.
> -
> -This patch changes the behaviour to use the SOURCE_DATE_EPOCH[1]
> -environment variable (instead of Jan 1, 1970) if valid.
> -```
> -
> -This updated PR adds some missing calls to gettime (). This was originally
> -filed by Johannes Schauer in Debian as #917773 [2].
> -
> -[0] https://reproducible-builds.org/
> -[1] https://reproducible-builds.org/specs/source-date-epoch/
> -[2] https://bugs.debian.org/917773
> -
> -Upstream-Status: Backport
> -Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> ----
> - libmisc/pwd2spwd.c | 3 +--
> - src/pwck.c         | 2 +-
> - src/pwconv.c       | 2 +-
> - 3 files changed, 3 insertions(+), 4 deletions(-)
> -
> -diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c
> -index c1b9b29ac873..6799dd50d490 100644
> ---- a/libmisc/pwd2spwd.c
> -+++ b/libmisc/pwd2spwd.c
> -@@ -40,7 +40,6 @@
> - #include "prototypes.h"
> - #include "defines.h"
> - #include <pwd.h>
> --extern time_t time (time_t *);
> -
> - /*
> -  * pwd_to_spwd - create entries for new spwd structure
> -@@ -66,7 +65,7 @@ struct spwd *pwd_to_spwd (const struct passwd *pw)
> -                */
> -               sp.sp_min = 0;
> -               sp.sp_max = (10000L * DAY) / SCALE;
> --              sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
> -+              sp.sp_lstchg = (long) gettime () / SCALE;
> -               if (0 == sp.sp_lstchg) {
> -                       /* Better disable aging than requiring a password
> -                        * change */
> -diff --git a/src/pwck.c b/src/pwck.c
> -index 0ffb711efb13..f70071b12500 100644
> ---- a/src/pwck.c
> -+++ b/src/pwck.c
> -@@ -609,7 +609,7 @@ static void check_pw_file (int *errors, bool *changed)
> -                                       sp.sp_inact  = -1;
> -                                       sp.sp_expire = -1;
> -                                       sp.sp_flag   = SHADOW_SP_FLAG_UNSET;
> --                                      sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
> -+                                      sp.sp_lstchg = (long) gettime () / SCALE;
> -                                       if (0 == sp.sp_lstchg) {
> -                                               /* Better disable aging than
> -                                                * requiring a password change
> -diff --git a/src/pwconv.c b/src/pwconv.c
> -index 9c69fa131d8e..f932f266c59c 100644
> ---- a/src/pwconv.c
> -+++ b/src/pwconv.c
> -@@ -267,7 +267,7 @@ int main (int argc, char **argv)
> -                       spent.sp_flag   = SHADOW_SP_FLAG_UNSET;
> -               }
> -               spent.sp_pwdp = pw->pw_passwd;
> --              spent.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
> -+              spent.sp_lstchg = (long) gettime () / SCALE;
> -               if (0 == spent.sp_lstchg) {
> -                       /* Better disable aging than requiring a password
> -                        * change */
> ---
> -2.17.1
> -
> diff --git a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch b/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
> deleted file mode 100644
> index a74cbb0c0e7..00000000000
> --- a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -From 3c52a84ff8775590e7e9da9c0d4408c23494305e Mon Sep 17 00:00:00 2001
> -From: Yi Zhao <yi.zhao@windriver.com>
> -Date: Mon, 17 Jun 2019 15:36:34 +0800
> -Subject: [PATCH] configure.ac: fix configure error with dash
> -
> -A configure error occurs when /bin/sh -> dash:
> -  checking for is_selinux_enabled in -lselinux... yes
> -  checking for semanage_connect in -lsemanage... yes
> -  configure: 16322: test: yesyes: unexpected operator
> -
> -Use "=" instead of "==" since dash doesn't support this operator.
> -
> -Upstream-Status: Backport
> -[https://github.com/shadow-maint/shadow/commit/3c52a84ff8775590e7e9da9c0d4408c23494305e]
> -
> -Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> ----
> - configure.ac | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/configure.ac b/configure.ac
> -index 6762556..1907afb 100644
> ---- a/configure.ac
> -+++ b/configure.ac
> -@@ -500,7 +500,7 @@ if test "$with_selinux" != "no"; then
> -                       AC_MSG_ERROR([libsemanage not found])
> -               fi
> -
> --              if test "$selinux_lib$semanage_lib" == "yesyes" ; then
> -+              if test "$selinux_lib$semanage_lib" = "yesyes" ; then
> -                       AC_DEFINE(WITH_SELINUX, 1,
> -                                 [Build shadow with SELinux support])
> -                       LIBSELINUX="-lselinux"
> ---
> -2.7.4
> -
> diff --git a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch b/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
> deleted file mode 100644
> index faa6f68ebe2..00000000000
> --- a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
> +++ /dev/null
> @@ -1,116 +0,0 @@
> -Subject: [PATCH] useradd.c: create parent directories when necessary
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ----
> - src/useradd.c | 80 +++++++++++++++++++++++++++++++++++++++--------------------
> - 1 file changed, 53 insertions(+), 27 deletions(-)
> -
> -diff --git a/src/useradd.c b/src/useradd.c
> -index 00a3c30..9ecbb58 100644
> ---- a/src/useradd.c
> -+++ b/src/useradd.c
> -@@ -2021,6 +2021,35 @@ static void usr_update (void)
> - }
> -
> - /*
> -+ * mkdir_p - create directories, including parent directories when needed
> -+ *
> -+ * similar to `mkdir -p'
> -+ */
> -+void mkdir_p(const char *path) {
> -+      int len = strlen(path);
> -+      char newdir[len + 1];
> -+      mode_t mode = 0755;
> -+      int i = 0;
> -+
> -+      if (path[i] == '\0') {
> -+              return;
> -+      }
> -+
> -+      /* skip the leading '/' */
> -+      i++;
> -+
> -+      while(path[i] != '\0') {
> -+              if (path[i] == '/') {
> -+                      strncpy(newdir, path, i);
> -+                      newdir[i] = '\0';
> -+                      mkdir(newdir, mode);
> -+              }
> -+              i++;
> -+      }
> -+      mkdir(path, mode);
> -+}
> -+
> -+/*
> -  * create_home - create the user's home directory
> -  *
> -  *    create_home() creates the user's home directory if it does not
> -@@ -2038,39 +2067,36 @@ static void create_home (void)
> -                       fail_exit (E_HOMEDIR);
> -               }
> - #endif
> --              /* XXX - create missing parent directories.  --marekm */
> --              if (mkdir (prefix_user_home, 0) != 0) {
> --                      fprintf (stderr,
> --                               _("%s: cannot create directory %s\n"),
> --                               Prog, prefix_user_home);
> -+              mkdir_p(user_home);
> -+      }
> -+      if (access (prefix_user_home, F_OK) != 0) {
> - #ifdef WITH_AUDIT
> --                      audit_logger (AUDIT_ADD_USER, Prog,
> --                                    "adding home directory",
> --                                    user_name, (unsigned int) user_id,
> --                                    SHADOW_AUDIT_FAILURE);
> -+              audit_logger (AUDIT_ADD_USER, Prog,
> -+                            "adding home directory",
> -+                            user_name, (unsigned int) user_id,
> -+                            SHADOW_AUDIT_FAILURE);
> - #endif
> --                      fail_exit (E_HOMEDIR);
> --              }
> --              (void) chown (prefix_user_home, user_id, user_gid);
> --              chmod (prefix_user_home,
> --                     0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
> --              home_added = true;
> -+              fail_exit (E_HOMEDIR);
> -+      }
> -+      (void) chown (prefix_user_home, user_id, user_gid);
> -+      chmod (prefix_user_home,
> -+             0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
> -+      home_added = true;
> - #ifdef WITH_AUDIT
> --              audit_logger (AUDIT_ADD_USER, Prog,
> --                            "adding home directory",
> --                            user_name, (unsigned int) user_id,
> --                            SHADOW_AUDIT_SUCCESS);
> -+      audit_logger (AUDIT_ADD_USER, Prog,
> -+                    "adding home directory",
> -+                    user_name, (unsigned int) user_id,
> -+                    SHADOW_AUDIT_SUCCESS);
> - #endif
> - #ifdef WITH_SELINUX
> --              /* Reset SELinux to create files with default contexts */
> --              if (reset_selinux_file_context () != 0) {
> --                      fprintf (stderr,
> --                               _("%s: cannot reset SELinux file creation context\n"),
> --                               Prog);
> --                      fail_exit (E_HOMEDIR);
> --              }
> --#endif
> -+      /* Reset SELinux to create files with default contexts */
> -+      if (reset_selinux_file_context () != 0) {
> -+              fprintf (stderr,
> -+                       _("%s: cannot reset SELinux file creation context\n"),
> -+                       Prog);
> -+              fail_exit (E_HOMEDIR);
> -       }
> -+#endif
> - }
> -
> - /*
> ---
> -2.11.0
> -
> diff --git a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
> similarity index 81%
> rename from meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
> rename to meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
> index fa7eb07aa51..c6332e4f766 100644
> --- a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
> +++ b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
> @@ -1,8 +1,12 @@
> +From a7d995228491ad5255ad86c1f04ba071f6880897 Mon Sep 17 00:00:00 2001
> +From: Chen Qi <Qi.Chen@windriver.com>
> +Date: Sat, 16 Nov 2013 15:27:47 +0800
>  Subject: [PATCH] Allow for setting password in clear text
>
>  Upstream-Status: Inappropriate [OE specific]
>
>  Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> +
>  ---
>   src/Makefile.am |  8 ++++----
>   src/groupadd.c  | 20 +++++++++++++++-----
> @@ -12,39 +16,39 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>   5 files changed, 64 insertions(+), 25 deletions(-)
>
>  diff --git a/src/Makefile.am b/src/Makefile.am
> -index 3c98a8d..b8093d5 100644
> +index f31fd7a..4a317a3 100644
>  --- a/src/Makefile.am
>  +++ b/src/Makefile.am
> -@@ -93,10 +93,10 @@ chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBSELINUX) $(LIBCRYPT)
> - chsh_LDADD     = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
> - chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT)
> - gpasswd_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
> --groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> -+groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
> - groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> - groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX)
> --groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> -+groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
> - grpck_LDADD    = $(LDADD) $(LIBSELINUX)
> - grpconv_LDADD  = $(LDADD) $(LIBSELINUX)
> - grpunconv_LDADD = $(LDADD) $(LIBSELINUX)
> -@@ -117,9 +117,9 @@ su_SOURCES     = \
> +@@ -103,10 +103,10 @@ chsh_LDADD     = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM)
> + chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
> + expiry_LDADD = $(LDADD) $(LIBECONF)
> + gpasswd_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
> +-groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> ++groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) $(LIBCRYPT)
> + groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> + groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> +-groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> ++groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) $(LIBCRYPT)
> + grpck_LDADD    = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> + grpconv_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> + grpunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> +@@ -127,9 +127,9 @@ su_SOURCES     = \
>         suauth.c
> - su_LDADD       = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD)
> - sulogin_LDADD  = $(LDADD) $(LIBCRYPT)
> --useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
> -+useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
> - userdel_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE)
> --usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
> -+usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
> - vipw_LDADD     = $(LDADD) $(LIBSELINUX)
> + su_LDADD       = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF)
> + sulogin_LDADD  = $(LDADD) $(LIBCRYPT) $(LIBECONF)
> +-useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
> ++useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
> + userdel_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF)
> +-usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
> ++usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
> + vipw_LDADD     = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
>
>   install-am: all-am
>  diff --git a/src/groupadd.c b/src/groupadd.c
> -index b57006c..63e1c48 100644
> +index e9c4bb7..d572c00 100644
>  --- a/src/groupadd.c
>  +++ b/src/groupadd.c
> -@@ -123,9 +123,10 @@ static /*@noreturn@*/void usage (int status)
> +@@ -127,9 +127,10 @@ static /*@noreturn@*/void usage (int status)
>         (void) fputs (_("  -o, --non-unique              allow to create groups with duplicate\n"
>                         "                                (non-unique) GID\n"), usageout);
>         (void) fputs (_("  -p, --password PASSWORD       use this encrypted password for the new group\n"), usageout);
> @@ -56,7 +60,7 @@ index b57006c..63e1c48 100644
>         (void) fputs ("\n", usageout);
>         exit (status);
>   }
> -@@ -387,13 +388,14 @@ static void process_flags (int argc, char **argv)
> +@@ -391,13 +392,14 @@ static void process_flags (int argc, char **argv)
>                 {"key",        required_argument, NULL, 'K'},
>                 {"non-unique", no_argument,       NULL, 'o'},
>                 {"password",   required_argument, NULL, 'p'},
> @@ -73,7 +77,7 @@ index b57006c..63e1c48 100644
>                                  long_options, NULL)) != -1) {
>                 switch (c) {
>                 case 'f':
> -@@ -445,12 +447,20 @@ static void process_flags (int argc, char **argv)
> +@@ -449,12 +451,20 @@ static void process_flags (int argc, char **argv)
>                         pflg = true;
>                         group_passwd = optarg;
>                         break;
> @@ -95,7 +99,7 @@ index b57006c..63e1c48 100644
>                         break;
>                 default:
>                         usage (E_USAGE);
> -@@ -584,7 +594,7 @@ int main (int argc, char **argv)
> +@@ -588,7 +598,7 @@ int main (int argc, char **argv)
>         (void) textdomain (PACKAGE);
>
>         process_root_flag ("-R", argc, argv);
> @@ -105,10 +109,10 @@ index b57006c..63e1c48 100644
>         OPENLOG ("groupadd");
>   #ifdef WITH_AUDIT
>  diff --git a/src/groupmod.c b/src/groupmod.c
> -index b293b98..72daf2c 100644
> +index bc14438..25ccb44 100644
>  --- a/src/groupmod.c
>  +++ b/src/groupmod.c
> -@@ -134,8 +134,9 @@ static void usage (int status)
> +@@ -138,8 +138,9 @@ static void usage (int status)
>         (void) fputs (_("  -o, --non-unique              allow to use a duplicate (non-unique) GID\n"), usageout);
>         (void) fputs (_("  -p, --password PASSWORD       change the password to this (encrypted)\n"
>                         "                                PASSWORD\n"), usageout);
> @@ -119,7 +123,7 @@ index b293b98..72daf2c 100644
>         (void) fputs ("\n", usageout);
>         exit (status);
>   }
> -@@ -383,11 +384,12 @@ static void process_flags (int argc, char **argv)
> +@@ -387,11 +388,12 @@ static void process_flags (int argc, char **argv)
>                 {"new-name",   required_argument, NULL, 'n'},
>                 {"non-unique", no_argument,       NULL, 'o'},
>                 {"password",   required_argument, NULL, 'p'},
> @@ -134,7 +138,7 @@ index b293b98..72daf2c 100644
>                                  long_options, NULL)) != -1) {
>                 switch (c) {
>                 case 'g':
> -@@ -414,9 +416,17 @@ static void process_flags (int argc, char **argv)
> +@@ -418,9 +420,17 @@ static void process_flags (int argc, char **argv)
>                         group_passwd = optarg;
>                         pflg = true;
>                         break;
> @@ -153,7 +157,7 @@ index b293b98..72daf2c 100644
>                         break;
>                 default:
>                         usage (E_USAGE);
> -@@ -757,7 +767,7 @@ int main (int argc, char **argv)
> +@@ -761,7 +771,7 @@ int main (int argc, char **argv)
>         (void) textdomain (PACKAGE);
>
>         process_root_flag ("-R", argc, argv);
> @@ -163,10 +167,10 @@ index b293b98..72daf2c 100644
>         OPENLOG ("groupmod");
>   #ifdef WITH_AUDIT
>  diff --git a/src/useradd.c b/src/useradd.c
> -index c74e491..7214e72 100644
> +index 1b7bf06..44f09e2 100644
>  --- a/src/useradd.c
>  +++ b/src/useradd.c
> -@@ -829,9 +829,10 @@ static void usage (int status)
> +@@ -853,9 +853,10 @@ static void usage (int status)
>         (void) fputs (_("  -o, --non-unique              allow to create users with duplicate\n"
>                         "                                (non-unique) UID\n"), usageout);
>         (void) fputs (_("  -p, --password PASSWORD       encrypted password of the new account\n"), usageout);
> @@ -178,7 +182,7 @@ index c74e491..7214e72 100644
>         (void) fputs (_("  -s, --shell SHELL             login shell of the new account\n"), usageout);
>         (void) fputs (_("  -u, --uid UID                 user ID of the new account\n"), usageout);
>         (void) fputs (_("  -U, --user-group              create a group with the same name as the user\n"), usageout);
> -@@ -1104,9 +1105,10 @@ static void process_flags (int argc, char **argv)
> +@@ -1133,9 +1134,10 @@ static void process_flags (int argc, char **argv)
>                         {"no-user-group",  no_argument,       NULL, 'N'},
>                         {"non-unique",     no_argument,       NULL, 'o'},
>                         {"password",       required_argument, NULL, 'p'},
> @@ -190,7 +194,7 @@ index c74e491..7214e72 100644
>                         {"shell",          required_argument, NULL, 's'},
>                         {"uid",            required_argument, NULL, 'u'},
>                         {"user-group",     no_argument,       NULL, 'U'},
> -@@ -1117,9 +1119,9 @@ static void process_flags (int argc, char **argv)
> +@@ -1146,9 +1148,9 @@ static void process_flags (int argc, char **argv)
>                 };
>                 while ((c = getopt_long (argc, argv,
>   #ifdef WITH_SELINUX
> @@ -202,7 +206,7 @@ index c74e491..7214e72 100644
>   #endif                                /* !WITH_SELINUX */
>                                          long_options, NULL)) != -1) {
>                         switch (c) {
> -@@ -1285,12 +1287,19 @@ static void process_flags (int argc, char **argv)
> +@@ -1320,12 +1322,19 @@ static void process_flags (int argc, char **argv)
>                                 }
>                                 user_pass = optarg;
>                                 break;
> @@ -223,7 +227,7 @@ index c74e491..7214e72 100644
>                                 break;
>                         case 's':
>                                 if (   ( !VALID (optarg) )
> -@@ -2148,7 +2157,7 @@ int main (int argc, char **argv)
> +@@ -2257,7 +2266,7 @@ int main (int argc, char **argv)
>
>         process_root_flag ("-R", argc, argv);
>
> @@ -233,10 +237,10 @@ index c74e491..7214e72 100644
>         OPENLOG ("useradd");
>   #ifdef WITH_AUDIT
>  diff --git a/src/usermod.c b/src/usermod.c
> -index e571426..ccfbb99 100644
> +index 21c6da9..cffdb3e 100644
>  --- a/src/usermod.c
>  +++ b/src/usermod.c
> -@@ -424,8 +424,9 @@ static /*@noreturn@*/void usage (int status)
> +@@ -431,8 +431,9 @@ static /*@noreturn@*/void usage (int status)
>                         "                                new location (use only with -d)\n"), usageout);
>         (void) fputs (_("  -o, --non-unique              allow using duplicate (non-unique) UID\n"), usageout);
>         (void) fputs (_("  -p, --password PASSWORD       use encrypted password for the new password\n"), usageout);
> @@ -247,7 +251,7 @@ index e571426..ccfbb99 100644
>         (void) fputs (_("  -s, --shell SHELL             new login shell for the user account\n"), usageout);
>         (void) fputs (_("  -u, --uid UID                 new UID for the user account\n"), usageout);
>         (void) fputs (_("  -U, --unlock                  unlock the user account\n"), usageout);
> -@@ -1002,8 +1003,9 @@ static void process_flags (int argc, char **argv)
> +@@ -1010,8 +1011,9 @@ static void process_flags (int argc, char **argv)
>                         {"move-home",    no_argument,       NULL, 'm'},
>                         {"non-unique",   no_argument,       NULL, 'o'},
>                         {"password",     required_argument, NULL, 'p'},
> @@ -258,16 +262,16 @@ index e571426..ccfbb99 100644
>                         {"shell",        required_argument, NULL, 's'},
>                         {"uid",          required_argument, NULL, 'u'},
>                         {"unlock",       no_argument,       NULL, 'U'},
> -@@ -1019,7 +1021,7 @@ static void process_flags (int argc, char **argv)
> +@@ -1027,7 +1029,7 @@ static void process_flags (int argc, char **argv)
>                         {NULL, 0, NULL, '\0'}
>                 };
>                 while ((c = getopt_long (argc, argv,
> --                                       "ac:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
> -+                                       "ac:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
> +-                                       "abc:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
> ++                                       "abc:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
>   #ifdef ENABLE_SUBIDS
>                                          "v:w:V:W:"
>   #endif                                /* ENABLE_SUBIDS */
> -@@ -1119,9 +1121,17 @@ static void process_flags (int argc, char **argv)
> +@@ -1130,9 +1132,17 @@ static void process_flags (int argc, char **argv)
>                                 user_pass = optarg;
>                                 pflg = true;
>                                 break;
> @@ -286,7 +290,7 @@ index e571426..ccfbb99 100644
>                                 break;
>                         case 's':
>                                 if (!VALID (optarg)) {
> -@@ -2098,7 +2108,7 @@ int main (int argc, char **argv)
> +@@ -2127,7 +2137,7 @@ int main (int argc, char **argv)
>         (void) textdomain (PACKAGE);
>
>         process_root_flag ("-R", argc, argv);
> @@ -295,6 +299,3 @@ index e571426..ccfbb99 100644
>
>         OPENLOG ("usermod");
>   #ifdef WITH_AUDIT
> ---
> -2.11.0
> -
> diff --git a/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch b/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
> new file mode 100644
> index 00000000000..77357027764
> --- /dev/null
> +++ b/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
> @@ -0,0 +1,63 @@
> +From b406a7f4c3d6472885b75320ea63f140e021ff03 Mon Sep 17 00:00:00 2001
> +From: Chen Qi <Qi.Chen@windriver.com>
> +Date: Thu, 17 Jul 2014 15:53:34 +0800
> +Subject: [PATCH] useradd.c: create parent directories when necessary
> +
> +Upstream-Status: Inappropriate [OE specific]
> +
> +Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> +
> +---
> + src/useradd.c | 32 +++++++++++++++++++++++++++++++-
> + 1 file changed, 31 insertions(+), 1 deletion(-)
> +
> +diff --git a/src/useradd.c b/src/useradd.c
> +index 44f09e2..fec0986 100644
> +--- a/src/useradd.c
> ++++ b/src/useradd.c
> +@@ -2065,6 +2065,36 @@ static void usr_update (void)
> +       }
> + }
> +
> ++/*
> ++ * mkdir_p - create directories, including parent directories when needed
> ++ *
> ++ * similar to `mkdir -p'
> ++ */
> ++int mkdir_p(const char *path) {
> ++      int len = strlen(path);
> ++      char newdir[len + 1];
> ++      mode_t mode = 0755;
> ++      int i = 0;
> ++
> ++      if (path[i] == '\0') {
> ++              return 0;
> ++      }
> ++
> ++      /* skip the leading '/' */
> ++      i++;
> ++
> ++      while(path[i] != '\0') {
> ++              if (path[i] == '/') {
> ++                      strncpy(newdir, path, i);
> ++                      newdir[i] = '\0';
> ++                      mkdir(newdir, mode);
> ++              }
> ++              i++;
> ++      }
> ++      mkdir(path, mode);
> ++        return 0;
> ++}
> ++
> + /*
> +  * create_home - create the user's home directory
> +  *
> +@@ -2137,7 +2167,7 @@ static void create_home (void)
> +                               }
> +                               else
> + #endif
> +-                              if (mkdir (path, 0) != 0) {
> ++                              if ((mkdir_p (path) == 0) && (access (prefix_user_home, F_OK) != 0)) {
> +                       fprintf (stderr,
> +                                                       _("%s: cannot create directory %s\n"),
> +                                                       Prog, path);
> diff --git a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> index 4fa3d184edf..98252163692 100644
> --- a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> +++ b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> @@ -1,3 +1,8 @@
> +From 66533c7c6f347d257020675a1ed6e0c59cbbc3f0 Mon Sep 17 00:00:00 2001
> +From: Chen Qi <Qi.Chen@windriver.com>
> +Date: Thu, 17 Jul 2014 15:53:34 +0800
> +Subject: [PATCH] commonio.c-fix-unexpected-open-failure-in-chroot-env
> +
>  Upstream-Status: Inappropriate [OE specific]
>
>  commonio.c: fix unexpected open failure in chroot environment
> @@ -10,15 +15,16 @@ Note that this patch doesn't change the logic in the code, it just expands
>  the codes.
>
>  Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> +
>  ---
> - lib/commonio.c |   16 ++++++++++++----
> + lib/commonio.c | 16 ++++++++++++----
>   1 file changed, 12 insertions(+), 4 deletions(-)
>
>  diff --git a/lib/commonio.c b/lib/commonio.c
> -index cc536bf..51cafd9 100644
> +index 16fa7e7..d6bc297 100644
>  --- a/lib/commonio.c
>  +++ b/lib/commonio.c
> -@@ -613,10 +613,18 @@ int commonio_open (struct commonio_db *db, int mode)
> +@@ -632,10 +632,18 @@ int commonio_open (struct commonio_db *db, int mode)
>         db->cursor = NULL;
>         db->changed = false;
>
> @@ -41,6 +47,3 @@ index cc536bf..51cafd9 100644
>         db->fp = NULL;
>         if (fd >= 0) {
>   #ifdef WITH_TCB
> ---
> -1.7.9.5
> -
> diff --git a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> index 1af04d5fe89..cc833362e9a 100644
> --- a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> +++ b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> @@ -1,26 +1,37 @@
> +From ca472d6866e545aaa70a70020e3226f236a8aafc Mon Sep 17 00:00:00 2001
> +From: Shan Hai <shan.hai@windriver.com>
> +Date: Tue, 13 Sep 2016 13:45:46 +0800
> +Subject: [PATCH] shadow: use relaxed usernames
>
>  The groupadd from shadow does not allow upper case group names, the
>  same is true for the upstream shadow. But distributions like
>  Debian/Ubuntu/CentOS has their own way to cope with this problem,
>  this patch is picked up from CentOS release 7.0 to relax the usernames
>  restrictions to allow the upper case group names, and the relaxation is
> -POSIX compliant because POSIX indicate that usernames are composed of
> +POSIX compliant because POSIX indicate that usernames are composed of
>  characters from the portable filename character set [A-Za-z0-9._-].
>
>  Upstream-Status: Pending
>
> -Signed-off-by: Shan Hai <shan.hai@windriver.com>
> +Signed-off-by: Shan Hai <shan.hai@windriver.com>
>
> -diff -urpN a/libmisc/chkname.c b/libmisc/chkname.c
> -index 5089112..f40a0da 100644
> +---
> + libmisc/chkname.c  | 30 ++++++++++++++++++------------
> + man/groupadd.8.xml |  6 ------
> + man/useradd.8.xml  |  8 +-------
> + 3 files changed, 19 insertions(+), 25 deletions(-)
> +
> +diff --git a/libmisc/chkname.c b/libmisc/chkname.c
> +index 90f185c..65762b4 100644
>  --- a/libmisc/chkname.c
>  +++ b/libmisc/chkname.c
> -@@ -49,21 +49,28 @@
> - static bool is_valid_name (const char *name)
> - {
> +@@ -55,22 +55,28 @@ static bool is_valid_name (const char *name)
> +       }
> +
>         /*
>  -       * User/group names must match [a-z_][a-z0-9_-]*[$]
>  -       */
> +-
>  -      if (('\0' == *name) ||
>  -          !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
>  +         * User/group names must match gnu e-regex:
> @@ -55,28 +66,28 @@ index 5089112..f40a0da 100644
>                         return false;
>                 }
>         }
> -diff -urpN a/man/groupadd.8.xml b/man/groupadd.8.xml
> -index 230fd0c..94f7807 100644
> +diff --git a/man/groupadd.8.xml b/man/groupadd.8.xml
> +index 1e58f09..d804b61 100644
>  --- a/man/groupadd.8.xml
>  +++ b/man/groupadd.8.xml
> -@@ -222,12 +222,6 @@
> +@@ -272,12 +272,6 @@
> +
>      <refsect1 id='caveats'>
>        <title>CAVEATS</title>
> -      <para>
> +-     <para>
>  -       Groupnames must start with a lower case letter or an underscore,
>  -       followed by lower case letters, digits, underscores, or dashes.
>  -       They can end with a dollar sign.
>  -       In regular expression terms: [a-z_][a-z0-9_-]*[$]?
>  -     </para>
> --     <para>
> +      <para>
>          Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long.
>        </para>
> -      <para>
> -diff -urpN a/man/useradd.8.xml b/man/useradd.8.xml
> -index 5dec989..fe623b9 100644
> +diff --git a/man/useradd.8.xml b/man/useradd.8.xml
> +index a16d730..c0bd777 100644
>  --- a/man/useradd.8.xml
>  +++ b/man/useradd.8.xml
> -@@ -336,7 +336,7 @@
> +@@ -366,7 +366,7 @@
>         </term>
>         <listitem>
>           <para>
> @@ -85,16 +96,16 @@ index 5dec989..fe623b9 100644
>             wide setting from <filename>/etc/login.defs</filename>
>             (<option>CREATE_HOME</option>) is set to
>             <replaceable>yes</replaceable>.
> -@@ -607,12 +607,6 @@
> +@@ -660,12 +660,6 @@
> +       the user account creation request.
>       </para>
>
> -     <para>
> +-    <para>
>  -      Usernames must start with a lower case letter or an underscore,
>  -      followed by lower case letters, digits, underscores, or dashes.
>  -      They can end with a dollar sign.
>  -      In regular expression terms: [a-z_][a-z0-9_-]*[$]?
>  -    </para>
> --    <para>
> +     <para>
>         Usernames may only be up to 32 characters long.
>       </para>
> -   </refsect1>
> diff --git a/meta/recipes-extended/shadow/shadow.inc b/meta/recipes-extended/shadow/shadow.inc
> index 770c239e96d..d07b507532f 100644
> --- a/meta/recipes-extended/shadow/shadow.inc
> +++ b/meta/recipes-extended/shadow/shadow.inc
> @@ -11,8 +11,6 @@ DEPENDS = "virtual/crypt"
>  UPSTREAM_CHECK_URI = "https://github.com/shadow-maint/shadow/releases"
>  SRC_URI = "https://github.com/shadow-maint/shadow/releases/download/${PV}/${BP}.tar.gz \
>             file://shadow-4.1.3-dots-in-usernames.patch \
> -           file://0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch  \
> -           file://0001-configure.ac-fix-configure-error-with-dash.patch \
>             ${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
>             file://shadow-relaxed-usernames.patch \
>             "
> @@ -24,16 +22,17 @@ SRC_URI_append_class-target = " \
>
>  SRC_URI_append_class-native = " \
>             file://0001-Disable-use-of-syslog-for-sysroot.patch \
> -           file://allow-for-setting-password-in-clear-text.patch \
> +           file://0002-Allow-for-setting-password-in-clear-text.patch \
>             file://commonio.c-fix-unexpected-open-failure-in-chroot-env.patch \
> -           file://0001-useradd.c-create-parent-directories-when-necessary.patch \
> +           file://0004-useradd.c-create-parent-directories-when-necessary.patch \
> +           file://0001-Do-not-check-for-validity-of-shell-executable.patch \
>             "
>  SRC_URI_append_class-nativesdk = " \
>             file://0001-Disable-use-of-syslog-for-sysroot.patch \
>             "
>
> -SRC_URI[md5sum] = "36feb15665338ae3de414f2a88e434db"
> -SRC_URI[sha256sum] = "4668f99bd087399c4a586084dc3b046b75f560720d83e92fd23bf7a89dda4d31"
> +SRC_URI[md5sum] = "017ac773ba370bc28e157cee30dad71a"
> +SRC_URI[sha256sum] = "82016d65317555fc8ce9e669eb187984d8d4b1f8ecda0769f4bc5412aed326e4"
>
>  # Additional Policy files for PAM
>  PAM_SRC_URI = "file://pam.d/chfn \
> diff --git a/meta/recipes-extended/shadow/shadow_4.6.bb b/meta/recipes-extended/shadow/shadow_4.8.bb
> similarity index 100%
> rename from meta/recipes-extended/shadow/shadow_4.6.bb
> rename to meta/recipes-extended/shadow/shadow_4.8.bb
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



-- 
Alex Kiernan


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 14/24] shadow: update 4.6 -> 4.8
  2019-12-10  4:56   ` Alex Kiernan
@ 2019-12-10 11:38     ` Alexander Kanavin
  0 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-10 11:38 UTC (permalink / raw)
  To: Alex Kiernan; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 46217 bytes --]

Right, I have now dropped it.

Alex

On Tue, 10 Dec 2019 at 05:57, Alex Kiernan <alex.kiernan@gmail.com> wrote:

> On Thu, Dec 5, 2019 at 3:46 PM Alexander Kanavin <alex.kanavin@gmail.com>
> wrote:
> >
> > Drop two backports.
> >
> > Refactor 0001-useradd.c-create-parent-directories-when-necessary.patch
> > to make the changes less invasive (and easier to rebase).
> >
>
> Is that change even needed any more?
>
>
> https://github.com/shadow-maint/shadow/commit/b3b6d9d77c1d18b98670b97157777bb74092cd69
>
> Looks like it ought to be doing the same thing.
>
> > Rebase the rest of the paches.
> >
> > Add a patch to remove the check for validity of login shells
> > which does not work in our environment.
> >
> > Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ---
> >  ...01-Disable-use-of-syslog-for-sysroot.patch |  18 ++-
> >  ...eck-for-validity-of-shell-executable.patch |  29 +++++
> >  ...chg-shadow-field-reproducible-re.-71.patch |  89 --------------
> >  ...ure.ac-fix-configure-error-with-dash.patch |  36 ------
> >  ...te-parent-directories-when-necessary.patch | 116 ------------------
> >  ...-for-setting-password-in-clear-text.patch} | 101 +++++++--------
> >  ...te-parent-directories-when-necessary.patch |  63 ++++++++++
> >  ...nexpected-open-failure-in-chroot-env.patch |  15 ++-
> >  .../files/shadow-relaxed-usernames.patch      |  51 +++++---
> >  meta/recipes-extended/shadow/shadow.inc       |  11 +-
> >  .../shadow/{shadow_4.6.bb => shadow_4.8.bb}   |   0
> >  11 files changed, 196 insertions(+), 333 deletions(-)
> >  create mode 100644
> meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
> >  delete mode 100644
> meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
> >  delete mode 100644
> meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
> >  delete mode 100644
> meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
> >  rename
> meta/recipes-extended/shadow/files/{allow-for-setting-password-in-clear-text.patch
> => 0002-Allow-for-setting-password-in-clear-text.patch} (81%)
> >  create mode 100644
> meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
> >  rename meta/recipes-extended/shadow/{shadow_4.6.bb => shadow_4.8.bb}
> (100%)
> >
> > diff --git
> a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> > index aac2d42b12a..ab317b9aa03 100644
> > ---
> a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> > +++
> b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
> > @@ -1,4 +1,4 @@
> > -From 8cf3454d567f77233023be49a39a33e9f0836f89 Mon Sep 17 00:00:00 2001
> > +From fa2d9453656641002802d8165e80adb9e6a729d2 Mon Sep 17 00:00:00 2001
> >  From: Scott Garman <scott.a.garman@intel.com>
> >  Date: Thu, 14 Apr 2016 12:28:57 +0200
> >  Subject: [PATCH] Disable use of syslog for sysroot
> > @@ -12,6 +12,7 @@ Upstream-Status: Inappropriate [disable feature]
> >  Signed-off-by: Scott Garman <scott.a.garman@intel.com>
> >  Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> >  Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > +
> >  ---
> >   src/groupadd.c  | 3 +++
> >   src/groupdel.c  | 3 +++
> > @@ -23,7 +24,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> >   7 files changed, 21 insertions(+)
> >
> >  diff --git a/src/groupadd.c b/src/groupadd.c
> > -index 63e1c48..a596c49 100644
> > +index 2dd8eec..e9c4bb7 100644
> >  --- a/src/groupadd.c
> >  +++ b/src/groupadd.c
> >  @@ -34,6 +34,9 @@
> > @@ -37,7 +38,7 @@ index 63e1c48..a596c49 100644
> >   #include <fcntl.h>
> >   #include <getopt.h>
> >  diff --git a/src/groupdel.c b/src/groupdel.c
> > -index 70bed01..ababd81 100644
> > +index f941a84..5a70056 100644
> >  --- a/src/groupdel.c
> >  +++ b/src/groupdel.c
> >  @@ -34,6 +34,9 @@
> > @@ -65,7 +66,7 @@ index fc91c8b..2842514 100644
> >   #include <getopt.h>
> >   #include <grp.h>
> >  diff --git a/src/groupmod.c b/src/groupmod.c
> > -index 72daf2c..8965f9d 100644
> > +index 1dca5fc..bc14438 100644
> >  --- a/src/groupmod.c
> >  +++ b/src/groupmod.c
> >  @@ -34,6 +34,9 @@
> > @@ -79,7 +80,7 @@ index 72daf2c..8965f9d 100644
> >   #include <fcntl.h>
> >   #include <getopt.h>
> >  diff --git a/src/useradd.c b/src/useradd.c
> > -index 3aaf45c..1ab9174 100644
> > +index 4af0f7c..1b7bf06 100644
> >  --- a/src/useradd.c
> >  +++ b/src/useradd.c
> >  @@ -34,6 +34,9 @@
> > @@ -93,7 +94,7 @@ index 3aaf45c..1ab9174 100644
> >   #include <ctype.h>
> >   #include <errno.h>
> >  diff --git a/src/userdel.c b/src/userdel.c
> > -index c8de1d3..24d3ea9 100644
> > +index cc951e5..153e0be 100644
> >  --- a/src/userdel.c
> >  +++ b/src/userdel.c
> >  @@ -34,6 +34,9 @@
> > @@ -107,7 +108,7 @@ index c8de1d3..24d3ea9 100644
> >   #include <errno.h>
> >   #include <fcntl.h>
> >  diff --git a/src/usermod.c b/src/usermod.c
> > -index ccfbb99..24fb60d 100644
> > +index 05b9871..21c6da9 100644
> >  --- a/src/usermod.c
> >  +++ b/src/usermod.c
> >  @@ -34,6 +34,9 @@
> > @@ -120,6 +121,3 @@ index ccfbb99..24fb60d 100644
> >   #include <assert.h>
> >   #include <ctype.h>
> >   #include <errno.h>
> > ---
> > -2.11.0
> > -
> > diff --git
> a/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
> b/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
> > new file mode 100644
> > index 00000000000..2d15ff0673a
> > --- /dev/null
> > +++
> b/meta/recipes-extended/shadow/files/0001-Do-not-check-for-validity-of-shell-executable.patch
> > @@ -0,0 +1,29 @@
> > +From 0d0aded7307a9f4ee0d299951512acd18b3e029e Mon Sep 17 00:00:00 2001
> > +From: Alexander Kanavin <alex.kanavin@gmail.com>
> > +Date: Wed, 4 Dec 2019 19:28:48 +0100
> > +Subject: [PATCH] Do not check for validity of shell executable.
> > +
> > +This kind of check fails when building a rootfs.
> > +
> > +Upstream-Status: Inappropriate [oe-core specific]
> > +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > +---
> > + src/useradd.c | 5 +----
> > + 1 file changed, 1 insertion(+), 4 deletions(-)
> > +
> > +diff --git a/src/useradd.c b/src/useradd.c
> > +index 4af0f7c..898fe02 100644
> > +--- a/src/useradd.c
> > ++++ b/src/useradd.c
> > +@@ -1328,10 +1328,7 @@ static void process_flags (int argc, char **argv)
> > +                               if (   ( !VALID (optarg) )
> > +                                   || (   ('\0' != optarg[0])
> > +                                       && ('/'  != optarg[0])
> > +-                                      && ('*'  != optarg[0]) )
> > +-                                  || (stat(optarg, &st) != 0)
> > +-                                  || (S_ISDIR(st.st_mode))
> > +-                                  || (access(optarg, X_OK) != 0)) {
> > ++                                      && ('*'  != optarg[0]) )) {
> > +                                       fprintf (stderr,
> > +                                                _("%s: invalid shell
> '%s'\n"),
> > +                                                Prog, optarg);
> > diff --git
> a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
> b/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
> > deleted file mode 100644
> > index de0ba3ebb42..00000000000
> > ---
> a/meta/recipes-extended/shadow/files/0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch
> > +++ /dev/null
> > @@ -1,89 +0,0 @@
> > -From fe34a2a0e44bc80ff213bfd185046a5f10c94997 Mon Sep 17 00:00:00 2001
> > -From: Chris Lamb <chris@chris-lamb.co.uk>
> > -Date: Wed, 2 Jan 2019 18:06:16 +0000
> > -Subject: [PATCH 1/2] Make the sp_lstchg shadow field reproducible (re.
> #71)
> > -
> > -From <https://github.com/shadow-maint/shadow/pull/71>:
> > -
> > -```
> > -The third field in the /etc/shadow file (sp_lstchg) contains the date of
> > -the last password change expressed as the number of days since Jan 1,
> 1970.
> > -As this is a relative time, creating a user today will result in:
> > -
> > -username:17238:0:99999:7:::
> > -whilst creating the same user tomorrow will result in:
> > -
> > -username:17239:0:99999:7:::
> > -This has an impact for the Reproducible Builds[0] project where we aim
> to
> > -be independent of as many elements the build environment as possible,
> > -including the current date.
> > -
> > -This patch changes the behaviour to use the SOURCE_DATE_EPOCH[1]
> > -environment variable (instead of Jan 1, 1970) if valid.
> > -```
> > -
> > -This updated PR adds some missing calls to gettime (). This was
> originally
> > -filed by Johannes Schauer in Debian as #917773 [2].
> > -
> > -[0] https://reproducible-builds.org/
> > -[1] https://reproducible-builds.org/specs/source-date-epoch/
> > -[2] https://bugs.debian.org/917773
> > -
> > -Upstream-Status: Backport
> > -Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> > ----
> > - libmisc/pwd2spwd.c | 3 +--
> > - src/pwck.c         | 2 +-
> > - src/pwconv.c       | 2 +-
> > - 3 files changed, 3 insertions(+), 4 deletions(-)
> > -
> > -diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c
> > -index c1b9b29ac873..6799dd50d490 100644
> > ---- a/libmisc/pwd2spwd.c
> > -+++ b/libmisc/pwd2spwd.c
> > -@@ -40,7 +40,6 @@
> > - #include "prototypes.h"
> > - #include "defines.h"
> > - #include <pwd.h>
> > --extern time_t time (time_t *);
> > -
> > - /*
> > -  * pwd_to_spwd - create entries for new spwd structure
> > -@@ -66,7 +65,7 @@ struct spwd *pwd_to_spwd (const struct passwd *pw)
> > -                */
> > -               sp.sp_min = 0;
> > -               sp.sp_max = (10000L * DAY) / SCALE;
> > --              sp.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
> > -+              sp.sp_lstchg = (long) gettime () / SCALE;
> > -               if (0 == sp.sp_lstchg) {
> > -                       /* Better disable aging than requiring a password
> > -                        * change */
> > -diff --git a/src/pwck.c b/src/pwck.c
> > -index 0ffb711efb13..f70071b12500 100644
> > ---- a/src/pwck.c
> > -+++ b/src/pwck.c
> > -@@ -609,7 +609,7 @@ static void check_pw_file (int *errors, bool
> *changed)
> > -                                       sp.sp_inact  = -1;
> > -                                       sp.sp_expire = -1;
> > -                                       sp.sp_flag   =
> SHADOW_SP_FLAG_UNSET;
> > --                                      sp.sp_lstchg = (long) time
> ((time_t *) 0) / SCALE;
> > -+                                      sp.sp_lstchg = (long) gettime ()
> / SCALE;
> > -                                       if (0 == sp.sp_lstchg) {
> > -                                               /* Better disable aging
> than
> > -                                                * requiring a password
> change
> > -diff --git a/src/pwconv.c b/src/pwconv.c
> > -index 9c69fa131d8e..f932f266c59c 100644
> > ---- a/src/pwconv.c
> > -+++ b/src/pwconv.c
> > -@@ -267,7 +267,7 @@ int main (int argc, char **argv)
> > -                       spent.sp_flag   = SHADOW_SP_FLAG_UNSET;
> > -               }
> > -               spent.sp_pwdp = pw->pw_passwd;
> > --              spent.sp_lstchg = (long) time ((time_t *) 0) / SCALE;
> > -+              spent.sp_lstchg = (long) gettime () / SCALE;
> > -               if (0 == spent.sp_lstchg) {
> > -                       /* Better disable aging than requiring a password
> > -                        * change */
> > ---
> > -2.17.1
> > -
> > diff --git
> a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
> b/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
> > deleted file mode 100644
> > index a74cbb0c0e7..00000000000
> > ---
> a/meta/recipes-extended/shadow/files/0001-configure.ac-fix-configure-error-with-dash.patch
> > +++ /dev/null
> > @@ -1,36 +0,0 @@
> > -From 3c52a84ff8775590e7e9da9c0d4408c23494305e Mon Sep 17 00:00:00 2001
> > -From: Yi Zhao <yi.zhao@windriver.com>
> > -Date: Mon, 17 Jun 2019 15:36:34 +0800
> > -Subject: [PATCH] configure.ac: fix configure error with dash
> > -
> > -A configure error occurs when /bin/sh -> dash:
> > -  checking for is_selinux_enabled in -lselinux... yes
> > -  checking for semanage_connect in -lsemanage... yes
> > -  configure: 16322: test: yesyes: unexpected operator
> > -
> > -Use "=" instead of "==" since dash doesn't support this operator.
> > -
> > -Upstream-Status: Backport
> > -[
> https://github.com/shadow-maint/shadow/commit/3c52a84ff8775590e7e9da9c0d4408c23494305e
> ]
> > -
> > -Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
> > ----
> > - configure.ac | 2 +-
> > - 1 file changed, 1 insertion(+), 1 deletion(-)
> > -
> > -diff --git a/configure.ac b/configure.ac
> > -index 6762556..1907afb 100644
> > ---- a/configure.ac
> > -+++ b/configure.ac
> > -@@ -500,7 +500,7 @@ if test "$with_selinux" != "no"; then
> > -                       AC_MSG_ERROR([libsemanage not found])
> > -               fi
> > -
> > --              if test "$selinux_lib$semanage_lib" == "yesyes" ; then
> > -+              if test "$selinux_lib$semanage_lib" = "yesyes" ; then
> > -                       AC_DEFINE(WITH_SELINUX, 1,
> > -                                 [Build shadow with SELinux support])
> > -                       LIBSELINUX="-lselinux"
> > ---
> > -2.7.4
> > -
> > diff --git
> a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
> b/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
> > deleted file mode 100644
> > index faa6f68ebe2..00000000000
> > ---
> a/meta/recipes-extended/shadow/files/0001-useradd.c-create-parent-directories-when-necessary.patch
> > +++ /dev/null
> > @@ -1,116 +0,0 @@
> > -Subject: [PATCH] useradd.c: create parent directories when necessary
> > -
> > -Upstream-Status: Inappropriate [OE specific]
> > -
> > -Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ----
> > - src/useradd.c | 80
> +++++++++++++++++++++++++++++++++++++++--------------------
> > - 1 file changed, 53 insertions(+), 27 deletions(-)
> > -
> > -diff --git a/src/useradd.c b/src/useradd.c
> > -index 00a3c30..9ecbb58 100644
> > ---- a/src/useradd.c
> > -+++ b/src/useradd.c
> > -@@ -2021,6 +2021,35 @@ static void usr_update (void)
> > - }
> > -
> > - /*
> > -+ * mkdir_p - create directories, including parent directories when
> needed
> > -+ *
> > -+ * similar to `mkdir -p'
> > -+ */
> > -+void mkdir_p(const char *path) {
> > -+      int len = strlen(path);
> > -+      char newdir[len + 1];
> > -+      mode_t mode = 0755;
> > -+      int i = 0;
> > -+
> > -+      if (path[i] == '\0') {
> > -+              return;
> > -+      }
> > -+
> > -+      /* skip the leading '/' */
> > -+      i++;
> > -+
> > -+      while(path[i] != '\0') {
> > -+              if (path[i] == '/') {
> > -+                      strncpy(newdir, path, i);
> > -+                      newdir[i] = '\0';
> > -+                      mkdir(newdir, mode);
> > -+              }
> > -+              i++;
> > -+      }
> > -+      mkdir(path, mode);
> > -+}
> > -+
> > -+/*
> > -  * create_home - create the user's home directory
> > -  *
> > -  *    create_home() creates the user's home directory if it does not
> > -@@ -2038,39 +2067,36 @@ static void create_home (void)
> > -                       fail_exit (E_HOMEDIR);
> > -               }
> > - #endif
> > --              /* XXX - create missing parent directories.  --marekm */
> > --              if (mkdir (prefix_user_home, 0) != 0) {
> > --                      fprintf (stderr,
> > --                               _("%s: cannot create directory %s\n"),
> > --                               Prog, prefix_user_home);
> > -+              mkdir_p(user_home);
> > -+      }
> > -+      if (access (prefix_user_home, F_OK) != 0) {
> > - #ifdef WITH_AUDIT
> > --                      audit_logger (AUDIT_ADD_USER, Prog,
> > --                                    "adding home directory",
> > --                                    user_name, (unsigned int) user_id,
> > --                                    SHADOW_AUDIT_FAILURE);
> > -+              audit_logger (AUDIT_ADD_USER, Prog,
> > -+                            "adding home directory",
> > -+                            user_name, (unsigned int) user_id,
> > -+                            SHADOW_AUDIT_FAILURE);
> > - #endif
> > --                      fail_exit (E_HOMEDIR);
> > --              }
> > --              (void) chown (prefix_user_home, user_id, user_gid);
> > --              chmod (prefix_user_home,
> > --                     0777 & ~getdef_num ("UMASK",
> GETDEF_DEFAULT_UMASK));
> > --              home_added = true;
> > -+              fail_exit (E_HOMEDIR);
> > -+      }
> > -+      (void) chown (prefix_user_home, user_id, user_gid);
> > -+      chmod (prefix_user_home,
> > -+             0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
> > -+      home_added = true;
> > - #ifdef WITH_AUDIT
> > --              audit_logger (AUDIT_ADD_USER, Prog,
> > --                            "adding home directory",
> > --                            user_name, (unsigned int) user_id,
> > --                            SHADOW_AUDIT_SUCCESS);
> > -+      audit_logger (AUDIT_ADD_USER, Prog,
> > -+                    "adding home directory",
> > -+                    user_name, (unsigned int) user_id,
> > -+                    SHADOW_AUDIT_SUCCESS);
> > - #endif
> > - #ifdef WITH_SELINUX
> > --              /* Reset SELinux to create files with default contexts */
> > --              if (reset_selinux_file_context () != 0) {
> > --                      fprintf (stderr,
> > --                               _("%s: cannot reset SELinux file
> creation context\n"),
> > --                               Prog);
> > --                      fail_exit (E_HOMEDIR);
> > --              }
> > --#endif
> > -+      /* Reset SELinux to create files with default contexts */
> > -+      if (reset_selinux_file_context () != 0) {
> > -+              fprintf (stderr,
> > -+                       _("%s: cannot reset SELinux file creation
> context\n"),
> > -+                       Prog);
> > -+              fail_exit (E_HOMEDIR);
> > -       }
> > -+#endif
> > - }
> > -
> > - /*
> > ---
> > -2.11.0
> > -
> > diff --git
> a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
> b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
> > similarity index 81%
> > rename from
> meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
> > rename to
> meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
> > index fa7eb07aa51..c6332e4f766 100644
> > ---
> a/meta/recipes-extended/shadow/files/allow-for-setting-password-in-clear-text.patch
> > +++
> b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
> > @@ -1,8 +1,12 @@
> > +From a7d995228491ad5255ad86c1f04ba071f6880897 Mon Sep 17 00:00:00 2001
> > +From: Chen Qi <Qi.Chen@windriver.com>
> > +Date: Sat, 16 Nov 2013 15:27:47 +0800
> >  Subject: [PATCH] Allow for setting password in clear text
> >
> >  Upstream-Status: Inappropriate [OE specific]
> >
> >  Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > +
> >  ---
> >   src/Makefile.am |  8 ++++----
> >   src/groupadd.c  | 20 +++++++++++++++-----
> > @@ -12,39 +16,39 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> >   5 files changed, 64 insertions(+), 25 deletions(-)
> >
> >  diff --git a/src/Makefile.am b/src/Makefile.am
> > -index 3c98a8d..b8093d5 100644
> > +index f31fd7a..4a317a3 100644
> >  --- a/src/Makefile.am
> >  +++ b/src/Makefile.am
> > -@@ -93,10 +93,10 @@ chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID)
> $(LIBSELINUX) $(LIBCRYPT)
> > - chsh_LDADD     = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT_NOPAM)
> $(LIBSKEY) $(LIBMD)
> > - chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX) $(LIBCRYPT)
> > - gpasswd_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
> > --groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> > -+groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBCRYPT)
> > - groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> > - groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBSELINUX)
> > --groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> > -+groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBCRYPT)
> > - grpck_LDADD    = $(LDADD) $(LIBSELINUX)
> > - grpconv_LDADD  = $(LDADD) $(LIBSELINUX)
> > - grpunconv_LDADD = $(LDADD) $(LIBSELINUX)
> > -@@ -117,9 +117,9 @@ su_SOURCES     = \
> > +@@ -103,10 +103,10 @@ chsh_LDADD     = $(LDADD) $(LIBPAM) $(LIBAUDIT)
> $(LIBSELINUX) $(LIBCRYPT_NOPAM)
> > + chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBCRYPT) $(LIBECONF)
> > + expiry_LDADD = $(LDADD) $(LIBECONF)
> > + gpasswd_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT)
> $(LIBECONF)
> > +-groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBECONF)
> > ++groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBECONF) $(LIBCRYPT)
> > + groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBECONF)
> > + groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBECONF)
> > +-groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBECONF)
> > ++groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBECONF) $(LIBCRYPT)
> > + grpck_LDADD    = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> > + grpconv_LDADD  = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> > + grpunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> > +@@ -127,9 +127,9 @@ su_SOURCES     = \
> >         suauth.c
> > - su_LDADD       = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM)
> $(LIBSKEY) $(LIBMD)
> > - sulogin_LDADD  = $(LDADD) $(LIBCRYPT)
> > --useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
> > -+useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
> > - userdel_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE)
> > --usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR)
> > -+usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBCRYPT)
> > - vipw_LDADD     = $(LDADD) $(LIBSELINUX)
> > + su_LDADD       = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM)
> $(LIBSKEY) $(LIBMD) $(LIBECONF)
> > + sulogin_LDADD  = $(LDADD) $(LIBCRYPT) $(LIBECONF)
> > +-useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
> > ++useradd_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
> > + userdel_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBECONF)
> > +-usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
> > ++usermod_LDADD  = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX)
> $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
> > + vipw_LDADD     = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
> >
> >   install-am: all-am
> >  diff --git a/src/groupadd.c b/src/groupadd.c
> > -index b57006c..63e1c48 100644
> > +index e9c4bb7..d572c00 100644
> >  --- a/src/groupadd.c
> >  +++ b/src/groupadd.c
> > -@@ -123,9 +123,10 @@ static /*@noreturn@*/void usage (int status)
> > +@@ -127,9 +127,10 @@ static /*@noreturn@*/void usage (int status)
> >         (void) fputs (_("  -o, --non-unique              allow to create
> groups with duplicate\n"
> >                         "                                (non-unique)
> GID\n"), usageout);
> >         (void) fputs (_("  -p, --password PASSWORD       use this
> encrypted password for the new group\n"), usageout);
> > @@ -56,7 +60,7 @@ index b57006c..63e1c48 100644
> >         (void) fputs ("\n", usageout);
> >         exit (status);
> >   }
> > -@@ -387,13 +388,14 @@ static void process_flags (int argc, char **argv)
> > +@@ -391,13 +392,14 @@ static void process_flags (int argc, char **argv)
> >                 {"key",        required_argument, NULL, 'K'},
> >                 {"non-unique", no_argument,       NULL, 'o'},
> >                 {"password",   required_argument, NULL, 'p'},
> > @@ -73,7 +77,7 @@ index b57006c..63e1c48 100644
> >                                  long_options, NULL)) != -1) {
> >                 switch (c) {
> >                 case 'f':
> > -@@ -445,12 +447,20 @@ static void process_flags (int argc, char **argv)
> > +@@ -449,12 +451,20 @@ static void process_flags (int argc, char **argv)
> >                         pflg = true;
> >                         group_passwd = optarg;
> >                         break;
> > @@ -95,7 +99,7 @@ index b57006c..63e1c48 100644
> >                         break;
> >                 default:
> >                         usage (E_USAGE);
> > -@@ -584,7 +594,7 @@ int main (int argc, char **argv)
> > +@@ -588,7 +598,7 @@ int main (int argc, char **argv)
> >         (void) textdomain (PACKAGE);
> >
> >         process_root_flag ("-R", argc, argv);
> > @@ -105,10 +109,10 @@ index b57006c..63e1c48 100644
> >         OPENLOG ("groupadd");
> >   #ifdef WITH_AUDIT
> >  diff --git a/src/groupmod.c b/src/groupmod.c
> > -index b293b98..72daf2c 100644
> > +index bc14438..25ccb44 100644
> >  --- a/src/groupmod.c
> >  +++ b/src/groupmod.c
> > -@@ -134,8 +134,9 @@ static void usage (int status)
> > +@@ -138,8 +138,9 @@ static void usage (int status)
> >         (void) fputs (_("  -o, --non-unique              allow to use a
> duplicate (non-unique) GID\n"), usageout);
> >         (void) fputs (_("  -p, --password PASSWORD       change the
> password to this (encrypted)\n"
> >                         "                                PASSWORD\n"),
> usageout);
> > @@ -119,7 +123,7 @@ index b293b98..72daf2c 100644
> >         (void) fputs ("\n", usageout);
> >         exit (status);
> >   }
> > -@@ -383,11 +384,12 @@ static void process_flags (int argc, char **argv)
> > +@@ -387,11 +388,12 @@ static void process_flags (int argc, char **argv)
> >                 {"new-name",   required_argument, NULL, 'n'},
> >                 {"non-unique", no_argument,       NULL, 'o'},
> >                 {"password",   required_argument, NULL, 'p'},
> > @@ -134,7 +138,7 @@ index b293b98..72daf2c 100644
> >                                  long_options, NULL)) != -1) {
> >                 switch (c) {
> >                 case 'g':
> > -@@ -414,9 +416,17 @@ static void process_flags (int argc, char **argv)
> > +@@ -418,9 +420,17 @@ static void process_flags (int argc, char **argv)
> >                         group_passwd = optarg;
> >                         pflg = true;
> >                         break;
> > @@ -153,7 +157,7 @@ index b293b98..72daf2c 100644
> >                         break;
> >                 default:
> >                         usage (E_USAGE);
> > -@@ -757,7 +767,7 @@ int main (int argc, char **argv)
> > +@@ -761,7 +771,7 @@ int main (int argc, char **argv)
> >         (void) textdomain (PACKAGE);
> >
> >         process_root_flag ("-R", argc, argv);
> > @@ -163,10 +167,10 @@ index b293b98..72daf2c 100644
> >         OPENLOG ("groupmod");
> >   #ifdef WITH_AUDIT
> >  diff --git a/src/useradd.c b/src/useradd.c
> > -index c74e491..7214e72 100644
> > +index 1b7bf06..44f09e2 100644
> >  --- a/src/useradd.c
> >  +++ b/src/useradd.c
> > -@@ -829,9 +829,10 @@ static void usage (int status)
> > +@@ -853,9 +853,10 @@ static void usage (int status)
> >         (void) fputs (_("  -o, --non-unique              allow to create
> users with duplicate\n"
> >                         "                                (non-unique)
> UID\n"), usageout);
> >         (void) fputs (_("  -p, --password PASSWORD       encrypted
> password of the new account\n"), usageout);
> > @@ -178,7 +182,7 @@ index c74e491..7214e72 100644
> >         (void) fputs (_("  -s, --shell SHELL             login shell of
> the new account\n"), usageout);
> >         (void) fputs (_("  -u, --uid UID                 user ID of the
> new account\n"), usageout);
> >         (void) fputs (_("  -U, --user-group              create a group
> with the same name as the user\n"), usageout);
> > -@@ -1104,9 +1105,10 @@ static void process_flags (int argc, char **argv)
> > +@@ -1133,9 +1134,10 @@ static void process_flags (int argc, char **argv)
> >                         {"no-user-group",  no_argument,       NULL, 'N'},
> >                         {"non-unique",     no_argument,       NULL, 'o'},
> >                         {"password",       required_argument, NULL, 'p'},
> > @@ -190,7 +194,7 @@ index c74e491..7214e72 100644
> >                         {"shell",          required_argument, NULL, 's'},
> >                         {"uid",            required_argument, NULL, 'u'},
> >                         {"user-group",     no_argument,       NULL, 'U'},
> > -@@ -1117,9 +1119,9 @@ static void process_flags (int argc, char **argv)
> > +@@ -1146,9 +1148,9 @@ static void process_flags (int argc, char **argv)
> >                 };
> >                 while ((c = getopt_long (argc, argv,
> >   #ifdef WITH_SELINUX
> > @@ -202,7 +206,7 @@ index c74e491..7214e72 100644
> >   #endif                                /* !WITH_SELINUX */
> >                                          long_options, NULL)) != -1) {
> >                         switch (c) {
> > -@@ -1285,12 +1287,19 @@ static void process_flags (int argc, char
> **argv)
> > +@@ -1320,12 +1322,19 @@ static void process_flags (int argc, char
> **argv)
> >                                 }
> >                                 user_pass = optarg;
> >                                 break;
> > @@ -223,7 +227,7 @@ index c74e491..7214e72 100644
> >                                 break;
> >                         case 's':
> >                                 if (   ( !VALID (optarg) )
> > -@@ -2148,7 +2157,7 @@ int main (int argc, char **argv)
> > +@@ -2257,7 +2266,7 @@ int main (int argc, char **argv)
> >
> >         process_root_flag ("-R", argc, argv);
> >
> > @@ -233,10 +237,10 @@ index c74e491..7214e72 100644
> >         OPENLOG ("useradd");
> >   #ifdef WITH_AUDIT
> >  diff --git a/src/usermod.c b/src/usermod.c
> > -index e571426..ccfbb99 100644
> > +index 21c6da9..cffdb3e 100644
> >  --- a/src/usermod.c
> >  +++ b/src/usermod.c
> > -@@ -424,8 +424,9 @@ static /*@noreturn@*/void usage (int status)
> > +@@ -431,8 +431,9 @@ static /*@noreturn@*/void usage (int status)
> >                         "                                new location
> (use only with -d)\n"), usageout);
> >         (void) fputs (_("  -o, --non-unique              allow using
> duplicate (non-unique) UID\n"), usageout);
> >         (void) fputs (_("  -p, --password PASSWORD       use encrypted
> password for the new password\n"), usageout);
> > @@ -247,7 +251,7 @@ index e571426..ccfbb99 100644
> >         (void) fputs (_("  -s, --shell SHELL             new login shell
> for the user account\n"), usageout);
> >         (void) fputs (_("  -u, --uid UID                 new UID for the
> user account\n"), usageout);
> >         (void) fputs (_("  -U, --unlock                  unlock the user
> account\n"), usageout);
> > -@@ -1002,8 +1003,9 @@ static void process_flags (int argc, char **argv)
> > +@@ -1010,8 +1011,9 @@ static void process_flags (int argc, char **argv)
> >                         {"move-home",    no_argument,       NULL, 'm'},
> >                         {"non-unique",   no_argument,       NULL, 'o'},
> >                         {"password",     required_argument, NULL, 'p'},
> > @@ -258,16 +262,16 @@ index e571426..ccfbb99 100644
> >                         {"shell",        required_argument, NULL, 's'},
> >                         {"uid",          required_argument, NULL, 'u'},
> >                         {"unlock",       no_argument,       NULL, 'U'},
> > -@@ -1019,7 +1021,7 @@ static void process_flags (int argc, char **argv)
> > +@@ -1027,7 +1029,7 @@ static void process_flags (int argc, char **argv)
> >                         {NULL, 0, NULL, '\0'}
> >                 };
> >                 while ((c = getopt_long (argc, argv,
> > --                                       "ac:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
> > -+
>  "ac:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
> > +-
>  "abc:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
> > ++
>  "abc:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
> >   #ifdef ENABLE_SUBIDS
> >                                          "v:w:V:W:"
> >   #endif                                /* ENABLE_SUBIDS */
> > -@@ -1119,9 +1121,17 @@ static void process_flags (int argc, char **argv)
> > +@@ -1130,9 +1132,17 @@ static void process_flags (int argc, char **argv)
> >                                 user_pass = optarg;
> >                                 pflg = true;
> >                                 break;
> > @@ -286,7 +290,7 @@ index e571426..ccfbb99 100644
> >                                 break;
> >                         case 's':
> >                                 if (!VALID (optarg)) {
> > -@@ -2098,7 +2108,7 @@ int main (int argc, char **argv)
> > +@@ -2127,7 +2137,7 @@ int main (int argc, char **argv)
> >         (void) textdomain (PACKAGE);
> >
> >         process_root_flag ("-R", argc, argv);
> > @@ -295,6 +299,3 @@ index e571426..ccfbb99 100644
> >
> >         OPENLOG ("usermod");
> >   #ifdef WITH_AUDIT
> > ---
> > -2.11.0
> > -
> > diff --git
> a/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
> b/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
> > new file mode 100644
> > index 00000000000..77357027764
> > --- /dev/null
> > +++
> b/meta/recipes-extended/shadow/files/0004-useradd.c-create-parent-directories-when-necessary.patch
> > @@ -0,0 +1,63 @@
> > +From b406a7f4c3d6472885b75320ea63f140e021ff03 Mon Sep 17 00:00:00 2001
> > +From: Chen Qi <Qi.Chen@windriver.com>
> > +Date: Thu, 17 Jul 2014 15:53:34 +0800
> > +Subject: [PATCH] useradd.c: create parent directories when necessary
> > +
> > +Upstream-Status: Inappropriate [OE specific]
> > +
> > +Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > +
> > +---
> > + src/useradd.c | 32 +++++++++++++++++++++++++++++++-
> > + 1 file changed, 31 insertions(+), 1 deletion(-)
> > +
> > +diff --git a/src/useradd.c b/src/useradd.c
> > +index 44f09e2..fec0986 100644
> > +--- a/src/useradd.c
> > ++++ b/src/useradd.c
> > +@@ -2065,6 +2065,36 @@ static void usr_update (void)
> > +       }
> > + }
> > +
> > ++/*
> > ++ * mkdir_p - create directories, including parent directories when
> needed
> > ++ *
> > ++ * similar to `mkdir -p'
> > ++ */
> > ++int mkdir_p(const char *path) {
> > ++      int len = strlen(path);
> > ++      char newdir[len + 1];
> > ++      mode_t mode = 0755;
> > ++      int i = 0;
> > ++
> > ++      if (path[i] == '\0') {
> > ++              return 0;
> > ++      }
> > ++
> > ++      /* skip the leading '/' */
> > ++      i++;
> > ++
> > ++      while(path[i] != '\0') {
> > ++              if (path[i] == '/') {
> > ++                      strncpy(newdir, path, i);
> > ++                      newdir[i] = '\0';
> > ++                      mkdir(newdir, mode);
> > ++              }
> > ++              i++;
> > ++      }
> > ++      mkdir(path, mode);
> > ++        return 0;
> > ++}
> > ++
> > + /*
> > +  * create_home - create the user's home directory
> > +  *
> > +@@ -2137,7 +2167,7 @@ static void create_home (void)
> > +                               }
> > +                               else
> > + #endif
> > +-                              if (mkdir (path, 0) != 0) {
> > ++                              if ((mkdir_p (path) == 0) && (access
> (prefix_user_home, F_OK) != 0)) {
> > +                       fprintf (stderr,
> > +                                                       _("%s: cannot
> create directory %s\n"),
> > +                                                       Prog, path);
> > diff --git
> a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> > index 4fa3d184edf..98252163692 100644
> > ---
> a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> > +++
> b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
> > @@ -1,3 +1,8 @@
> > +From 66533c7c6f347d257020675a1ed6e0c59cbbc3f0 Mon Sep 17 00:00:00 2001
> > +From: Chen Qi <Qi.Chen@windriver.com>
> > +Date: Thu, 17 Jul 2014 15:53:34 +0800
> > +Subject: [PATCH] commonio.c-fix-unexpected-open-failure-in-chroot-env
> > +
> >  Upstream-Status: Inappropriate [OE specific]
> >
> >  commonio.c: fix unexpected open failure in chroot environment
> > @@ -10,15 +15,16 @@ Note that this patch doesn't change the logic in the
> code, it just expands
> >  the codes.
> >
> >  Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > +
> >  ---
> > - lib/commonio.c |   16 ++++++++++++----
> > + lib/commonio.c | 16 ++++++++++++----
> >   1 file changed, 12 insertions(+), 4 deletions(-)
> >
> >  diff --git a/lib/commonio.c b/lib/commonio.c
> > -index cc536bf..51cafd9 100644
> > +index 16fa7e7..d6bc297 100644
> >  --- a/lib/commonio.c
> >  +++ b/lib/commonio.c
> > -@@ -613,10 +613,18 @@ int commonio_open (struct commonio_db *db, int
> mode)
> > +@@ -632,10 +632,18 @@ int commonio_open (struct commonio_db *db, int
> mode)
> >         db->cursor = NULL;
> >         db->changed = false;
> >
> > @@ -41,6 +47,3 @@ index cc536bf..51cafd9 100644
> >         db->fp = NULL;
> >         if (fd >= 0) {
> >   #ifdef WITH_TCB
> > ---
> > -1.7.9.5
> > -
> > diff --git
> a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> > index 1af04d5fe89..cc833362e9a 100644
> > --- a/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> > +++ b/meta/recipes-extended/shadow/files/shadow-relaxed-usernames.patch
> > @@ -1,26 +1,37 @@
> > +From ca472d6866e545aaa70a70020e3226f236a8aafc Mon Sep 17 00:00:00 2001
> > +From: Shan Hai <shan.hai@windriver.com>
> > +Date: Tue, 13 Sep 2016 13:45:46 +0800
> > +Subject: [PATCH] shadow: use relaxed usernames
> >
> >  The groupadd from shadow does not allow upper case group names, the
> >  same is true for the upstream shadow. But distributions like
> >  Debian/Ubuntu/CentOS has their own way to cope with this problem,
> >  this patch is picked up from CentOS release 7.0 to relax the usernames
> >  restrictions to allow the upper case group names, and the relaxation is
> > -POSIX compliant because POSIX indicate that usernames are composed of
> > +POSIX compliant because POSIX indicate that usernames are composed of
> >  characters from the portable filename character set [A-Za-z0-9._-].
> >
> >  Upstream-Status: Pending
> >
> > -Signed-off-by: Shan Hai <shan.hai@windriver.com>
> > +Signed-off-by: Shan Hai <shan.hai@windriver.com>
> >
> > -diff -urpN a/libmisc/chkname.c b/libmisc/chkname.c
> > -index 5089112..f40a0da 100644
> > +---
> > + libmisc/chkname.c  | 30 ++++++++++++++++++------------
> > + man/groupadd.8.xml |  6 ------
> > + man/useradd.8.xml  |  8 +-------
> > + 3 files changed, 19 insertions(+), 25 deletions(-)
> > +
> > +diff --git a/libmisc/chkname.c b/libmisc/chkname.c
> > +index 90f185c..65762b4 100644
> >  --- a/libmisc/chkname.c
> >  +++ b/libmisc/chkname.c
> > -@@ -49,21 +49,28 @@
> > - static bool is_valid_name (const char *name)
> > - {
> > +@@ -55,22 +55,28 @@ static bool is_valid_name (const char *name)
> > +       }
> > +
> >         /*
> >  -       * User/group names must match [a-z_][a-z0-9_-]*[$]
> >  -       */
> > +-
> >  -      if (('\0' == *name) ||
> >  -          !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
> >  +         * User/group names must match gnu e-regex:
> > @@ -55,28 +66,28 @@ index 5089112..f40a0da 100644
> >                         return false;
> >                 }
> >         }
> > -diff -urpN a/man/groupadd.8.xml b/man/groupadd.8.xml
> > -index 230fd0c..94f7807 100644
> > +diff --git a/man/groupadd.8.xml b/man/groupadd.8.xml
> > +index 1e58f09..d804b61 100644
> >  --- a/man/groupadd.8.xml
> >  +++ b/man/groupadd.8.xml
> > -@@ -222,12 +222,6 @@
> > +@@ -272,12 +272,6 @@
> > +
> >      <refsect1 id='caveats'>
> >        <title>CAVEATS</title>
> > -      <para>
> > +-     <para>
> >  -       Groupnames must start with a lower case letter or an underscore,
> >  -       followed by lower case letters, digits, underscores, or dashes.
> >  -       They can end with a dollar sign.
> >  -       In regular expression terms: [a-z_][a-z0-9_-]*[$]?
> >  -     </para>
> > --     <para>
> > +      <para>
> >          Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters
> long.
> >        </para>
> > -      <para>
> > -diff -urpN a/man/useradd.8.xml b/man/useradd.8.xml
> > -index 5dec989..fe623b9 100644
> > +diff --git a/man/useradd.8.xml b/man/useradd.8.xml
> > +index a16d730..c0bd777 100644
> >  --- a/man/useradd.8.xml
> >  +++ b/man/useradd.8.xml
> > -@@ -336,7 +336,7 @@
> > +@@ -366,7 +366,7 @@
> >         </term>
> >         <listitem>
> >           <para>
> > @@ -85,16 +96,16 @@ index 5dec989..fe623b9 100644
> >             wide setting from <filename>/etc/login.defs</filename>
> >             (<option>CREATE_HOME</option>) is set to
> >             <replaceable>yes</replaceable>.
> > -@@ -607,12 +607,6 @@
> > +@@ -660,12 +660,6 @@
> > +       the user account creation request.
> >       </para>
> >
> > -     <para>
> > +-    <para>
> >  -      Usernames must start with a lower case letter or an underscore,
> >  -      followed by lower case letters, digits, underscores, or dashes.
> >  -      They can end with a dollar sign.
> >  -      In regular expression terms: [a-z_][a-z0-9_-]*[$]?
> >  -    </para>
> > --    <para>
> > +     <para>
> >         Usernames may only be up to 32 characters long.
> >       </para>
> > -   </refsect1>
> > diff --git a/meta/recipes-extended/shadow/shadow.inc
> b/meta/recipes-extended/shadow/shadow.inc
> > index 770c239e96d..d07b507532f 100644
> > --- a/meta/recipes-extended/shadow/shadow.inc
> > +++ b/meta/recipes-extended/shadow/shadow.inc
> > @@ -11,8 +11,6 @@ DEPENDS = "virtual/crypt"
> >  UPSTREAM_CHECK_URI = "https://github.com/shadow-maint/shadow/releases"
> >  SRC_URI = "
> https://github.com/shadow-maint/shadow/releases/download/${PV}/${BP}.tar.gz
> \
> >             file://shadow-4.1.3-dots-in-usernames.patch \
> > -
>  file://0001-Make-the-sp_lstchg-shadow-field-reproducible-re.-71.patch  \
> > -           file://0001-configure.ac-fix-configure-error-with-dash.patch
> \
> >             ${@bb.utils.contains('PACKAGECONFIG', 'pam',
> '${PAM_SRC_URI}', '', d)} \
> >             file://shadow-relaxed-usernames.patch \
> >             "
> > @@ -24,16 +22,17 @@ SRC_URI_append_class-target = " \
> >
> >  SRC_URI_append_class-native = " \
> >             file://0001-Disable-use-of-syslog-for-sysroot.patch \
> > -           file://allow-for-setting-password-in-clear-text.patch \
> > +           file://0002-Allow-for-setting-password-in-clear-text.patch \
> >
>  file://commonio.c-fix-unexpected-open-failure-in-chroot-env.patch \
> > -
>  file://0001-useradd.c-create-parent-directories-when-necessary.patch \
> > +
>  file://0004-useradd.c-create-parent-directories-when-necessary.patch \
> > +
>  file://0001-Do-not-check-for-validity-of-shell-executable.patch \
> >             "
> >  SRC_URI_append_class-nativesdk = " \
> >             file://0001-Disable-use-of-syslog-for-sysroot.patch \
> >             "
> >
> > -SRC_URI[md5sum] = "36feb15665338ae3de414f2a88e434db"
> > -SRC_URI[sha256sum] =
> "4668f99bd087399c4a586084dc3b046b75f560720d83e92fd23bf7a89dda4d31"
> > +SRC_URI[md5sum] = "017ac773ba370bc28e157cee30dad71a"
> > +SRC_URI[sha256sum] =
> "82016d65317555fc8ce9e669eb187984d8d4b1f8ecda0769f4bc5412aed326e4"
> >
> >  # Additional Policy files for PAM
> >  PAM_SRC_URI = "file://pam.d/chfn \
> > diff --git a/meta/recipes-extended/shadow/shadow_4.6.bb
> b/meta/recipes-extended/shadow/shadow_4.8.bb
> > similarity index 100%
> > rename from meta/recipes-extended/shadow/shadow_4.6.bb
> > rename to meta/recipes-extended/shadow/shadow_4.8.bb
> > --
> > 2.17.1
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>
>
> --
> Alex Kiernan
>

[-- Attachment #2: Type: text/html, Size: 59430 bytes --]

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 11/24] perl: update to 5.30.1
  2019-12-09 23:41   ` Richard Purdie
@ 2019-12-10 11:48     ` Alexander Kanavin
  0 siblings, 0 replies; 37+ messages in thread
From: Alexander Kanavin @ 2019-12-10 11:48 UTC (permalink / raw)
  To: Richard Purdie; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 1302 bytes --]

On Tue, 10 Dec 2019 at 00:41, Richard Purdie <
richard.purdie@linuxfoundation.org> wrote:

> On Thu, 2019-12-05 at 16:43 +0100, Alexander Kanavin wrote:
> > Drop fix-setgroup.patch as the upstream has fixed the issue.
> >
> > Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ---
> >  .../perl/files/fix-setgroup.patch             | 49 ---------------
> > ----
> >  .../perl/{perl_5.30.0.bb => perl_5.30.1.bb}   | 11 ++---
> >  2 files changed, 5 insertions(+), 55 deletions(-)
> >  delete mode 100644 meta/recipes-devtools/perl/files/fix-
> > setgroup.patch
> >  rename meta/recipes-devtools/perl/{perl_5.30.0.bb => perl_5.30.1.bb}
> > (97%)
>
> I think a build race sneaked in with this upgrade:
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/103/builds/240
>
>   /usr/share/man/man3/TAP::Parser::SourceHandler::Executable.3
>   /usr/sinstallman: Can't open cpan/podlators/blib/script/pod2text: No
> such file or directory
> ABORTED
> hare/man/man3/TAP::Parser::SourceHandler::File.3
>   /usr/share/man/man3/TAP::Parser::SourceHandler::Handle.3
>

This is an existing issue that happens very rarely:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=13244

Any chance you might be able to obtain log.do_compile from the failed build?

Alex

[-- Attachment #2: Type: text/html, Size: 2286 bytes --]

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2019-12-10 11:48 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-05 15:43 [PATCH 01/24] rpm: upgrade to 4.15.1 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 02/24] gettext-minimal-native: update to 0.20.1 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 03/24] gettext: " Alexander Kanavin
2019-12-07  9:21   ` Khem Raj
2019-12-05 15:43 ` [PATCH 04/24] psmisc: revert to default autopoint exclusion Alexander Kanavin
2019-12-05 15:43 ` [PATCH 05/24] gettext: fix failing ptests Alexander Kanavin
2019-12-05 15:43 ` [PATCH 06/24] python3: update to 3.8.0 Alexander Kanavin
2019-12-07 15:47   ` Khem Raj
2019-12-09 11:40     ` Alexander Kanavin
2019-12-05 15:43 ` [PATCH 07/24] gstreamer1.0-python: add a patch to fix python 3.8 builds Alexander Kanavin
2019-12-05 15:43 ` [PATCH 08/24] selftest: skip virgl gtk/sdl test on opensuse 15.0 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 09/24] gtk+3: update to 3.24.13 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 10/24] kbd: update to 2.2.0 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 11/24] perl: update to 5.30.1 Alexander Kanavin
2019-12-09 23:41   ` Richard Purdie
2019-12-10 11:48     ` Alexander Kanavin
2019-12-05 15:43 ` [PATCH 12/24] bluez: update 5.50 -> 5.52 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 13/24] libsoup-2.4: update to 2.68.3 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 14/24] shadow: update 4.6 -> 4.8 Alexander Kanavin
2019-12-10  4:56   ` Alex Kiernan
2019-12-10 11:38     ` Alexander Kanavin
2019-12-05 15:43 ` [PATCH 15/24] sysklogd: update to 2.0.3 Alexander Kanavin
2019-12-05 23:48   ` Ross Burton
2019-12-06 13:15     ` Alexander Kanavin
2019-12-05 15:43 ` [PATCH 16/24] libtasn1: update to 4.15.0 Alexander Kanavin
2019-12-05 16:55   ` Khem Raj
2019-12-06 13:22     ` Alexander Kanavin
2019-12-05 15:43 ` [PATCH 17/24] texinfo: update to 6.7 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 18/24] sysstat: update to 12.2.0 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 19/24] mkfontscale: update to 1.2.1 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 20/24] libxkbcommon: update to 0.9.1 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 21/24] xkeyboard-config: update to 2.28 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 22/24] debianutils: update to 4.9 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 23/24] nspr: update to 4.24 Alexander Kanavin
2019-12-05 15:43 ` [PATCH 24/24] sysvinit: update 2.88dsf -> 2.96 Alexander Kanavin
2019-12-05 16:02 ` ✗ patchtest: failure for "rpm: upgrade to 4.15.1..." and 23 more Patchwork
2019-12-07 22:48 ` [PATCH 01/24] rpm: upgrade to 4.15.1 Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.