Sat Dec 3 07:28:18 2011 UTC ()
lang/gnat-aux: Modify rpath handling for shared project libraries

The GNAT compiler project builder essentially doesn't support DESTDIR
out of the box.  By default, it sets rpath of shared libraries to the
directory to which they are installed.  One may add additional rpaths
through switches, but not remove these default ones.  Also added to
the default rpath are the paths to the ada library and the standard
localbase library.

This modification to the compiler will force the project builder to
recognize the -R switch (gnatlink uses this to disable rpaths), and
it reacts by not putting the library install path into rpath.  The
adalib and ${LOCALBASE}/lib paths will still make up the base rpath
definition of the built shared libraries.

This change was prompted by the rpath troubles of the XML/Ada package.


(marino)
diff -r1.6 -r1.7 pkgsrc/lang/gnat-aux/Makefile
diff -r1.1.1.1 -r1.2 pkgsrc/lang/gnat-aux/buildlink3.mk
diff -r1.5 -r1.6 pkgsrc/lang/gnat-aux/distinfo
diff -r0 -r1.1 pkgsrc/lang/gnat-aux/patches/patch-ad

cvs diff -r1.6 -r1.7 pkgsrc/lang/gnat-aux/Attic/Makefile (expand / switch to unified diff)

--- pkgsrc/lang/gnat-aux/Attic/Makefile 2011/10/05 18:11:55 1.6
+++ pkgsrc/lang/gnat-aux/Attic/Makefile 2011/12/03 07:28:18 1.7
@@ -1,18 +1,18 @@ @@ -1,18 +1,18 @@
1# $NetBSD: Makefile,v 1.6 2011/10/05 18:11:55 marino Exp $ 1# $NetBSD: Makefile,v 1.7 2011/12/03 07:28:18 marino Exp $
2# 2#
3 3
4DISTNAME= gnat-aux-${SNAPSHOT} 4DISTNAME= gnat-aux-${SNAPSHOT}
5PKGREVISION= 1 5PKGREVISION= 2
6CATEGORIES= lang 6CATEGORIES= lang
7MASTER_SITES= http://downloads.dragonlace.net/src/ \ 7MASTER_SITES= http://downloads.dragonlace.net/src/ \
8 http://dragonlace.mirrors.ada.cx/src/ 8 http://dragonlace.mirrors.ada.cx/src/
9EXTRACT_SUFX= .tar.bz2 9EXTRACT_SUFX= .tar.bz2
10 10
11MAINTAINER= draco@marino.st 11MAINTAINER= draco@marino.st
12HOMEPAGE= http://www.dragonlace.net/ 12HOMEPAGE= http://www.dragonlace.net/
13COMMENT= GNAT Ada compiler based on GCC ${GCC_BRANCH} 13COMMENT= GNAT Ada compiler based on GCC ${GCC_BRANCH}
14LICENSE= gnu-gpl-v3 AND gnu-lgpl-v3 14LICENSE= gnu-gpl-v3 AND gnu-lgpl-v3
15 15
16SNAPSHOT= 20110627 16SNAPSHOT= 20110627
17GCC_BRANCH= 4.6 17GCC_BRANCH= 4.6
18GCC_POINT= 1 18GCC_POINT= 1

cvs diff -r1.1.1.1 -r1.2 pkgsrc/lang/gnat-aux/Attic/buildlink3.mk (expand / switch to unified diff)

--- pkgsrc/lang/gnat-aux/Attic/buildlink3.mk 2011/02/01 20:32:56 1.1.1.1
+++ pkgsrc/lang/gnat-aux/Attic/buildlink3.mk 2011/12/03 07:28:18 1.2
@@ -1,18 +1,18 @@ @@ -1,18 +1,18 @@
1# $NetBSD: buildlink3.mk,v 1.1.1.1 2011/02/01 20:32:56 drochner Exp $ 1# $NetBSD: buildlink3.mk,v 1.2 2011/12/03 07:28:18 marino Exp $
2 2
3BUILDLINK_TREE+= gnat-aux 3BUILDLINK_TREE+= gnat-aux
4 4
5.if !defined(GNAT_AUX_BUILDLINK3_MK) 5.if !defined(GNAT_AUX_BUILDLINK3_MK)
6GNAT_AUX_BUILDLINK3_MK:= 6GNAT_AUX_BUILDLINK3_MK:=
7 7
8BUILDLINK_API_DEPENDS.gnat-aux+= gnat-aux>=20101120 8BUILDLINK_API_DEPENDS.gnat-aux+= gnat-aux>=20110627nb2
9BUILDLINK_PKGSRCDIR.gnat-aux?= ../../lang/gnat-aux 9BUILDLINK_PKGSRCDIR.gnat-aux?= ../../lang/gnat-aux
10 10
11.include "../../devel/zlib/buildlink3.mk" 11.include "../../devel/zlib/buildlink3.mk"
12.include "../../devel/gmp/buildlink3.mk" 12.include "../../devel/gmp/buildlink3.mk"
13.include "../../math/mpfr/buildlink3.mk" 13.include "../../math/mpfr/buildlink3.mk"
14.include "../../math/mpcomplex/buildlink3.mk" 14.include "../../math/mpcomplex/buildlink3.mk"
15.include "../../converters/libiconv/buildlink3.mk" 15.include "../../converters/libiconv/buildlink3.mk"
16.endif # GNAT_AUX_BUILDLINK3_MK 16.endif # GNAT_AUX_BUILDLINK3_MK
17 17
18BUILDLINK_TREE+= -gnat-aux 18BUILDLINK_TREE+= -gnat-aux

cvs diff -r1.5 -r1.6 pkgsrc/lang/gnat-aux/Attic/distinfo (expand / switch to unified diff)

--- pkgsrc/lang/gnat-aux/Attic/distinfo 2011/10/05 18:11:55 1.5
+++ pkgsrc/lang/gnat-aux/Attic/distinfo 2011/12/03 07:28:18 1.6
@@ -1,23 +1,24 @@ @@ -1,23 +1,24 @@
1$NetBSD: distinfo,v 1.5 2011/10/05 18:11:55 marino Exp $ 1$NetBSD: distinfo,v 1.6 2011/12/03 07:28:18 marino Exp $
2 2
3SHA1 (gnat-aux-20110627.tar.bz2) = 598d2c21c3bbd1e2cada2ca98331107af3deb608 3SHA1 (gnat-aux-20110627.tar.bz2) = 598d2c21c3bbd1e2cada2ca98331107af3deb608
4RMD160 (gnat-aux-20110627.tar.bz2) = 84b05832457568fef9355279214caeacca9c74ba 4RMD160 (gnat-aux-20110627.tar.bz2) = 84b05832457568fef9355279214caeacca9c74ba
5Size (gnat-aux-20110627.tar.bz2) = 26799024 bytes 5Size (gnat-aux-20110627.tar.bz2) = 26799024 bytes
6SHA1 (gnat-bootstrap.i386.dragonfly.tar.bz2) = d7a8103243a2df3723d9d3c3ec0da9c3bb725214 6SHA1 (gnat-bootstrap.i386.dragonfly.tar.bz2) = d7a8103243a2df3723d9d3c3ec0da9c3bb725214
7RMD160 (gnat-bootstrap.i386.dragonfly.tar.bz2) = 9e6fde444e0ed76ee404810af6d6b7eb48659c09 7RMD160 (gnat-bootstrap.i386.dragonfly.tar.bz2) = 9e6fde444e0ed76ee404810af6d6b7eb48659c09
8Size (gnat-bootstrap.i386.dragonfly.tar.bz2) = 28205489 bytes 8Size (gnat-bootstrap.i386.dragonfly.tar.bz2) = 28205489 bytes
9SHA1 (gnat-bootstrap.i386.netbsd.tar.bz2) = 19b61f54fae8e237a4e678ff03f20f50b47db1df 9SHA1 (gnat-bootstrap.i386.netbsd.tar.bz2) = 19b61f54fae8e237a4e678ff03f20f50b47db1df
10RMD160 (gnat-bootstrap.i386.netbsd.tar.bz2) = ade03f223b2af229daece20a749915f7da0eb0a6 10RMD160 (gnat-bootstrap.i386.netbsd.tar.bz2) = ade03f223b2af229daece20a749915f7da0eb0a6
11Size (gnat-bootstrap.i386.netbsd.tar.bz2) = 27654956 bytes 11Size (gnat-bootstrap.i386.netbsd.tar.bz2) = 27654956 bytes
12SHA1 (gnat-bootstrap.x86_64.dragonfly.tar.bz2) = 77a637a497c61e4085de31b24a205f24b1776a15 12SHA1 (gnat-bootstrap.x86_64.dragonfly.tar.bz2) = 77a637a497c61e4085de31b24a205f24b1776a15
13RMD160 (gnat-bootstrap.x86_64.dragonfly.tar.bz2) = 4d0eb7b8a5f901333f1ffd190a5bf72072b2b52e 13RMD160 (gnat-bootstrap.x86_64.dragonfly.tar.bz2) = 4d0eb7b8a5f901333f1ffd190a5bf72072b2b52e
14Size (gnat-bootstrap.x86_64.dragonfly.tar.bz2) = 31380342 bytes 14Size (gnat-bootstrap.x86_64.dragonfly.tar.bz2) = 31380342 bytes
15SHA1 (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 84f0e9179998daa643046a5d139321c4130ea84d 15SHA1 (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 84f0e9179998daa643046a5d139321c4130ea84d
16RMD160 (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 0b2943349536c323a62b56dc05ff1fedd6d7e17a 16RMD160 (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 0b2943349536c323a62b56dc05ff1fedd6d7e17a
17Size (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 30572187 bytes 17Size (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 30572187 bytes
18SHA1 (gnat-bootstrap.i386.solaris.tar.bz2) = 4962657bfc894a20ad3102c1f6fe8e566b47cb51 18SHA1 (gnat-bootstrap.i386.solaris.tar.bz2) = 4962657bfc894a20ad3102c1f6fe8e566b47cb51
19RMD160 (gnat-bootstrap.i386.solaris.tar.bz2) = ae72e76d0aba94451d99b9a70a3c049c9258cc82 19RMD160 (gnat-bootstrap.i386.solaris.tar.bz2) = ae72e76d0aba94451d99b9a70a3c049c9258cc82
20Size (gnat-bootstrap.i386.solaris.tar.bz2) = 43247034 bytes 20Size (gnat-bootstrap.i386.solaris.tar.bz2) = 43247034 bytes
21SHA1 (patch-aa) = 8a6199bb91fa1051db7af154e6995c116da71e63 21SHA1 (patch-aa) = 8a6199bb91fa1051db7af154e6995c116da71e63
22SHA1 (patch-ab) = 76cff68f5f697ed5aacd41d06bbb4d9a805e9d91 22SHA1 (patch-ab) = 76cff68f5f697ed5aacd41d06bbb4d9a805e9d91
23SHA1 (patch-ac) = f8a73fc95b9119ae75b64a5578b94be6dbccb837 23SHA1 (patch-ac) = f8a73fc95b9119ae75b64a5578b94be6dbccb837
 24SHA1 (patch-ad) = b72ac305a11f40d77f76a8a1b579a93742123079

File Added: pkgsrc/lang/gnat-aux/patches/Attic/patch-ad
--- gcc/ada/mlib-prj.adb
+++ gcc/ada/mlib-prj.adb
@@ -341,6 +341,11 @@ package body MLib.Prj is
 
       Foreign_Sources : Boolean;
 
+      Rpath_Disabled : Boolean := False;
+      --  If -R is passed through the library options for the linker, it will
+      --  prevent the implemented libraries portion of the rpath switch from
+      --  being built, even if the linker is capable of supporting rpath.
+
       Rpath : String_Access := null;
       --  Allocated only if Path Option is supported
 
@@ -790,7 +795,7 @@ package body MLib.Prj is
             Opts.Table (Opts.Last) :=
               new String'("-L" & Name_Buffer (1 .. Name_Len));
 
-            if Path_Option /= null then
+            if not Rpath_Disabled and then Path_Option /= null then
                Add_Rpath (Name_Buffer (1 .. Name_Len));
             end if;
 
@@ -1285,6 +1290,9 @@ package body MLib.Prj is
                      Opts.Increment_Last;
                      Opts.Table (Opts.Last) :=
                        new String'(Name_Buffer (1 .. Name_Len));
+                     if Name_Len = 2 and then Name_Buffer (1 .. 2) = "-R" then
+                        Rpath_Disabled := True;
+                     end if;
                   end if;
 
                   Current := Element.Next;