diff --git a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/Manifest b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/Manifest
index 9ddeb53744..77293a9cd1 100644
--- a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/Manifest
+++ b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/Manifest
@@ -1,29 +1 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA256
-
-AUX lrzsz-0.12.20-automake-1.12.patch 793 SHA256 da14545c343544d9c35cb20d9574f1f16cb39a057be1cb0af79998a5c0960455 SHA512 8e55cec506a494f97e7bd0c7bf910a0f49ab56485fe916e6d9e7dec7c6ff0f14aadd2b88d393ea16493c1780405e69ec7876490bf93fd05a8c51a3f58666a4a0 WHIRLPOOL 2494d8e15ee9d08f1001f512fca0bbf13646aead8d73100a003d56c99954fff133ff3c475dd13d458d8eca035949ee0c4c9d4d4f590f72fa55a7c6dbd9c8be6b
-AUX lrzsz-0.12.20-automake-1.13.patch 454 SHA256 e25ebcc294beb5628e9801142a5dc4efb3ed1590f9afb89512cd0e51d2db5a72 SHA512 75b0f707704bb4f788de9f2fbb82c29daaa4b748e151271ba2617d24d759a84dea323f2f160b727e2c94675df78ffe1bd8368dd593d4582cbb567643717ec68e WHIRLPOOL 866e2c9300e69e44948bcc2537e8726148cbb06fcf1a4eefd0fbf9437853a740f8ca1e9d0299df6d557481f88b155c8ddf928edefb0e6ef384367117065894cc
-AUX lrzsz-autotools.patch 8725 SHA256 05efb70cbe0a72a4ff3bfc89f9af05c79c215d7b4ffc7a883cd8ece56e605eb2 SHA512 4ba98fb4a72d8fcc654741d57992598d56eded61e7b89c54d44edd7a609149e15d9948d777d70bf41137daa0b860c67e1212a3f38519434cb5d44546bfb94909 WHIRLPOOL f37457903b0fb0638401edb084aac1ca64bb7e41473c8e25c624c3b0ba363d26b1b61a0334db67f10225696e5e69a0464084ca2a5ce3200ea9e17b0af4773d7e
-AUX lrzsz-implicit-decl.patch 428 SHA256 867e4dc69fc83d0f96bb46d11d44b9575106e199506cf7098be0a5d2d9e39d81 SHA512 7dd642aa6701671986e6ab1635935c7a8088ad5ee74131b7c486e2e87d748fc835798d1a8a291e85a80ba3f88328ce4f293a8dafb1ebd9924f1f31fb2bd3a7d7 WHIRLPOOL f896657ad15689eec5d586e2b2954d32bed9a45583b1c545a80c5a97d4ac1f16cdebbf5232630c5480b55ae71eb841cace4701cbc095eda36809516387480d0c
-DIST lrzsz-0.12.20.tar.gz 280938 SHA256 c28b36b14bddb014d9e9c97c52459852f97bd405f89113f30bee45ed92728ff1 SHA512 9bce64036f1f1c65f5910f19802aecaf3dc5ffeab0feeca10fa8d2fe1b83e212391cce23056d22fd0eda52df89e12ede68eb5d22ffcf22f935910d2af7399f12 WHIRLPOOL 17934730db44d11c08b700cd68d8a1e619612bf158db106ef8e7fc54e623b0c5e98a133870cf8cd0b8f824c3cf24b24f7102725dcf438d307a2e1d3839e0d1d5
-EBUILD lrzsz-0.12.20-r3.ebuild 1724 SHA256 69235bdee88152dc4de51402bd20197c57711248bbcf2dad7aa283869376867b SHA512 d7c24632ee366d59852dffd51191d8d0988f5af563749fe99b2f8d0f0429be98ecc71966413b1b2633586024e92a431df7784778399058d63bed5837545b4fac WHIRLPOOL 6e8554eb3540e3c47d99c71ab7bcb65cd249319ef72385f98cb913c2be8b87e5ad632f9a799877dad03838febf7f2c1d2c6af87c97f3b5b2e817ad15e68e435a
-MISC ChangeLog 6389 SHA256 5dd07ea33de701dbfea7d8b896874ceefcd67708b2bdf672baf3ab93d001d67e SHA512 90d54acb6cafc47e2291feb8f13c2664b6e879071510c0e0a35e6f7ad00c0d006573396a4749ad21170f4c32bbcdfe5b1084832f40b5adad7acf8c614bbd2dae WHIRLPOOL 9d30aef5977179c77f7628e8958247aa1e2077d09e99fe2d10ae7ff11e94083887ad173be0707ac012a17ea4c4d05ce7e8f588dbc927fdcc1c5b0cd0ab1c3b83
-MISC metadata.xml 275 SHA256 e398d119aa44aee1268aeba20f0ff50ce658a9d0011d476c9f3f7e060aac3d0d SHA512 71e87aef3131e0835223a9deca5ffeff8fd5e18d5ba2cdd2d53a9faf07c6e41d8a8131637d77ff77f52ebfe0493f7aebd870082627e69cb966077032c17af256 WHIRLPOOL 72cb28b728a06068fcdab9120951db2220420a914d7c004bf7a5b3929e235ef3ce56283777945ba13192a0c0cbfe76e27255f1623d19402fb8b11da653e29456
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2
-Comment: GPGTools - https://gpgtools.org
-
-iQIcBAEBCAAGBQJT3dBHAAoJED/EDWHtqUmqX8gP/R8aPcwIkbbn8HfXqkmhwvTD
-1Y+UGjPOo9cgmzJSJnUFuvUYWMV1KTEqULnrlO1n/XuwM6ArYvs4anuBej75St5Z
-nu3ys6lsm5zzagQoJwXv1ZIp0L7ThzJUbXBuxnSnL6McqibXw6FH7CFhjshT/NG7
-6MYJa0o7EJQAGN2NamU9CaAhPyXHTzMuvDRopzkIsN28JFwyUJ8dO7ZfEzjTvs91
-TdKR7JZebNDafj5WVk5mcGu8ZVUASIjOoOWWGaH66uvK+l6jJWOG467TSfWSzMJd
-mQeyryeJ71GSPa/PbevKEJsmgGNnWvbL86B/jrZe44cwPco2pD0Oke09FC0BIIfC
-sgv7Lhb8ccCbw93684a3Dc61+ArgRwGPsYLgoEHFid+QdQjs78SnNZ2vEpz2yqj8
-FWa2jFnc9MtXGvVxSrmg7+ypofFzYOpUKw2PdmCBgGAq/J9PoZXUH59jW80kdxLj
-9yfiMDh3GZ3rCQOsdVnX3cvT5je+qSM0N90M4+DoS6yBuljMUTeLM/htUtyTiNwu
-pQii8ZYZBPgJNxIJEfp0VXmmlsIpDzDRUyB3j2+ZdhhaXzqgslJPTABoFaLp2bLF
-OcLxxB6c6vUyn6OtOtKCOQuoWsFxplxH1kPyZZ5Xg3td/Yfibj5fnLtu2BaL4IyJ
-VGd1M5ov+jN/1IjENrtl
-=65yx
------END PGP SIGNATURE-----
+DIST lrzsz-0.12.20.tar.gz 280938 BLAKE2B 86511ab112da849f5894f18c045f2c8a9dd4c4e97426c1d98c5b91aade6c39e26f4a7e5674e057c9596a240dfd3ef32053fcdc8ee58b33654cf15eec64779b1e SHA512 9bce64036f1f1c65f5910f19802aecaf3dc5ffeab0feeca10fa8d2fe1b83e212391cce23056d22fd0eda52df89e12ede68eb5d22ffcf22f935910d2af7399f12
diff --git a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/files/lrzsz-0.12.20-AR.patch b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/files/lrzsz-0.12.20-AR.patch
new file mode 100644
index 0000000000..fd923d5374
--- /dev/null
+++ b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/files/lrzsz-0.12.20-AR.patch
@@ -0,0 +1,10 @@
+--- a/configure.in
++++ b/configure.in
+@@ -95,6 +95,7 @@ AC_PROG_GCC_TRADITIONAL
+ dnl AC_PROG_INSTALL included in AM_INIT_AUTOMAKE
+ dnl AC_PROG_MAKE_SET included in AM_INIT_AUTOMAKE
+ AC_PROG_RANLIB
++AM_PROG_AR
+ AC_ISC_POSIX
+ AC_USE_SYSTEM_EXTENSIONS
+ AM_GNU_GETTEXT
diff --git a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/files/lrzsz-0.12.20-gettext-0.20.patch b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/files/lrzsz-0.12.20-gettext-0.20.patch
new file mode 100644
index 0000000000..3c58bd1809
--- /dev/null
+++ b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/files/lrzsz-0.12.20-gettext-0.20.patch
@@ -0,0 +1,23 @@
+diff -udr a/configure.in b/configure.in
+--- a/configure.in 1998-12-30 08:50:07.000000000 +0100
++++ b/configure.in 2019-06-01 20:38:54.918650170 +0200
+@@ -1,3 +1,4 @@
++m4_pattern_allow(.*)
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT(src/crctab.c)
+ AM_INIT_AUTOMAKE(lrzsz, 0.12.20)
+diff -udr lrzsz-0.12.20.orig/po/Makefile.in.in lrzsz-0.12.20/po/Makefile.in.in
+--- a/po/Makefile.in.in 1998-04-26 15:22:40.000000000 +0200
++++ b/po/Makefile.in.in 2019-06-01 20:48:09.020703542 +0200
+@@ -110,9 +110,9 @@
+ install-data-no: all
+ install-data-yes: all
+ if test -r $(MKINSTALLDIRS); then \
+- $(MKINSTALLDIRS) $(datadir); \
++ $(MKINSTALLDIRS) $(DATADIR); \
+ else \
+- $(top_srcdir)/mkinstalldirs $(datadir); \
++ $(top_srcdir)/mkinstalldirs $(DATADIR); \
+ fi
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
diff --git a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/lrzsz-0.12.20-r4.ebuild b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/lrzsz-0.12.20-r4.ebuild
new file mode 100644
index 0000000000..b5461864bb
--- /dev/null
+++ b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/lrzsz-0.12.20-r4.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic toolchain-funcs
+
+DESCRIPTION="Communication package providing the X, Y, and ZMODEM file transfer protocols"
+HOMEPAGE="https://www.ohse.de/uwe/software/lrzsz.html"
+SRC_URI="https://www.ohse.de/uwe/releases/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux"
+IUSE="nls"
+
+DEPEND="nls? ( virtual/libintl )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-autotools.patch
+ "${FILESDIR}"/${PN}-implicit-decl.patch
+ "${FILESDIR}"/${P}-automake-1.12.patch
+ "${FILESDIR}"/${P}-automake-1.13.patch
+ "${FILESDIR}"/${P}-gettext-0.20.patch
+ "${FILESDIR}"/${P}-AR.patch
+)
+
+DOCS=( AUTHORS COMPATABILITY ChangeLog NEWS \
+ README{,.cvs,.gettext,.isdn4linux,.tests} THANKS TODO )
+
+src_prepare() {
+ default
+ # automake is unhappy if this is missing
+ >> config.rpath || die
+ # This is too old. Remove it so automake puts in a newer copy.
+ rm -f missing || die
+ # Autoheader does not like seeing this file.
+ rm -f acconfig.h || die
+
+ eautoreconf
+}
+
+src_configure() {
+ tc-export CC
+ append-flags -Wstrict-prototypes
+ econf $(use_enable nls)
+}
+
+src_test() {
+ #Don't use check target.
+ #See bug #120748 before changing this function.
+ make vcheck || die "tests failed"
+}
+
+src_install() {
+ default
+
+ local x
+ for x in {r,s}{b,x,z} ; do
+ dosym l${x} /usr/bin/${x}
+ dosym l${x:0:1}z.1 /usr/share/man/man1/${x}.1
+ [ "${x:1:1}" = "z" ] || dosym l${x:0:1}z.1 /usr/share/man/man1/l${x}.1
+ done
+}
diff --git a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/metadata.xml b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/metadata.xml
index a46ef861b0..71b1461e11 100644
--- a/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/metadata.xml
+++ b/sdk_container/src/third_party/portage-stable/net-dialup/lrzsz/metadata.xml
@@ -1,6 +1,8 @@
-net-dialup
-Communication package providing the X, Y, and ZMODEM file transfer protocols
+
+ embedded@gentoo.org
+ Embedded Gentoo
+
diff --git a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/Manifest b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/Manifest
index 83c6b66de3..61bb66f324 100644
--- a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/Manifest
+++ b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/Manifest
@@ -1 +1 @@
-DIST gettext-0.19.8.1.tar.gz 19704011 BLAKE2B 17dc7aad338a26d71b818fea51e46a47dccf14744ee575ce86b591becaea402e36d64dc018e1a84113c356122ffef367cf2fa424e51ebc9720350040b4960091 SHA512 073042fa2dc48804c58e76f036130a669e19612c25427b0ab14d0b366b549a63751bf3af03bfd0745d7c4f72497a4b2aab26a3cc6de83189ce111679073878e1
+DIST gettext-0.21.tar.gz 24181849 BLAKE2B 2eae99d0916b00b2af6fbc6bf7e309076519a10fea16cd49e7aa29fe8aec1ee7c784c6277281b764dc4abacf400cd3fe461129586303c8cd337db15c76cb4b87 SHA512 bbe590c5dd3580c75bf30ff768da99a88eb8d466ec1ac9eea20be4cab4357ecf72448e6b81b47425e39d50fa6320ba426632914d7898dfebb4f159abc39c31d1
diff --git a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.19.8.1-format-security.patch b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.19.8.1-format-security.patch
deleted file mode 100644
index 6af1604198..0000000000
--- a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.19.8.1-format-security.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From e546de65a333789e83f5485757967cee29ee3681 Mon Sep 17 00:00:00 2001
-From: Robert Yang
-Date: Sun, 19 Feb 2017 23:32:46 -0800
-Subject: [PATCH] cr-statement.c/timsort.h: fix formatting issues
-
-Fixed when compile with "-Wformat -Wformat-security -Werror=format-security":
-| gettext-tools/gnulib-lib/libcroco/cr-statement.c: In function 'cr_statement_dump_charset':
-| gettext-tools/gnulib-lib/libcroco/cr-statement.c:2661:17: error: format not a string literal and no format arguments [-Werror=format-security]
-| fprintf (a_fp, str) ;
-
-And:
-gettext-tools/gnulib-lib/libxml/timsort.h:326:80: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'unsigned int' [-Wformat=]
- fprintf(stderr, "Error allocating temporary storage for tim sort: need %lu bytes", sizeof(SORT_TYPE) * new_size);
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang
----
- gettext-tools/gnulib-lib/libcroco/cr-statement.c | 10 +++++-----
- gettext-tools/gnulib-lib/libxml/timsort.h | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/gettext-tools/gnulib-lib/libcroco/cr-statement.c b/gettext-tools/gnulib-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
-@@ -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);
- if (str) {
-- fprintf (a_fp, str);
-+ fprintf (a_fp, "%s", str);
- g_free (str);
- str = NULL;
- }
-@@ -2658,7 +2658,7 @@ cr_statement_dump_charset (CRStatement * a_this, FILE * a_fp, gulong a_indent)
- str = cr_statement_charset_to_string (a_this,
- a_indent) ;
- if (str) {
-- fprintf (a_fp, str) ;
-+ fprintf (a_fp, "%s", str) ;
- g_free (str) ;
- str = NULL ;
- }
-@@ -2685,7 +2685,7 @@ cr_statement_dump_page (CRStatement * a_this, FILE * a_fp, gulong a_indent)
-
- str = cr_statement_at_page_rule_to_string (a_this, a_indent) ;
- if (str) {
-- fprintf (a_fp, str);
-+ fprintf (a_fp, "%s", str);
- g_free (str) ;
- str = NULL ;
- }
-@@ -2711,7 +2711,7 @@ cr_statement_dump_media_rule (CRStatement * a_this,
-
- str = cr_statement_media_rule_to_string (a_this, a_indent) ;
- if (str) {
-- fprintf (a_fp, str) ;
-+ fprintf (a_fp, "%s", str) ;
- g_free (str) ;
- str = NULL ;
- }
-@@ -2737,7 +2737,7 @@ cr_statement_dump_import_rule (CRStatement * a_this, FILE * a_fp,
-
- str = cr_statement_import_rule_to_string (a_this, a_indent) ;
- if (str) {
-- fprintf (a_fp, str) ;
-+ fprintf (a_fp, "%s", str) ;
- 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/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.20-parallel_install.patch b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.20-parallel_install.patch
new file mode 100644
index 0000000000..e47beaf944
--- /dev/null
+++ b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.20-parallel_install.patch
@@ -0,0 +1,37 @@
+From 829660df1583c6c3ee1d90291dd910f08e3b777e Mon Sep 17 00:00:00 2001
+From: Arfrever Frehtes Taifersar Arahesis
+Date: Fri, 10 May 2019 20:08:25 +0200
+Subject: [PATCH] Fix parallel install issue
+
+Signed-off-by: Lars Wendler
+---
+ gettext-tools/src/Makefile.am | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/gettext-tools/src/Makefile.am b/gettext-tools/src/Makefile.am
+index 09a3c153d..1ee49cdca 100644
+--- a/gettext-tools/src/Makefile.am
++++ b/gettext-tools/src/Makefile.am
+@@ -252,9 +252,16 @@ cldr_plurals_LDADD = libgettextsrc.la $(LDADD)
+
+ # How to get the include files of libtextstyle.
+ textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h:
+- here=`pwd`; \
+- cd ../../libtextstyle/lib && \
+- $(MAKE) install-nobase_includeHEADERS install-nobase_nodist_includeHEADERS includedir="$$here"
++ cd "$(abs_top_builddir)/../libtextstyle/lib" && $(MAKE) $@
++ if test -f "$(abs_top_builddir)/../libtextstyle/lib/$@"; then \
++ file="$(abs_top_builddir)/../libtextstyle/lib/$@"; \
++ else \
++ file="$(abs_top_srcdir)/../libtextstyle/lib/$@"; \
++ fi; \
++ target_dir="$(abs_builddir)/$@"; \
++ target_dir="$${target_dir%/*}"; \
++ $(MKDIR_P) "$${target_dir}"; \
++ $(INSTALL_HEADER) "$$file" $@
+ BUILT_SOURCES += textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h
+ MOSTLYCLEANFILES += textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h
+
+--
+2.21.0
+
diff --git a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.21-CVE-2020-12825.patch b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.21-CVE-2020-12825.patch
new file mode 100644
index 0000000000..6b4c463b41
--- /dev/null
+++ b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.21-CVE-2020-12825.patch
@@ -0,0 +1,335 @@
+https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/44cbd1e718d6a08e59b9300280c340218a84e089
+
+--- a/libtextstyle/gnulib-local/lib/libcroco/cr-parser.c
++++ b/libtextstyle/gnulib-local/lib/libcroco/cr-parser.c
+@@ -146,6 +146,8 @@ struct _CRParserPriv {
+
+ #define CHARS_TAB_SIZE 12
+
++#define RECURSIVE_CALLERS_LIMIT 100
++
+ /**
+ * IS_NUM:
+ *@a_char: the char to test.
+@@ -354,9 +356,11 @@ static enum CRStatus cr_parser_parse_selector_core (CRParser * a_this);
+
+ static enum CRStatus cr_parser_parse_declaration_core (CRParser * a_this);
+
+-static enum CRStatus cr_parser_parse_any_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls);
+
+-static enum CRStatus cr_parser_parse_block_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls);
+
+ static enum CRStatus cr_parser_parse_value_core (CRParser * a_this);
+
+@@ -794,7 +798,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_parser_try_to_skip_spaces_and_comments (a_this);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ } while (status == CR_OK);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr,
+@@ -805,7 +809,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status,
+ FALSE);
+ goto done;
+@@ -940,11 +944,11 @@ cr_parser_parse_selector_core (CRParser * a_this)
+
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+
+ } while (status == CR_OK);
+
+@@ -966,10 +970,12 @@ cr_parser_parse_selector_core (CRParser * a_this)
+ *in chapter 4.1 of the css2 spec.
+ *block ::= '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*;
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *FIXME: code this function.
+ */
+ static enum CRStatus
+-cr_parser_parse_block_core (CRParser * a_this)
++cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token = NULL;
+ CRInputPos init_pos;
+@@ -977,6 +983,9 @@ cr_parser_parse_block_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this && PRIVATE (a_this), CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token);
+@@ -1006,13 +1015,13 @@ cr_parser_parse_block_core (CRParser * a_this)
+ } else if (token->type == CBO_TK) {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ } else {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ }
+@@ -1119,7 +1128,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+ ref++;
+ goto continue_parsing;
+@@ -1133,7 +1142,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ if (status == CR_OK) {
+ ref++;
+ goto continue_parsing;
+@@ -1172,10 +1181,12 @@ cr_parser_parse_value_core (CRParser * a_this)
+ * | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;
+ *
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *@return CR_OK upon successfull completion, an error code otherwise.
+ */
+ static enum CRStatus
+-cr_parser_parse_any_core (CRParser * a_this)
++cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token1 = NULL,
+ *token2 = NULL;
+@@ -1184,6 +1195,9 @@ cr_parser_parse_any_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this, CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token1);
+@@ -1222,7 +1236,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ *We consider parameter as being an "any*" production.
+ */
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1247,7 +1261,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1275,7 +1289,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+--- a/libtextstyle/lib/libcroco/cr-parser.c
++++ b/libtextstyle/lib/libcroco/cr-parser.c
+@@ -146,6 +146,8 @@ struct _CRParserPriv {
+
+ #define CHARS_TAB_SIZE 12
+
++#define RECURSIVE_CALLERS_LIMIT 100
++
+ /**
+ * IS_NUM:
+ *@a_char: the char to test.
+@@ -354,9 +356,11 @@ static enum CRStatus cr_parser_parse_selector_core (CRParser * a_this);
+
+ static enum CRStatus cr_parser_parse_declaration_core (CRParser * a_this);
+
+-static enum CRStatus cr_parser_parse_any_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls);
+
+-static enum CRStatus cr_parser_parse_block_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls);
+
+ static enum CRStatus cr_parser_parse_value_core (CRParser * a_this);
+
+@@ -794,7 +798,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_parser_try_to_skip_spaces_and_comments (a_this);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ } while (status == CR_OK);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr,
+@@ -805,7 +809,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status,
+ FALSE);
+ goto done;
+@@ -940,11 +944,11 @@ cr_parser_parse_selector_core (CRParser * a_this)
+
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+
+ } while (status == CR_OK);
+
+@@ -966,10 +970,12 @@ cr_parser_parse_selector_core (CRParser * a_this)
+ *in chapter 4.1 of the css2 spec.
+ *block ::= '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*;
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *FIXME: code this function.
+ */
+ static enum CRStatus
+-cr_parser_parse_block_core (CRParser * a_this)
++cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token = NULL;
+ CRInputPos init_pos;
+@@ -977,6 +983,9 @@ cr_parser_parse_block_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this && PRIVATE (a_this), CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token);
+@@ -1006,13 +1015,13 @@ cr_parser_parse_block_core (CRParser * a_this)
+ } else if (token->type == CBO_TK) {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ } else {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ }
+@@ -1119,7 +1128,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+ ref++;
+ goto continue_parsing;
+@@ -1133,7 +1142,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ if (status == CR_OK) {
+ ref++;
+ goto continue_parsing;
+@@ -1172,10 +1181,12 @@ cr_parser_parse_value_core (CRParser * a_this)
+ * | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;
+ *
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *@return CR_OK upon successfull completion, an error code otherwise.
+ */
+ static enum CRStatus
+-cr_parser_parse_any_core (CRParser * a_this)
++cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token1 = NULL,
+ *token2 = NULL;
+@@ -1184,6 +1195,9 @@ cr_parser_parse_any_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this, CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token1);
+@@ -1222,7 +1236,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ *We consider parameter as being an "any*" production.
+ */
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1247,7 +1261,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1275,7 +1289,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+
diff --git a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.21_rc1-avoid_eautomake.patch b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.21_rc1-avoid_eautomake.patch
new file mode 100644
index 0000000000..8adae5d548
--- /dev/null
+++ b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/files/gettext-0.21_rc1-avoid_eautomake.patch
@@ -0,0 +1,22 @@
+--- gettext-0.21-rc1/gettext-tools/src/Makefile.in
++++ gettext-0.21-rc1/gettext-tools/src/Makefile.in
+@@ -4106,9 +4106,16 @@
+
+ # How to get the include files of libtextstyle.
+ @USE_INSTALLED_LIBTEXTSTYLE_FALSE@textstyle.h textstyle/stdbool.h textstyle/version.h textstyle/woe32dll.h:
+-@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ here=`pwd`; \
+-@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ cd ../../libtextstyle/lib && \
+-@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ $(MAKE) install-nobase_includeHEADERS install-nobase_nodist_includeHEADERS includedir="$$here"
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ cd "$(abs_top_builddir)/../libtextstyle/lib" && $(MAKE) $@
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ if test -f "$(abs_top_builddir)/../libtextstyle/lib/$@"; then \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ file="$(abs_top_builddir)/../libtextstyle/lib/$@"; \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ else \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ file="$(abs_top_srcdir)/../libtextstyle/lib/$@"; \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ fi; \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ target_dir="$(abs_builddir)/$@"; \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ target_dir="$${target_dir%/*}"; \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ $(MKDIR_P) "$${target_dir}"; \
++@USE_INSTALLED_LIBTEXTSTYLE_FALSE@ $(INSTALL_HEADER) "$$file" $@
+
+ # No need to install libgettextsrc.a, except on AIX.
+ install-exec-hook: install-exec-clean
diff --git a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/gettext-0.19.8.1.ebuild b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/gettext-0.21-r1.ebuild
similarity index 65%
rename from sdk_container/src/third_party/portage-stable/sys-devel/gettext/gettext-0.19.8.1.ebuild
rename to sdk_container/src/third_party/portage-stable/sys-devel/gettext/gettext-0.21-r1.ebuild
index e947a0e879..40031f2f5a 100644
--- a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/gettext-0.19.8.1.ebuild
+++ b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/gettext-0.21-r1.ebuild
@@ -1,22 +1,26 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# Note: Keep version bumps in sync with dev-libs/libintl.
-EAPI="5"
+EAPI=7
-inherit epatch epunt-cxx ltprune mono-env libtool java-pkg-opt-2 multilib-minimal
+inherit mono-env libtool java-pkg-opt-2 multilib-minimal
DESCRIPTION="GNU locale utilities"
HOMEPAGE="https://www.gnu.org/software/gettext/"
-SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
-
+if [[ "${PV}" == *_rc* ]] ; then
+ SRC_URI="https://alpha.gnu.org/gnu/${PN}/${P/_/-}.tar.bz2"
+ S="${WORKDIR}/${P/_/-}"
+else
+ SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris ~x86-winnt"
+fi
# Only libasprintf is under the LGPL (and libintl is in a sep package),
# so put that license behind USE=cxx.
LICENSE="GPL-3+ cxx? ( LGPL-2.1+ )"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
-IUSE="acl -cvs +cxx doc emacs git java ncurses nls openmp static-libs"
+IUSE="acl cvs +cxx doc emacs git java ncurses nls openmp static-libs"
# only runtime goes multilib
# Note: The version of libxml2 corresponds to the version bundled via gnulib.
@@ -31,18 +35,36 @@ DEPEND=">=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
dev-libs/expat
acl? ( virtual/acl )
ncurses? ( sys-libs/ncurses:0= )
- java? ( >=virtual/jdk-1.4:= )"
+ java? ( >=virtual/jdk-1.8:= )"
RDEPEND="${DEPEND}
!git? ( cvs? ( dev-vcs/cvs ) )
git? ( dev-vcs/git )
- java? ( >=virtual/jre-1.4 )"
+ java? ( >=virtual/jre-1.8 )"
+BDEPEND="
+ git? ( dev-vcs/git )
+"
PDEPEND="emacs? ( app-emacs/po-mode )"
MULTILIB_WRAPPED_HEADERS=(
# only installed for native ABI
/usr/include/gettext-po.h
+
+ /usr/include/autosprintf.h
+ /usr/include/textstyle.h
+ /usr/include/textstyle/stdbool.h
+ /usr/include/textstyle/version.h
+ /usr/include/textstyle/woe32dll.h
)
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.19.7-disable-libintl.patch #564168
+ "${FILESDIR}"/${PN}-0.20-parallel_install.patch #685530
+ "${FILESDIR}"/${PN}-0.21_rc1-avoid_eautomake.patch
+ "${FILESDIR}"/${PN}-0.21-CVE-2020-12825.patch
+)
+
+QA_SONAME_NO_SYMLINK=".*/preloadable_libintl.so"
+
pkg_setup() {
mono-env_pkg_setup
java-pkg-opt-2_pkg_setup
@@ -51,10 +73,8 @@ pkg_setup() {
src_prepare() {
java-pkg-opt-2_src_prepare
- epatch "${FILESDIR}"/${PN}-0.19.7-disable-libintl.patch #564168
- epatch "${FILESDIR}"/${PN}-0.19.8.1-format-security.patch
+ default
- epunt_cxx
elibtoolize
}
@@ -62,7 +82,7 @@ multilib_src_configure() {
local myconf=(
# switches common to runtime and top-level
--cache-file="${BUILD_DIR}"/config.cache
- --docdir="\$(datarootdir)/doc/${PF}"
+ #--docdir="\$(datarootdir)/doc/${PF}"
# Emacs support is now in a separate package
--without-emacs
@@ -91,7 +111,7 @@ multilib_src_configure() {
$(use_enable static-libs static)
)
- local ECONF_SOURCE=${S}
+ local ECONF_SOURCE="${S}"
if ! multilib_is_native_abi ; then
# for non-native ABIs, we build runtime only
ECONF_SOURCE+=/gettext-runtime
@@ -101,7 +121,7 @@ multilib_src_configure() {
}
multilib_src_install() {
- default
+ emake DESTDIR="${D}" install
if multilib_is_native_abi ; then
dosym msgfmt /usr/bin/gmsgfmt #43435
@@ -110,29 +130,26 @@ multilib_src_install() {
}
multilib_src_install_all() {
- use nls || rm -r "${ED}"/usr/share/locale
- use static-libs || prune_libtool_files --all
-
- rm -f "${ED}"/usr/share/locale/locale.alias "${ED}"/usr/lib/charset.alias
+ find "${ED}" -type f -name "*.la" -delete || die
if use java ; then
java-pkg_dojar "${ED}"/usr/share/${PN}/*.jar
- rm -f "${ED}"/usr/share/${PN}/*.jar
- rm -f "${ED}"/usr/share/${PN}/*.class
+ rm "${ED}"/usr/share/${PN}/*.jar || die
+ rm "${ED}"/usr/share/${PN}/*.class || die
if use doc ; then
- java-pkg_dojavadoc "${ED}"/usr/share/doc/${PF}/javadoc2
- rm -rf "${ED}"/usr/share/doc/${PF}/javadoc2
+ java-pkg_dojavadoc "${ED}"/usr/share/doc/${PF}/html/javadoc2
fi
fi
+ dodoc AUTHORS ChangeLog NEWS README THANKS
+
if use doc ; then
- dohtml "${ED}"/usr/share/doc/${PF}/*.html
+ docinto html
+ dodoc "${ED}"/usr/share/doc/${PF}/*.html
else
rm -rf "${ED}"/usr/share/doc/${PF}/{csharpdoc,examples,javadoc2,javadoc1}
fi
- rm -f "${ED}"/usr/share/doc/${PF}/*.html
-
- dodoc AUTHORS ChangeLog NEWS README THANKS
+ rm "${ED}"/usr/share/doc/${PF}/*.html || die
}
pkg_preinst() {
diff --git a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/metadata.xml b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/metadata.xml
index 7844da809a..8b69e80f97 100644
--- a/sdk_container/src/third_party/portage-stable/sys-devel/gettext/metadata.xml
+++ b/sdk_container/src/third_party/portage-stable/sys-devel/gettext/metadata.xml
@@ -15,4 +15,7 @@
this requires git at runtime, but will be faster/smaller than raw archives
+
+ cpe:/a:gnu:gettext
+