1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-08-13 17:03:46 -04:00

makepkg: Separate vcs download and extract

Previously makepkg would clone vcs sources in the download function,
regardless of the noextract settings. Now the download_* functions only
download or update the vcs sources, and the new extract_* functions just
create working copies using the specified protocols. The extract_sources
function will call the needed extract function for the protocol
specified. The tarball extraction has also been moved into its own
extract_file function to keep things consistent.

Signed-off-by: William Giokas <1007380@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
William Giokas 2013-03-09 14:36:55 -06:00 committed by Allan McRae
parent 06d761a020
commit fcdaa46b65

View File

@ -379,6 +379,59 @@ download_file() {
ln -s "$SRCDEST/$filename" "$srcdir/"
}
extract_file() {
local file=$1
# fix flyspray #6246
local file_type=$(file -bizL "$file")
local ext=${file##*.}
local cmd=''
case "$file_type" in
*application/x-tar*|*application/zip*|*application/x-zip*|*application/x-cpio*)
cmd="bsdtar" ;;
*application/x-gzip*)
case "$ext" in
gz|z|Z) cmd="gzip" ;;
*) continue;;
esac ;;
*application/x-bzip*)
case "$ext" in
bz2|bz) cmd="bzip2" ;;
*) continue;;
esac ;;
*application/x-xz*)
case "$ext" in
xz) cmd="xz" ;;
*) continue;;
esac ;;
*)
# See if bsdtar can recognize the file
if bsdtar -tf "$file" -q '*' &>/dev/null; then
cmd="bsdtar"
else
continue
fi ;;
esac
local ret=0
msg2 "$(gettext "Extracting %s with %s")" "$file" "$cmd"
if [[ $cmd = "bsdtar" ]]; then
$cmd -xf "$file" || ret=$?
else
rm -f -- "${file%.*}"
$cmd -dcf "$file" > "${file%.*}" || ret=$?
fi
if (( ret )); then
error "$(gettext "Failed to extract %s")" "$file"
plain "$(gettext "Aborting...")"
exit 1
fi
if (( EUID == 0 )); then
# change perms of all source files to root user & root group
chown -R 0:0 "$srcdir"
fi
}
download_bzr() {
local netfile=$1
@ -386,11 +439,6 @@ download_bzr() {
url=${url##*bzr+}
url=${url%%#*}
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local displaylocation="$url"
local revision=('-r-1')
@ -431,6 +479,18 @@ download_bzr() {
warning "$(gettext "Failure while pulling %s")" "${displaylocation}"
fi
fi
}
extract_bzr() {
local netfile=$1
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local dir=$(get_filepath "$netfile")
[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
msg2 "$(gettext "Creating working copy of %s %s repo...")" "${dir}" "bzr"
pushd "$srcdir" &>/dev/null
@ -448,11 +508,6 @@ download_bzr() {
download_git() {
local netfile=$1
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local dir=$(get_filepath "$netfile")
[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
@ -485,6 +540,22 @@ download_git() {
warning "$(gettext "Failure while updating %s %s repo")" "${repo}" "git"
fi
fi
}
extract_git() {
local netfile=$1
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local repo=${netfile##*/}
repo=${repo%%#*}
repo=${repo%%.git*}
local dir=$(get_filepath "$netfile")
[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" "git"
pushd "$srcdir" &>/dev/null
@ -528,11 +599,6 @@ download_git() {
download_hg() {
local netfile=$1
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local dir=$(get_filepath "$netfile")
[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
@ -558,6 +624,21 @@ download_hg() {
warning "$(gettext "Failure while updating %s %s repo")" "${repo}" "hg"
fi
fi
}
extract_hg() {
local netfile=$1
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local dir=$(get_filepath "$netfile")
[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
local repo=${netfile##*/}
repo=${repo%%#*}
msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" "hg"
pushd "$srcdir" &>/dev/null
@ -620,6 +701,21 @@ download_svn() {
warning "$(gettext "Failure while updating %s %s repo")" "${repo}" "svn"
fi
fi
}
extract_svn() {
local netfile=$1
local fragment=${netfile#*#}
if [[ $fragment = "$netfile" ]]; then
unset fragment
fi
local dir=$(get_filepath "$netfile")
[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
local repo=${netfile##*/}
repo=${repo%%#*}
msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" "svn"
pushd "$srcdir" &>/dev/null
@ -682,12 +778,6 @@ download_sources() {
esac
done
if (( PKGVERFUNC && GET_VCS )); then
update_pkgver
check_pkgver || exit 1
check_build_status
fi
popd &>/dev/null
}
@ -1232,57 +1322,30 @@ extract_sources() {
# these are marked explicitly to NOT be extracted
continue
fi
# fix flyspray #6246
local file_type=$(file -bizL "$file")
local ext=${file##*.}
local cmd=''
case "$file_type" in
*application/x-tar*|*application/zip*|*application/x-zip*|*application/x-cpio*)
cmd="bsdtar" ;;
*application/x-gzip*)
case "$ext" in
gz|z|Z) cmd="gzip" ;;
*) continue;;
esac ;;
*application/x-bzip*)
case "$ext" in
bz2|bz) cmd="bzip2" ;;
*) continue;;
esac ;;
*application/x-xz*)
case "$ext" in
xz) cmd="xz" ;;
*) continue;;
esac ;;
local proto=$(get_protocol "$netfile")
case "$proto" in
bzr*)
extract_bzr "$netfile"
;;
git*)
extract_git "$netfile"
;;
hg*)
extract_hg "$netfile"
;;
svn*)
extract_svn "$netfile"
;;
*)
# See if bsdtar can recognize the file
if bsdtar -tf "$file" -q '*' &>/dev/null; then
cmd="bsdtar"
else
continue
fi ;;
extract_file "$file"
;;
esac
local ret=0
msg2 "$(gettext "Extracting %s with %s")" "$file" "$cmd"
if [[ $cmd = "bsdtar" ]]; then
$cmd -xf "$file" || ret=$?
else
rm -f -- "${file%.*}"
$cmd -dcf "$file" > "${file%.*}" || ret=$?
fi
if (( ret )); then
error "$(gettext "Failed to extract %s")" "$file"
plain "$(gettext "Aborting...")"
exit 1
fi
done
if (( EUID == 0 )); then
# change perms of all source files to root user & root group
chown -R 0:0 "$srcdir"
if (( PKGVERFUNC )); then
update_pkgver
check_pkgver || exit 1
check_build_status
fi
}