On 6-Jun-10, at 7:52 AM, Davide Brini wrote:
On Saturday 05 June 2010, David Sommerseth wrote:
Yes, that can be seen as a solution for some people. But then it
would
be better for us to explicitly require the needed shell rather to
tell
them to (w)hack their system "because easy-rsa don't support old
Solaris
/bin/sh".
We should *never ever* recommend people to modify their OS base
installation at any point to make OpenVPN and/or its utilities to
work.
In fact, it's probably more likely that they would go in and modify
the
shell script themselves to use the proper shell instead of re-link
/bin/sh - at least I hope the sys-admin would be that clever.
Ok, I wasn't aware of this policy. I thought that it could just be
stated that
the scripts need a POSIX shell (just as it's *already* de-facto
stated that
they require bash, which is not installed on all systems).
But ok, I'm not arguing on this; as you said, interested people will
probably
be able to adjust them to their needs anyway.
[snip]
However, I think it would be sensible, before merging, to actually
do
that and test the scripts on a real Solaris system to check that
they
work as expected (unfortunately I don't have access to a Solaris
system,
otherwise I would do that myself).
The Solaris 10 docs states it pretty clear:
-e file
True if file exists. (Not available in sh.)
This limitation is also for -a, -G, -o, -O, -S, -nt, -ot and -ef.
source: <http://docs.sun.com/app/docs/doc/816-5165/test-1?
l=en&a=view>
And there are 3 places where we do use 'test -e' in easy-rsa-2.0:
nherit-inter:29: if [ -e "$1/$EXPORT_CA" ]; then
pkitool:371: [ -e "$FN.crt.der" ]; rm "$FN.crt.der"
revoke-full:29: if [ -e export-ca.crt ]; then
We simply need to solve these issues to avoid bashism.
Even after doing that, we're still NOT guaranteed that the scripts
will work
with Solaris' default /bin/sh. There may still be other constructs not
supported by Solaris' default /bin/sh.
Solaris' default /bin/sh is NOT a POSIX shell; it's an old Bourne
shell, which
I'm not familiar with except for knowing that many things I and most
people
are used to are not supported (I don't know exactly what these missing
features are, although it should definitely be possible to find out).
For the case at hand, I'd say it could be enough to replace "test -
e" with
"test -f", since we're testing for files anyway:
-e pathname
True if pathname resolves to an existing directory entry. False if
pathname cannot be resolved.
-f pathname
True if pathname resolves to an existing directory entry for a
regular
file. False if pathname cannot be resolved, or if pathname
resolves to an
existing directory entry for a file that is not a regular file.
This description is for a POSIX shell; -f should be supported by the
Bourne
shell, as it's not in the list you quoted above. However, I don't
know it the
Bourne shell's semantic for -f is the same as POSIX's. I think it
should be
similar or equal.
<rant>
I'm not sure why Solaris has been insisting for ages now in shipping
default
tools that are either old, with less features or downright broken.
It's not
just about sh; other popular tools like awk are also pretty much
unusable by
default under Solaris; one needs to use the POSIX-compliant versions
that are
under /usr/xpg4/bin/.
</rant>
Most of the common GNU utilities (including gcc) are in the standard
Solaris install, either via /usr/sfw/ or by using g prefix (e.g. gawk,
gmake).
--Toby
Davide: I know you have done some bashishm cleanup already on some
other
scripts. Can you double check that those scripts do not break,
based on
this Solaris information? I was not aware of this limitation in
Solaris, so I did not check for such things during the review. But
those patches needs to be double checked now.
As I said, I don't have access to a Solaris box, and I'm not
familiar with the
old Bourne shell.
However, I can certainly check for POSIX compliance, which should be
the
lowest common compatibility level scripts should aim for IMHO.
--
D.
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel