On 13/11/12 16:07, Martin Panter wrote: > On 13 November 2012 05:57, Allan McRae <[email protected]> wrote: >> On 13/11/12 14:18, Martin Panter wrote: >>> On 13 November 2012 03:14, Allan McRae <[email protected]> wrote: >>>> After we install dependencies, we source /etc/profile so that new >>>> elements get added to the path. As this can override any local setting >>>> of PATH, we store the full path of the PACMAN variable passed to makepkg. >>>> >>>> Also, add a check for PACMAN availability if it is needed to deal with any >>>> dependency operations. >>>> >>>> Signed-off-by: Allan McRae <[email protected]> >>>> --- >>>> >>>> This is a replacement for the patch provided by Martin Panter. While >>>> dealing >>>> with patches today, I decided that the check for the full pacman path was >>>> being done in the wrong place and we should do the usual check of software >>>> availability if "pacman" is needed. >>>> >>>> >>>> scripts/makepkg.sh.in | 18 +++++++++++++----- >>>> 1 file changed, 13 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in >>>> index f650b1b..16e421b 100644 >>>> --- a/scripts/makepkg.sh.in >>>> +++ b/scripts/makepkg.sh.in >>>> @@ -875,9 +875,9 @@ source_has_signatures() { >>>> run_pacman() { >>>> local cmd >>>> if [[ ! $1 = -@(T|Qq) ]]; then >>>> - cmd=("$PACMAN" $PACMAN_OPTS "$@") >>>> + cmd=("$PACMAN_PATH" $PACMAN_OPTS "$@") >>>> else >>>> - cmd=("$PACMAN" "$@") >>>> + cmd=("$PACMAN_PATH" "$@") >>>> fi >>>> if (( ! ASROOT )) && [[ ! $1 = -@(T|Qq) ]]; then >>>> if type -p sudo >/dev/null; then >>>> @@ -2191,6 +2191,14 @@ check_software() { >>>> # check for needed software >>>> local ret=0 >>>> >>>> + # check for PACMAN if we need it >>>> + if (( ! NODEPS || DEP_BIN || RMDEPS || INSTALL )); then >> >> change this to: >> >> if (( ! INFAKEROOT && ( ! NODEPS || DEP_BIN || RMDEPS || INSTALL ) )); then >> >>>> + if [[ -z $PACMAN_PATH ]]; then >>>> + error "$(gettext "Cannot find the %s binary >>>> required for dependency operations.")" "$PACMAN" >>>> + ret=1 >>>> + fi >>>> + fi >>>> + >>>> # check for sudo if we will need it during makepkg execution >>>> if (( ! ( ASROOT || INFAKEROOT ) && ( DEP_BIN || RMDEPS || INSTALL >>>> ) )); then >>>> if ! type -p sudo >/dev/null; then >>>> @@ -2548,6 +2556,8 @@ fi >>>> >>>> # set pacman command if not already defined >>>> PACMAN=${PACMAN:-pacman} >>>> +# save full path to command as PATH may change when sourcing /etc/profile >>>> +PACMAN_PATH=$(type -P $PACMAN) || true >>> >>> Thanks for cleaning this up for me. The trouble with this version is >>> that $PACMAN_PATH gets recalculated in the fake root recursion, after >>> $PATH has been modified. >> >> Ah... we never actually call PACMAN in the fakeroot, so we do not care >> what it is there... The test should be modified as given above. >> >> Can you test that change does all that is expected? > > I added your INFAKEROOT test and it seems to be working properly for me. > Thanks. >
Great - fixed version has been pushed to my working branch. Allan
