summaryrefslogtreecommitdiff
path: root/scripts/makepkg.in
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/makepkg.in')
-rw-r--r--scripts/makepkg.in360
1 files changed, 195 insertions, 165 deletions
diff --git a/scripts/makepkg.in b/scripts/makepkg.in
index 14bcfb45..b76c3f04 100644
--- a/scripts/makepkg.in
+++ b/scripts/makepkg.in
@@ -349,6 +349,189 @@ removedeps() {
fi
}
+download_sources() {
+ msg "$(gettext "Retrieving Sources...")"
+ local netfile
+ for netfile in ${source[@]}; do
+ local file=$(strip_url "$netfile")
+ if [ -f "../$file" ]; then
+ msg2 "$(gettext "Found %s in build dir")" "$file"
+ cp "../$file" .
+ continue
+ elif [ -f "$SRCDEST/$file" ]; then
+ msg2 "$(gettext "Using cached copy of %s")" "$file"
+ cp "$SRCDEST/$file" .
+ continue
+ fi
+
+ # find the client we should use for this URL
+ local dlclient=$(getdownloadclient $netfile) || exit $?
+
+ msg2 "$(gettext "Downloading %s")" "$file"
+ # fix flyspray bug #3289
+ local ret=0
+ $dlclient "$netfile" || ret=$?
+ if [ $ret -gt 0 ]; then
+ error "$(gettext "Failure while downloading %s")" "$file"
+ msg "$(gettext "Aborting...")"
+ exit 1
+ fi
+
+ if [ -n "$SRCDEST" ]; then
+ mkdir -p "$SRCDEST" && cp "$file" "$SRCDEST" || ret=$?
+ if [ $ret -gt 0 ]; then
+ warning "$(gettext "You do not have correct permissions to cache source in %s")" "$SRCDEST"
+ cp "$file" ..
+ fi
+ else
+ cp "$file" ..
+ fi
+ done
+}
+
+generate_checksums() {
+ msg "$(gettext "Generating checksums for source files...")"
+ plain ""
+
+ local integ
+ for integ in ${INTEGRITY_CHECK[@]}; do
+ integ="$(echo $integ | tr [:upper:] [:lower:])"
+ case "$integ" in
+ md5|sha1|sha256|sha384|sha512) : ;;
+ *)
+ error "$(gettext "Invalid integrity algorithm '%s' specified.")" "$integ"
+ exit 1;; # $E_CONFIG_ERROR
+ esac
+
+ if [ ! $(type -p "${integ}sum") ]; then
+ error "$(gettext "Cannot fin the '%s' program.")" "${integ}sum"
+ exit 1 # $E_MISSING_PROGRAM
+ fi
+
+ local ct=0
+ local numsrc=${#source[@]}
+ echo -n "${integ}sums=("
+
+ local i=0;
+ local indent=''
+ while [ $i -lt $((${#integ}+6)) ]; do
+ indent="$indent "
+ i=$(($i+1))
+ done
+
+ local netfile
+ for netfile in ${source[@]}; do
+ local file="$(strip_url "$netfile")"
+ local sum="$(${integ}sum "$file" | cut -d ' ' -f 1)"
+ [ $ct -gt 0 ] && echo -n "$indent"
+ echo -n "'$sum'"
+ ct=$(($ct+1))
+ [ $ct -lt $numsrc ] && echo
+ done
+
+ echo ")"
+ done
+
+ exit 0 # $E_OK
+}
+
+check_checksums() {
+ local integ
+ for integ in ${INTEGRITY_CHECK[@]}; do
+ integ="$(echo $integ | tr [:upper:] [:lower:])"
+ case "$integ" in
+ md5|sha1|sha256|sha384|sha512) : ;;
+ *)
+ error "$(gettext "Invalid integrity algorithm '%s' specified")" "$integ"
+ exit 1;; # $E_CONFIG_ERROR
+ esac
+
+ if [ ! $(type -p "${integ}sum") ]; then
+ error "$(gettext "Cannot find the %s program.")" "${integ}sum"
+ exit 1 # $E_MISSING_PROGRAM
+ fi
+
+ local integrity_sums=($(eval echo \${${integ}sums[@]}))
+ if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then
+ msg "$(gettext "Validating source files with %s")" "${integ}sums"
+ local errors=0
+ local idx=0
+ local file
+ for file in "${source[@]}"; do
+ file="$(strip_url "$file")"
+ echo -n " $file ... " >&2
+
+ if echo "${integrity_sums[$idx]} $file" | ${integ}sum --status -c - &>/dev/null; then
+ echo "$(gettext "Passed")" >&2
+ else
+ echo "$(gettext "FAILED")" >&2
+ errors=1
+ fi
+
+ idx=$(($idx+1))
+ done
+
+ if [ $errors -gt 0 ]; then
+ error "$(gettext "One or more files did not pass the validity check!")"
+ exit 1 # TODO: error code
+ fi
+ else
+ warning "$(gettext "Integrity checks (%s) are missing or incomplete.")" "$integ"
+ fi
+ done
+}
+
+extract_sources() {
+ msg "$(gettext "Extracting Sources...")"
+ local netfile
+ for netfile in "${source[@]}"; do
+ unziphack=0
+ file=$(strip_url "$netfile")
+ if in_array "$file" ${noextract[@]}; then
+ #skip source files in the noextract=() array
+ # these are marked explicitly to NOT be extracted
+ continue
+ fi
+
+ # fix flyspray #6246
+ local file_type=$(file -biz "$file")
+ local cmd=''
+ case "$file_type" in
+ *application/x-tar*application/x-compress*)
+ cmd="tar -xzf $file" ;;
+ *application/x-tar*)
+ cmd="tar -xf $file" ;;
+ *application/x-zip*)
+ unziphack=1
+ cmd="unzip -qqo $file" ;;
+ *application/x-cpio*)
+ cmd="bsdtar -x -f $file" ;;
+ *application/x-gzip*)
+ cmd="gunzip -d -f $file" ;;
+ *application/x-bzip*)
+ cmd="bunzip2 -f $file" ;;
+ esac
+
+ if [ "$cmd" != "" ]; then
+ msg2 "$cmd"
+ $cmd
+ if [ $? -ne 0 ]; then
+ # unzip will return a 1 as a warning, it is not an error
+ if [ "$unziphack" != "1" -o $? -ne 1 ]; then
+ error "$(gettext "Failed to extract %s")" "$file"
+ msg "$(gettext "Aborting...")"
+ exit 1
+ fi
+ fi
+ fi
+ done
+
+ if [ $EUID -eq 0 ]; then
+ # chown all source files to root.root
+ chown -R root.root "$srcdir"
+ fi
+}
+
run_build() {
# use distcc if it is requested (check buildenv and PKGBUILD opts)
if [ "$(check_buildenv distcc)" = "y" -a "$(check_option distcc)" != "n" ]; then
@@ -730,13 +913,13 @@ SRCDEST=${SRCDEST:-$startdir} #default to $startdir if undefined
# Only use ABSROOT if we haven't been passed a SRCROOT on the command line.
if [ -z "$SRCROOT" ]; then
- if [ -r "$confdir/abs/abs.conf" ]; then
- source "$confdir/abs/abs.conf"
- fi
- if [ -r ~/.abs.conf ]; then
- source ~/.abs.conf
- fi
- SRCROOT=$ABSROOT
+ if [ -r "$confdir/abs/abs.conf" ]; then
+ source "$confdir/abs/abs.conf"
+ fi
+ if [ -r ~/.abs.conf ]; then
+ source ~/.abs.conf
+ fi
+ SRCROOT=$ABSROOT
fi
while [ "$#" -ne "0" ]; do
@@ -886,7 +1069,7 @@ fi
# check for sudo if we will need it during makepkg execution
if [ "$ASROOT" = "0" -a \( "$DEP_BIN" = "1" -o "$DEP_SRC" = "1" \
- -o "$RMDEPS" = "1" -o "$INSTALL" = "1" \) ]; then
+ -o "$RMDEPS" = "1" -o "$INSTALL" = "1" \) ]; then
if [ ! "$(type -p sudo)" ]; then
error "$(gettext "Cannot find the sudo binary! Is sudo installed?")"
plain "$(gettext "Missing dependencies cannot be installed or removed as a normal user")"
@@ -1035,177 +1218,24 @@ cd "$srcdir"
if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
warning "$(gettext "Skipping source retrieval -- using existing src/ tree")"
else
- msg "$(gettext "Retrieving Sources...")"
- for netfile in ${source[@]}; do
- file=$(strip_url "$netfile")
- if [ -f "../$file" ]; then
- msg2 "$(gettext "Found %s in build dir")" "$file"
- cp "../$file" .
- continue
- elif [ -f "$SRCDEST/$file" ]; then
- msg2 "$(gettext "Using cached copy of %s")" "$file"
- cp "$SRCDEST/$file" .
- continue
- fi
-
- # find the client we should use for this URL
- dlclient=$(getdownloadclient $netfile) || exit $?
-
- msg2 "$(gettext "Downloading %s")" "$file"
- # fix flyspray bug #3289
- ret=0
- $dlclient "$netfile" || ret=$?
- if [ $ret -gt 0 ]; then
- error "$(gettext "Failure while downloading %s")" "$file"
- msg "$(gettext "Aborting...")"
- exit 1
- fi
-
- if [ -n "$SRCDEST" ]; then
- mkdir -p "$SRCDEST" && cp "$file" "$SRCDEST" || ret=$?
- if [ $ret -gt 0 ]; then
- warning "$(gettext "You do not have correct permissions to cache source in %s")" "$SRCDEST"
- cp "$file" ..
- fi
- else
- cp "$file" ..
- fi
- done
- unset netfile file dlclient ret
+ download_sources
fi
if [ "$GENINTEG" = "1" ]; then
- msg "$(gettext "Generating checksums for source files...")"
- plain ""
-
- for integ in ${INTEGRITY_CHECK[@]}; do
- integ="$(echo $integ | tr [:upper:] [:lower:])"
- case "$integ" in
- md5|sha1|sha256|sha384|sha512) : ;;
- *) error "$(gettext "Invalid integrity algorithm '%s' specified.")" "$integ"; exit 1;; # $E_CONFIG_ERROR
- esac
-
- if [ ! $(type -p "${integ}sum") ]; then
- error "$(gettext "Cannot fin the '%s' program.")" "${integ}sum"
- exit 1 # $E_MISSING_PROGRAM
- fi
-
- ct=0
- numsrc=${#source[@]}
- echo -n "${integ}sums=("
- i=0; indent=''
- while [ $i -lt $((${#integ}+6)) ]; do
- indent="$indent "
- i=$(($i+1))
- done
-
- for netfile in ${source[@]}; do
- file="$(strip_url "$netfile")"
- sum="$(${integ}sum "$file" | cut -d ' ' -f 1)"
- [ $ct -gt 0 ] && echo -n "$indent"
- echo -n "'$sum'"
- ct=$(($ct+1))
- [ $ct -lt $numsrc ] && echo
- done
-
- echo ")"
- done
-
- exit 0 # $E_OK
+ generate_checksums
fi
if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
warning "$(gettext "Skipping source integrity checks -- using existing src/ tree")"
else
- for integ in ${INTEGRITY_CHECK[@]}; do
- integ="$(echo $integ | tr [:upper:] [:lower:])"
- case "$integ" in
- md5|sha1|sha256|sha384|sha512) : ;;
- *) error "$(gettext "Invalid integrity algorithm '%s' specified")" "$integ"; exit 1;; # $E_CONFIG_ERROR
- esac
-
- if [ ! $(type -p "${integ}sum") ]; then
- error "$(gettext "Cannot find the %s program.")" "${integ}sum"
- exit 1 # $E_MISSING_PROGRAM
- fi
-
- integrity_sums=($(eval echo \${${integ}sums[@]}))
- if [ ${#integrity_sums[@]} -eq ${#source[@]} ]; then
- msg "$(gettext "Validating source files with %s")" "${integ}sums"
- errors=0
- idx=0
- for file in "${source[@]}"; do
- file="$(strip_url "$file")"
- echo -n " $file ... " >&2
- if echo "${integrity_sums[$idx]} $file" | ${integ}sum --status -c - &>/dev/null; then
- echo "$(gettext "Passed")" >&2
- else
- echo "$(gettext "FAILED")" >&2
- errors=1
- fi
- idx=$(($idx+1))
- done
-
- if [ $errors -gt 0 ]; then
- error "$(gettext "One or more files did not pass the validity check!")"
- exit 1 # TODO: error code
- fi
- else
- warning "$(gettext "Integrity checks (%s) are missing or incomplete.")" "$integ"
- fi
- done
- unset integ integrity_sums errors idx file
+ check_checksums
fi
#Extract sources
if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then
warning "$(gettext "Skipping source extraction -- using existing src/ tree")"
else
- msg "$(gettext "Extracting Sources...")"
- for netfile in "${source[@]}"; do
- unziphack=0
- file=$(strip_url "$netfile")
- if in_array "$file" ${noextract[@]}; then
- #skip source files in the noextract=() array
- # these are marked explicitly to NOT be extracted
- continue
- fi
- # fix flyspray #6246
- file_type=$(file -biz "$file")
- unset cmd
- case "$file_type" in
- *application/x-tar*application/x-compress*)
- cmd="tar -xzf $file" ;;
- *application/x-tar*)
- cmd="tar -xf $file" ;;
- *application/x-zip*)
- unziphack=1
- cmd="unzip -qqo $file" ;;
- *application/x-cpio*)
- cmd="bsdtar -x -f $file" ;;
- *application/x-gzip*)
- cmd="gunzip -d -f $file" ;;
- *application/x-bzip*)
- cmd="bunzip2 -f $file" ;;
- esac
- if [ "$cmd" != "" ]; then
- msg2 "$cmd"
- $cmd
- if [ $? -ne 0 ]; then
- # unzip will return a 1 as a warning, it is not an error
- if [ "$unziphack" != "1" -o $? -ne 1 ]; then
- error "$(gettext "Failed to extract %s")" "$file"
- msg "$(gettext "Aborting...")"
- exit 1
- fi
- fi
- fi
- done
-
- if [ $EUID -eq 0 ]; then
- # chown all source files to root.root
- chown -R root.root "$srcdir"
- fi
+ extract_sources
fi
if [ "$NOBUILD" = "1" ]; then