Re: [ccache] [PATCH] Use bash for test.sh.
On 12 November 2012 06:03, Andrew Stubbs a...@codesourcery.com wrote: Running sh -x test.sh shows that the gcc command producing the error: + CCACHE_DISABLE=1 gcc -c test1.c -o reference_test1.o -O -O gcc: error trying to exec 'cc1': execvp: No such file or directory I don't understand what's wrong with that command. gcc isn't supposed to rely on the PATH to find cc1, but presumably it's something environmental. Can you get a ktrace (or strace) of what gcc is doing with and without CCACHE ? -- Eitan Adler ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 12 November 2012 13:00, Eitan Adler li...@eitanadler.com wrote: On 12 November 2012 06:03, Andrew Stubbs a...@codesourcery.com wrote: Running sh -x test.sh shows that the gcc command producing the error: + CCACHE_DISABLE=1 gcc -c test1.c -o reference_test1.o -O -O gcc: error trying to exec 'cc1': execvp: No such file or directory I don't understand what's wrong with that command. gcc isn't supposed to rely on the PATH to find cc1, but presumably it's something environmental. Can you get a ktrace (or strace) of what gcc is doing with and without CCACHE ? Also, does gcc exhibit problems on other test programs outside of test.sh ? -- Eitan Adler ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On Sunday 11 November 2012 06:31:14 Eitan Adler wrote: On 11 November 2012 00:46, Mike Frysinger vap...@gentoo.org wrote: On Saturday 10 November 2012 00:41:52 Eitan Adler wrote: On 10 November 2012 00:41, Mike Frysinger wrote: if the script is written in bash and is intended to be, then /bin/bash is the correct answer. Absolutely false. /usr/local/bin or /opt/bin might be the correct location. if you have a crap system where bash isn't installed with /bin/bash, then you already have a ton of problems with existing software. forcing stupid behavior on everyone to cater to broken systems is wrong. http://www.technollama.co.uk/wordpress/wp-content/uploads/2011/05/obvious-t roll.jpg yes, when people tell you forcing asinine behavior is wrong, you label them trolls. i guess that's how you win arguments. -mike signature.asc Description: This is a digitally signed message part. ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On Saturday 10 November 2012 05:08:40 Joel Rosdahl wrote: On 10 November 2012 06:45, Mike Frysinger vap...@gentoo.org wrote: i see old style portable code in there that could easily be modernized to recent POSIX Please don't strive to do that. Solaris's /bin/sh isn't POSIX. autoconf searches well known paths to locate an up-to-date shell. my limited understanding is that Solaris stores modern tools somewhere in /usr/. would you be amendable to having the script re-exec itself via those so we can update things ? -mike signature.asc Description: This is a digitally signed message part. ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On Monday 12 November 2012 06:03:37 Andrew Stubbs wrote: Running sh -x test.sh shows that the gcc command producing the error: + CCACHE_DISABLE=1 gcc -c test1.c -o reference_test1.o -O -O gcc: error trying to exec 'cc1': execvp: No such file or directory I don't understand what's wrong with that command. gcc isn't supposed to rely on the PATH to find cc1, but presumably it's something environmental. it relies on argv[0] to locate its internal tools. if you change that command to `env CCACHE_DISABLE=1 ...`, does it work better ? -mike signature.asc Description: This is a digitally signed message part. ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 12 November 2012 13:11, Eitan Adler li...@eitanadler.com wrote: On 12 November 2012 13:04, Mike Frysinger vap...@gentoo.org wrote: yes, when people tell you forcing asinine behavior is wrong, you label them trolls. i guess that's how you win arguments. Claiming that systems without /bin/bash are crap shows a level of naivete that only someone new to the open source world has. It was a choice between actual incompetence (unlikely) or pretend incompetence (a troll). On to the substance instead of my mistaken ad hominem : 1) Even on systems with a binary called /bin/bash using #!/bash/bash is wrong 2) Many systems don't ship with bash at all for licensing, technical, or preference reasons 3) Most operating systems that ship bash don't ship it in /bin The only correct behaviors are using #!/usr/bin/env bash to find the bash binary or #!/bin/sh which is mandated to exist by POSIX actually one more valid behavior: #!/bin/sh [ -z $BASH ] bash $0 though this is far less common and I'm not sure if it has any positives or negatives versus the 'env' approach. -- Eitan Adler ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On Mon, 2012-11-12 at 13:11 -0500, Eitan Adler wrote: #!/bin/sh which is mandated to exist by POSIX Actually, unless there's been a change, POSIX doesn't mandate that the POSIX shell appear as /bin/sh. Unfortunately, this means that systems are free to provide definitively non-POSIX /bin/sh and still be allowed to paint themselves with the veneer of compliance (yes I'm looking at you Solaris!!), since there is a POSIX shell somewhere (else) on the system. ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 11 November 2012 00:46, Mike Frysinger vap...@gentoo.org wrote: On Saturday 10 November 2012 00:41:52 Eitan Adler wrote: On 10 November 2012 00:41, Mike Frysinger wrote: if the script is written in bash and is intended to be, then /bin/bash is the correct answer. Absolutely false. /usr/local/bin or /opt/bin might be the correct location. if you have a crap system where bash isn't installed with /bin/bash, then you already have a ton of problems with existing software. forcing stupid behavior on everyone to cater to broken systems is wrong. -mike Mike, http://www.technollama.co.uk/wordpress/wp-content/uploads/2011/05/obvious-troll.jpg Andrew, I don't think we ever solved the problem you saw? What error did you get with what shell? Joel, Thanks for this awesome, portable, piece of software. :) -- Eitan Adler ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On Saturday 10 November 2012 00:41:52 Eitan Adler wrote: On 10 November 2012 00:41, Mike Frysinger wrote: if the script is written in bash and is intended to be, then /bin/bash is the correct answer. Absolutely false. /usr/local/bin or /opt/bin might be the correct location. if you have a crap system where bash isn't installed with /bin/bash, then you already have a ton of problems with existing software. forcing stupid behavior on everyone to cater to broken systems is wrong. -mike signature.asc Description: This is a digitally signed message part. ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 10 November 2012 00:41, Mike Frysinger vap...@gentoo.org wrote: ironic considering you're espousing a change to support crap systems that aren't relevant. I won't comment on this. if the script is written in bash and is intended to be, then /bin/bash is the correct answer. Absolutely false. /usr/local/bin or /opt/bin might be the correct location. if the script is intended to be POSIX shell, then /bin/sh is the correct answer. Agreed. using env is just stupid. only if you don't care about portability. POSIX env absolute path -- Eitan Adler ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On Monday 05 November 2012 12:55:10 Andrew Stubbs wrote: The test script fails with shells other than bash. At least dash doesn't work. could you post the exact errors you see ? i see old style portable code in there that could easily be modernized to recent POSIX and plenty of quoting issues, but i don't see anything off hand that wouldn't work in a POSIX compliant shell. -mike signature.asc Description: This is a digitally signed message part. ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 06/11/12 16:53, Eitan Adler wrote: Perhaps you should get a better version of env? Perhaps I should! I'm running Ubuntu 12.10, so I'm surprised about that. But even if I did there would be many others with the same issue. The followup to this discussion indicates that /bin/sh seems to be sufficient (I need to check this myself when I get a chance). checkbashims sees nothing wrong. Ok, well, I couldn't identify the exact problem either, so this seemed like the easiest fix, and anyway bashisms are nice, if they're allowed. Feel free to propose an alternative patch. :) Andrew ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 5 November 2012 18:55, Andrew Stubbs a...@codesourcery.com wrote: The test script fails with shells other than bash. At least dash doesn't work. test.sh is intended to work even on Solaris's /bin/sh, which is even more restricted than dash. Current test.sh on master and maint works well with dash for me. Please report any failures you see. -- Joel ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 05/11/12 17:58, Eitan Adler wrote: -#!/bin/sh +#!/bin/bash This line is buggy: please http://blog.eitanadler.com/2012/10/binbash-considered-harmful.html for why. I ideally the non-portable bashims get fixed but if not the shebang line must be /usr/bin/env bash not /bin/bash. While it is true that /usr/bin/env bash is more portable than /bin/bash, I also don't like it as much. If I run a #!/bin/bash script without bash installed I get: /bin/bash: bad interpreter: No such file or directory If I try the same with #!/usr/bin/env bash I get: /bin/env: bad interpreter: No such file or directory which is demonstrably untrue and far less helpful. In the former case any mildly experienced Unix user will just sigh and run the script under bash manually. In the later case you have to be very experienced not to spend ages thinking you must be crazy or have found a kernel bug, or something. Now, if the script were deeply embedded in some other tool where the user would not be able to intervene then I would consider the env trick, but even then I would probably use #!/bin/sh and have the script locate bash and re-exec itself. It is, of course, the official Ccache maintainer's call which style is preferred, or even whether it's better to find and stamp out the errant bashism in the script, but my vote is for the simple /bin/bash option. Andrew ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 05/11/12 22:35, g@free.fr wrote: ccache-3.1.8 'make check' work with dash, no? There's no problem with configure or make, only with test.sh. Andrew ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 06/11/12 10:05, g@free.fr wrote: On my debian stable machine (x86 32 bits), I set sh as a symlink to dash and changed my script to emit SHELL='/bin/dash' test is ok with 3.1.8 (ccache is statically linked to glibc in my configuration). I looked with checkbashims on test.sh git version and no warning is emitted. Perhaps the problem was introduced since 3.1.8 then. I can't say for sure because it was the first test run I did after upgrading to Ubuntu 12.10 that failed. I presumed that the default /bin/sh had changed, but it could equally be that the test.sh has acquired a bashism at the same time. As far as I'm concerned, it's perfectly fine if the script only runs in bash. The shell is fairly ubiquitous, and test.sh is certainly not written in the paranoid style of configure scripts. Andrew ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
On 6 November 2012 04:54, Andrew Stubbs a...@codesourcery.com wrote: While it is true that /usr/bin/env bash is more portable than /bin/bash, I also don't like it as much. If I run a #!/bin/bash script without bash installed I get: /bin/bash: bad interpreter: No such file or directory If I try the same with #!/usr/bin/env bash I get: /bin/env: bad interpreter: No such file or directory Perhaps you should get a better version of env? I get: [10026 eitan@radar ~ ]%./hello env: asdf: No such file or directory [10027 eitan@radar ~ !127!]%cat hello #!/usr/bin/env asdf In the former case any mildly experienced Unix user will just sigh and run the script under bash manually. In the later case you have to be very experienced not to spend ages thinking you must be crazy or have found a kernel bug, or something. In the former case the package maintainers must fix the portability bug the upstream author has introduced. In the latter case they just have to add a dependency. It is, of course, the official Ccache maintainer's call which style is preferred, or even whether it's better to find and stamp out the errant bashism in the script, but my vote is for the simple /bin/bash option. The followup to this discussion indicates that /bin/sh seems to be sufficient (I need to check this myself when I get a chance). checkbashims sees nothing wrong. -- Eitan Adler ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
[ccache] [PATCH] Use bash for test.sh.
The test script fails with shells other than bash. At least dash doesn't work. Signed-off-by: Andrew Stubbs a...@codesourcery.com --- test.sh |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.sh b/test.sh index 4c78617..a334f62 100755 --- a/test.sh +++ b/test.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # A simple test suite for ccache. # -- 1.7.10.4 ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache
Re: [ccache] [PATCH] Use bash for test.sh.
- Mail original - De: Andrew Stubbs a...@codesourcery.com À: ccache@lists.samba.org Envoyé: Lundi 5 Novembre 2012 18:55:10 Objet: [ccache] [PATCH] Use bash for test.sh. The test script fails with shells other than bash. At least dash doesn't work. Signed-off-by: Andrew Stubbs a...@codesourcery.com --- test.sh |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.sh b/test.sh index 4c78617..a334f62 100755 --- a/test.sh +++ b/test.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # A simple test suite for ccache. # -- ccache-3.1.8 'make check' work with dash, no? Gilles ___ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache