Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Aug 2019 19:04:34 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        Brooks Davis <brooks@freebsd.org>
Cc:        freebsd-toolchain@freebsd.org, freebsd-ports@freebsd.org, freebsd-ppc@freebsd.org
Subject:   Re: devel/llvm90 requires math/z3 first; building math/z3 requires a c++ toolchain be in place
Message-ID:  <9EA047FF-6427-4F5F-B85E-E8DB18CB174C@yahoo.com>
In-Reply-To: <2A88AADC-8ED0-4FFD-85A8-34C0186D5D4F@yahoo.com>
References:  <8DB3EAA4-2B88-4180-8386-673524D27C64@yahoo.com> <20190806165525.GC94703@spindle.one-eyed-alien.net> <2A88AADC-8ED0-4FFD-85A8-34C0186D5D4F@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On 2019-Aug-6, at 17:59, Mark Millard <marklmi at yahoo.com> wrote:



> On 2019-Aug-6, at 09:55, Brooks Davis <brooks at freebsd.org> wrote:
>=20
>> I'd prefer to disable this dependency.  There's a knob that worked in
>> the 8.0 timeframe, but the lit build now autodetects z3 when it is
>> present and I've failed to find a knob to disable it.  For now, the =
easy
>> workaround is probably to disable options LIT.  We could make that =
the
>> default on non-LLVM platforms is that makes sense.
>>=20
>> -- Brooks
>=20
> Okay.
>=20
> poudriere-devel automatically built math/z3 because
> I'd indicated to build devel/llvm90 . math/z3 was not
> previously built: I've never had other use of it. So
> my context was not one of an implicit autodetect.
>=20
> It looks like that happened because of
> devel/llvm90/Makefile having:
>=20
> LIT_DESC=3D               Install lit and FileCheck test tools
> LIT_LIB_DEPENDS=3D        libz3.so:math/z3
> LIT_VARS=3D               _USES_PYTHON=3Dpython:3.6+

I tried deleting the package for math/z3 from
poudriere and using:

FBSDFHUGE# svnlite diff /usr/ports/devel/llvm90
Index: /usr/ports/devel/llvm90/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- /usr/ports/devel/llvm90/Makefile	(revision 508197)
+++ /usr/ports/devel/llvm90/Makefile	(working copy)
@@ -110,7 +110,7 @@
 GOLD_CMAKE_ON=3D		=
-DLLVM_BINUTILS_INCDIR=3D${LOCALBASE}/include
 GOLD_BUILD_DEPENDS=3D	${LOCALBASE}/bin/ld.gold:devel/binutils
 LIT_DESC=3D		Install lit and FileCheck test tools
-LIT_LIB_DEPENDS=3D	libz3.so:math/z3
+#LIT_LIB_DEPENDS=3D	libz3.so:math/z3
 LIT_VARS=3D		_USES_PYTHON=3Dpython:3.6+
 LLD_DESC=3D		Install lld, the LLVM linker
 LLD_DISTFILES=3D		lld-${DISTVERSION}.src${EXTRACT_SUFX}

devel/llvm90 is building via poudriere-devel without
first building math/z3 . We will see if it completes
okay.

If it does I'll try a pkg delete of math/z3 and
an install of the devel/llvm90 .

(No new material after this point.)


> Of course someone that has math/z3 for other reasons
> would not necessarily want it used by llvm90 materials,
> so merely not listing it in LIT_LIB_DEPENDS might not
> be enough to cover all contexts.
>=20
> [Stop reading here if you do not care about what from
> llvm90 uses z3 and some of the consequences.]
>=20
> It turns out that the direct dependency is (via
> reviewing ldd -a output):
>=20
> /usr/local/llvm90/lib/../lib/libLLVM-9.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0
>=20
> The indirect reference via libLLVM-9.so use
> leads to most of llvm90 materials binding to
> libz3.so :
>=20
> # ldd /usr/local/llvm90/lib/*.so | egrep '(^/|z3)'
> /usr/local/llvm90/lib/CheckerDependencyHandlingAnalyzerPlugin.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/CheckerOptionHandlingAnalyzerPlugin.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/LLVMgold.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x805400000)
> /usr/local/llvm90/lib/SampleAnalyzerPlugin.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/libLLVM-9.0.0.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x805200000)
> /usr/local/llvm90/lib/libLLVM-9.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x805200000)
> /usr/local/llvm90/lib/libLLVM.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x805200000)
> /usr/local/llvm90/lib/libLTO.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x805400000)
> /usr/local/llvm90/lib/libRemarks.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x805400000)
> /usr/local/llvm90/lib/libclang-cpp.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/libclang.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x807200000)
> /usr/local/llvm90/lib/libgomp.so:
> /usr/local/llvm90/lib/libiomp5.so:
> /usr/local/llvm90/lib/liblldb.so:
>        libz3.so.0 =3D> /usr/local/lib/libz3.so.0 (0x807e00000)
> /usr/local/llvm90/lib/libomp.so:
> /usr/local/llvm90/lib/libomptarget.so:
>=20
> (I'll not list the /usr/local/llvm90/bin/ programs that in
> turn bind to these libraries, but most end up bound to
> libz3.so .)
>=20
> ldd reports some of the details as far as what librraries
> the libz3.so depends on:
>=20
> # ldd /usr/local/lib/*z3.so
> /usr/local/lib/libz3.so:
>        libthr.so.3 =3D> /lib/libthr.so.3 (0x800662000)
>        libomp.so =3D> /usr/lib/libomp.so (0x80068f000)
>        libc++.so.1 =3D> /usr/lib/libc++.so.1 (0x8020e4000)
>        libcxxrt.so.1 =3D> /lib/libcxxrt.so.1 (0x800738000)
>        libm.so.5 =3D> /lib/libm.so.5 (0x80075a000)
>        libgcc_s.so.1 =3D> /lib/libgcc_s.so.1 (0x80078c000)
>        libc.so.7 =3D> /lib/libc.so.7 (0x800242000)
>=20
> This makes clear that mixing in libstdc+++ or the
> like would likely not be appropriate unless llvm90
> was also using such. So a default gcc based build
> of libz3.so likely would not be appropriate if
> llvm90 is to also be built such that it can bind
> to libz3.so if found.
>=20
>> On Mon, Aug 05, 2019 at 08:45:31PM -0700, Mark Millard via =
freebsd-toolchain wrote:
>>> Building math/z3 involves:
>>>=20
>>> # grep compiler /usr/ports/math/z3/Makefile
>>> USES=3D		compiler:c++11-lang python:2.7,build
>>>=20
>>> But devel/llvm90 requires math/z3 to have been built before
>>> devel/llvm90 is built:
>>>=20
>>> # pkg info -d llvm90
>>> llvm90-9.0.0.r1:
>>> 	libxml2-2.9.9
>>> 	z3-4.8.5_1
>>> 	python36-3.6.9
>>> 	perl5-5.28.2
>>> 	libedit-3.1.20190324,1
>>> # pkg info -B llvm90
>>> llvm90-9.0.0.r1:
>>> 	libpython3.6m.so.1.0
>>> 	libedit.so.0
>>> 	libz3.so.0
>>> 	libxml2.so.2
>>>=20
>>>=20
>>> Hopefully this cycle can be avoided for system
>>> clang to eventually have progressed to clang 9.
>>> (I do not know the details.)
>>>=20
>>> For architectures still at gcc/g++ 4.2.1, some
>>> alternate c++ tool chain needs to be used to
>>> build libz3.so but the result needs to be
>>> compatible with llvm90 later using the libz3.so's
>>> content. (I do not know the details.)




=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9EA047FF-6427-4F5F-B85E-E8DB18CB174C>