From: Bruce A. <ba...@gr...> - 2002-11-28 09:20:11
|
Hi Peter, I've been thinking a bit more about CVS structure. One possibility is: CVS www/ sm5/ Most stuff sm5-darwin/ Makefile, atacmds.c iokitheaders.h ... This has the advantage that it leaves existing CVS structure and linux stuff alone. The disadvantage is that the CVS download instructions for darwin wouldl read differently, and it introduces an asymmetry between platforms. Another possible structure would be something like: CVS www/ sm5/ platform/ macos/ atacmds-darwin.c iokitheaders.h ... linux/ atacmds-linux.c src/ common code This has the advantage that the CVS build/download instructions could read the same for different OSes. It also allows trivial extention to other OSes and architectures. The disadvantage is that it requires some restructuring of CVS and the existing linux Makefile, and a bit more restructuring of the code since include paths will change. [In such cases, sourceforge recommends that one downloads the complete CVS repository as a tarball, restructures it as desired to keep the log and history info intact when the files are moved around, then give it back to them to upload as a tarball. It's a nuisance, but doable. But definitely one of those things it's better to get right the first time.] At this point, you have a much clearer idea of what would work well than I do, so I am curious what you think. We should sort it out fairly early as this will substantially reduce the effort required later on. Cheers, Bruce |
From: Peter C. <pca...@ma...> - 2002-11-28 12:03:55
|
Hi all, One other point - the new getopt_long additions to 5.0-46 broke the Darwin port! No worries, though - I grabbed the getopt_long implementation which comes with GNU gengetopt & worked it into the Darwin-specific sources, so it's there if any else needs it .... Regards, Pete C |
From: <kn...@mo...> - 2002-11-28 12:34:54
|
On Thu, 28 Nov 2002, Peter Cassidy wrote: > One other point - the new getopt_long additions to 5.0-46 broke the >Darwin port! No worries, though - I grabbed the getopt_long >implementation which comes with GNU gengetopt & worked it into the >Darwin-specific sources, so it's there if any else needs it .... Ick. I think we agreed that this shouldn't be done... We probably need a ./configure script checking for getopt_long(), if not found, fallback to POSIX getopt(). -- Erik I. Bolsø | email: <knan at mo.himolde.no> The UNIX philosophy basically involves giving you enough rope to hang yourself. And then a couple of feet more, just to be sure. |
From: Peter C. <pca...@ma...> - 2002-11-28 13:10:59
|
On Thursday, Nov 28, 2002, at 12:40 Europe/Dublin, Erik Inge Bols=F8=20 wrote: > On Thu, 28 Nov 2002, Peter Cassidy wrote: >> One other point - the new getopt_long additions to 5.0-46 broke = the >> Darwin port! No worries, though - I grabbed the getopt_long >> implementation which comes with GNU gengetopt & worked it into the >> Darwin-specific sources, so it's there if any else needs it .... > > Ick. I think we agreed that this shouldn't be done... Sorry. I wasn't aware of that (being new 'round here). I'll roll the=20 changes back out. > We probably need a > ./configure script checking for getopt_long(), if not found, fallback=20= > to > POSIX getopt(). I agree. Right now, I'm just using a small shell script to pull the=20 correct Makefiles but we should really go for autoconf especially if=20 there will be more ports. This isn't my area of expertise, though ... Pete C= |
From: Bruce A. <ba...@gr...> - 2002-11-29 06:11:42
|
Hi Peter, On Thu, 28 Nov 2002, Peter Cassidy wrote: > On Thursday, Nov 28, 2002, at 12:40 Europe/Dublin, Erik Inge Bols=F8=20 > wrote: >=20 > > On Thu, 28 Nov 2002, Peter Cassidy wrote: > >> =09One other point - the new getopt_long additions to 5.0-46 broke the > >> Darwin port! No worries, though - I grabbed the getopt_long > >> implementation which comes with GNU gengetopt & worked it into the > >> Darwin-specific sources, so it's there if any else needs it .... > > > > Ick. I think we agreed that this shouldn't be done... >=20 > Sorry. I wasn't aware of that (being new 'round here). I'll roll the=20 > changes back out. >=20 > > We probably need a > > ./configure script checking for getopt_long(), if not found, fallback= =20 > > to > > POSIX getopt(). >=20 > I agree. Right now, I'm just using a small shell script to pull the=20 > correct Makefiles but we should really go for autoconf especially if=20 > there will be more ports. This isn't my area of expertise, though ... I have never learned the whole autoconf automake magic -- but if someone wants to set it up, well, it is the "right way" to do this. Volunteers?? As far as including the getopt_long sources, Peter, can't you just use -L/path/to/glibc -lc to resolve getopt_long()? I thought you had glibc available already? Cheers, =09Bruce |
From: Phil W. <ph...@su...> - 2002-11-28 23:46:50
|
On Thu, Nov 28, 2002 at 01:40:28PM +0100, Erik Inge Bolsø wrote: > On Thu, 28 Nov 2002, Peter Cassidy wrote: > > One other point - the new getopt_long additions to 5.0-46 broke the > >Darwin port! No worries, though - I grabbed the getopt_long > >implementation which comes with GNU gengetopt & worked it into the > >Darwin-specific sources, so it's there if any else needs it .... > > Ick. I think we agreed that this shouldn't be done... We probably need a > ./configure script checking for getopt_long(), if not found, fallback to > POSIX getopt(). Perhaps we should limit ourselves to getopt() until we've worked out exactly how we're going to handle systems that don't support getopt_long(). I'm happy to remove or disable the getopt_long() code for the time being if that's the best thing to do. Phil. |
From: Peter C. <pca...@ma...> - 2002-11-29 00:28:31
|
On Thursday, Nov 28, 2002, at 23:44 Europe/Dublin, Phil Williams wrote: > On Thu, Nov 28, 2002 at 01:40:28PM +0100, Erik Inge Bols=F8 wrote: >> On Thu, 28 Nov 2002, Peter Cassidy wrote: >>> One other point - the new getopt_long additions to 5.0-46 broke = the >>> Darwin port! No worries, though - I grabbed the getopt_long >>> implementation which comes with GNU gengetopt & worked it into the >>> Darwin-specific sources, so it's there if any else needs it .... >> >> Ick. I think we agreed that this shouldn't be done... We probably=20 >> need a >> ./configure script checking for getopt_long(), if not found, fallback=20= >> to >> POSIX getopt(). > > Perhaps we should limit ourselves to getopt() until we've worked out=20= > exactly how > we're going to handle systems that don't support getopt_long(). > > I'm happy to remove or disable the getopt_long() code for the time=20 > being if > that's the best thing to do. Hi Phil, I'm ok either way. When I linked in getopt_long, everything = worked=20 just fine. It's common practise amongst Darwin developers when porting=20= GNU code to run straight for gengetopt sources & pull the required=20 files. That's what they're there for. Not only that, but Apple's own=20 internal apps use long GNU-style options, but they don't seem to have=20 merged in the APIs into glibc yet. Go figure .... :-) Regards, Pete C |
From: Bruce A. <ba...@gr...> - 2002-11-29 06:15:12
|
Hi Phil, On Thu, 28 Nov 2002, Phil Williams wrote: > On Thu, Nov 28, 2002 at 01:40:28PM +0100, Erik Inge Bols=F8 wrote: > > On Thu, 28 Nov 2002, Peter Cassidy wrote: > > >=09One other point - the new getopt_long additions to 5.0-46 broke the > > >Darwin port! No worries, though - I grabbed the getopt_long > > >implementation which comes with GNU gengetopt & worked it into the > > >Darwin-specific sources, so it's there if any else needs it .... > >=20 > > Ick. I think we agreed that this shouldn't be done... We probably need = a > > ./configure script checking for getopt_long(), if not found, fallback t= o > > POSIX getopt(). >=20 > Perhaps we should limit ourselves to getopt() until we've worked out > exactly how we're going to handle systems that don't support > getopt_long(). Can't we just do this? #ifdef HAVEGETOPTLONG while (-1 !=3D (optchar =3D getopt_long(argc, argv, short_opts,long_opts,0)= {} #else while (-1 !=3D (optchar =3D getopt(argc, argv, short_opts){} #endif > I'm happy to remove or disable the getopt_long() code for the time > being if that's the best thing to do. My vote is to leave getopt_long there, and just configure it out as above if there is a platform that does not support it. Is this OK with everyone? Bruce |
From: Phil W. <ph...@su...> - 2002-11-29 22:35:22
|
Hi Bruce, > Can't we just do this? > > #ifdef HAVEGETOPTLONG > while (-1 != (optchar = getopt_long(argc, argv, short_opts,long_opts,0){} > #else > while (-1 != (optchar = getopt(argc, argv, short_opts){} > #endif > > > I'm happy to remove or disable the getopt_long() code for the time > > being if that's the best thing to do. > > My vote is to leave getopt_long there, and just configure it out as above > if there is a platform that does not support it. Is this OK with > everyone? Unless anybody objects soon, I'll modify the code to do this and I'll define HAVEGETOPTLONG in the makefile. I agree that we need a configure script to define this macro and I'm willing to have a go if we can't find anybody else to do it. In fact, I'd quite like to do it, but I've barely used the GNU Autotools so we should probably try to get someone with experience first. Phil. |
From: Bruce A. <ba...@gr...> - 2002-11-29 22:48:17
|
Hi Phil, > > #ifdef HAVEGETOPTLONG > > while (-1 != (optchar = getopt_long(argc, argv, short_opts,long_opts,0){} > > #else > > while (-1 != (optchar = getopt(argc, argv, short_opts){} > > #endif > > > > > I'm happy to remove or disable the getopt_long() code for the time > > > being if that's the best thing to do. > > > > My vote is to leave getopt_long there, and just configure it out as above > > if there is a platform that does not support it. Is this OK with > > everyone? > > Unless anybody objects soon, I'll modify the code to do this and I'll define > HAVEGETOPTLONG in the makefile. Thanks! I don't think Erik will object to this too strongly, since there is then a simple and clean option for non-getopt-long platforms. > I agree that we need a configure script to define this macro and I'm willing to > have a go if we can't find anybody else to do it. In fact, I'd quite like to do > it, but I've barely used the GNU Autotools so we should probably try to get > someone with experience first. I'm happy to go the automake/autoconf route, provided we get someone who's experienced to set it up. [Definitely not me!]. It's a bad area to get on-the-job training, IMO. Let's try and find someone who has already made the mistakes and thrown a few away to help us. Cheers, Bruce |
From: Bruce A. <ba...@gr...> - 2002-11-29 22:49:32
|
PS: Please do check the autoconf/automake stuff and use the right name for the #ifdef. I was guessing at HAVEGETOPTLONG... Cheers, Bruce |
From: Bruce A. <ba...@gr...> - 2002-11-29 05:22:35
|
Hi Erik, On Thu, 28 Nov 2002, [ISO-8859-1] Erik Inge Bols=F8 wrote: > On Thu, 28 Nov 2002, Peter Cassidy wrote: > >=09One other point - the new getopt_long additions to 5.0-46 broke the > >Darwin port! No worries, though - I grabbed the getopt_long > >implementation which comes with GNU gengetopt & worked it into the > >Darwin-specific sources, so it's there if any else needs it .... >=20 > Ick. I think we agreed that this shouldn't be done... We probably need a > ./configure script checking for getopt_long(), if not found, fallback to > POSIX getopt(). I like long options [it's why I asked Phil to add them], and if we can keep them while maintaining cross-platform compability fairly cleanly, I'd like to. My proposed solution HAD been: #ifdef HAVEGETOPTLONG while (-1 !=3D (optchar =3D getopt_long(argc, argv, short_opts,long_opts,0)= {} #else while (-1 !=3D (optchar =3D getopt(argc, argv, short_opts){} #endif and since Peter told me that he had glibc, I thought he could easily use getopt_long. On systems where long options were not available, this cleanly gives you the short options only. Erik, isn't this a clean enough solution for systems without getopt_long()? Peter, since you have glibc is it necessary to actually include the getopt_long implementation from GNU? Can't you simply link to the right routine from glibc? [By the way, I am not dead-set against including the getopt_long source, I was just hoping to avoid the bloat of more stuff to maintain. This is probably also Erik's concern.] Cheers, =09Bruce |