On Thu, Nov 5, 2009 at 8:01 PM, Cedric Staniewski <[email protected]> wrote:
> Cedric Staniewski wrote:
>> The source command triggers / could trigger the ERR trap which makes
>> makepkg abort right after a successful installation of missing dependencies.
>>
>> Signed-off-by: Cedric Staniewski <[email protected]>
>> ---
>> It works, but I'm totally clueless why. I would prefer a more obvious 
>> solution
>> if we can find one (set +E ... set -E did not work for me).
>>
>> scripts/makepkg.sh.in |    7 +++----
>>  1 files changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
>> index 92b0454..81f20bb 100644
>> --- a/scripts/makepkg.sh.in
>> +++ b/scripts/makepkg.sh.in
>> @@ -371,10 +371,9 @@ handle_deps() {
>>       fi
>>
>>       # we might need the new system environment
>> -     # set -e can cause problems during sourcing profile scripts
>> -     set +e
>> -     source /etc/profile &>/dev/null
>> -     set -e
>> +     # avoid triggering the ERR trap by running the
>> +     # source command in a subshell
>> +     $(source /etc/profile &>/dev/null)
>>
>>       return $R_DEPS_SATISFIED
>>  }
>
> This one is stupid, sorry. Makepkg does not abort anymore, but the source 
> command is pointless now. So we have to find another way to work around this 
> nice errtrace option.
>
>

So looks like http://bugs.archlinux.org/task/11179 is coming up again
because of the new set -E

I have been reading http://fvue.nl/wiki/Bash:_Error_handling
Oh my god ! This stuff is so complex , it really hurts :P

I only understood half of what I was reading, which led to me to do
many test, including this one :

        # we might need the new system environment
        # a trap on ERR can cause problems during sourcing profile scripts
        restoretrap=$(trap -p ERR)
        trap - ERR
        source /etc/profile &>/dev/null
        eval $restoretrap

It looks like this did the trick for me (and set +e is no longer needed ?)


Btw this problem is still caused by bash-completion.. It does not make
sense to have makepkg load all that crap :)

>From /etc/profile.bash :
# Source our global bashrc file, to remove duplication of effort
[ -r /etc/bash.bashrc ] && . /etc/bash.bashrc

Maybe this should only be done for interactive shells ? That would
workaround the problem , right ?

Reply via email to