summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2012-07-16 14:25:24 +0200
committerAllan McRae <allan@archlinux.org>2012-08-03 16:16:39 +0200
commita818766c6e693fcc5781574d05ee02ac4b6a8dcd (patch)
treeaf5b2c78dc64866e50d795be7a3401d12c51a4a4
parent7e4aa9e52492450db1705f1057e82934b1187e0e (diff)
downloadpacman-a818766c6e693fcc5781574d05ee02ac4b6a8dcd.tar.gz
pacman-a818766c6e693fcc5781574d05ee02ac4b6a8dcd.tar.xz
makepkg: delay checking for build package with pkgver()
If a pkgver() function is specified, delay checking the package is built until the pkgver is updated.. Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/makepkg.sh.in103
1 files changed, 57 insertions, 46 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ec78970c..dd4066bf 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -75,6 +75,7 @@ PREPAREFUNC=0
BUILDFUNC=0
CHECKFUNC=0
PKGFUNC=0
+PKGVERFUNC=0
SPLITPKG=0
PKGLIST=()
SIGNPKG=''
@@ -609,9 +610,10 @@ download_sources() {
esac
done
- if declare -f pkgver >/dev/null && (( GET_VCS )); then
+ if (( PKGVERFUNC && GET_VCS )); then
update_pkgver
check_pkgver || exit 1
+ check_build_status
fi
popd &>/dev/null
@@ -1875,7 +1877,7 @@ check_sanity() {
ret=1
fi
- if ! declare -f pkgver >/dev/null; then
+ if (( ! PKGVERFUNC )) ; then
check_pkgver || ret=1
fi
@@ -2113,6 +2115,53 @@ check_software() {
return $ret
}
+check_build_status() {
+ if (( ! SPLITPKG )); then
+ fullver=$(get_full_version)
+ pkgarch=$(get_pkg_arch)
+ if [[ -f $PKGDEST/${pkgname}-${fullver}-${pkgarch}${PKGEXT} ]] \
+ && ! (( FORCE || SOURCEONLY || NOBUILD )); then
+ if (( INSTALL )); then
+ warning "$(gettext "A package has already been built, installing existing package...")"
+ install_package
+ exit $?
+ else
+ error "$(gettext "A package has already been built. (use %s to overwrite)")" "-f"
+ exit 1
+ fi
+ fi
+ else
+ allpkgbuilt=1
+ somepkgbuilt=0
+ for pkg in ${pkgname[@]}; do
+ fullver=$(get_full_version $pkg)
+ pkgarch=$(get_pkg_arch $pkg)
+ if [[ -f $PKGDEST/${pkg}-${fullver}-${pkgarch}${PKGEXT} ]]; then
+ somepkgbuilt=1
+ else
+ allpkgbuilt=0
+ fi
+ done
+ if ! (( FORCE || SOURCEONLY || NOBUILD )); then
+ if (( allpkgbuilt )); then
+ if (( INSTALL )); then
+ warning "$(gettext "The package group has already been built, installing existing packages...")"
+ install_package
+ exit $?
+ else
+ error "$(gettext "The package group has already been built. (use %s to overwrite)")" "-f"
+ exit 1
+ fi
+ fi
+ if (( somepkgbuilt && ! PKGVERFUNC )); then
+ error "$(gettext "Part of the package group has already been built. (use %s to overwrite)")" "-f"
+ exit 1
+ fi
+ fi
+ unset allpkgbuilt somepkgbuilt
+ fi
+}
+
backup_package_variables() {
local var
for var in ${splitpkg_overrides[@]}; do
@@ -2474,6 +2523,10 @@ if (( GENINTEG )); then
exit 0 # $E_OK
fi
+if declare -f pkgver >/dev/null; then
+ PKGVERFUNC=1
+fi
+
# check the PKGBUILD for some basic requirements
check_sanity || exit 1
@@ -2520,50 +2573,8 @@ if { [[ -z $SIGNPKG ]] && check_buildenv "sign" "y"; } || [[ $SIGNPKG == 'y' ]];
fi
fi
-
-if (( ! SPLITPKG )); then
- fullver=$(get_full_version)
- pkgarch=$(get_pkg_arch)
- if [[ -f $PKGDEST/${pkgname}-${fullver}-${pkgarch}${PKGEXT} ]] \
- && ! (( FORCE || SOURCEONLY || NOBUILD )); then
- if (( INSTALL )); then
- warning "$(gettext "A package has already been built, installing existing package...")"
- install_package
- exit $?
- else
- error "$(gettext "A package has already been built. (use %s to overwrite)")" "-f"
- exit 1
- fi
- fi
-else
- allpkgbuilt=1
- somepkgbuilt=0
- for pkg in ${pkgname[@]}; do
- fullver=$(get_full_version $pkg)
- pkgarch=$(get_pkg_arch $pkg)
- if [[ -f $PKGDEST/${pkg}-${fullver}-${pkgarch}${PKGEXT} ]]; then
- somepkgbuilt=1
- else
- allpkgbuilt=0
- fi
- done
- if ! (( FORCE || SOURCEONLY || NOBUILD )); then
- if (( allpkgbuilt )); then
- if (( INSTALL )); then
- warning "$(gettext "The package group has already been built, installing existing packages...")"
- install_package
- exit $?
- else
- error "$(gettext "The package group has already been built. (use %s to overwrite)")" "-f"
- exit 1
- fi
- fi
- if (( somepkgbuilt )); then
- error "$(gettext "Part of the package group has already been built. (use %s to overwrite)")" "-f"
- exit 1
- fi
- fi
- unset allpkgbuilt somepkgbuilt
+if (( ! PKGVERFUNC )); then
+ check_build_status
fi
# Run the bare minimum in fakeroot