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@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