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:
> 
>> 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.
>> 
>> -- Brooks
> 
> Okay.
> 
> 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.
> 
> It looks like that happened because of
> devel/llvm90/Makefile having:
> 
> LIT_DESC=               Install lit and FileCheck test tools
> LIT_LIB_DEPENDS=        libz3.so:math/z3
> LIT_VARS=               _USES_PYTHON=python: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
===================================================================
--- /usr/ports/devel/llvm90/Makefile    (revision 508197)
+++ /usr/ports/devel/llvm90/Makefile    (working copy)
@@ -110,7 +110,7 @@
 GOLD_CMAKE_ON=         -DLLVM_BINUTILS_INCDIR=${LOCALBASE}/include
 GOLD_BUILD_DEPENDS=    ${LOCALBASE}/bin/ld.gold:devel/binutils
 LIT_DESC=              Install lit and FileCheck test tools
-LIT_LIB_DEPENDS=       libz3.so:math/z3
+#LIT_LIB_DEPENDS=      libz3.so:math/z3
 LIT_VARS=              _USES_PYTHON=python:3.6+
 LLD_DESC=              Install lld, the LLVM linker
 LLD_DISTFILES=         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.
> 
> [Stop reading here if you do not care about what from
> llvm90 uses z3 and some of the consequences.]
> 
> It turns out that the direct dependency is (via
> reviewing ldd -a output):
> 
> /usr/local/llvm90/lib/../lib/libLLVM-9.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0
> 
> The indirect reference via libLLVM-9.so use
> leads to most of llvm90 materials binding to
> libz3.so :
> 
> # ldd /usr/local/llvm90/lib/*.so | egrep '(^/|z3)'
> /usr/local/llvm90/lib/CheckerDependencyHandlingAnalyzerPlugin.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/CheckerOptionHandlingAnalyzerPlugin.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/LLVMgold.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x805400000)
> /usr/local/llvm90/lib/SampleAnalyzerPlugin.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/libLLVM-9.0.0.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x805200000)
> /usr/local/llvm90/lib/libLLVM-9.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x805200000)
> /usr/local/llvm90/lib/libLLVM.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x805200000)
> /usr/local/llvm90/lib/libLTO.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x805400000)
> /usr/local/llvm90/lib/libRemarks.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x805400000)
> /usr/local/llvm90/lib/libclang-cpp.so:
>        libz3.so.0 => /usr/local/lib/libz3.so.0 (0x807a00000)
> /usr/local/llvm90/lib/libclang.so:
>        libz3.so.0 => /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 => /usr/local/lib/libz3.so.0 (0x807e00000)
> /usr/local/llvm90/lib/libomp.so:
> /usr/local/llvm90/lib/libomptarget.so:
> 
> (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 .)
> 
> ldd reports some of the details as far as what librraries
> the libz3.so depends on:
> 
> # ldd /usr/local/lib/*z3.so
> /usr/local/lib/libz3.so:
>        libthr.so.3 => /lib/libthr.so.3 (0x800662000)
>        libomp.so => /usr/lib/libomp.so (0x80068f000)
>        libc++.so.1 => /usr/lib/libc++.so.1 (0x8020e4000)
>        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x800738000)
>        libm.so.5 => /lib/libm.so.5 (0x80075a000)
>        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80078c000)
>        libc.so.7 => /lib/libc.so.7 (0x800242000)
> 
> 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.
> 
>> On Mon, Aug 05, 2019 at 08:45:31PM -0700, Mark Millard via freebsd-toolchain 
>> wrote:
>>> Building math/z3 involves:
>>> 
>>> # grep compiler /usr/ports/math/z3/Makefile
>>> USES=               compiler:c++11-lang python:2.7,build
>>> 
>>> But devel/llvm90 requires math/z3 to have been built before
>>> devel/llvm90 is built:
>>> 
>>> # 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
>>> 
>>> 
>>> Hopefully this cycle can be avoided for system
>>> clang to eventually have progressed to clang 9.
>>> (I do not know the details.)
>>> 
>>> 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.)




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

_______________________________________________
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to