public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: man/, lib/portage/, lib/portage/package/ebuild/, bin/
@ 2022-10-18  0:37 Sam James
  0 siblings, 0 replies; only message in thread
From: Sam James @ 2022-10-18  0:37 UTC (permalink / raw
  To: gentoo-commits

commit:     e261ba845df7342eb72ee0ffb1ad84dabdd154a9
Author:     Sheng Yu <syu.os <AT> protonmail <DOT> com>
AuthorDate: Sat Oct 15 04:09:01 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Oct 18 00:36:30 2022 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=e261ba84

Add per format compression flags for binpkg

This added new config BINPKG_COMPRESS_FLAGS_[format] to be used
for different compression method. General BINPKG_COMPRESS_FLAGS
will be ignored if current method had specified BINPKG_COMPRESS_FLAGS_[format]

e.g. BINPKG_COMPRESS_FLAGS_ZSTD="-9"

Bug: https://bugs.gentoo.org/871573
Signed-off-by: Sheng Yu <syu.os <AT> protonmail.com>
Closes: https://github.com/gentoo/portage/pull/909
Signed-off-by: Sam James <sam <AT> gentoo.org>

 bin/quickpkg                           | 12 ++++++++++++
 lib/portage/gpkg.py                    | 12 ++++++++++--
 lib/portage/package/ebuild/config.py   | 11 +++++++++++
 lib/portage/package/ebuild/doebuild.py | 19 +++++++++++++++----
 man/make.conf.5                        | 12 ++++++++++++
 5 files changed, 60 insertions(+), 6 deletions(-)

diff --git a/bin/quickpkg b/bin/quickpkg
index 9ff8d7b5a..44e3a7123 100755
--- a/bin/quickpkg
+++ b/bin/quickpkg
@@ -153,6 +153,18 @@ def quickpkg_atom(options, infos, arg, eout):
                         "compress": "cat",
                         "package": "sys-apps/coreutils",
                     }
+
+                if (
+                    settings.get(
+                        f"BINPKG_COMPRESS_FLAGS_{binpkg_compression.upper()}", None
+                    )
+                    is not None
+                ):
+                    compression["compress"] = compression["compress"].replace(
+                        "${BINPKG_COMPRESS_FLAGS}",
+                        f"${{BINPKG_COMPRESS_FLAGS_{binpkg_compression.upper()}}}",
+                    )
+
                 try:
                     compression_binary = shlex_split(
                         varexpand(compression["compress"], mydict=settings)

diff --git a/lib/portage/gpkg.py b/lib/portage/gpkg.py
index 1f8fa1fd3..42e1c60fd 100644
--- a/lib/portage/gpkg.py
+++ b/lib/portage/gpkg.py
@@ -1788,8 +1788,16 @@ class gpkg:
         if mode not in compressor:
             raise InvalidCompressionMethod("{}: {}".format(compression, mode))
 
-        cmd = compressor[mode]
-        cmd = cmd.replace(
+        if mode == "compress" and (
+            self.settings.get(f"BINPKG_COMPRESS_FLAGS_{compression.upper()}", None)
+            is not None
+        ):
+            compressor["compress"] = compressor["compress"].replace(
+                "${BINPKG_COMPRESS_FLAGS}",
+                f"${{BINPKG_COMPRESS_FLAGS_{compression.upper()}}}",
+            )
+
+        cmd = compressor[mode].replace(
             "{JOBS}", str(makeopts_to_job_count(self.settings.get("MAKEOPTS", "1")))
         )
         cmd = shlex_split(varexpand(cmd, mydict=self.settings))

diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
index 2530c9d31..74f7ab371 100644
--- a/lib/portage/package/ebuild/config.py
+++ b/lib/portage/package/ebuild/config.py
@@ -1573,6 +1573,17 @@ class config:
                     noiselevel=-1,
                 )
             else:
+                if (
+                    self.get(
+                        f"BINPKG_COMPRESS_FLAGS_{binpkg_compression.upper()}", None
+                    )
+                    is not None
+                ):
+                    compression["compress"] = compression["compress"].replace(
+                        "${BINPKG_COMPRESS_FLAGS}",
+                        f"${{BINPKG_COMPRESS_FLAGS_{binpkg_compression.upper()}}}",
+                    )
+
                 try:
                     compression_binary = shlex_split(
                         portage.util.varexpand(compression["compress"], mydict=self)

diff --git a/lib/portage/package/ebuild/doebuild.py b/lib/portage/package/ebuild/doebuild.py
index 4f7049c21..e9f172d22 100644
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@ -255,7 +255,7 @@ def _spawn_phase(
             actionmap=actionmap,
             returnpid=returnpid,
             logfile=logfile,
-            **kwargs
+            **kwargs,
         )
 
     # The logfile argument is unused here, since EbuildPhase uses
@@ -266,7 +266,7 @@ def _spawn_phase(
         phase=phase,
         scheduler=SchedulerInterface(asyncio._safe_loop()),
         settings=settings,
-        **kwargs
+        **kwargs,
     )
 
     ebuild_phase.start()
@@ -666,6 +666,17 @@ def doebuild_environment(
                 # Empty BINPKG_COMPRESS disables compression.
                 mysettings["PORTAGE_COMPRESSION_COMMAND"] = "cat"
         else:
+            if (
+                settings.get(
+                    f"BINPKG_COMPRESS_FLAGS_{binpkg_compression.upper()}", None
+                )
+                is not None
+            ):
+                compression["compress"] = compression["compress"].replace(
+                    "${BINPKG_COMPRESS_FLAGS}",
+                    f"${{BINPKG_COMPRESS_FLAGS_{binpkg_compression.upper()}}}",
+                )
+
             try:
                 compression_binary = compression["compress"].replace(
                     "{JOBS}",
@@ -1908,7 +1919,7 @@ def spawn(
     ipc=True,
     mountns=False,
     pidns=False,
-    **keywords
+    **keywords,
 ):
     """
     Spawn a subprocess with extra portage-specific options.
@@ -2116,7 +2127,7 @@ def spawn(
             scheduler=SchedulerInterface(asyncio._safe_loop()),
             spawn_func=spawn_func,
             settings=mysettings,
-            **keywords
+            **keywords,
         )
 
         proc.start()

diff --git a/man/make.conf.5 b/man/make.conf.5
index 11bcbe238..7f398c28e 100644
--- a/man/make.conf.5
+++ b/man/make.conf.5
@@ -141,6 +141,18 @@ Defaults to "".
 BINPKG_COMPRESS_FLAGS="-9"
 .fi
 .TP
+\fBBINPKG_COMPRESS_FLAGS_[format]\fR = \fI"arguments for [format] compression \
+command"\fR
+This variable is used to add additional arguments only for the specified \
+[format] compression command selected by \fBBINPKG_COMPRESS\fR.
+\fBBINPKG_COMPRESS_FLAGS\fR will be ignored when using [format] compression.
+.br
+.I Example:
+.nf
+# Set only zstd to use compression level 9:
+BINPKG_COMPRESS_FLAGS_ZSTD="-9"
+.fi
+.TP
 \fBBINPKG_GPG_SIGNING_BASE_COMMAND\fR = \fI"GPG command and arguments \
 [PORTAGE_CONFIG]"\fR
 The base command will be used for all signing operations.


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-18  0:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-18  0:37 [gentoo-commits] proj/portage:master commit in: man/, lib/portage/, lib/portage/package/ebuild/, bin/ Sam James

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox