/lib/foo.so.X -> /usr/lib/foo.so
Ruslan Ermilov
ru at FreeBSD.org
Thu Sep 4 13:27:28 PDT 2003
On Thu, Sep 04, 2003 at 09:58:39PM +0300, Ruslan Ermilov wrote:
[...]
> The patch is not a problem (attached). I've been looking at
> how our friends do this. NetBSD has symlinks in /usr/lib to
> /lib, both to .so and .so.X, and their cc(1) and ld(1) don't
> look things in /lib. Linux looks things up in both /lib and
> /usr/lib, and does not have symlinks from /usr/lib to /lib.
>
There is a sad typo above: Linux *does* have symlinks from
/usr/lib to /lib, so both use /usr/lib for linking.
> The only reason while I still think we should support both
> /lib and /usr/lib in cc(1) and ld(1) by default is to allow
> our users to have /usr symlinked somethere, otherwise relative
> symlinking from /usr/lib to ../../lib does not work, and we
> are back to that endless thread.
>
Not that I'm completely happy with introducing yet another
variable in bsd.lib.mk, but the attached patch:
- Leaves only one set of .so symlinks in /usr/lib.
Benefits: all other systems that use both /lib and /usr/lib
(that I've been able to test) have .so links in /usr/lib
only, and use them for linking; GCC in ports will like this
better.
- Uses absolute paths in .so symlinks.
Benefit: works for people who have their /usr symlinked
somewhere.
- Works without any more modifications to GCC. ld(1)
hacks can go away too.
Please review.
Cheers,
--
Ruslan Ermilov Sysadmin and DBA,
ru at sunbay.com Sunbay Software Ltd,
ru at FreeBSD.org FreeBSD committer
-------------- next part --------------
Index: Makefile.inc1
===================================================================
RCS file: /home/ncvs/src/Makefile.inc1,v
retrieving revision 1.389
diff -u -r1.389 Makefile.inc1
--- Makefile.inc1 1 Sep 2003 06:43:24 -0000 1.389
+++ Makefile.inc1 4 Sep 2003 19:30:19 -0000
@@ -227,6 +227,7 @@
# world stage
WMAKEENV= ${CROSSENV} \
DESTDIR=${WORLDTMP} \
+ SHLIBDIRPREFIX=${WORLDTMP} \
INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${TMPPATH}
WMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1
Index: share/mk/bsd.lib.mk
===================================================================
RCS file: /home/ncvs/src/share/mk/bsd.lib.mk,v
retrieving revision 1.153
diff -u -r1.153 bsd.lib.mk
--- share/mk/bsd.lib.mk 4 Sep 2003 04:29:11 -0000 1.153
+++ share/mk/bsd.lib.mk 4 Sep 2003 19:34:08 -0000
@@ -208,9 +208,10 @@
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
.if defined(SHLIB_LINK)
- ln -fs ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}/${SHLIB_LINK}
-.if (${LIBDIR} != ${SHLIBDIR})
- ln -fs ${LIBDIR:C|/[^/]+|/..|g:S|^/||}${SHLIBDIR}/${SHLIB_NAME} \
+.if ${SHLIBDIR} == ${LIBDIR}
+ ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
+.else
+ ln -fs ${SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
${DESTDIR}${LIBDIR}/${SHLIB_LINK}
.endif
.endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20030904/61b2208c/attachment.bin
More information about the freebsd-current
mailing list