[pacman-dev] [PATCH] makepkg: Add special case with -e and -o together
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 <1007380@gmail.com> --- Another version of the patch sent in earlier today. Does not add any new options, just adds a special case when combining options. 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..ff7f509 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 and run + the prepare function but will not extract. *-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
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 <1007380@gmail.com> --- 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
On 23/02/13 01:54, William Giokas wrote:
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.
Nope. I really do not like the idea of having combinations of options doing different things that what the individual options do. Allan
participants (2)
-
Allan McRae
-
William Giokas