diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 00beb76..1cba01e 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -82,6 +82,7 @@ PKGLIST=() PKGVERFUNC=0 PREPAREFUNC=0 REPKG=0 +REBUILD=0 RMDEPS=0 SKIPCHECKSUMS=0 SKIPPGPCHECK=0 @@ -3163,6 +3164,7 @@ usage() { echo printf -- "$(gettext "Options:")\n" printf -- "$(gettext " -A, --ignorearch Ignore incomplete %s field in %s")\n" "arch" "$BUILDSCRIPT" + printf -- "$(gettext " -B, --rebuild Rebuild package without touching %s dir")\n" "\$srcdir/" printf -- "$(gettext " -c, --clean Clean up work files after build")\n" printf -- "$(gettext " -C, --cleanbuild Remove %s dir before building the package")\n" "\$srcdir/" printf -- "$(gettext " -d, --nodeps Skip all dependency checks")\n" @@ -3258,6 +3260,7 @@ while true; do # Makepkg Options --allsource) SOURCEONLY=2 ;; -A|--ignorearch) IGNOREARCH=1 ;; + -B|--rebuild) REBUILD=1 ;; -c|--clean) CLEANUP=1 ;; -C|--cleanbuild) CLEANBUILD=1 ;; --check) RUN_CHECK='y' ;; @@ -3659,8 +3662,18 @@ mkdir -p "$srcdir" chmod a-s "$srcdir" cd_safe "$srcdir" -if (( NOEXTRACT && ! VERIFYSOURCE )); then +if (( NOEXTRACT && ! VERIFYSOURCE )) || (( REBUILD )); then warning "$(gettext "Using existing %s tree")" "\$srcdir/" + if (( REBUILD )); then + if (( PKGVERFUNC )); then + update_pkgver + basever=$(get_full_version) + check_build_status + fi + if (( PREPAREFUNC )); then + run_prepare + fi + fi elif (( !REPKG )); then download_sources check_source_integrity