[pacman-dev] [PATCH] allow "makepkg -R" to first unpack an already built package when $pkgdir is empty

FC firmicus04 at googlemail.com
Tue Aug 18 16:30:28 EDT 2009


>From ae3dd41af891f059b0aa1cc888eed873684b5580 Mon Sep 17 00:00:00 2001
From: Francois Charette <francois at archlinux.org>
Date: Tue, 18 Aug 2009 22:10:56 +0200
Subject: [PATCH] makepkg -R: allow unpacking when pkgdir is empty

Also fixed some typos :)
---
 scripts/makepkg.sh.in |   35 ++++++++++++++++++++++-------------
 1 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index daa9585..6848c93 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1,6 +1,6 @@
 #!/bin/bash -e
 #
-#   makepkg - make packages compatable for use with pacman
+#   makepkg - make packages compatible for use with pacman
 #   @configure_input@
 #
 #   Copyright (c) 2006-2009 Pacman Development Team <
pacman-dev at archlinux.org>
@@ -177,7 +177,7 @@ clean_up() {
 trap 'clean_up' 0
 trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP
QUIT
 trap 'trap_exit "$(gettext "Aborted by user! Exiting...")"' INT
-trap 'trap_exit "$(gettext "An unknown error has occured. Exiting...")"'
ERR
+trap 'trap_exit "$(gettext "An unknown error has occurred. Exiting...")"'
ERR

 # a source entry can have two forms :
 # 1) "filename::http://path/to/file"
@@ -187,11 +187,11 @@ trap 'trap_exit "$(gettext "An unknown error has
occured. Exiting...")"' ERR
 get_filename() {
     # if a filename is specified, use it
     local filename=$(echo $1 | sed 's|::.*||')
-    # if it is just an url, we only keep the last component
+    # if it is just an URL, we only keep the last component
     echo "$filename" | sed 's|^.*://.*/||g'
 }

-# extract the url from a source entry
+# extract the URL from a source entry
 get_url() {
     # strip an eventual filename
     echo $1 | sed 's|.*::||'
@@ -278,7 +278,7 @@ in_array() {
 }

 get_downloadclient() {
-    # $1 = url with valid protocol prefix
+    # $1 = URL with valid protocol prefix
     local url=$1
     local proto=$(echo "$url" | sed 's|://.*||')

@@ -314,11 +314,11 @@ get_downloadclient() {
 download_file() {
     # download command
     local dlcmd=$1
-    # url of the file
+    # URL of the file
     local url=$2
     # destination file
     local file=$3
-    # temporary download file, default to last component of the url
+    # temporary download file, default to last component of the URL
     local dlfile=$(echo "$url" | sed 's|^.*://.*/||g')

     # replace %o by the temporary dlfile if it exists
@@ -326,7 +326,7 @@ download_file() {
         dlcmd=${dlcmd//\%o/\"$file.part\"}
         dlfile="$file.part"
     fi
-    # add the url, either in place of %u or at the end
+    # add the URL, either in place of %u or at the end
     if echo "$dlcmd" | grep -q "%u" ; then
         dlcmd=${dlcmd//\%u/\"$url\"}
     else
@@ -766,7 +766,7 @@ run_package() {
             mv "$BUILDLOG" "$BUILDLOG.$i"
         fi

-        # ensure overridden package variables suvrive tee with split
packages
+        # ensure overridden package variables survive tee with split
packages
         logpipe=$(mktemp -u "$startdir/logpipe.XXXXXXXX")
         mknod "$logpipe" p
         exec 3>&1
@@ -849,7 +849,7 @@ tidy_install() {
         local binary
         find ${STRIP_DIRS[@]} -type f 2>/dev/null | while read binary ; do
             case "$(file -biz "$binary")" in
-                *compressed-encoding*)      # Skip compressed binarys
+                *compressed-encoding*)      # Skip compressed binaries
                     ;;
                 *application/x-sharedlib*)  # Libraries (.so)
                     /usr/bin/strip -S "$binary";;
@@ -948,9 +948,18 @@ write_pkginfo() {

 create_package() {
     if [ ! -d "$pkgdir" ]; then
-        error "$(gettext "Missing pkg/ directory.")"
-        plain "$(gettext "Aborting...")"
-        exit 1 # $E_MISSING_PKGDIR
+        if [ "$REPKG" -eq 1 -a -f
$PKGDEST/${pkg}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} ]; then
+            mkdir "$pkgdir" && cd "$pkgdir"
+            if ! bsdtar -xf
$PKGDEST/${pkg}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} ; then
+                error "$(gettext "Failed to extract package for
repackaging")"
+                exit 1 # TODO: error code
+            fi
+            cd ..
+        else
+            error "$(gettext "Missing pkg/ directory.")"
+            plain "$(gettext "Aborting...")"
+            exit 1 # $E_MISSING_PKGDIR
+        fi
     fi

     cd "$pkgdir"
-- 
1.6.4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-makepkg-R-allow-unpacking-when-pkgdir-is-empty.patch
Type: text/x-patch
Size: 4028 bytes
Desc: not available
URL: <http://www.archlinux.org/pipermail/pacman-dev/attachments/20090818/e90dcd28/attachment-0001.bin>


More information about the pacman-dev mailing list