[pacman-dev] [PATCH 1/1] makepkg: add support for parallel jobs during compilation
David Cohen
dacohen at pm.me
Mon Sep 6 19:33:17 UTC 2021
Currently PKGBUILD has no way to receive from makepkg if it wants to use
parallel jobs during compilation. This patch adds the '-jN' option to
makepkg, which will propagate to PKGBUILD 2 variables:
JOBS is 0 if options is not used, or N otherwise.
JOBS_ARG is an empty string is option is not used, or '-jN' otherwise.
If the PKGBUILD script does not support parallel jobs, this option will
have no impact during the compilation.
Signed-off-by: David Cohen <dacohen at pm.me>
---
doc/makepkg.8.asciidoc | 7 +++++++
scripts/makepkg.sh.in | 6 +++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/doc/makepkg.8.asciidoc b/doc/makepkg.8.asciidoc
index 38032e7b..6b6a481e 100644
--- a/doc/makepkg.8.asciidoc
+++ b/doc/makepkg.8.asciidoc
@@ -99,6 +99,13 @@ Options
Install or upgrade the package after a successful build using
linkman:pacman[8].
+*-j* <jobs>::
+ Suggest simultaneous jobs in parallel during compilation. If `PKGBUILD`
+ supports parallel compilation, it can use JOBS and JOBS_ARG variables.
+ JOBS is 0 if option is not used, or <jobs> otherwise.
+ JOBS_ARG is empty string if option is not used, or -j<jobs> otherwise.
+ If `PKGBUILD` does not support it, the option will make no difference.
+
*-L, \--log*::
Enable logging. This will use the *tee* program to send the output of each
of the PKGBUILD functions to both the console and to a text file in the
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index e58edfa1..1a590d03 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -61,6 +61,8 @@ HOLDVER=0
IGNOREARCH=0
INFAKEROOT=0
INSTALL=0
+JOBS=0
+JOBS_ARG=''
LOGGING=0
NEEDED=0
NOARCHIVE=0
@@ -975,6 +977,7 @@ usage() {
printf -- "$(gettext " -g, --geninteg Generate integrity checks for source files")\n"
printf -- "$(gettext " -h, --help Show this help message and exit")\n"
printf -- "$(gettext " -i, --install Install package after successful build")\n"
+ printf -- "$(gettext " -j <jobs> Suggest simultaneous jobs in parallel during compilation")\n"
printf -- "$(gettext " -L, --log Log package build process")\n"
printf -- "$(gettext " -m, --nocolor Disable colorized output messages")\n"
printf -- "$(gettext " -o, --nobuild Download and extract files only")\n"
@@ -1037,7 +1040,7 @@ fi
ARGLIST=("$@")
# Parse Command Line Options.
-OPT_SHORT="AcCdefFghiLmop:rRsSV"
+OPT_SHORT="AcCdefFghij:Lmop:rRsSV"
OPT_LONG=('allsource' 'check' 'clean' 'cleanbuild' 'config:' 'force' 'geninteg'
'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'noarchive' 'nobuild'
'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 'packagelist'
@@ -1076,6 +1079,7 @@ while true; do
-g|--geninteg) BUILDPKG=0 GENINTEG=1 IGNOREARCH=1;;
--holdver) HOLDVER=1 ;;
-i|--install) INSTALL=1 ;;
+ -j) shift; JOBS=$1 JOBS_ARG="-j$1" ;;
--key) shift; GPGKEY=$1 ;;
-L|--log) LOGGING=1 ;;
-m|--nocolor) USE_COLOR='n'; PACMAN_OPTS+=("--color" "never") ;;
--
2.33.0
More information about the pacman-dev
mailing list