On Thu, Oct 14, 2010 at 11:57:00PM +0300, Nezmer wrote: > On Thu, Oct 14, 2010 at 04:56:17PM +0300, Nezmer wrote: > > This will enable us to use a custom name and/or location of bsdtar > > binary in scripts. > > > > Signed-off-by: Nezmer <[email protected]> > > --- > > 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 > > > > Any thoughts on this one? >
Is this rejected?
