[pacman-dev] Minor patches to improve portability
I'm about to send 4 minor patches that should improve portability. They mostly address using proper paths for binaries, databases and configs. I don't necessarily know what I'm doing especially inside Makefiles. So, I apologise If I did anything stupid in there.
"/etc" was hardcoded in some scripts and manpages. Change this to respect sysconfdir Signed-off-by: Nezmer <git@nezmer.info> --- contrib/Makefile.am | 10 ++++++++++ contrib/bacman | 12 ++++++------ contrib/pacscripts | 2 +- contrib/pactree | 6 +++--- contrib/wget-xdelta.sh | 4 ++-- contrib/zsh_completion | 6 +++--- doc/Makefile.am | 8 ++++++++ doc/makepkg.8.txt | 2 +- doc/pacman.conf.5.txt | 4 ++-- scripts/rankmirrors.sh.in | 2 +- 10 files changed, 37 insertions(+), 19 deletions(-) diff --git a/contrib/Makefile.am b/contrib/Makefile.am index c6243b1..cb2ffc7 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -12,4 +12,14 @@ EXTRA_DIST = \ zsh_completion \ README +edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' + +# Use sysconfdir +$(EXTRA_DIST): Makefile + cp -a $@ $@.tmp # To reserve permissions in tmp files + $(edit) $@ >$@.tmp || true + mv $@.tmp $@ + +all-am: $(EXTRA_DIST) + # vim:set ts=2 sw=2 noet: diff --git a/contrib/bacman b/contrib/bacman index 6dd7839..dfb0ad9 100755 --- a/contrib/bacman +++ b/contrib/bacman @@ -67,20 +67,20 @@ fi # # Setting environmental variables # -if [ ! -r /etc/pacman.conf ]; then - echo "ERROR: unable to read /etc/pacman.conf" +if [ ! -r @sysconfdir@/pacman.conf ]; then + echo "ERROR: unable to read @sysconfdir@/pacman.conf" exit 1 fi -eval $(awk '/DBPath/ {print $1$2$3}' /etc/pacman.conf) +eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf) pac_db="${DBPath:-/var/lib/pacman/}/local" -if [ ! -r /etc/makepkg.conf ]; then - echo "ERROR: unable to read /etc/makepkg.conf" +if [ ! -r @sysconfdir@/makepkg.conf ]; then + echo "ERROR: unable to read @sysconfdir@/makepkg.conf" exit 1 fi -source "/etc/makepkg.conf" +source "@sysconfdir@/makepkg.conf" if [ -r ~/.makepkg.conf ]; then source ~/.makepkg.conf fi diff --git a/contrib/pacscripts b/contrib/pacscripts index 101fb15..b4fdf32 100755 --- a/contrib/pacscripts +++ b/contrib/pacscripts @@ -27,7 +27,7 @@ set -o errexit progname=$(basename $0) progver="0.4" -conf="/etc/pacman.conf" +conf="@sysconfdir@/pacman.conf" if [ ! -r "$conf" ]; then echo "ERROR: unable to read $conf" diff --git a/contrib/pactree b/contrib/pactree index 6051724..ed55a61 100755 --- a/contrib/pactree +++ b/contrib/pactree @@ -272,11 +272,11 @@ if [ $graphviz -eq 1 ]; then fi fi -if [ ! -r /etc/pacman.conf ]; then - echo "ERROR: unable to read /etc/pacman.conf" +if [ ! -r @sysconfdir@/pacman.conf ]; then + echo "ERROR: unable to read @sysconfdir@/pacman.conf" exit 1 else - eval $(awk '/DBPath/ {print $1$2$3}' /etc/pacman.conf) + eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf) fi pac_db="${DBPath:-/var/lib/pacman}/local" diff --git a/contrib/wget-xdelta.sh b/contrib/wget-xdelta.sh index 4656f4d..03b3b6e 100755 --- a/contrib/wget-xdelta.sh +++ b/contrib/wget-xdelta.sh @@ -1,7 +1,7 @@ #!/bin/bash -if [ -r "/etc/makepkg.conf" ]; then - source /etc/makepkg.conf +if [ -r "@sysconfdir@/makepkg.conf" ]; then + source @sysconfdir@/makepkg.conf else echo "wget-xdelta: Unable to find makepkg.conf" exit 1 diff --git a/contrib/zsh_completion b/contrib/zsh_completion index f69fe63..9b67881 100644 --- a/contrib/zsh_completion +++ b/contrib/zsh_completion @@ -222,14 +222,14 @@ _pacman_completions_all_groups() { _pacman_completions_all_packages() { local -a cmd packages repositories packages_long - repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) + repositories=(${(o)${${${(M)${(f)"$(<@sysconfdir@/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) typeset -U repositories packages_long=(/var/lib/pacman/sync/${^repositories}/*(/)) packages=(${(o)${${packages_long/\/var\/lib\/pacman\/sync\//}#*/}%-*-*} ) typeset -U packages _wanted packages expl "packages" compadd - "${(@)packages}" if [[ $PREFIX != */* ]] ; then - repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) + repositories=(${(o)${${${(M)${(f)"$(<@sysconfdir@/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) typeset -U repositories _wanted repo_packages expl "repository/package" compadd -S "/" $repositories else @@ -261,7 +261,7 @@ _pacman_completions_installed_packages() { # provides completions for repository names _pacman_completions_repositories() { local -a cmd repositories - repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) + repositories=(${(o)${${${(M)${(f)"$(<@sysconfdir@/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) # Uniq the array typeset -U repositories compadd "$@" -a repositories diff --git a/doc/Makefile.am b/doc/Makefile.am index 2e656f6..91a7695 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -66,6 +66,8 @@ else REAL_PACKAGE_VERSION = $(PACKAGE_VERSION) endif +edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' + man_MANS = dist_man_MANS = $(ASCIIDOC_MANS) repo-remove.8 @@ -124,6 +126,12 @@ $(HTML_OTHER): asciidoc.conf %.5.html: ASCIIDOC_OPTS += -d manpage %.3.html: ASCIIDOC_OPTS += -d manpage +# Use sysconfdir +%.txt: Makefile + cp -a $@ $@.tmp # To reserve permissions in tmp files + $(edit) $@ >$@.tmp || true + mv $@.tmp $@ + # Dependency rules pacman.8 pacman.8.html: pacman.8.txt makepkg.8 makepkg.8.html: makepkg.8.txt diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt index a2fdb3f..4251f38 100644 --- a/doc/makepkg.8.txt +++ b/doc/makepkg.8.txt @@ -53,7 +53,7 @@ Options in linkman:makepkg.conf[5]. *--config* <`/path/to/config`>:: - Use an alternate config file instead of the `/etc/makepkg.conf` default; + Use an alternate config file instead of the `@sysconfdir@/makepkg.conf` default; *-d, \--nodeps*:: Do not perform any dependency checks. This will let you override and diff --git a/doc/pacman.conf.5.txt b/doc/pacman.conf.5.txt index 0e8426a..f203600 100644 --- a/doc/pacman.conf.5.txt +++ b/doc/pacman.conf.5.txt @@ -35,7 +35,7 @@ NoUpgrade = etc/passwd etc/group etc/shadow NoUpgrade = etc/fstab [core] -Include = /etc/pacman.d/core +Include = @sysconfdir@/pacman.d/core [custom] Server = file:///home/pkgs @@ -180,7 +180,7 @@ contain a file that lists the servers for that repository. # use this repository first Server = ftp://ftp.archlinux.org/core/os/arch # next use servers as defined in the mirrorlist below -Include = /etc/pacman.d/mirrorlist +Include = @sysconfdir@/pacman.d/mirrorlist -------- During parsing, pacman will define the `$repo` variable to the name of the diff --git a/scripts/rankmirrors.sh.in b/scripts/rankmirrors.sh.in index 0cd4c08..a0ff6d5 100644 --- a/scripts/rankmirrors.sh.in +++ b/scripts/rankmirrors.sh.in @@ -25,7 +25,7 @@ usage() { echo "Usage: rankmirrors [options] MIRRORFILE | URL" echo echo "Ranks pacman mirrors by their connection and opening speed. Pacman mirror" - echo "files are located in /etc/pacman.d/. It can also rank one mirror if the URL is" + echo "files are located in @sysconfdir@/pacman.d/. It can also rank one mirror if the URL is" echo "provided." echo echo "Options:" -- 1.7.3.1
On Mon, Oct 11, 2010 at 2:16 PM, Nezmer <git@nezmer.info> wrote:
"/etc" was hardcoded in some scripts and manpages. Change this to respect sysconfdir
Signed-off-by: Nezmer <git@nezmer.info> --- contrib/Makefile.am | 10 ++++++++++ contrib/bacman | 12 ++++++------ contrib/pacscripts | 2 +- contrib/pactree | 6 +++--- contrib/wget-xdelta.sh | 4 ++-- contrib/zsh_completion | 6 +++--- doc/Makefile.am | 8 ++++++++ doc/makepkg.8.txt | 2 +- doc/pacman.conf.5.txt | 4 ++-- scripts/rankmirrors.sh.in | 2 +- 10 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/contrib/Makefile.am b/contrib/Makefile.am index c6243b1..cb2ffc7 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -12,4 +12,14 @@ EXTRA_DIST = \ zsh_completion \ README
+edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' + +# Use sysconfdir +$(EXTRA_DIST): Makefile + cp -a $@ $@.tmp # To reserve permissions in tmp files + $(edit) $@ >$@.tmp || true + mv $@.tmp $@ + +all-am: $(EXTRA_DIST) +
Unfortunately, none of this works quite as expected unless I am missing something. 1) You will immediately mark files as dirty to git and 2) there is no more @sysconfdir@ once this runs once, making it not all that useful. The first step to these patches will be to do to contrib/ what was done to scripts/ way back when, and move them to extensions such as .sh.in and then have the final result in a bare .sh file. -Dan
On Mon, Oct 11, 2010 at 02:52:01PM -0500, Dan McGee wrote:
On Mon, Oct 11, 2010 at 2:16 PM, Nezmer <git@nezmer.info> wrote:
"/etc" was hardcoded in some scripts and manpages. Change this to respect sysconfdir
Signed-off-by: Nezmer <git@nezmer.info> --- contrib/Makefile.am | 10 ++++++++++ contrib/bacman | 12 ++++++------ contrib/pacscripts | 2 +- contrib/pactree | 6 +++--- contrib/wget-xdelta.sh | 4 ++-- contrib/zsh_completion | 6 +++--- doc/Makefile.am | 8 ++++++++ doc/makepkg.8.txt | 2 +- doc/pacman.conf.5.txt | 4 ++-- scripts/rankmirrors.sh.in | 2 +- 10 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/contrib/Makefile.am b/contrib/Makefile.am index c6243b1..cb2ffc7 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -12,4 +12,14 @@ EXTRA_DIST = \ zsh_completion \ README
+edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' + +# Use sysconfdir +$(EXTRA_DIST): Makefile + cp -a $@ $@.tmp # To reserve permissions in tmp files + $(edit) $@ >$@.tmp || true + mv $@.tmp $@ + +all-am: $(EXTRA_DIST) +
Unfortunately, none of this works quite as expected unless I am missing something. 1) You will immediately mark files as dirty to git and 2) there is no more @sysconfdir@ once this runs once, making it not all that useful.
The first step to these patches will be to do to contrib/ what was done to scripts/ way back when, and move them to extensions such as .sh.in and then have the final result in a bare .sh file.
-Dan
I know. I wasn't sure you would accept renaming all files.
On Mon, Oct 11, 2010 at 2:57 PM, Nezmer <git@nezmer.info> wrote:
On Mon, Oct 11, 2010 at 02:52:01PM -0500, Dan McGee wrote:
On Mon, Oct 11, 2010 at 2:16 PM, Nezmer <git@nezmer.info> wrote:
"/etc" was hardcoded in some scripts and manpages. Change this to respect sysconfdir
Signed-off-by: Nezmer <git@nezmer.info> --- contrib/Makefile.am | 10 ++++++++++ contrib/bacman | 12 ++++++------ contrib/pacscripts | 2 +- contrib/pactree | 6 +++--- contrib/wget-xdelta.sh | 4 ++-- contrib/zsh_completion | 6 +++--- doc/Makefile.am | 8 ++++++++ doc/makepkg.8.txt | 2 +- doc/pacman.conf.5.txt | 4 ++-- scripts/rankmirrors.sh.in | 2 +- 10 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/contrib/Makefile.am b/contrib/Makefile.am index c6243b1..cb2ffc7 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -12,4 +12,14 @@ EXTRA_DIST = \ zsh_completion \ README
+edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' + +# Use sysconfdir +$(EXTRA_DIST): Makefile + cp -a $@ $@.tmp # To reserve permissions in tmp files + $(edit) $@ >$@.tmp || true + mv $@.tmp $@ + +all-am: $(EXTRA_DIST) +
Unfortunately, none of this works quite as expected unless I am missing something. 1) You will immediately mark files as dirty to git and 2) there is no more @sysconfdir@ once this runs once, making it not all that useful.
The first step to these patches will be to do to contrib/ what was done to scripts/ way back when, and move them to extensions such as .sh.in and then have the final result in a bare .sh file.
-Dan
I know.
I wasn't sure you would accept renaming all files.
It's the only way I will take it. :) The patch can be made a lot more compact if you use the '-M -B -C' set of options to diff/log/format-patch. -Dan
"/var" was hardcoded in some scripts and manpages. Change this to respect localstatedir Signed-off-by: Nezmer <git@nezmer.info> --- contrib/Makefile.am | 4 +++- contrib/bacman | 2 +- contrib/pacscripts | 4 ++-- contrib/pactree | 2 +- contrib/wget-xdelta.sh | 4 ++-- contrib/zsh_completion | 12 ++++++------ doc/Makefile.am | 4 +++- doc/pacman.8.txt | 4 ++-- doc/pacman.conf.5.txt | 8 ++++---- 9 files changed, 24 insertions(+), 20 deletions(-) diff --git a/contrib/Makefile.am b/contrib/Makefile.am index cb2ffc7..337a3f3 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -12,7 +12,9 @@ EXTRA_DIST = \ zsh_completion \ README -edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' +edit = sed \ + -e 's|@localstatedir[@]|$(localstatedir)|g' \ + -e 's|@sysconfdir[@]|$(sysconfdir)|g' # Use sysconfdir $(EXTRA_DIST): Makefile diff --git a/contrib/bacman b/contrib/bacman index dfb0ad9..504ba51 100755 --- a/contrib/bacman +++ b/contrib/bacman @@ -73,7 +73,7 @@ if [ ! -r @sysconfdir@/pacman.conf ]; then fi eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf) -pac_db="${DBPath:-/var/lib/pacman/}/local" +pac_db="${DBPath:-@localstatedir@/lib/pacman/}/local" if [ ! -r @sysconfdir@/makepkg.conf ]; then echo "ERROR: unable to read @sysconfdir@/makepkg.conf" diff --git a/contrib/pacscripts b/contrib/pacscripts index b4fdf32..3479dc1 100755 --- a/contrib/pacscripts +++ b/contrib/pacscripts @@ -36,8 +36,8 @@ fi eval $(awk '/DBPath/ {print $1$2$3}' "$conf") eval $(awk '/CacheDir/ {print $1$2$3}' "$conf") -pac_db="${DBPath:-/var/lib/pacman}/local" -pac_cache="${CacheDir:-/var/cache/pacman/pkg}" +pac_db="${DBPath:-@localstatedir@/lib/pacman}/local" +pac_cache="${CacheDir:-@localstatedir@/cache/pacman/pkg}" error() { local mesg=$1; shift diff --git a/contrib/pactree b/contrib/pactree index ed55a61..8a59a34 100755 --- a/contrib/pactree +++ b/contrib/pactree @@ -279,7 +279,7 @@ else eval $(awk '/DBPath/ {print $1$2$3}' @sysconfdir@/pacman.conf) fi -pac_db="${DBPath:-/var/lib/pacman}/local" +pac_db="${DBPath:-@localstatedir@/lib/pacman}/local" if [ ! -d "$pac_db" ] ; then echo "ERROR: pacman database directory ${pac_db} not found" diff --git a/contrib/wget-xdelta.sh b/contrib/wget-xdelta.sh index 03b3b6e..a77b2b3 100755 --- a/contrib/wget-xdelta.sh +++ b/contrib/wget-xdelta.sh @@ -30,11 +30,11 @@ new_version=$(echo $pkg_data | cut -d ' ' -f 2) base_url=${file_url%/*} # Look for the last version -for file in $(ls -r /var/cache/pacman/pkg/${pkgname}-*-*{,-$CARCH}$PKGEXT 2>/dev/null); do +for file in $(ls -r @localstatedir@/cache/pacman/pkg/${pkgname}-*-*{,-$CARCH}$PKGEXT 2>/dev/null); do [[ "$file" =~ "$CARCH" ]] && arch="-$CARCH" || arch="" check_version=$(echo $file | \ sed "s|^.*/${pkgname}-\([[:alnum:]_\.]*-[[:alnum:]_\.]*\)${arch}$PKGEXT$|\1|" | \ - grep -v "^/var/cache/pacman/pkg") + grep -v "^@localstatedir@/cache/pacman/pkg") [ "$check_version" = "" ] && continue diff --git a/contrib/zsh_completion b/contrib/zsh_completion index 9b67881..1691913 100644 --- a/contrib/zsh_completion +++ b/contrib/zsh_completion @@ -224,8 +224,8 @@ _pacman_completions_all_packages() { repositories=(${(o)${${${(M)${(f)"$(<@sysconfdir@/pacman.conf)"}:#\[*}/\[/}/\]/}:#options}) typeset -U repositories - packages_long=(/var/lib/pacman/sync/${^repositories}/*(/)) - packages=(${(o)${${packages_long/\/var\/lib\/pacman\/sync\//}#*/}%-*-*} ) + packages_long=(@localstatedir@/lib/pacman/sync/${^repositories}/*(/)) + packages=(${(o)${${packages_long#@localstatedir@/lib/pacman/sync/}#*/}%-*-*} ) typeset -U packages _wanted packages expl "packages" compadd - "${(@)packages}" if [[ $PREFIX != */* ]] ; then @@ -234,8 +234,8 @@ _pacman_completions_all_packages() { _wanted repo_packages expl "repository/package" compadd -S "/" $repositories else compset -P '*/' - packages_long=(/var/lib/pacman/sync/$IPREFIX*(/)) - packages=(${(o)${${packages_long/\/var\/lib\/pacman\/sync\//}#*/}%-*-*} ) + packages_long=(@localstatedir@/lib/pacman/sync/$IPREFIX*(/)) + packages=(${(o)${${packages_long#@localstatedir@/lib/pacman/sync/}#*/}%-*-*} ) typeset -U packages _wanted repo_packages expl "repository/package" compadd ${(@)packages} fi @@ -253,8 +253,8 @@ _pacman_completions_installed_groups() { # provides completions for installed packages _pacman_completions_installed_packages() { local -a cmd packages packages_long - packages_long=(/var/lib/pacman/local/*(/)) - packages=( ${${packages_long/\/var\/lib\/pacman\/local\//}%-*-*} ) + packages_long=(@localstatedir@/lib/pacman/local/*(/)) + packages=( ${${packages_long#@localstatedir@/lib/pacman/local/}%-*-*} ) compadd "$@" -a packages } diff --git a/doc/Makefile.am b/doc/Makefile.am index 91a7695..2cc339f 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -66,7 +66,9 @@ else REAL_PACKAGE_VERSION = $(PACKAGE_VERSION) endif -edit = sed -e 's|@sysconfdir[@]|$(sysconfdir)|g' +edit = sed \ + -e 's|@localstatedir[@]|$(localstatedir)|g' \ + -e 's|@sysconfdir[@]|$(sysconfdir)|g' man_MANS = dist_man_MANS = $(ASCIIDOC_MANS) repo-remove.8 diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt index de1f51f..98922ba 100644 --- a/doc/pacman.8.txt +++ b/doc/pacman.8.txt @@ -118,7 +118,7 @@ Options *-b, \--dbpath* <'path'>:: Specify an alternative database location (a typical default is - ``/var/lib/pacman''). This should not be used unless you know what you are + ``@localstatedir@/lib/pacman''). This should not be used unless you know what you are doing. *NOTE*: if specified, this is an absolute path and the root path is not automatically prepended. @@ -151,7 +151,7 @@ Options *\--cachedir* <'dir'>:: Specify an alternative package cache location (a typical default is - ``/var/cache/pacman/pkg''). Multiple cache directories can be specified, + ``@localstatedir@/cache/pacman/pkg''). Multiple cache directories can be specified, and they are tried in the order they are passed to pacman. *NOTE*: this is an absolute path, the root path is not automatically prepended. diff --git a/doc/pacman.conf.5.txt b/doc/pacman.conf.5.txt index f203600..1bd58e8 100644 --- a/doc/pacman.conf.5.txt +++ b/doc/pacman.conf.5.txt @@ -57,13 +57,13 @@ Options *DBPath =* path/to/db/dir:: Overrides the default location of the toplevel database directory. A - typical default is ``/var/lib/pacman/''. Most users will not need to set + typical default is ``@localstatedir@/lib/pacman/''. Most users will not need to set this option. *NOTE*: if specified, this is an absolute path and the root path is not automatically prepended. *CacheDir =* path/to/cache/dir:: Overrides the default location of the package cache directory. A typical - default is ``/var/cache/pacman/pkg/''. Multiple cache directories can be + default is ``@localstatedir@/cache/pacman/pkg/''. Multiple cache directories can be specified, and they are tried in the order they are listed in the config file. If a file is not found in any cache directory, it will be downloaded to the first cache directory with write access. *NOTE*: this is an absolute @@ -72,7 +72,7 @@ Options *LogFile =* '/path/to/file':: Overrides the default location of the pacman log file. A typical default - is ``/var/log/pacman.log''. This is an absolute path and the root directory + is ``@localstatedir@/log/pacman.log''. This is an absolute path and the root directory is not prepended. *HoldPkg =* package ...:: @@ -147,7 +147,7 @@ Options *UseSyslog*:: Log action messages through syslog(). This will insert log entries into - ``/var/log/messages'' or equivalent. + ``@localstatedir@/log/messages'' or equivalent. *ShowSize*:: Display the size of individual packages for '\--sync' and '\--query' modes. -- 1.7.3.1
'/bin/bash' is hardcoded in shebangs. bash is not a system shell in all platforms and its path is not necessarily '/bin/bash'. I used 'which bash' to detect the real path of bash. Signed-off-by: Nezmer <git@nezmer.info> --- contrib/Makefile.am | 3 +++ contrib/bacman | 2 +- contrib/pacdiff | 2 +- contrib/pacscripts | 2 +- contrib/pactree | 2 +- contrib/wget-xdelta.sh | 2 +- scripts/Makefile.am | 3 +++ scripts/makepkg.sh.in | 2 +- scripts/pacman-optimize.sh.in | 2 +- scripts/pkgdelta.sh.in | 2 +- scripts/rankmirrors.sh.in | 2 +- scripts/repo-add.sh.in | 2 +- 12 files changed, 16 insertions(+), 10 deletions(-) diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 337a3f3..4c3b6a6 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -12,8 +12,11 @@ EXTRA_DIST = \ zsh_completion \ README +BASH := $(shell sh -c 'which bash|| echo /bin/bash') + edit = sed \ -e 's|@localstatedir[@]|$(localstatedir)|g' \ + -e 's|@BASH[@]|$(BASH)|g' \ -e 's|@sysconfdir[@]|$(sysconfdir)|g' # Use sysconfdir diff --git a/contrib/bacman b/contrib/bacman index 504ba51..2a93f8b 100755 --- a/contrib/bacman +++ b/contrib/bacman @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # # bacman: recreate a package from a running system # This script rebuilds an already installed package using metadata diff --git a/contrib/pacdiff b/contrib/pacdiff index 3f26f38..716333a 100755 --- a/contrib/pacdiff +++ b/contrib/pacdiff @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # pacdiff : a simple pacnew/pacorig/pacsave updater # # Copyright (c) 2007 Aaron Griffin <aaronmgriffin@gmail.com> diff --git a/contrib/pacscripts b/contrib/pacscripts index 3479dc1..123c79d 100755 --- a/contrib/pacscripts +++ b/contrib/pacscripts @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # # pacscripts : tries to print out the {pre,post}_{install,remove,upgrade} # scripts of a given package diff --git a/contrib/pactree b/contrib/pactree index 8a59a34..29c6af6 100755 --- a/contrib/pactree +++ b/contrib/pactree @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # pactree : a simple dependency tree viewer # # Copyright (C) 2008 Carlo "carlocci" Bersani <carlocci@gmail.com> diff --git a/contrib/wget-xdelta.sh b/contrib/wget-xdelta.sh index a77b2b3..caf0171 100755 --- a/contrib/wget-xdelta.sh +++ b/contrib/wget-xdelta.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ if [ -r "@sysconfdir@/makepkg.conf" ]; then source @sysconfdir@/makepkg.conf diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 31e8fb5..5967ab1 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -29,12 +29,15 @@ else REAL_PACKAGE_VERSION = $(PACKAGE_VERSION) endif +BASH := $(shell sh -c 'which bash|| echo /bin/bash') + #### Taken from the autoconf scripts Makefile.am #### edit = sed \ -e 's|@localedir[@]|$(localedir)|g' \ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \ -e 's|@localstatedir[@]|$(localstatedir)|g' \ -e 's|@prefix[@]|$(prefix)|g' \ + -e 's|@BASH[@]|$(BASH)|g' \ -e 's|@PACKAGE_VERSION[@]|$(REAL_PACKAGE_VERSION)|g' \ -e 's|@PACKAGE_BUGREPORT[@]|$(PACKAGE_BUGREPORT)|g' \ -e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \ diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 3a7a4d1..baabf26 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -1,4 +1,4 @@ -#!/bin/bash -e +#!@BASH@ -e # # makepkg - make packages compatible for use with pacman # @configure_input@ diff --git a/scripts/pacman-optimize.sh.in b/scripts/pacman-optimize.sh.in index 78b2345..eb6691c 100644 --- a/scripts/pacman-optimize.sh.in +++ b/scripts/pacman-optimize.sh.in @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # # pacman-optimize # @configure_input@ diff --git a/scripts/pkgdelta.sh.in b/scripts/pkgdelta.sh.in index 1550fa1..d45678d 100644 --- a/scripts/pkgdelta.sh.in +++ b/scripts/pkgdelta.sh.in @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # # pkgdelta - create delta files for use with pacman and repo-add # @configure_input@ diff --git a/scripts/rankmirrors.sh.in b/scripts/rankmirrors.sh.in index a0ff6d5..3851b77 100644 --- a/scripts/rankmirrors.sh.in +++ b/scripts/rankmirrors.sh.in @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # # rankmirrors - read a list of mirrors from a file and rank them by speed # @configure_input@ diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in index 8ef940d..4338011 100644 --- a/scripts/repo-add.sh.in +++ b/scripts/repo-add.sh.in @@ -1,4 +1,4 @@ -#!/bin/bash +#!@BASH@ # # repo-add - add a package to a given repo database file # repo-remove - remove a package entry from a given repo database file -- 1.7.3.1
'mknod <file> p' is apparently GNU-only. Looking at coreutils' source code, It just calls mkfifo. This one line patch should fix makepkg logging in non-GNU systems. Signed-off-by: Nezmer <git@nezmer.info> --- scripts/makepkg.sh.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index baabf26..afedc31 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -767,7 +767,7 @@ run_function() { # ensure overridden package variables survive tee with split packages logpipe=$(mktemp -u "$startdir/logpipe.XXXXXXXX") - mknod "$logpipe" p + mkfifo "$logpipe" exec 3>&1 tee "$BUILDLOG" < "$logpipe" & exec 1>"$logpipe" 2>"$logpipe" -- 1.7.3.1
On Mon, Oct 11, 2010 at 2:16 PM, Nezmer <git@nezmer.info> wrote:
'mknod <file> p' is apparently GNU-only. Looking at coreutils' source code, It just calls mkfifo.
This one line patch should fix makepkg logging in non-GNU systems.
Signed-off-by: Nezmer <git@nezmer.info> --- Looks good, thanks.
scripts/makepkg.sh.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index baabf26..afedc31 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -767,7 +767,7 @@ run_function() {
# ensure overridden package variables survive tee with split packages logpipe=$(mktemp -u "$startdir/logpipe.XXXXXXXX") - mknod "$logpipe" p + mkfifo "$logpipe" exec 3>&1 tee "$BUILDLOG" < "$logpipe" & exec 1>"$logpipe" 2>"$logpipe" -- 1.7.3.1
participants (2)
-
Dan McGee
-
Nezmer