From owner-freebsd-toolchain@freebsd.org Wed Aug 7 18:55:11 2019 Return-Path: Delivered-To: freebsd-toolchain@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 71A1DB444D for ; Wed, 7 Aug 2019 18:55:11 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic316-20.consmr.mail.ne1.yahoo.com (sonic316-20.consmr.mail.ne1.yahoo.com [66.163.187.146]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 463gg22pSqz48rC for ; Wed, 7 Aug 2019 18:55:10 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: MFBtSY8VM1kg1efog7CtEdNGIV7M5NKWTD7ignaRLtU0zF1CjT5Zy_hbcgPtVen 6y8tJqejC_w9mKMTMsXFH1a1EkFujo.X7BnNSNoZgncvUVz5FbvmWU0gYpR3f87k6.DzMF6B7OQK fJzgNhcOwI8IlLHyzt4q6a3BesA0UdyaNrV0.WROgHTYisRqgah48S1p5z5XFao6avXyIc03Alwe IkCDn8EUU6HRLSJy0PXboX_B060F._OkObLidJ0eqopDNFtll0O3JpyT9UXJjZX5g8WD78jgv5KN JGyJ.AfTGnpvtHbXFlQOxIRSvQ9XIVNwwHXRxJvL.KtQwTQ8kZIL3YGzMQnmvPppVLH0hcquy8B1 xwhTsvUjVtFvCST2F0XSx0HbpnivnmpUpzBnYE9wYonReAoB2ufIH.IQb7WJa9of98.iYeb482Mq FwnzPFK4SyygXEbj.B0BzrSPyi75hUZMMLbxQkE9OGasSwvYTk0af2Zmdb5.pRohKTTqi0cO.Y75 ZwAk7RyNkgIludV.E7.6t6UKtQ3uhEl4MJsEfpVjVtZv05vvV91tUyo5YHRlwydTgUnNvxi9o.Rn 2qgQOEt7xnMYfEStwBtu3Qe6.kYSWfoAlbyz5f0vZXRpETTwIEJy66DtndoI3oGq70xbFOcI9ce6 bL7Gk6DakfJ9Wveyx8GL1mXb1iquZ2zOVpFnBGV_1wJkkdTqyixghY.2mSmw78dJsBYrjktjrwjq qRWOn5jn9cxuSvBNCb_rEZq3WbxfEkhFM0AaPCNEpY5LoL9Tqd2DPYmf.cjCgt7Q5x72ritv0nH_ uE4FlBC49nIukY7k2z8VMUPQd9dF7hQKqVEHx0niuLiDHzTJ0y2DS53zAa9rK6EPhdbZxhILFvqP Zj32DzRq.2COUrljONwZ2LkkicR6bAx60ZyEQBNnXtRMBLfZlEa9L0p.Lz5_r2ERLbz1yF0ZtdSY T_4wzw4H0zOzVz7HcOBPuZfZokWUrml7Pll5N4Wpx6OMcfFCraXNE318jBSlyTKOrdNTKXzHtQpn a_5KKqWCYFGTO_Oyl9m9XqYmETHwGy.S0FvWwftXnDptg7zEIBuHjm5RsDfGQMnByzt4awVFzOWB zRpuULXLlLkP9Wv5yHngi3srJ8TzoaBty71mzHiQwvvA1HotmbYF88pdTQ62fjG8LikWFmpyF9OZ J2b4aEcFdi2m7HUDB2yKiY0qd7wdbWxG8B_7FluV3G7T.oC2llnhGgM7NzIDl8wAWKfxA_3h9s.v WFD2cXAPQcFMSpQH43SjsEknS9RZx_kw- Received: from sonic.gate.mail.ne1.yahoo.com by sonic316.consmr.mail.ne1.yahoo.com with HTTP; Wed, 7 Aug 2019 18:55:08 +0000 Received: by smtp418.mail.ne1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 8cfdd1c926b229d28c108829364b7ac3; Wed, 07 Aug 2019 18:55:06 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\)) Subject: Re: devel/llvm90 requires math/z3 first; building math/z3 requires a c++ toolchain be in place From: Mark Millard In-Reply-To: <20190807180244.GJ94703@spindle.one-eyed-alien.net> Date: Wed, 7 Aug 2019 11:55:04 -0700 Cc: freebsd-toolchain@freebsd.org, freebsd-ports@freebsd.org, freebsd-ppc@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <4FF9540B-E1FE-4947-8E45-8D4FB57A7E34@yahoo.com> References: <8DB3EAA4-2B88-4180-8386-673524D27C64@yahoo.com> <20190806165525.GC94703@spindle.one-eyed-alien.net> <2A88AADC-8ED0-4FFD-85A8-34C0186D5D4F@yahoo.com> <20190807020826.GH94703@spindle.one-eyed-alien.net> <602EEB6C-D0B0-4EFB-AB0E-BE98FF1C4D90@yahoo.com> <086C99B8-1289-4D81-AAF5-85FB0AE70B7C@yahoo.com> <20190807171714.GI94703@spindle.one-eyed-alien.net> <20190807180244.GJ94703@spindle.one-eyed-alien.net> To: Brooks Davis X-Mailer: Apple Mail (2.3445.104.11) X-Rspamd-Queue-Id: 463gg22pSqz48rC X-Spamd-Bar: - X-Spamd-Result: default: False [-1.15 / 15.00]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; DKIM_TRACE(0.00)[yahoo.com:+]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36646, ipnet:66.163.184.0/21, country:US]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com.dwl.dnswl.org : 127.0.5.0]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.96)[-0.960,0]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_SPAM_SHORT(0.87)[0.869,0]; NEURAL_HAM_LONG(-0.56)[-0.558,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(0.00)[ip: (2.84), ipnet: 66.163.184.0/21(1.27), asn: 36646(1.01), country: US(-0.05)]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[146.187.163.66.list.dnswl.org : 127.0.5.0]; RWL_MAILSPIKE_POSSIBLE(0.00)[146.187.163.66.rep.mailspike.net : 127.0.0.17]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Aug 2019 18:55:11 -0000 On 2019-Aug-7, at 11:02, Brooks Davis wrote: > On Wed, Aug 07, 2019 at 05:17:14PM +0000, Brooks Davis wrote: >> On Tue, Aug 06, 2019 at 09:22:52PM -0700, Mark Millard wrote: >>> [I found something known to be missing in the >>> in at least some versions of >>> llvm/cmake/modules/CrossCompile.cmake that messes >>> up the overall handling of LLVM_ENABLE_Z3_SOLVER .] >>>=20 >>> On 2019-Aug-6, at 20:23, Mark Millard wrote: >>>=20 >>>=20 >>>=20 >>>> On 2019-Aug-6, at 19:08, Brooks Davis = wrote: >>>>=20 >>>>> On Tue, Aug 06, 2019 at 05:59:21PM -0700, Mark Millard wrote: >>>>>>=20 >>>>>>=20 >>>>>> On 2019-Aug-6, at 09:55, Brooks Davis = 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 >>>>> The dependency is there because if z3 is installed then the = package >>>>> that is built depends on z3. Thus I had not choice but to add a = z3 >>>>> dependency until I find a way to turn it off. You can either help = find >>>>> a way to disable z3 detection in the cmake infrastructure or turn = off >>>>> LIT. I don't have any use for reports on the effects of = commenting out >>>>> the DEPENDS line. I know what that does. >>>>=20 >>>>=20 >>>> I hope this helps. (I'm not a cmake expert.) >>>>=20 >>>> llvm-9.0.0rc1.src/lib/Support/Z3Solver.cpp does: >>>>=20 >>>> #if LLVM_WITH_Z3 >>>>=20 >>>> #include >>>>=20 >>>> namespace { >>>> . . . >>>> } // end anonymous namespace >>>>=20 >>>> #endif >>>>=20 >>>> llvm::SMTSolverRef llvm::CreateZ3Solver() { >>>> #if LLVM_WITH_Z3 >>>> return llvm::make_unique(); >>>> #else >>>> llvm::report_fatal_error("LLVM was not compiled with Z3 support, = rebuild " >>>> "with -DLLVM_ENABLE_Z3_SOLVER=3DON", >>>> false); >>>> return nullptr; >>>> #endif >>>> } >>>>=20 >>>> (There are other places LLVM_WITH_Z3 is used but the >>>> above is suggestive.) >>>>=20 >>>> Working backwards finds that: >>>>=20 >>>> = /wrkdirs/usr/ports/devel/llvm90/work/llvm-9.0.0rc1.src/CMakeLists.txt >>>>=20 >>>> shows LLVM_WITH_Z3 being conditionally set to 1 via . . . >>>>=20 >>>> set(LLVM_Z3_INSTALL_DIR "" CACHE STRING "Install directory of the = Z3 solver.") >>>>=20 >>>> find_package(Z3 4.7.1) >>>>=20 >>>> if (LLVM_Z3_INSTALL_DIR) >>>> if (NOT Z3_FOUND) >>>> message(FATAL_ERROR "Z3 >=3D 4.7.1 has not been found in = LLVM_Z3_INSTALL_DIR: ${LLVM_Z3_INSTALL_DIR}.") >>>> endif() >>>> endif() >>>>=20 >>>> set(LLVM_ENABLE_Z3_SOLVER_DEFAULT "${Z3_FOUND}") >>>>=20 >>>> option(LLVM_ENABLE_Z3_SOLVER >>>> "Enable Support for the Z3 constraint solver in LLVM." >>>> ${LLVM_ENABLE_Z3_SOLVER_DEFAULT} >>>> ) >>>>=20 >>>> if (LLVM_ENABLE_Z3_SOLVER) >>>> if (NOT Z3_FOUND) >>>> message(FATAL_ERROR "LLVM_ENABLE_Z3_SOLVER cannot be enabled when = Z3 is not available.") >>>> endif() >>>>=20 >>>> set(LLVM_WITH_Z3 1) >>>> endif() >>>>=20 >>>> if( LLVM_TARGETS_TO_BUILD STREQUAL "all" ) >>>> set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} ) >>>> endif() >>>>=20 >>>>=20 >>>> If I read that correctly, LLVM_ENABLE_Z3_SOLVER set directly >>>> appears to override the default (that tracks if z3 was found). >>>=20 >>> I saw a reference to: >>>=20 >>> diff --git a/llvm/cmake/modules/CrossCompile.cmake = b/llvm/cmake/modules/CrossCompile.cmake >>> index bc3b210f018..0c30b88f80f 100644 >>> --- a/llvm/cmake/modules/CrossCompile.cmake >>> +++ b/llvm/cmake/modules/CrossCompile.cmake >>> @@ -53,6 +53,7 @@ function(llvm_create_cross_target_internal = target_name toolchain buildtype) >>> -DLLVM_DEFAULT_TARGET_TRIPLE=3D"${TARGET_TRIPLE}" >>> -DLLVM_TARGET_ARCH=3D"${LLVM_TARGET_ARCH}" >>> = -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=3D"${LLVM_TEMPORARILY_ALLOW_OLD_TOO= LCHAIN}" >>> + -DLLVM_ENABLE_Z3_SOLVER=3D"${LLVM_ENABLE_Z3_SOLVER}" >>> ${build_type_flags} ${linker_flag} ${external_clang_dir} >>> WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} >>> DEPENDS CREATE_LLVM_${target_name} >>>=20 >>> in https://reviews.llvm.org/D54978 on Feb 12 2019, 5:41 PM >>> and it had the comment: >>>=20 >>> QUOTE >>> Independent of the rest of the discussion, this patch should be part = of the reland, to make sure that explicitly turning off Z3 works = reliably. Thanks for coming up with that, and thanks everyone for the = good discussion here :) >>> END QUOTE >>>=20 >>> This apparently fixes a sub-cmake not respecting the >>> LLVM_ENABLE_Z3_SOLVER setting in the parent cmake. >>> (The overall review earlier describes the sub-cmake >>> not doing the right thing.) >>=20 >> Thanks for digging this up. Unfortunately, this doesn't seem to have >> solved the problem. With this patch applied I still get this if I = have >> z3 installed on the system and no LIB_DEPENDS line: >>=20 >> Error: /usr/local/bin/FileCheck90 is linked to = /usr/local/lib/libz3.so.0 >> from math/z3 but it is not declared as a dependency >> Warning: you need LIB_DEPENDS+=3Dlibz3.so:math/z3 >>=20 >> I've generally observed that the portions of the system that cover = lit >> (which includes FileCheck) aren't very well behaved. >=20 > I've filed https://bugs.llvm.org/show_bug.cgi?id=3D42921 upstream, > hopefully someone who understand this part of the cmake system will = help > us out. You mentioned applying the patch but not also setting: LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF with either: -D LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF on the command line or some line early in CMakeCache.txt . (Actually, I had to look around to know to say those specifics of what it means to have already initialized LLVM_ENABLE_Z3_SOLVER .) =46rom what I see, taking the initial assignment via CMakeCache.txt after it is initialized seems to be a common technique of controlling the configuration. Taking from an example from web of a CMakeCache.txt . . . # This is the CMakeCache file. # For build in directory: [edited out] # It was generated by CMake: /Applications/CMake.app/Contents/bin/cmake # You can edit this file to change values found and used by cmake. # If you do not want to change any of the values, simply exit the = editor. # If you do want to change a value, simply edit, save, and exit the = editor. # The syntax for the file is as follows: # KEY:TYPE=3DVALUE # KEY is the name of a variable in the cache. # TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. # VALUE is the current value for the KEY. ######################## # EXTERNAL cache entries ######################## //Build a 32 bit version of the library. BENCHMARK_BUILD_32_BITS:BOOL=3DOFF . . . (lots omitted) . . . //Fail and stop if a warning is triggered. LLVM_ENABLE_WERROR:BOOL=3DOFF //Enable Support for the Z3 constraint solver in LLVM. LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF //Use zlib for compression/decompression if available. LLVM_ENABLE_ZLIB:BOOL=3DON . . . (lots more omitted) . . . The example already had the "LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF" line, I did not adjust it. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)