Passing -e and -o (noextract and nobuild, respectively) should cause
makepkg to not extract and not build. This means that it should still
download sources and verify them.

Signed-off-by: William Giokas <[email protected]>
---
 doc/makepkg.8.txt     |   7 +-
 scripts/makepkg.sh.in | 177 +++++++++++++++++++++++++++-----------------------
 2 files changed, 100 insertions(+), 84 deletions(-)

diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index 498c79b..341d96e 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -63,7 +63,9 @@ Options
        use whatever source already exists in the $srcdir/ directory. This is
        handy if you want to go into $srcdir/ and manually patch or tweak code,
        then make a package out of the result. Keep in mind that creating a
-       patch may be a better solution to allow others to use your PKGBUILD.
+       patch may be a better solution to allow others to use your PKGBUILD. If
+       used with '\--nobuild', 'makepkg' will only download the sources, it 
will
+       not extract them into $srcdir/.
 
 *-f, \--force*::
        makepkg will not build a package if a built package already exists in
@@ -112,7 +114,8 @@ Options
 *-o, \--nobuild*::
        Download and extract files, run the prepare() function, but do not build
        them. Useful with the '\--noextract' option if you wish to tweak the 
files
-       in $srcdir/ before building.
+       in $srcdir/ before building. When passed to 'makepkg' with 
'\--noextract',
+       the sources will be downloaded and checked, but not extracted.
 
 *-p* <buildscript>::
        Read the package script `buildscript` instead of the `PKGBUILD` default;
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index bd29d73..cfe1e0c 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -432,17 +432,19 @@ download_bzr() {
                fi
        fi
 
-       msg2 "$(gettext "Creating working copy of %s %s repo...")" "${dir}" 
"bzr"
-       pushd "$srcdir" &>/dev/null
-       rm -rf "${dir##*/}"
+       if (( ! NOEXTRACT )); then
+               msg2 "$(gettext "Creating working copy of %s %s repo...")" 
"${dir}" "bzr"
+               pushd "$srcdir" &>/dev/null
+               rm -rf "${dir##*/}"
 
-       if ! bzr checkout "$dir" --lightweight; then
-               error "$(gettext "Failure while creating working copy of %s %s 
repo")" "${dir}" "bzr"
-               plain "$(gettext "Aborting...")"
-               exit 1
-       fi
+               if ! bzr checkout "$dir" --lightweight; then
+                       error "$(gettext "Failure while creating working copy 
of %s %s repo")" "${dir}" "bzr"
+                       plain "$(gettext "Aborting...")"
+                       exit 1
+               fi
 
-       popd &>/dev/null
+               popd &>/dev/null
+       fi
 }
 
 download_git() {
@@ -486,43 +488,45 @@ download_git() {
                fi
        fi
 
-       msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" 
"git"
-       pushd "$srcdir" &>/dev/null
-       rm -rf "${dir##*/}"
+       if (( ! NOEXTRACT )); then
+               msg2 "$(gettext "Creating working copy of %s %s repo...")" 
"${repo}" "git"
+               pushd "$srcdir" &>/dev/null
+               rm -rf "${dir##*/}"
 
-       if ! git clone "$dir"; then
-               error "$(gettext "Failure while creating working copy of %s %s 
repo")" "${repo}" "git"
-               plain "$(gettext "Aborting...")"
-               exit 1
-       fi
+               if ! git clone "$dir"; then
+                       error "$(gettext "Failure while creating working copy 
of %s %s repo")" "${repo}" "git"
+                       plain "$(gettext "Aborting...")"
+                       exit 1
+               fi
 
-       cd_safe "${dir##*/}"
+               cd_safe "${dir##*/}"
 
-       local ref
-       if [[ -n $fragment ]]; then
-               case ${fragment%%=*} in
-                       commit|tag)
-                               ref=${fragment##*=}
-                               ;;
-                       branch)
-                               ref=origin/${fragment##*=}
-                               ;;
-                       *)
-                               error "$(gettext "Unrecognized reference: %s")" 
"${fragment}"
+               local ref
+               if [[ -n $fragment ]]; then
+                       case ${fragment%%=*} in
+                               commit|tag)
+                                       ref=${fragment##*=}
+                                       ;;
+                               branch)
+                                       ref=origin/${fragment##*=}
+                                       ;;
+                               *)
+                                       error "$(gettext "Unrecognized 
reference: %s")" "${fragment}"
+                                       plain "$(gettext "Aborting...")"
+                                       exit 1
+                       esac
+               fi
+
+               if [[ -n $ref ]]; then
+                       if ! git checkout -b makepkg $ref; then
+                               error "$(gettext "Failure while creating 
working copy of %s %s repo")" "${repo}" "git"
                                plain "$(gettext "Aborting...")"
                                exit 1
-               esac
-       fi
-
-       if [[ -n $ref ]]; then
-               if ! git checkout -b makepkg $ref; then
-                       error "$(gettext "Failure while creating working copy 
of %s %s repo")" "${repo}" "git"
-                       plain "$(gettext "Aborting...")"
-                       exit 1
+                       fi
                fi
-       fi
 
-       popd &>/dev/null
+               popd &>/dev/null
+       fi
 }
 
 download_hg() {
@@ -559,30 +563,32 @@ download_hg() {
                fi
        fi
 
-       msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" 
"hg"
-       pushd "$srcdir" &>/dev/null
-       rm -rf "${dir##*/}"
+       if (( ! NOEXTRACT )); then
+               msg2 "$(gettext "Creating working copy of %s %s repo...")" 
"${repo}" "hg"
+               pushd "$srcdir" &>/dev/null
+               rm -rf "${dir##*/}"
 
-       local ref
-       if [[ -n $fragment ]]; then
-               case ${fragment%%=*} in
-                       branch|revision|tag)
-                               ref=('-u' "${fragment##*=}")
-                               ;;
-                       *)
-                               error "$(gettext "Unrecognized reference: %s")" 
"${fragment}"
-                               plain "$(gettext "Aborting...")"
-                               exit 1
-               esac
-       fi
+               local ref
+               if [[ -n $fragment ]]; then
+                       case ${fragment%%=*} in
+                               branch|revision|tag)
+                                       ref=('-u' "${fragment##*=}")
+                                       ;;
+                               *)
+                                       error "$(gettext "Unrecognized 
reference: %s")" "${fragment}"
+                                       plain "$(gettext "Aborting...")"
+                                       exit 1
+                       esac
+               fi
 
-       if ! hg clone "${ref[@]}" "$dir" "${dir##*/}"; then
-               error "$(gettext "Failure while creating working copy of %s %s 
repo")" "${repo}" "hg"
-               plain "$(gettext "Aborting...")"
-               exit 1
-       fi
+               if ! hg clone "${ref[@]}" "$dir" "${dir##*/}"; then
+                       error "$(gettext "Failure while creating working copy 
of %s %s repo")" "${repo}" "hg"
+                       plain "$(gettext "Aborting...")"
+                       exit 1
+               fi
 
-       popd &>/dev/null
+               popd &>/dev/null
+       fi
 }
 
 download_svn() {
@@ -621,29 +627,31 @@ download_svn() {
                fi
        fi
 
-       msg2 "$(gettext "Creating working copy of %s %s repo...")" "${repo}" 
"svn"
-       pushd "$srcdir" &>/dev/null
-       rm -rf "${dir##*/}"
+       if (( ! NOEXTRACT )); then
+               msg2 "$(gettext "Creating working copy of %s %s repo...")" 
"${repo}" "svn"
+               pushd "$srcdir" &>/dev/null
+               rm -rf "${dir##*/}"
 
-       local ref
-       if [[ -n $fragment ]]; then
-               case ${fragment%%=*} in
-                       revision)
-                               ref=('-r' "${fragment##*=}")
-                               ;;
-                       *)
-                               error "$(gettext "Unrecognized reference: %s")" 
"${fragment}"
-                               plain "$(gettext "Aborting...")"
-                               exit 1
-               esac
-       fi
+               local ref
+               if [[ -n $fragment ]]; then
+                       case ${fragment%%=*} in
+                               revision)
+                                       ref=('-r' "${fragment##*=}")
+                                       ;;
+                               *)
+                                       error "$(gettext "Unrecognized 
reference: %s")" "${fragment}"
+                                       plain "$(gettext "Aborting...")"
+                                       exit 1
+                       esac
+               fi
 
-       if ! svn export ${ref[@]} "$dir"; then
-               error "$(gettext "Failure while creating working copy of %s %s 
repo")" "${repo}" "svn"
-               plain "$(gettext "Aborting...")"
-       fi
+               if ! svn export ${ref[@]} "$dir"; then
+                       error "$(gettext "Failure while creating working copy 
of %s %s repo")" "${repo}" "svn"
+                       plain "$(gettext "Aborting...")"
+               fi
 
-       popd &>/dev/null
+               popd &>/dev/null
+       fi
 }
 
 download_sources() {
@@ -682,7 +690,7 @@ download_sources() {
                esac
        done
 
-       if (( PKGVERFUNC && GET_VCS )); then
+       if (( PKGVERFUNC && GET_VCS && ! NOEXTRACT )); then
                update_pkgver
                check_pkgver || exit 1
                check_build_status
@@ -2885,7 +2893,7 @@ mkdir -p "$srcdir"
 chmod a-s "$srcdir"
 cd_safe "$srcdir"
 
-if (( NOEXTRACT )); then
+if (( NOEXTRACT && ! NOBUILD )); then
        warning "$(gettext "Using existing %s tree")" "src/"
 elif (( REPKG )); then
        if (( ! PKGFUNC && ! SPLITPKG )) \
@@ -2894,6 +2902,11 @@ elif (( REPKG )); then
                plain "$(gettext "Aborting...")"
                exit 1
        fi
+elif (( NOEXTRACT && NOBUILD )); then
+       download_sources
+       check_source_integrity
+       msg "$(gettext "Sources have been downloaded.")"
+       exit 0 #E_OK
 else
        download_sources
        check_source_integrity
-- 
1.8.2.rc0.22.gb3600c3


Reply via email to