Robby Workman | 3 Mar 17:41 2010

Re: pcmanfm (0.5.2) slackbuild

On Wed, 3 Mar 2010 17:25:52 +0100
LukenShiro <lukenshiro@...> wrote:

> Il giorno Tue, 2 Mar 2010 22:31:32 +0000 (GMT)
> PHILLIP MORRIS <phil.morris@...> ha scritto:
> > Just been trying to build pcmanfm-0.5.2 but line 49 of the build
> > script set -e prevents the script from completing because the NEWS
> > document is a zero length file.
> 
> pcmanfm fails just after "make install", but only when "set -e" is
> present in its .SlackBuild.
> 
> 
> I have noticed some SBo scripts have the same problem in -current if
> they contain "set -e" (alas I've lost the list :-/ but I will test
> again ASAP). Package seems to be built and installed correctly
> (except files copied after make install) but .tgz is not created.
> 
> An similar example was "my" htmldoc package: in -current it failed, so
> I've used "|| exit 1" for "make" and "make install", in the last
> uploaded update, and it was successful.
> 
> 
> I'd say 13.0 doesn't have these problems (AFAIR) so it seems to be
> related to bash builtin command(s) in recent bash packages (but I
> couldn't say why and where ...).
> Maybe, for the future, would it be worth to replace bash's "set -e"
> with a selective bunch of "|| exit 1" for untarring, configuring,
> compiling and automatic installing only?
> 

This is a well known (to us anyway) issue with bash4.
Whereas bash3 wouldn't exit the parent shell if a subshell 
exited with nonzero status, bash4 *does* exit the parent 
shell.  The most common thing that we do to trigger this
is the ( find ... | strip ... ) lines in our scripts.
Placing "|| true" after the find lines solves it.  You'll
notice that our current template even recommends this.

-RW
On Wed, 3 Mar 2010 17:25:52 +0100
LukenShiro <lukenshiro@...> wrote:

> Il giorno Tue, 2 Mar 2010 22:31:32 +0000 (GMT)
> PHILLIP MORRIS <phil.morris@...> ha scritto:
> > Just been trying to build pcmanfm-0.5.2 but line 49 of the build
> > script set -e prevents the script from completing because the NEWS
> > document is a zero length file.
> 
> pcmanfm fails just after "make install", but only when "set -e" is
> present in its .SlackBuild.
> 
> 
> I have noticed some SBo scripts have the same problem in -current if
> they contain "set -e" (alas I've lost the list :-/ but I will test
> again ASAP). Package seems to be built and installed correctly
> (except files copied after make install) but .tgz is not created.
> 
> An similar example was "my" htmldoc package: in -current it failed, so
> I've used "|| exit 1" for "make" and "make install", in the last
> uploaded update, and it was successful.
> 
> 
> I'd say 13.0 doesn't have these problems (AFAIR) so it seems to be
> related to bash builtin command(s) in recent bash packages (but I
> couldn't say why and where ...).
> Maybe, for the future, would it be worth to replace bash's "set -e"
> with a selective bunch of "|| exit 1" for untarring, configuring,
> compiling and automatic installing only?
> 

This is a well known (to us anyway) issue with bash4.
Whereas bash3 wouldn't exit the parent shell if a subshell 
exited with nonzero status, bash4 *does* exit the parent 
shell.  The most common thing that we do to trigger this
is the ( find ... | strip ... ) lines in our scripts.
Placing "|| true" after the find lines solves it.  You'll
notice that our current template even recommends this.

-RW

Gmane