Re: [cygwin] cwrapper emits wrapper script

2007-06-02 Thread Charles Wilson

Noah Misch wrote:

I don't speak for the Libtool maintainers, but I'll throw out my impressions of
the patch, in case it might help move things along.  Not using Cygwin or MSYS
myself these days, I trust that the patch improves things there as you say it
does.  It seems fairly harmless from the perspective of all other platforms.


Thanks for your comments:


Long-term, we can revise this cumbersome division of work between the executable
wrapper and the wrapper script.  Ideally, the wrapper methodology for Unix
should resemble that for Cygwin/MSYS, so we don't have an extra code path
potentially subject to bitrot.  This patch does not introduce those problems,
however, and seems to improve the current situation.


Well, yes, but libtool itself is nothing BUT a twisty maze of extra code 
paths -- specifically so that end-users can avoid extra code paths in 
their Makefiles and other build support.  We keep track of the 
complexities so you don't have to, right?


Anyway, I wanted to keep the impact to not-Cygwin/Mingw as small as 
possible -- zero, hopefully.  Anything beyond that is fodder for the 
next release cycle, definitely not this one.  Even so, my changes may or 
may not be appropriate for 2.0; I'd like to hear from the maintainers on 
/that/ score...


Long term, at least on cygwin/mingw, it would be /nice/ to do away with 
the wrapper script entirely -- I'm just not sure that it is /practical/ 
without a complete redesign of the wrapper system on all platforms 
shudder.  The script is used both to launch the target with the right 
environment settings, but also to pass information between libtool 
invocations. It's that second bit that's problematic -- and doing THAT 
bit differently on unix vs. cygwin is more of an extra code path than 
having a simple .exe wrapper IMO.  But making all unix do it the cygwin 
way is not a good idea either: it's slower (extra fork/exec), there's no 
good reason to make 'em do that except consistency (which is not 
always a virtue), and it's a major change from existing behavior on 
those platforms.



From a purely Unix-centric standpoint, I would pass the script to a shell via a
pipe, rather than writing it out to a file.  Is that too much for MSYS?


Well, that would require more (risky?) changes in the part of libtool 
where the wrapper script is read.  Other platforms just source the 
existing script; I don't know if you can source a script on stdin. 
And if you could, it'd still be doing it some weird way on 
cygwin/mingw (call wrapper.exe to create a temporary script first, then 
continue as normal is slightly weird, but at least it says 'continue as 
normal' there at the end).  Making cygwin even weirder is contrary to 
your advice about at least /trying/ to keep things unixish and 
cygwin/mingw similar.



One specific thought:


+  # cygwin/mingw cwrapper will rewrite this line:
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no

...

+   func_emit_libtool_wrapper_script |
+   $SED -e 's/\([\\]\)/\\\1/g' \
+-e 's/\(WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\)=.*/\1=yes/' \
+-e 's/^//' -e 's/$/\\n/' 


This will be cleaner if you pass the value of WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
as an argument to func_emit_libtool_wrapper_script, rather than hard-coding the
no and filtering it after the fact.


That's a thought. I'd prefer to push that change off to a later (small) 
patch though, rather than rewrite this one again -- especially given the 
difficulty in regenerating the GCS half of this patch.


--
Chuck




Re: static library contains static library

2007-06-02 Thread Peter O'Gorman


On May 30, 2007, at 1:12 AM, Peter O'Gorman wrote:

Well, I haven't found the cause of this yet, but here's a test  
case. It is fun to do ar -t libbar.a and see:

__.SYMDEF SORTED
libfoo.a
bar.o
libfoo.a

because every libbar.a needs two libfoo.a's!

Reported by Daniel Macks from the fink project, but reproducible on  
linux as well as darwin.


I'll look for a fix later on. No I don't want to commit this right  
now, just wanted to share :)


I eliminated one of the two static archives, so this should make  
libtool either half as good or twice as good, depending on your point  
of view.

All other tests behave as before. Ok?

Peter
--
Peter O'Gorman
http://pogma.com



dmacks.patch
Description: Binary data