Bug#219765: Languagechooser 1.03 dies on mipsel

2003-11-11 Thread Colin Watson
On Tue, Nov 11, 2003 at 10:25:31PM +0100, Karsten Merker wrote:
> They have no "real" function, in fact they are logically "wrong" here,
> but they cause the shell to take an additional redirection which does
> not trigger the shell crash that happens without them.

It's not a crash or a segfault or anything like that; the shell is 'set
-e' and therefore exits at the first command which returns a non-zero
exit status. The old code was certainly wrong, but the new code ought to
work, as the shell is not supposed to exit under -e when the command
returning non-zero is guarded by an 'if'. It would seem that the shell
doesn't handle pipelines in if statements properly under -e.

Pending a fix to the shell, I would suggest surrounding the 'if' block
with 'set +e' and 'set -e', which ought to fix the problem but makes it
more obvious that it's there exactly and only to work around a shell
bug.

Cheers,

-- 
Colin Watson  [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#219765: Languagechooser 1.03 dies on mipsel

2003-11-11 Thread kraai
Karsten Merker wrote:
> On Mon, Nov 10, 2003 at 07:02:30PM -0800, Matt Kraai wrote:
> > On Mon, Nov 10, 2003 at 10:26:20PM +0100, Karsten Merker wrote:
> > > On Sat, Nov 08, 2003 at 09:38:09PM +, Alastair McKinstry wrote:
> > > 
> > > > > if echo $LANG $LC_CTYPE | grep -q UTF-8 ; then
> > > > >   db_set debconf/language en
> > > > > else
> > > > >   db_set debconf/language C
> > > > > fi
> > > > 
> > > > Hi,
> > > > 
> > > > The code actually goes:
> > > > echo $LANG $LC_CTYPE | grep -q UTF-8
> > > > if [ $? ] ; then
> > > > ...
> > > 
> > > That was the original case, which also did not work. The code I cited
> > > above is the current state in cvs.
> > > 
> > > > if this fails, try the variant
> > > > if `echo $LANG $LC_CTYPE | grep -q UTF-8 ` ; then
> > 
> > What are the backticks for?
> 
> They have no "real" function, in fact they are logically "wrong" here,
> but they cause the shell to take an additional redirection which does
> not trigger the shell crash that happens without them.
> 
> This contruction works only "by accident" because grep is called with
> the -q option, so that the backticks end up in delivering an empty
> string. Nonetheless the grep gets evaluated and the if executes the
> following code based on the returncode of the grep.
> 
> In the meantime I have tried making this a "legal" contruct that also
> does not trigger the crash. If one executes the "echo $LANG $LC_CTYPE |
> grep -q UTF-8" in a subshell, it also does not crash, so the proper
> solution would probably be to write
> 
> if (echo $LANG $LC_CTYPE | grep -q UTF-8 ) ; then
> 
> This works for me without crashing, and as the return code is passed
> back from the subshell, the code does what it is supposed to do, i.e.
> set debconf/language to "en" in case of an UTF-8 locale and to "C"
> otherwise.
> 
> If nobody objects, I will check this into the CVS.
> 
> We still have to look into the other problem I have mentioned (d-i
> hanging after selecting another language than US-English), though.

Thanks for the explanation.

Would you please file a bug against the shell and add a comment referencing it
and indicating that the workaround should be removed once the bug is fixed?

-- 
Matt


-
This message was sent using the LA Free-Net - LA's best kept secret.
http://www.lafn.org/




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#219765: Languagechooser 1.03 dies on mipsel

2003-11-10 Thread Matt Kraai
On Mon, Nov 10, 2003 at 10:26:20PM +0100, Karsten Merker wrote:
> On Sat, Nov 08, 2003 at 09:38:09PM +, Alastair McKinstry wrote:
> 
> > > if echo $LANG $LC_CTYPE | grep -q UTF-8 ; then
> > >   db_set debconf/language en
> > > else
> > >   db_set debconf/language C
> > > fi
> > 
> > Hi,
> > 
> > The code actually goes:
> > echo $LANG $LC_CTYPE | grep -q UTF-8
> > if [ $? ] ; then
> > ...
> 
> That was the original case, which also did not work. The code I cited
> above is the current state in cvs.
> 
> > if this fails, try the variant
> > if `echo $LANG $LC_CTYPE | grep -q UTF-8 ` ; then

What are the backticks for?

-- 
Matt


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#219765: Languagechooser 1.03 dies on mipsel

2003-11-10 Thread Joey Hess
Karsten Merker wrote:
> > The code actually goes:
> > echo $LANG $LC_CTYPE | grep -q UTF-8
> > if [ $? ] ; then
> > ...
> 
> That was the original case, which also did not work. The code I cited
> above is the current state in cvs.
> 
> > if this fails, try the variant
> > if `echo $LANG $LC_CTYPE | grep -q UTF-8 ` ; then
> 
> Interestingly, this variant does not cause languagechooser to crash.
> JoeyH, is it ok if I check this one-liner into the CVS? It makes d-i
> on mipsel (at least partially, see below) usable and should not have
> any negative impact on other architectures.

Of course it's fine. If I were you I would try to narrow it down to a
test case that can run on busybox ash and file a bug on busybox-cvs as
well, since it seems it must be rather broken on your architecture.

-- 
see shy jo


signature.asc
Description: Digital signature


Bug#219765: Languagechooser 1.03 dies on mipsel

2003-11-08 Thread Alastair McKinstry
On Sat, 2003-11-08 at 20:48, Karsten Merker wrote:
> Package: languagechooser
> Version: 1.03 and 1.04-cvs
> 
> On mipsel, languagechooser dies with a return-code of 1 when called
> from main-menu (probably it segfaults). When called in a shell
> via "udpkg --configure language-chooser" it just hangs. Further tests
> have narrowed down the problem to the following code segment:
> 
> # Only display the translated texts (ie the English "translation")
> # when in UTF-8 mode.
> if echo $LANG $LC_CTYPE | grep -q UTF-8 ; then
>   db_set debconf/language en
> else
>   db_set debconf/language C
> fi

Hi,

The code actually goes:
echo $LANG $LC_CTYPE | grep -q UTF-8
if [ $? ] ; then
...

Could you please test this on mipsel? I can't log into a mipsel box at
the moment.

if this fails, try the variant
if `echo $LANG $LC_CTYPE | grep -q UTF-8 ` ; then
...

Regards,
Alastair McKinstry

> The echo and grep processes are started, but the db_set is not called.
> When the same sequence is run manually in a shell, it works as expected.
> Exchanging the busybox-ash by a dash as /bin/sh does not change the 
> behaviour.
> 
> If the sequence above is removed and replaced by a single
> 
> db_set debconf/language C
> 
> as a temporary workaround, language-chooser works on mipsel.
> 
> Regards,
> Karsten
> -- 
> #include 
> Nach Paragraph 28 Abs. 3 Bundesdatenschutzgesetz widerspreche ich der Nutzung
> oder Uebermittlung meiner Daten fuer Werbezwecke oder fuer die Markt- oder
> Meinungsforschung.
> 


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]