[pacman-dev] [PATCH 1/2] Restore ability for $PACMAN to include arguments and document it
Dave Reisner
d at falconindy.com
Fri Nov 2 21:56:32 EDT 2012
On Wed, Oct 31, 2012 at 07:02:59AM +0000, Martin Panter wrote:
> Unmangled version: https://github.com/vadmium/pacman-arch/commit/70b1327.patch
>
> From 70b1327c0443818d163e10b649ba882a4fd5a0f3 Mon Sep 17 00:00:00 2001
> From: Martin Panter <vadmium à gmail·com>
> Date: Wed, 31 Oct 2012 03:05:42 +0000
> Subject: [PATCH] Restore ability for $PACMAN to include arguments and
> document it
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> Judging by the “${PACMAN%% *}” incantation from revision 66c6d28 (makepkg:
> allow to specify an alternative pacman command), it looks like this was
> consciously intended.
66c6d28 is a 3 year old patch, and I strongly disagree with what it
does. Other common environment variables like EDITOR do not allow
options to be part of the binary name, and I think we should stick to
that.
> Currently, including arguments in $PACMAN means the --syncdeps operation may
> be attempted, but each Pacman invocation will probably fail. However in other
> cases the operation would be skipped if $PACMAN cannot be found. Looks like
> this inconsistency comes from revision 622326b (makepkg: fix sudo/su calling
> of pacman).
This is a two year old patch which isn't really much better given that
it relies on eval (a common misspelling of evil). The current behavior
using an array is what I consider to be correct and proper (and safe)
bash.
If you'd like the ability to extend PACMAN and invoke it with arguments,
I suggest exposing the currentlly internal PACMAN_OPTS in a sane way.
Thanks,
Dave
> ---
> doc/makepkg.8.txt | 3 ++-
> scripts/makepkg.sh.in | 4 ++--
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
> index 9d19e38..8b440a3 100644
> --- a/doc/makepkg.8.txt
> +++ b/doc/makepkg.8.txt
> @@ -196,7 +196,8 @@ Environment Variables
> The command that will be used to check for missing dependencies and to
> install and remove packages. Pacman's -Qq, -Rns, -S, -T, and -U
> operations must be supported by this command. If the variable is not
> - set or empty, makepkg will fall back to `pacman'.
> + set or empty, makepkg will fall back to `pacman'. The variable may
> + include command arguments, separated with spaces.
>
> **PKGDEST=**"/path/to/folder"::
> Folder where the resulting packages will be stored. Overrides the
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index d387b7d..3b4f27f 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -873,9 +873,9 @@ source_has_signatures() {
> run_pacman() {
> local cmd
> if [[ ! $1 = -@(T|Qq) ]]; then
> - cmd=("$PACMAN" $PACMAN_OPTS "$@")
> + cmd=($PACMAN $PACMAN_OPTS "$@")
> else
> - cmd=("$PACMAN" "$@")
> + cmd=($PACMAN "$@")
> fi
> if (( ! ASROOT )) && [[ ! $1 = -@(T|Qq) ]]; then
> if type -p sudo >/dev/null; then
> --
> 1.7.12
>
More information about the pacman-dev
mailing list