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 <[email protected]>
---
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


Reply via email to