From 5f59cc14e58204954e1e34af01ead71139cc3179 Mon Sep 17 00:00:00 2001 From: dholland Date: Fri, 7 Jun 2013 17:15:54 +0000 Subject: After including builtin.mk files, go through BUILDLINK_TREE in tree order and force USE_BUILTIN.pkg=no for packages that depend on packages where USE_BUILTIN.pkg is no. The names of any such packages are accumulated in the variable FORCED_PKGSRC for reference; this is currently undocumented and could be dropped in the future. This makes it a lot safer to install pkgsrc versions of selected X libraries without switching wholesale to pkgsrc X; however, other issues may still exist and caution is still advisable. As seen on tech-pkg. Also note: this may affect the builds of packages we don't realize are affected and that haven't been revbumped. If you find one, let us know so we can bump its version (or do that yourself) -- most likely this change will produce in working, properly-linked packages that were previously broken, but if problems arise please speak up. --- mk/buildlink3/bsd.buildlink3.mk | 48 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'mk/buildlink3') diff --git a/mk/buildlink3/bsd.buildlink3.mk b/mk/buildlink3/bsd.buildlink3.mk index 06d89023de1..1287a80b99a 100644 --- a/mk/buildlink3/bsd.buildlink3.mk +++ b/mk/buildlink3/bsd.buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.buildlink3.mk,v 1.221 2013/05/13 12:01:51 jperkin Exp $ +# $NetBSD: bsd.buildlink3.mk,v 1.222 2013/06/07 17:15:54 dholland Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. @@ -121,6 +121,52 @@ BUILDLINK_BUILTIN_MK.${_pkg_}?= ${BUILDLINK_PKGSRCDIR.${_pkg_}}/builtin.mk .endif .endfor +# Go through the packages in tree order and make sure USE_BUILTIN.pkg +# is set to "no" if that package depends on any other packages where +# USE_BUILTIN.pkg is set to "no". +# + +_stack_:=bot +_ok_:=yes +.for _pkg_ in ${BUILDLINK_TREE} +# work around PR 47888 +_enter_:=${_pkg_:M-*} + +. if ${_pkg_} == x11-links || ${_pkg_} == -x11-links + # (nothing) +. elif empty(_enter_) + # entering a package (in the buildlink tree) + #.say "${_stack_:C/.*/ /} ${_pkg_}:" + _stack_:=${_ok_} ${_stack_} + _ok_:=yes +. else + # leaving a package (in the buildlink tree) +. if !empty(USE_BUILTIN.${_pkg_:S/^-//}:M[Yy][Ee][Ss]) + # this package is going to use the builtin version +. if ${_ok_} == no + # not ok for it to be builtin; force it to pkgsrc + USE_BUILTIN.${_pkg_:S/^-//}:=no + FORCED_PKGSRC+=${_pkg_:S/^-//} + #.say "${_stack_:C/.*/ /} ${_pkg_:S/^-//} pkgsrc FORCED" +. else + #.say "${_stack_:C/.*/ /} ${_pkg_:S/^-//} built-in" +. endif +. else + # no builtin version or not using it + #.say "${_stack_:C/.*/ /} ${_pkg_:S/^-//} pkgsrc" + _ok_:=no +. endif + # pop the stack +. if ${_ok_} == yes + _ok_:=${_stack_:[1]} +. endif + _stack_:=${_stack_:[2..-1]} +. endif +.endfor +.if ${_stack_} != "bot" +.error "The above loop through BUILDLINK_TREE failed to balance" +.endif + # Sorted and unified version of BUILDLINK_TREE without recursion # data. _BUILDLINK_TREE:= ${BUILDLINK_TREE:N-*:O:u} -- cgit v1.2.3