public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] Nested die error
@ 2005-04-14 21:42 Caleb Tennis
  2005-04-14 21:50 ` Stefan Schweizer
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Caleb Tennis @ 2005-04-14 21:42 UTC (permalink / raw
  To: gentoo-dev

So it seems repoman doesn't like nested die calls like this:

use blah && ( emake foo || die )


But, without the parenthesis

use blah && emake foo || die

always dies (the emake functions just fine, but it returns an error once emake 
is completed).

What's the trick?  Wrap the emake in a if/then call?  Ignore repoman at the 
risk of potential finger breakage by mr_bones'?

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:42 [gentoo-dev] Nested die error Caleb Tennis
@ 2005-04-14 21:50 ` Stefan Schweizer
  2005-04-14 23:56   ` [gentoo-dev] " Michael Sterrett -Mr. Bones.-
  2005-04-14 21:54 ` [gentoo-dev] " Stephen Bennett
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Stefan Schweizer @ 2005-04-14 21:50 UTC (permalink / raw
  To: gentoo-dev

if useq blah; then
    emake foo || die "emake foo failed"
fi

we use useq because it does not output blah.

regards,
Stefan

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:42 [gentoo-dev] Nested die error Caleb Tennis
  2005-04-14 21:50 ` Stefan Schweizer
@ 2005-04-14 21:54 ` Stephen Bennett
  2005-04-14 21:58   ` Caleb Tennis
  2005-04-14 21:57 ` Olivier Crête
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Stephen Bennett @ 2005-04-14 21:54 UTC (permalink / raw
  To: gentoo-dev

On Thu, 2005-04-14 at 16:42 -0500, Caleb Tennis wrote:
> So it seems repoman doesn't like nested die calls like this:
> 
> use blah && ( emake foo || die )
> 
Yep, because that doesn't work.

> What's the trick?  Wrap the emake in a if/then call?  
Yes.

> Ignore repoman at the 
> risk of potential finger breakage by mr_bones'?
Well, you can as long as you don't mind your ebuild not working. :)

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:42 [gentoo-dev] Nested die error Caleb Tennis
  2005-04-14 21:50 ` Stefan Schweizer
  2005-04-14 21:54 ` [gentoo-dev] " Stephen Bennett
@ 2005-04-14 21:57 ` Olivier Crête
  2005-04-15  3:20   ` Mike Frysinger
  2005-04-14 21:59 ` Ciaran McCreesh
  2005-04-14 22:05 ` Vibhav Garg
  4 siblings, 1 reply; 11+ messages in thread
From: Olivier Crête @ 2005-04-14 21:57 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 706 bytes --]

On Thu, 2005-14-04 at 16:42 -0500, Caleb Tennis wrote:
> So it seems repoman doesn't like nested die calls like this:
> 
> use blah && ( emake foo || die )
> 
> 
> But, without the parenthesis
> 
> use blah && emake foo || die
> 
> always dies (the emake functions just fine, but it returns an error once emake 
> is completed).
> 
> What's the trick?  Wrap the emake in a if/then call?  Ignore repoman at the 
> risk of potential finger breakage by mr_bones'?

You can do if/then/fi or
use blah && { emake foo || die; } 

{} will not spawn a sub-shell... just execute them in the same shell so
the die will work properly

-- 
Olivier Crête
tester@gentoo.org
x86 Security Liaison

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:54 ` [gentoo-dev] " Stephen Bennett
@ 2005-04-14 21:58   ` Caleb Tennis
  2005-04-15  3:17     ` Mike Frysinger
  0 siblings, 1 reply; 11+ messages in thread
From: Caleb Tennis @ 2005-04-14 21:58 UTC (permalink / raw
  To: gentoo-dev

On Thursday 14 April 2005 04:54 pm, Stephen Bennett wrote:
> > use blah && ( emake foo || die )
>
> Yep, because that doesn't work.

Wow.  I've been doing it for years.  What's broken about it, the nested die ro 
the "use blah &&" part?

Caleb
--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:42 [gentoo-dev] Nested die error Caleb Tennis
                   ` (2 preceding siblings ...)
  2005-04-14 21:57 ` Olivier Crête
@ 2005-04-14 21:59 ` Ciaran McCreesh
  2005-04-14 22:05 ` Vibhav Garg
  4 siblings, 0 replies; 11+ messages in thread
From: Ciaran McCreesh @ 2005-04-14 21:59 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1029 bytes --]

On Thu, 14 Apr 2005 16:42:22 -0500 Caleb Tennis <caleb@gentoo.org>
wrote:
| use blah && ( emake foo || die )

Here's what The Doc will have to say about this:

``die`` and Subshells
---------------------

.. Warning:: ``die`` **will not work in a subshell**.

The following code will not work as expected, since the ``die`` is
inside a subshell: ::

    [[ -f foorc ]] && ( update_foorc || die "couldn't update foorc" )

The correct way to rewrite this is to use an ``if`` block: ::

    if [[ -f foorc ]] ; then
        update_foorc || die "couldn't update foorc"
    fi

When using pipes, a subshell is introduced, so the following is unsafe:
::

    cat list | while read file ; do epatch ${file} ; done

Using input redirection (see `Abuse of cat`_) avoids this problem: ::

    while read file ; do epatch ${file} ; done < list


-- 
Ciaran McCreesh : Gentoo Developer (Vim, Fluxbox, shell tools)
Mail            : ciaranm at gentoo.org
Web             : http://dev.gentoo.org/~ciaranm


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:42 [gentoo-dev] Nested die error Caleb Tennis
                   ` (3 preceding siblings ...)
  2005-04-14 21:59 ` Ciaran McCreesh
@ 2005-04-14 22:05 ` Vibhav Garg
  2005-04-14 22:11   ` Ciaran McCreesh
  4 siblings, 1 reply; 11+ messages in thread
From: Vibhav Garg @ 2005-04-14 22:05 UTC (permalink / raw
  To: gentoo-dev

Caleb Tennis wrote:

>So it seems repoman doesn't like nested die calls like this:
>
>use blah && ( emake foo || die )
>
>  
>
i believe this is a question in the developer end quiz too:-)

>But, without the parenthesis
>
>use blah && emake foo || die
>
>always dies (the emake functions just fine, but it returns an error once emake 
>is completed).
>
>What's the trick?  Wrap the emake in a if/then call?  Ignore repoman at the 
>risk of potential finger breakage by mr_bones'?
>
>--
>gentoo-dev@gentoo.org mailing list
>
>
>  
>

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 22:05 ` Vibhav Garg
@ 2005-04-14 22:11   ` Ciaran McCreesh
  0 siblings, 0 replies; 11+ messages in thread
From: Ciaran McCreesh @ 2005-04-14 22:11 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 509 bytes --]

On Thu, 14 Apr 2005 17:05:25 -0500 Vibhav Garg <vgarg@gentoo.org> wrote:
| Caleb Tennis wrote:
| >So it seems repoman doesn't like nested die calls like this:
| >
| >use blah && ( emake foo || die )
| >
| i believe this is a question in the developer end quiz too:-)

It is now. It wasn't back in the good old days when Caleb joined :)

-- 
Ciaran McCreesh : Gentoo Developer (Vim, Fluxbox, shell tools)
Mail            : ciaranm at gentoo.org
Web             : http://dev.gentoo.org/~ciaranm


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [gentoo-dev] Re: Nested die error
  2005-04-14 21:50 ` Stefan Schweizer
@ 2005-04-14 23:56   ` Michael Sterrett -Mr. Bones.-
  0 siblings, 0 replies; 11+ messages in thread
From: Michael Sterrett -Mr. Bones.- @ 2005-04-14 23:56 UTC (permalink / raw
  To: gentoo-dev

On Thu, 14 Apr 2005, Stefan Schweizer wrote:

> we use useq because it does not output blah.

"use" doesn't output anything anymore either and anything that depends
on it doing so is already broken.

Michael Sterrett
   -Mr. Bones.-
mr_bones_@gentoo.org

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:58   ` Caleb Tennis
@ 2005-04-15  3:17     ` Mike Frysinger
  0 siblings, 0 replies; 11+ messages in thread
From: Mike Frysinger @ 2005-04-15  3:17 UTC (permalink / raw
  To: gentoo-dev

On Thursday 14 April 2005 05:58 pm, Caleb Tennis wrote:
> On Thursday 14 April 2005 04:54 pm, Stephen Bennett wrote:
> > > use blah && ( emake foo || die )
> >
> > Yep, because that doesn't work.
>
> Wow.  I've been doing it for years.  What's broken about it, the nested die
> ro the "use blah &&" part?

as hinted elsewhere, the problem is that ( ) spawns a subshell ... that means 
the call to 'die' aborts the sub (i.e. forked) shell, not the parent (i.e. 
the ebuild) shell ... so when emake fails, portage wont notice
-mike
--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [gentoo-dev] Nested die error
  2005-04-14 21:57 ` Olivier Crête
@ 2005-04-15  3:20   ` Mike Frysinger
  0 siblings, 0 replies; 11+ messages in thread
From: Mike Frysinger @ 2005-04-15  3:20 UTC (permalink / raw
  To: gentoo-dev

On Thursday 14 April 2005 05:57 pm, Olivier Crête wrote:
> You can do if/then/fi or
> use blah && { emake foo || die; }
>
> {} will not spawn a sub-shell... just execute them in the same shell so
> the die will work properly

both syntaxes are ugly imho but the best thing would be to use if/then/fi 
because many more developers understand that than the 1 line { } code
-mike

--
gentoo-dev@gentoo.org mailing list


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2005-04-15  3:19 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-14 21:42 [gentoo-dev] Nested die error Caleb Tennis
2005-04-14 21:50 ` Stefan Schweizer
2005-04-14 23:56   ` [gentoo-dev] " Michael Sterrett -Mr. Bones.-
2005-04-14 21:54 ` [gentoo-dev] " Stephen Bennett
2005-04-14 21:58   ` Caleb Tennis
2005-04-15  3:17     ` Mike Frysinger
2005-04-14 21:57 ` Olivier Crête
2005-04-15  3:20   ` Mike Frysinger
2005-04-14 21:59 ` Ciaran McCreesh
2005-04-14 22:05 ` Vibhav Garg
2005-04-14 22:11   ` Ciaran McCreesh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox