This will enable us to use a custom name and/or location of bsdtar
binary in scripts.

Signed-off-by: Nezmer <g...@nezmer.info>
---
 configure.ac                  |    6 ++++++
 contrib/Makefile.am           |    1 +
 contrib/bacman.in             |    4 ++--
 contrib/pacscripts.in         |    4 ++--
 scripts/Makefile.am           |    1 +
 scripts/makepkg.sh.in         |   12 ++++++------
 scripts/pacman-optimize.sh.in |    4 ++--
 scripts/pkgdelta.sh.in        |    2 +-
 scripts/repo-add.sh.in        |   14 +++++++-------
 9 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/configure.ac b/configure.ac
index 6f601f4..50d4a04 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,6 +98,11 @@ AC_ARG_WITH(fetch,
        AS_HELP_STRING([--with-fetch], [use libfetch as an internal 
downloader]),
        [], [with_fetch=check])
 
+# Custom bsdtar binary name and/or location
+AC_ARG_WITH(bsdtar_bin,
+  AS_HELP_STRING([--with-bsdtar-bin=BSDTAR], [use bsdtar_bin as the bsdtar 
binary in scripts]),
+  BSDTAR_BIN=$with_bsdtar_bin)
+
 # Help line for documentation
 AC_ARG_ENABLE(doc,
        AS_HELP_STRING([--disable-doc], [prevent make from looking at doc/ 
dir]),
@@ -128,6 +133,7 @@ AC_PROG_MAKE_SET
 AC_PROG_LIBTOOL
 AC_CHECK_PROGS([PYTHON], [python2.7 python2.6 python2.5 python2 python], 
[false])
 AC_PATH_PROGS([BASH_SHELL], [bash bash4 bash3], [false])
+AC_PATH_PROGS([BSDTAR_BIN], [bsdtar], [false])
 
 # find installed gettext
 AM_GNU_GETTEXT([external])
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 55366b4..985b19f 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -29,6 +29,7 @@ MOSTLYCLEANFILES = $(OURFILES) *.tmp
 edit = sed \
        -e 's|@sysconfd...@]|$(sysconfdir)|g' \
        -e 's|@localstated...@]|$(localstatedir)|g' \
+       -e 's|@bsdtar_b...@]|$(BSDTAR_BIN)|g' \
        -e 's|@bash_she...@]|$(BASH_SHELL)|g'
 
 $(OURFILES): Makefile
diff --git a/contrib/bacman.in b/contrib/bacman.in
index b4e3b4b..1891ef6 100755
--- a/contrib/bacman.in
+++ b/contrib/bacman.in
@@ -133,7 +133,7 @@ while read i; do
         %FILES%)
             ret=0
             if [ -e "/$i" ]; then
-                bsdtar -cnf - "/$i" 2> /dev/null | bsdtar -xpf -
+                @BSDTAR_BIN@ -cnf - "/$i" 2> /dev/null | @BSDTAR_BIN@ -xpf -
 
                 # Workaround to bsdtar not reporting a missing file as an error
                 if [ ! -e "$work_dir/$i" -a ! -L "$work_dir/$i" ]; then
@@ -288,7 +288,7 @@ ret=0
 shopt -s nullglob
 # TODO: Maybe this can be set globally for robustness
 shopt -s -o pipefail
-bsdtar -cf - $comp_files * |
+...@bsdtar_bin@ -cf - $comp_files * |
 case "$PKGEXT" in
     *tar.gz)  gzip -c -f -n ;;
     *tar.bz2) bzip2 -c -f ;;
diff --git a/contrib/pacscripts.in b/contrib/pacscripts.in
index d366409..6faf964 100755
--- a/contrib/pacscripts.in
+++ b/contrib/pacscripts.in
@@ -85,7 +85,7 @@ print_db() {
 }
 
 print_pkg() {
-       if ! bsdtar -xOf "$1" .INSTALL 2>/dev/null; then
+       if ! @BSDTAR_BIN@ -xOf "$1" .INSTALL 2>/dev/null; then
                error "Package $1 does not include any .INSTALL script"
                return 1
        fi
@@ -94,7 +94,7 @@ print_pkg() {
 
 print_scriptlet() {
        if [ -f "$1" ]; then
-               if bsdtar tf "$1" .PKGINFO &>/dev/null; then
+               if @BSDTAR_BIN@ tf "$1" .PKGINFO &>/dev/null; then
                        print_pkg "$1"
                        return
                fi
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 78deb0b..4668ad1 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -35,6 +35,7 @@ edit = sed \
        -e 's|@sysconfd...@]|$(sysconfdir)|g' \
        -e 's|@localstated...@]|$(localstatedir)|g' \
        -e 's|@pref...@]|$(prefix)|g' \
+       -e 's|@bsdtar_b...@]|$(BSDTAR_BIN)|g' \
        -e 's|@bash_she...@]|$(BASH_SHELL)|g' \
        -e 's|@package_versi...@]|$(REAL_PACKAGE_VERSION)|g' \
        -e 's|@package_bugrepo...@]|$(PACKAGE_BUGREPORT)|g' \
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index bdf63ef..2731dbf 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -671,7 +671,7 @@ extract_sources() {
                local cmd=''
                case "$file_type" in
                        
*application/x-tar*|*application/zip*|*application/x-zip*|*application/x-cpio*)
-                               cmd="bsdtar" ;;
+                               cmd="@BSDTAR_BIN@" ;;
                        *application/x-gzip*)
                                case "$ext" in
                                        gz|z|Z) cmd="gzip" ;;
@@ -689,8 +689,8 @@ extract_sources() {
                                esac ;;
                        *)
                                # See if bsdtar can recognize the file
-                               if bsdtar -tf "$file" -q '*' &>/dev/null; then
-                                       cmd="bsdtar"
+                               if @BSDTAR_BIN@ -tf "$file" -q '*' &>/dev/null; 
then
+                                       cmd="@BSDTAR_BIN@"
                                else
                                        continue
                                fi ;;
@@ -698,7 +698,7 @@ extract_sources() {
 
                local ret=0
                msg2 "$(gettext "Extracting %s with %s")" "$file" "$cmd"
-               if [[ $cmd = bsdtar ]]; then
+               if [[ $cmd = @BSDTAR_BIN@ ]]; then
                        $cmd -xf "$file" || ret=$?
                else
                        rm -f "${file%.*}"
@@ -1043,7 +1043,7 @@ create_package() {
        shopt -s nullglob
        # TODO: Maybe this can be set globally for robustness
        shopt -s -o pipefail
-       bsdtar -cf - $comp_files * |
+       @BSDTAR_BIN@ -cf - $comp_files * |
        case "$PKGEXT" in
            *tar.gz)  gzip -c -f -n ;;
            *tar.bz2) bzip2 -c -f ;;
@@ -1135,7 +1135,7 @@ create_srcpackage() {
        # tar it up
        msg2 "$(gettext "Compressing source package...")"
        cd "${srclinks}"
-       if ! bsdtar -c${TAR_OPT}Lf "$pkg_file" ${pkgbase}; then
+       if ! @BSDTAR_BIN@ -c${TAR_OPT}Lf "$pkg_file" ${pkgbase}; then
                error "$(gettext "Failed to create source package file.")"
                exit 1 # TODO: error code
        fi
diff --git a/scripts/pacman-optimize.sh.in b/scripts/pacman-optimize.sh.in
index f4642ab..a0026b7 100644
--- a/scripts/pacman-optimize.sh.in
+++ b/scripts/pacman-optimize.sh.in
@@ -129,7 +129,7 @@ find "$dbroot" -type f | sort | xargs md5sum > 
"$workdir/pacsums.old"
 # step 2: tar it up
 msg "$(gettext "Tar'ing up %s...")" "$dbroot"
 cd "$dbroot"
-bsdtar -czf "$workdir/pacman-db.tar.gz" ./
+...@bsdtar_bin@ -czf "$workdir/pacman-db.tar.gz" ./
 if (( $? )); then
        rm -rf "$workdir"
        die_r "$(gettext "Tar'ing up %s failed.")" "$dbroot"
@@ -138,7 +138,7 @@ fi
 # step 3: make and sum the new db side-by-side with the old
 msg "$(gettext "Making and MD5sum'ing the new database...")"
 mkdir "$dbroot.new"
-bsdtar -xpf "$workdir/pacman-db.tar.gz" -C "$dbroot.new"
+...@bsdtar_bin@ -xpf "$workdir/pacman-db.tar.gz" -C "$dbroot.new"
 if (( $? )); then
        rm -rf "$workdir"
        die_r "$(gettext "Untar'ing %s failed.")" "$dbroot"
diff --git a/scripts/pkgdelta.sh.in b/scripts/pkgdelta.sh.in
index 6bc3f5d..b569ea4 100644
--- a/scripts/pkgdelta.sh.in
+++ b/scripts/pkgdelta.sh.in
@@ -76,7 +76,7 @@ read_pkginfo()
        IFS="
 "
        local line var val
-       for line in $(bsdtar -xOf "$1" .PKGINFO 2>/dev/null |
+       for line in $(@BSDTAR_BIN@ -xOf "$1" .PKGINFO 2>/dev/null |
                grep -v "^#" | sed 's|\(\w*\)\s*=\s*\(.*\)|\1="\2"|'); do
                eval "$line"
                if [[ -n $pkgname && -n $pkgver && -n $arch ]]; then
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index d09d1b4..8b6a028 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -198,7 +198,7 @@ db_write_entry()
 
        # read info from the zipped package
        local line var val
-       for line in $(bsdtar -xOqf "$pkgfile" .PKGINFO |
+       for line in $(@BSDTAR_BIN@ -xOqf "$pkgfile" .PKGINFO |
                        grep -v '^#' | sed 's|\(\w*\)\s*=\s*\(.*\)|\1 \2|'); do
                # bash awesomeness here- var is always one word, val is 
everything else
                var=${line%% *}
@@ -337,15 +337,15 @@ check_repo_db()
        if [[ -f $REPO_DB_FILE ]]; then
                # there are two situations we can have here- a DB with some 
entries,
                # or a DB with no contents at all.
-               if ! bsdtar -tqf "$REPO_DB_FILE" '*/desc' >/dev/null 2>&1; then
+               if ! @BSDTAR_BIN@ -tqf "$REPO_DB_FILE" '*/desc' >/dev/null 
2>&1; then
                        # check empty case
-                       if [[ -n $(bsdtar -tqf "$REPO_DB_FILE" '*' 2>/dev/null) 
]]; then
+                       if [[ -n $(@BSDTAR_BIN@ -tqf "$REPO_DB_FILE" '*' 
2>/dev/null) ]]; then
                                error "$(gettext "Repository file '%s' is not a 
proper pacman database.")" "$REPO_DB_FILE"
                                exit 1
                        fi
                fi
                msg "$(gettext "Extracting database to a temporary 
location...")"
-               bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir"
+               @BSDTAR_BIN@ -xf "$REPO_DB_FILE" -C "$tmpdir"
        else
                case "$cmd" in
                        repo-remove)
@@ -386,7 +386,7 @@ add()
        fi
 
        pkgfile=$1
-       if ! bsdtar -tqf "$pkgfile" .PKGINFO >/dev/null 2>&1; then
+       if ! @BSDTAR_BIN@ -tqf "$pkgfile" .PKGINFO >/dev/null 2>&1; then
                error "$(gettext "'%s' is not a package file, skipping")" 
"$pkgfile"
                return 1
        fi
@@ -505,11 +505,11 @@ if (( success )); then
 
        cd "$tmpdir"
        if [[ -n $(ls) ]]; then
-               bsdtar -c${TAR_OPT}f "$filename" *
+               @BSDTAR_BIN@ -c${TAR_OPT}f "$filename" *
        else
                # we have no packages remaining? zip up some emptyness
                warning "$(gettext "No packages remain, creating empty 
database.")"
-               bsdtar -c${TAR_OPT}f "$filename" -T /dev/null
+               @BSDTAR_BIN@ -c${TAR_OPT}f "$filename" -T /dev/null
        fi
        cd "$startdir"
 
-- 
1.7.3.1


Reply via email to