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>