mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
makepkg: reorder source handling functions
There is no actual code change here, but these related functions were all over the place which makes this code difficult to adjust. Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
d338b3981d
commit
e806414407
@ -210,13 +210,6 @@ get_filepath() {
|
||||
printf "%s\n" "$file"
|
||||
}
|
||||
|
||||
# Print 'source not found' error message and exit makepkg
|
||||
missing_source_file() {
|
||||
error "$(gettext "Unable to find source file %s.")" "$(get_filename "$1")"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1 # $E_MISSING_FILE
|
||||
}
|
||||
|
||||
# extract the filename from a source entry
|
||||
get_filename() {
|
||||
# if a filename is specified, use it
|
||||
@ -231,6 +224,126 @@ get_url() {
|
||||
printf "%s\n" "${1#*::}"
|
||||
}
|
||||
|
||||
get_downloadclient() {
|
||||
# $1 = URL with valid protocol prefix
|
||||
local url=$1
|
||||
local proto="${url%%://*}"
|
||||
|
||||
# loop through DOWNLOAD_AGENTS variable looking for protocol
|
||||
local i
|
||||
for i in "${DLAGENTS[@]}"; do
|
||||
local handler="${i%%::*}"
|
||||
if [[ $proto = "$handler" ]]; then
|
||||
local agent="${i##*::}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# if we didn't find an agent, return an error
|
||||
if [[ -z $agent ]]; then
|
||||
error "$(gettext "There is no agent set up to handle %s URLs. Check %s.")" "$proto" "$MAKEPKG_CONF"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1 # $E_CONFIG_ERROR
|
||||
fi
|
||||
|
||||
# ensure specified program is installed
|
||||
local program="${agent%% *}"
|
||||
if [[ ! -x $program ]]; then
|
||||
local baseprog="${program##*/}"
|
||||
error "$(gettext "The download program %s is not installed.")" "$baseprog"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1 # $E_MISSING_PROGRAM
|
||||
fi
|
||||
|
||||
printf "%s\n" "$agent"
|
||||
}
|
||||
|
||||
download_file() {
|
||||
# download command
|
||||
local dlcmd=$1
|
||||
# URL of the file
|
||||
local url=$2
|
||||
# destination file
|
||||
local file=$3
|
||||
# temporary download file, default to last component of the URL
|
||||
local dlfile="${url##*/}"
|
||||
|
||||
# replace %o by the temporary dlfile if it exists
|
||||
if [[ $dlcmd = *%o* ]]; then
|
||||
dlcmd=${dlcmd//\%o/\"$file.part\"}
|
||||
dlfile="$file.part"
|
||||
fi
|
||||
# add the URL, either in place of %u or at the end
|
||||
if [[ $dlcmd = *%u* ]]; then
|
||||
dlcmd=${dlcmd//\%u/\"$url\"}
|
||||
else
|
||||
dlcmd="$dlcmd \"$url\""
|
||||
fi
|
||||
|
||||
local ret=0
|
||||
eval "$dlcmd || ret=\$?"
|
||||
if (( ret )); then
|
||||
[[ ! -s $dlfile ]] && rm -f -- "$dlfile"
|
||||
return $ret
|
||||
fi
|
||||
|
||||
# rename the temporary download file to the final destination
|
||||
if [[ $dlfile != "$file" ]]; then
|
||||
mv -f "$SRCDEST/$dlfile" "$SRCDEST/$file"
|
||||
fi
|
||||
}
|
||||
|
||||
download_sources() {
|
||||
msg "$(gettext "Retrieving Sources...")"
|
||||
|
||||
pushd "$SRCDEST" &>/dev/null
|
||||
|
||||
local netfile
|
||||
for netfile in "${source[@]}"; do
|
||||
local file=$(get_filepath "$netfile" || true)
|
||||
if [[ -n "$file" ]]; then
|
||||
msg2 "$(gettext "Found %s")" "${file##*/}"
|
||||
rm -f "$srcdir/${file##*/}"
|
||||
ln -s "$file" "$srcdir/"
|
||||
continue
|
||||
fi
|
||||
|
||||
file=$(get_filename "$netfile")
|
||||
local url=$(get_url "$netfile")
|
||||
|
||||
# if we get here, check to make sure it was a URL, else fail
|
||||
if [[ $file = "$url" ]]; then
|
||||
error "$(gettext "%s was not found in the build directory and is not a URL.")" "$file"
|
||||
exit 1 # $E_MISSING_FILE
|
||||
fi
|
||||
|
||||
# find the client we should use for this URL
|
||||
local dlclient
|
||||
dlclient=$(get_downloadclient "$url") || exit $?
|
||||
|
||||
msg2 "$(gettext "Downloading %s...")" "$file"
|
||||
# fix flyspray bug #3289
|
||||
local ret=0
|
||||
download_file "$dlclient" "$url" "$file" || ret=$?
|
||||
if (( ret )); then
|
||||
error "$(gettext "Failure while downloading %s")" "$file"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1
|
||||
fi
|
||||
rm -f "$srcdir/$file"
|
||||
ln -s "$SRCDEST/$file" "$srcdir/"
|
||||
done
|
||||
|
||||
popd &>/dev/null
|
||||
}
|
||||
|
||||
# Print 'source not found' error message and exit makepkg
|
||||
missing_source_file() {
|
||||
error "$(gettext "Unable to find source file %s.")" "$(get_filename "$1")"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1 # $E_MISSING_FILE
|
||||
}
|
||||
|
||||
##
|
||||
# usage : get_full_version( [$pkgname] )
|
||||
# return : full version spec, including epoch (if necessary), pkgver, pkgrel
|
||||
@ -388,75 +501,6 @@ source_has_signatures() {
|
||||
return 1
|
||||
}
|
||||
|
||||
get_downloadclient() {
|
||||
# $1 = URL with valid protocol prefix
|
||||
local url=$1
|
||||
local proto="${url%%://*}"
|
||||
|
||||
# loop through DOWNLOAD_AGENTS variable looking for protocol
|
||||
local i
|
||||
for i in "${DLAGENTS[@]}"; do
|
||||
local handler="${i%%::*}"
|
||||
if [[ $proto = "$handler" ]]; then
|
||||
local agent="${i##*::}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# if we didn't find an agent, return an error
|
||||
if [[ -z $agent ]]; then
|
||||
error "$(gettext "There is no agent set up to handle %s URLs. Check %s.")" "$proto" "$MAKEPKG_CONF"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1 # $E_CONFIG_ERROR
|
||||
fi
|
||||
|
||||
# ensure specified program is installed
|
||||
local program="${agent%% *}"
|
||||
if [[ ! -x $program ]]; then
|
||||
local baseprog="${program##*/}"
|
||||
error "$(gettext "The download program %s is not installed.")" "$baseprog"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1 # $E_MISSING_PROGRAM
|
||||
fi
|
||||
|
||||
printf "%s\n" "$agent"
|
||||
}
|
||||
|
||||
download_file() {
|
||||
# download command
|
||||
local dlcmd=$1
|
||||
# URL of the file
|
||||
local url=$2
|
||||
# destination file
|
||||
local file=$3
|
||||
# temporary download file, default to last component of the URL
|
||||
local dlfile="${url##*/}"
|
||||
|
||||
# replace %o by the temporary dlfile if it exists
|
||||
if [[ $dlcmd = *%o* ]]; then
|
||||
dlcmd=${dlcmd//\%o/\"$file.part\"}
|
||||
dlfile="$file.part"
|
||||
fi
|
||||
# add the URL, either in place of %u or at the end
|
||||
if [[ $dlcmd = *%u* ]]; then
|
||||
dlcmd=${dlcmd//\%u/\"$url\"}
|
||||
else
|
||||
dlcmd="$dlcmd \"$url\""
|
||||
fi
|
||||
|
||||
local ret=0
|
||||
eval "$dlcmd || ret=\$?"
|
||||
if (( ret )); then
|
||||
[[ ! -s $dlfile ]] && rm -f -- "$dlfile"
|
||||
return $ret
|
||||
fi
|
||||
|
||||
# rename the temporary download file to the final destination
|
||||
if [[ $dlfile != "$file" ]]; then
|
||||
mv -f "$SRCDEST/$dlfile" "$SRCDEST/$file"
|
||||
fi
|
||||
}
|
||||
|
||||
run_pacman() {
|
||||
local cmd
|
||||
if [[ ! $1 = -@(T|Qq) ]]; then
|
||||
@ -573,50 +617,6 @@ remove_deps() {
|
||||
fi
|
||||
}
|
||||
|
||||
download_sources() {
|
||||
msg "$(gettext "Retrieving Sources...")"
|
||||
|
||||
pushd "$SRCDEST" &>/dev/null
|
||||
|
||||
local netfile
|
||||
for netfile in "${source[@]}"; do
|
||||
local file=$(get_filepath "$netfile" || true)
|
||||
if [[ -n "$file" ]]; then
|
||||
msg2 "$(gettext "Found %s")" "${file##*/}"
|
||||
rm -f "$srcdir/${file##*/}"
|
||||
ln -s "$file" "$srcdir/"
|
||||
continue
|
||||
fi
|
||||
|
||||
file=$(get_filename "$netfile")
|
||||
local url=$(get_url "$netfile")
|
||||
|
||||
# if we get here, check to make sure it was a URL, else fail
|
||||
if [[ $file = "$url" ]]; then
|
||||
error "$(gettext "%s was not found in the build directory and is not a URL.")" "$file"
|
||||
exit 1 # $E_MISSING_FILE
|
||||
fi
|
||||
|
||||
# find the client we should use for this URL
|
||||
local dlclient
|
||||
dlclient=$(get_downloadclient "$url") || exit $?
|
||||
|
||||
msg2 "$(gettext "Downloading %s...")" "$file"
|
||||
# fix flyspray bug #3289
|
||||
local ret=0
|
||||
download_file "$dlclient" "$url" "$file" || ret=$?
|
||||
if (( ret )); then
|
||||
error "$(gettext "Failure while downloading %s")" "$file"
|
||||
plain "$(gettext "Aborting...")"
|
||||
exit 1
|
||||
fi
|
||||
rm -f "$srcdir/$file"
|
||||
ln -s "$SRCDEST/$file" "$srcdir/"
|
||||
done
|
||||
|
||||
popd &>/dev/null
|
||||
}
|
||||
|
||||
get_integlist() {
|
||||
local integ
|
||||
local integlist=()
|
||||
|
Loading…
Reference in New Issue
Block a user