[Fink-devel] Q: convert lib*.a to lib*.dylib

2008-04-10 Thread Ben Abbott
It is has been suggested that the SuiteSparse static libraries be
converted to dynamic libraries instead.

Rather than attempt to modify the makefiles directly, I'd like to
try to directly convert the static libraries to dynamic ones.

My thought is to do something like 

# Extract the object files from the static library.
ar -x libamd.a
# Build the dynamic version of the library.
gcc -dynamiclib -arch_only `/usr/bin/arch` -o libamd.dylib *.o

I have no practical experience with building libraries, and thought
it a good idea to inquire here.

Can anyone tell me what options are needed, desired,
recommended, etc?

TiA
Ben


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel


Re: [Fink-devel] Q: convert lib*.a to lib*.dylib

2008-04-10 Thread Peter O'Gorman
Ben Abbott wrote:
 It is has been suggested that the SuiteSparse static libraries be
 converted to dynamic libraries instead.

Why are they static? Are they shared libraries on other platforms? Who
suggested the change?

 
 Rather than attempt to modify the makefiles directly, I'd like to
 try to directly convert the static libraries to dynamic ones.
 
 My thought is to do something like 
 
 # Extract the object files from the static library.
 ar -x libamd.a
 # Build the dynamic version of the library.
 gcc -dynamiclib -arch_only `/usr/bin/arch` -o libamd.dylib *.o

Change to libamd.0.dylib and you would also want to add -install_name
$libdir/libamd.0.dylib. Please use a symlink so that the package can be
splitoff correctly into -dev and -shlibs packages. Are the objects in
the static archive built with any options? Specifically -fast or
-mdynamic-no-pic? If so, this strategy will not work.

 
 I have no practical experience with building libraries, and thought
 it a good idea to inquire here.
 
 Can anyone tell me what options are needed, desired,
 recommended, etc?

If they static library is fat, ar x will not work. If they are not fat,
you do not need to add -arch_only.

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

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel


Re: [Fink-devel] Q: convert lib*.a to lib*.dylib

2008-04-10 Thread Ben Abbott

On Apr 10, 2008, at 7:47 PM, Peter O'Gorman wrote:
 Ben Abbott wrote:
 It is has been suggested that the SuiteSparse static libraries be
 converted to dynamic libraries instead.

 Why are they static? Are they shared libraries on other platforms? Who
 suggested the change?

They are originally static because that developers of SuiteSparse  
choose to make them so.

Alexander asked if they might be changed.

 Rather than attempt to modify the makefiles directly, I'd like to
 try to directly convert the static libraries to dynamic ones.

 My thought is to do something like

 # Extract the object files from the static library.
 ar -x libamd.a
 # Build the dynamic version of the library.
 gcc -dynamiclib -arch_only `/usr/bin/arch` -o libamd.dylib *.o

 Change to libamd.0.dylib and you would also want to add -install_name
 $libdir/libamd.0.dylib. Please use a symlink so that the package can  
 be
 splitoff correctly into -dev and -shlibs packages. Are the objects in
 the static archive built with any options? Specifically -fast or
 -mdynamic-no-pic? If so, this strategy will not work.

Forgive my naivete, but do I have this right?

# Extract the object files from the static library.
ar -x libamd.a
# Build the dynamic version of the library.
gcc -dynamiclib -install_name $libdir/libamd.o.dylib -o libamd.0.dylib  
*.o

Also can you give me the explicit command needed for symlink part?

Regarding any options, it does not look like there are any. However,  
I haven't looked through all the detail. If you're so inclined, the  
tracker item is below


http://sourceforge.net/tracker/index.php?func=detailaid=1923649group_id=17203atid=414256

The source code can be downloaded here

http://www.cise.ufl.edu/research/sparse/SuiteSparse/


 I have no practical experience with building libraries, and thought
 it a good idea to inquire here.

 Can anyone tell me what options are needed, desired,
 recommended, etc?

 If they static library is fat, ar x will not work. If they are not  
 fat,
 you do not need to add -arch_only.

They are not fat.

Ben

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel


Re: [Fink-devel] Q: convert lib*.a to lib*.dylib

2008-04-10 Thread Alexander Hansen

On Apr 10, 2008, at 7:47 PM, Peter O'Gorman wrote:

 Ben Abbott wrote:
 It is has been suggested that the SuiteSparse static libraries be
 converted to dynamic libraries instead.

 Why are they static? Are they shared libraries on other platforms? Who
 suggested the change?



They aren't static on Debian, at least:

I suggested the change because this is a dependency for octave, and as  
it stands now every update to suitesparse forces an update to octave.   
That's a bit brutal.

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel


Re: [Fink-devel] Q: convert lib*.a to lib*.dylib

2008-04-10 Thread Peter O'Gorman
Ben Abbott wrote:
 
 On Apr 10, 2008, at 7:47 PM, Peter O'Gorman wrote:
 Ben Abbott wrote:
 It is has been suggested that the SuiteSparse static libraries be
 converted to dynamic libraries instead.

 Why are they static? Are they shared libraries on other platforms? Who
 suggested the change?
 
 They are originally static because that developers of SuiteSparse choose
 to make them so.
 
 Alexander asked if they might be changed.
 
 Rather than attempt to modify the makefiles directly, I'd like to
 try to directly convert the static libraries to dynamic ones.

 My thought is to do something like

 # Extract the object files from the static library.
 ar -x libamd.a
 # Build the dynamic version of the library.
 gcc -dynamiclib -arch_only `/usr/bin/arch` -o libamd.dylib *.o

 Change to libamd.0.dylib and you would also want to add -install_name
 $libdir/libamd.0.dylib. Please use a symlink so that the package can be
 splitoff correctly into -dev and -shlibs packages. Are the objects in
 the static archive built with any options? Specifically -fast or
 -mdynamic-no-pic? If so, this strategy will not work.
 
 Forgive my naivete, but do I have this right?
 
 # Extract the object files from the static library.
 ar -x libamd.a
 # Build the dynamic version of the library.
 gcc -dynamiclib -install_name $libdir/libamd.o.dylib -o libamd.0.dylib *.o
 
 Also can you give me the explicit command needed for symlink part?

Ok, I guess that you will be doing this as part of the install phase, so:

gcc -o %i/lib/libamd.0.dylib -dynamiclib \
-install_name %p/lib/libamd.0.dylib *.o

ln -s libamd.0.dylib %i/lib/libamd.dylib

You will, of course, have to create a -shlibs splitoff in your .info file.

None of this will be of any help for octave upgrade issues this time,
but it should help for the next time (when you will have to check the
library for ABI compatibility and decide if it needs to have a new
install_name or a higher compatibility_version etc.).

The only reason that you are being asked to do this is that octave takes
forever + a few days to build, and having shared libraries would allow
octave to remain at the same revision and not be rebuilt even if this
one package is updated in an incompatible way.

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

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel


Re: [Fink-devel] Updated mplayer (#1885675)

2008-04-10 Thread James Bunton
On Wed, Apr 09, 2008 at 09:17:08PM -0400, Alexander Hansen wrote:
 Following up:

 I've made a couple of changes on James' tracker item.  It appeared to build 
 OK as far as I could see.

 I'm cc'ing the current mplayer and libdvdnav maintainers

Thanks Alexander. Those changes look good to me =)

---

James



pgpS6l7CXAJvW.pgp
Description: PGP signature
-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel

Re: [Fink-devel] Q: convert lib*.a to lib*.dylib

2008-04-10 Thread Ben Abbott

On Apr 10, 2008, at 9:54 PM, Peter O'Gorman wrote:
 Ben Abbott wrote:

 On Apr 10, 2008, at 7:47 PM, Peter O'Gorman wrote:
 Ben Abbott wrote:
 It is has been suggested that the SuiteSparse static libraries be
 converted to dynamic libraries instead.

 Why are they static? Are they shared libraries on other platforms?  
 Who
 suggested the change?

 They are originally static because that developers of SuiteSparse  
 choose
 to make them so.

 Alexander asked if they might be changed.

 Rather than attempt to modify the makefiles directly, I'd like to
 try to directly convert the static libraries to dynamic ones.

 My thought is to do something like

 # Extract the object files from the static library.
 ar -x libamd.a
 # Build the dynamic version of the library.
 gcc -dynamiclib -arch_only `/usr/bin/arch` -o libamd.dylib *.o

 Change to libamd.0.dylib and you would also want to add - 
 install_name
 $libdir/libamd.0.dylib. Please use a symlink so that the package  
 can be
 splitoff correctly into -dev and -shlibs packages. Are the objects  
 in
 the static archive built with any options? Specifically -fast or
 -mdynamic-no-pic? If so, this strategy will not work.

 Forgive my naivete, but do I have this right?

 # Extract the object files from the static library.
 ar -x libamd.a
 # Build the dynamic version of the library.
 gcc -dynamiclib -install_name $libdir/libamd.o.dylib -o libamd. 
 0.dylib *.o

 Also can you give me the explicit command needed for symlink part?

 Ok, I guess that you will be doing this as part of the install  
 phase, so:

 gcc -o %i/lib/libamd.0.dylib -dynamiclib \
 -install_name %p/lib/libamd.0.dylib *.o

 ln -s libamd.0.dylib %i/lib/libamd.dylib

 You will, of course, have to create a -shlibs splitoff in your .info  
 file.

Thanks for the detail.

I'm just learning shell scripts, but am hopeful I have what I need to  
do the job.

Ben





-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel