There are two solutions for your library problem:
1. Export DYLD_LIBRARY_PATH before launching the software, so that the
linker knows where to find the libraries
2. When building the libraries pass -install_name ${prefix}/lib/$outfile
to the linker. ${prefix}/lib/$outfile is the final installation
destination of the library. This approach requires patching the makefile.Hope this helps. Jann Ryan Schmidt wrote: > This question isn't about using MacPorts but about how MacPorts does > something that I want to do elsewhere. How does it do the destroot phase? > > I have some software I would like to build. It happens to be Graphviz. > There are a dozen other packages on which Graphviz depends. Ultimately > they need to go into a location under /usr/local which would require > root access, but I would like to build them in a user-writable temporary > location first. > > If I'm not mistaken, MacPorts accomplishes its destroot phase by using, > usually > > make install DESTDIR=/foo > > where /foo is the destroot directory of the work directory. The software > gets installed in /foo/opt/local/whatever. Then, later, during the > install phase, everything from /foo gets merged with the real > /opt/local. Right? Right. > > What if I have multiple packages I want to install in the temporary > directory before installing? Say I want to install libpng, which depends > on zlib. But if zlib is only in the temporary destroot directory, the > libpng build won't find it there when I've told it the dependencies are > to be found in /usr/local. And if I instead tell libpng to link with > zlib in the temporary destroot, won't that be the location where libpng > forever looks for zlib, even after I've tried to install everything in > /usr/local? > > Is there a way to make this work? Maybe something I need to do in > addition to setting DESTDIR during make install? Or is there a different > option? It occurs to me to try to use a chroot, but I've never used one > before. Does that sound like a good thing to try -- make a chroot which > contains an empty /usr/local directory, links (hard links?) to /usr/bin, > /usr/X11R6, /System, and other things the build is likely to need, and > do the build in there, letting it think it's writing to the real > /usr/local when it's really not? Any other suggestions for building > multiple packages in a temporary directory before installation? > > Thanks for any insight you can offer. > > > The ultimate goal, in case you're wondering, is that I would like to do > a complete build of Graphviz -- from decompressing the source archives, > all the way up to creating a disk image containing an installer package > -- without requiring root access. Running the installer package would > require root access, but I don't want the build system to require root. > > _______________________________________________ macports-dev mailing list [email protected] http://lists.macosforge.org/mailman/listinfo/macports-dev
