[pacman-dev] [PATCH 1/2] makepkg: fixup broken revision and repo references

Dave Reisner dreisner at archlinux.org
Wed May 15 09:58:42 EDT 2013


bzr support "worked", but didn't handle any of the actual features we
wanted with makepkg. This moves the revision specification to the proper
place (extraction, rather than download), and fixes an additional broken
reference to $repo which was never set.

Fixes FS#35281.

Signed-off-by: Dave Reisner <dreisner at archlinux.org>
---
I tested this on a fresh clone, an existing clone, and an existing clone with a
revision fragment, but anyone who actually uses bzr might want to play with
this to make sure I haven't fubar'd things even further.

 scripts/makepkg.sh.in | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index b85b87e..9ebfdf3 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -448,29 +448,14 @@ download_bzr() {
 	url=${url%%#*}
 
 	local repo=$(get_filename "$netfile")
-
 	local displaylocation="$url"
-	local revision=('-r-1')
-
-	if [[ -n $fragment ]]; then
-		case ${fragment%%=*} in
-			revision)
-				revision=("-r${fragment##*=}")
-				displaylocation="$url -r ${fragment##*=}"
-				;;
-			*)
-				error "$(gettext "Unrecognized reference: %s")" "${fragment}"
-				plain "$(gettext "Aborting...")"
-				exit 1
-		esac
-	fi
 
 	local dir=$(get_filepath "$netfile")
 	[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
 
 	if [[ ! -d "$dir" ]] || dir_is_empty "$dir" ; then
 		msg2 "$(gettext "Branching %s ...")" "${displaylocation}"
-		if ! bzr branch "$url" "$dir" ${revision[@]} --no-tree --use-existing-dir; then
+		if ! bzr branch "$url" "$dir" --no-tree --use-existing-dir; then
 			error "$(gettext "Failure while branching %s")" "${displaylocation}"
 			plain "$(gettext "Aborting...")"
 			exit 1
@@ -495,7 +480,7 @@ download_bzr() {
 		fi
 		msg2 "$(gettext "Pulling %s ...")" "${displaylocation}"
 		cd_safe "$dir"
-		if ! bzr pull "$url" ${revision[@]} --overwrite; then
+		if ! bzr pull "$url" --overwrite; then
 			# only warn on failure to allow offline builds
 			warning "$(gettext "Failure while pulling %s")" "${displaylocation}"
 		fi
@@ -505,11 +490,25 @@ download_bzr() {
 extract_bzr() {
 	local netfile=$1
 
+	local repo=$(get_filename "$netfile")
 	local fragment=${netfile#*#}
 	if [[ $fragment = "$netfile" ]]; then
 		unset fragment
 	fi
 
+	if [[ -n $fragment ]]; then
+		case ${fragment%%=*} in
+			revision)
+				revision=("-r" "${fragment#*=}")
+				displaylocation="$url -r ${fragment#*=}"
+				;;
+			*)
+				error "$(gettext "Unrecognized reference: %s")" "${fragment}"
+				plain "$(gettext "Aborting...")"
+				exit 1
+		esac
+	fi
+
 	local dir=$(get_filepath "$netfile")
 	[[ -z "$dir" ]] && dir="$SRCDEST/$(get_filename "$netfile")"
 
@@ -517,7 +516,8 @@ extract_bzr() {
 	pushd "$srcdir" &>/dev/null
 	rm -rf "${dir##*/}"
 
-	if ! bzr checkout "$dir" --lightweight; then
+	if ! { bzr checkout "$dir" "${revision[@]}" --lightweight &&
+		( cd "$repo" && bzr pull "$dir" -q --overwrite "${revision[@]}" ); }; then
 		error "$(gettext "Failure while creating working copy of %s %s repo")" "${repo}" "bzr"
 		plain "$(gettext "Aborting...")"
 		exit 1
-- 
1.8.2.3



More information about the pacman-dev mailing list