[pacman-dev] [PATCH] makepkg: Add --verifysource to only download/verify source files

Olivier Brunel i.am.jack.mail at gmail.com
Sat Feb 23 07:08:44 EST 2013


Because --noextract also implies to not download/verify source files, it wasn't
possible to simply do that, without either extracting and/or building.
(Note: --verifysource takes precedence over --noextract)

Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>
---
 doc/makepkg.8.txt     | 5 +++++
 scripts/makepkg.sh.in | 8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 498c79b..87d266b 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -65,6 +65,11 @@ Options
 	then make a package out of the result. Keep in mind that creating a
 	patch may be a better solution to allow others to use your PKGBUILD.
 
+*\--verifysource*::
+	For each source file in the source array of PKGBUILD, download the file
+	if required and perform the integrity checks. No extraction or build is
+	performed.
+
 *-f, \--force*::
 	makepkg will not build a package if a built package already exists in
 	the `PKGDEST` (set in linkman:makepkg.conf[5]) directory, which may
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index bd29d73..ce978b1 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -68,6 +68,7 @@ INSTALL=0
 NOBUILD=0
 NODEPS=0
 NOEXTRACT=0
+VERIFYSOURCE=0
 RMDEPS=0
 REPKG=0
 LOGGING=0
@@ -2409,6 +2410,7 @@ usage() {
 	printf -- "$(gettext "  -s, --syncdeps   Install missing dependencies with %s")\n" "pacman"
 	printf -- "$(gettext "  -S, --source     Generate a source-only tarball without downloaded sources")\n"
 	printf -- "$(gettext "  --allsource      Generate a source-only tarball including downloaded sources")\n"
+	printf -- "$(gettext "  --verifysource   Download source files (if needed) and perform integrity checks")\n"
 	printf -- "$(gettext "  --asroot         Allow %s to run as root user")\n" "makepkg"
 	printf -- "$(gettext "  --check          Run the %s function in the %s")\n" "check()" "$BUILDSCRIPT"
 	printf -- "$(gettext "  --config <file>  Use an alternate config file (instead of '%s')")\n" "$confdir/makepkg.conf"
@@ -2459,7 +2461,7 @@ OPT_LONG=('allsource' 'asroot' 'check' 'clean' 'config:' 'force' 'geninteg'
           'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'nobuild' 'nocolor'
           'nocheck' 'nodeps' 'noextract' 'nosign' 'pkg:' 'repackage' 'rmdeps'
           'skipchecksums' 'skipinteg' 'skippgpcheck' 'skippgpcheck' 'sign'
-          'source' 'syncdeps' 'version')
+          'source' 'syncdeps' 'verifysource' 'version')
 
 # Pacman Options
 OPT_LONG+=('asdeps' 'noconfirm' 'needed' 'noprogressbar')
@@ -2508,6 +2510,7 @@ while true; do
 		--sign)           SIGNPKG='y' ;;
 		-s|--syncdeps)    DEP_BIN=1 ;;
 		-S|--source)      SOURCEONLY=1 ;;
+		--verifysource)   VERIFYSOURCE=1 ;;
 
 		-h|--help)        usage; exit 0 ;; # E_OK
 		-V|--version)     version; exit 0 ;; # E_OK
@@ -2885,7 +2888,7 @@ mkdir -p "$srcdir"
 chmod a-s "$srcdir"
 cd_safe "$srcdir"
 
-if (( NOEXTRACT )); then
+if (( NOEXTRACT && ! VERIFYSOURCE )); then
 	warning "$(gettext "Using existing %s tree")" "src/"
 elif (( REPKG )); then
 	if (( ! PKGFUNC && ! SPLITPKG )) \
@@ -2897,6 +2900,7 @@ elif (( REPKG )); then
 else
 	download_sources
 	check_source_integrity
+	(( VERIFYSOURCE )) && exit 0 # $E_OK
 	extract_sources
 	if (( PREPAREFUNC )); then
 		run_prepare
-- 
1.8.1.4



More information about the pacman-dev mailing list