[pacman-dev] FS#7982 - V2: patch to makepkg to allow PKGBUILDs building more than one package
AWKWARD! - Now I have test it before! Hello Friends, this is version2 of my patch. Explanation is in the patch. Please review and discuss this patch. Bye, eS.eF.
From: Silvio fricke <silvio@port1024.net> * it builds the packages in different directories * repackaging works now To activate this feature you only need a hook-variable "splitinstall" with all function-names in it. After performing of build(), it runs all functions in succession. Signed-off-by: Silvio fricke <silvio@port1024.net> --- scripts/makepkg.sh.in | 57 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 55 insertions(+), 2 deletions(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 5bdc5bc..c96b9fb 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -675,6 +675,8 @@ run_build() { mv "$BUILDLOG" "$BUILDLOG.$i" fi + export BUILDLOG + build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]} else build 2>&1 || ret=$? @@ -1389,7 +1391,38 @@ if [ "$INFAKEROOT" = "1" ]; then tidy_install fi - create_package + if [ "$splitinstall" != "" ] ; then + for varname in "pkgname" "pkgver" "pkgrel" "pkgdesc" "arch" "url" "license" "groups" "depends" "makedepends" "provides" "conflicts" "replaces" "backup" "options" "install" "pkgdir"; do + temp_var_name="${varname}_o" + eval "${temp_var_name}=\"${!varname}\"" + done + + create_package + for it in "${splitinstall[@]}" ; do + pkgdir="$startdir/pkg_${it}" + [ ! -d "$pkgdir" ] && mkdir -p "$pkgdir" + msg "$(gettext "Building split package using function: %s")" "$it" + + if [ "$LOGGING" = "1" ]; then + [ "x$BUILDLOG" == "x" ] && BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log" + echo "\n\n--- Logging for $it ------------" >> "$BUILDLOG" + + $it 2>&1 | tee -a "$BUILDLOG" + else + $it 2>&1 + fi + + create_package + + for varname in "pkgname" "pkgver" "pkgrel" "pkgdesc" "arch" "url" "license" "groups" "depends" "makedepends" "provides" "conflicts" "replaces" "backup" "options" "install" "pkgdir"; do + temp_var_name="${varname}_o" + [ "${!temp_var_name}" != "" ] && eval "${varname}=\"${!temp_var_name}\"" || unset ${varname} + done + done + msg "$(gettext "All split packages built!")" + else + create_package + fi msg "$(gettext "Leaving fakeroot environment.")" exit 0 # $E_OK @@ -1459,6 +1492,20 @@ if [ "$NOEXTRACT" = "1" -o "$REPKG" = "1" ]; then error "$(gettext "The source directory is empty, there is nothing to build!")" plain "$(gettext "Aborting...")" exit 1 + elif [ "$splitinstall" != "" ]; then + for fun in "${splitinstall[@]}"; do + pkgdir_fun="$startdir/pkg_${fun}" + exit_now=0 + if [ ! -d "$pkgdir_fun" -o "$(ls "$pkgdir_fun" 2>/dev/null)" = "" ]; then + warning "$(gettext "The subpackage directory %s is empty, there is nothing to repackage!")" "$pkgdir_fun" + pwd + exit_now=1 + fi + if [ $exit_now -eq 1 ]; then + error "$(gettext "Aborting...")" + exit 1 + fi + done elif [ "$REPKG" = "1" -a \( ! -d "$pkgdir" -o "$(ls "$pkgdir" 2>/dev/null)" = "" \) ]; then error "$(gettext "The package directory is empty, there is nothing to repackage!")" plain "$(gettext "Aborting...")" @@ -1475,9 +1522,15 @@ if [ "$NOBUILD" = "1" ]; then exit 0 #E_OK else # check for existing pkg directory; don't remove if we are repackaging - if [ -d "$pkgdir" -a "$REPKG" = "0" ]; then + if [ -d "$pkgdir" -a "$REPKG" = "0" -a "$splitinstall" == "" ]; then msg "$(gettext "Removing existing pkg/ directory...")" rm -rf "$pkgdir" + elif [ "$splitinstall" != "" -a "$REPKG" = "0" ]; then + for fun in "${splitinstall[@]}"; do + pkgdir_fun="$startdir/pkg_${fun}" + msg "$(gettext "Removing existing %s directory...")" "$pkgdir_fun" + rm -rf "$pkgdir_fun" + done fi mkdir -p "$pkgdir" cd "$startdir" -- 1.5.5.3
participants (1)
-
silvio@port1024.net