Hi

A lot of PKGBUILD calls patch in build(), causing errors when you run makepkg --noextract. Patchs/sed and other non-idempotent operations on the sources should be run in another function, which whould only been called after extracting the sources, and not all the times build() is run.

Patch attached :

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index abfabdf..cf4b542 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -70,6 +70,7 @@ LOGGING=0
 SOURCEONLY=0
 IGNOREARCH=0
 HOLDVER=0
+POSTEXTRACTFUNC=0
 BUILDFUNC=0
 CHECKFUNC=0
 PKGFUNC=0
@@ -1004,6 +1005,10 @@ run_function() {
     eval "$shellopts"
 }

+run_postextract() {
+    run_function_safe "postextract"
+}
+
 run_build() {
     # use distcc if it is requested (check buildenv and PKGBUILD opts)
     if check_buildenv "distcc" "y" && ! check_option "distc" "n"; then
@@ -2280,6 +2285,9 @@ if (( ${#pkgname[@]} > 1 )); then
 fi

 # test for available PKGBUILD functions
+if declare -f postextract >/dev/null; then
+    POSTEXTRACTFUNC=1
+fi
 if declare -f build >/dev/null; then
     BUILDFUNC=1
 fi
@@ -2491,6 +2499,9 @@ else
     download_sources
     check_source_integrity
     extract_sources
+    if (( POSTEXTRACTFUNC )); then
+        run_postextract
+  fi
 fi

 if (( NOBUILD )); then


Reply via email to