From owner-freebsd-toolchain@freebsd.org Wed Aug 7 21:37:12 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 180CAB8B04 for ; Wed, 7 Aug 2019 21:37:12 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic310-21.consmr.mail.gq1.yahoo.com (sonic310-21.consmr.mail.gq1.yahoo.com [98.137.69.147]) (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 463lFx2f9yz4NF3 for ; Wed, 7 Aug 2019 21:37:08 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: ByMZ9lAVM1lGSu3t6T7aYNPQ0L4dyC.5HTZzW5oTOqHDkjxU3mQuvgI_Kk8JLXd Dl6ZWWt4UBRIDUFJjcD8EC6kwo7CZqYQJJBsmSeir0kXkBdsRtAQrotyEiWCM8ZScPoF0qFzleig oG.h13Ea9HPGGXO0rzrI554KvpJR20J9465jx2W00Hl7C0iru3ryZVwSg2_uC_B4D7oS50NGZ9pG Ts3YuF7zYerv80qxl2pY0j0KTfp8EeqQ92ujS7YuVYPgbSa1YtayVEdKO3h5jAe1xikrLMTg3T5c iq0VC55SpQTu8472oL1bOanW6XL75Qra_IaKJQYLAFXV9q.2Wcpy890R4QNK592j0fmqZw1aeWDQ 1zJ_mvcWbE3IiYCFgXpqV87Ywihu2FnKhiADGdwfR4mj7wmt27vaN4G1MbVYYmwooQaLIeR6rTCP KtUhv0FBqmx6odvEZw_loEnu_7LpC7t_49IEYVFyFmZknngOZsqwu2oO8zv37sMQ1kp3dNJuqWz. 6kRaAowjDBGs6DKSKJqfCIMfezdEyvEdja51Tw_OPu2thfflIeqpJizZZNHzguA8Y1IfH8FZR6HE OGktF5i3SNHNUZhNWxCVr_Zpgy8HIQe2NAfcNKdR91W2z9DFmq3LVCmdNplmCVmmvFNvHMBNvka3 1t3Lacip2WFqbrOmgTjPY8keKm99CvQ4NJhvkaHKwjMzQRqB6VMedLW3v6vW.zXJmvaChHWyo4Yq NUu686bovG_fXZ2C..7vL2AuahuJKwzkbX75bJEVEbMveB5.I.a3agtwF.4QqlEtdJl.Y0xMopQn fpVEPAL_rHYlh9eXM91yEx.mYor30aGk366ZMircM_6IozFhTBUEN9erfT5GzPFMvK849symr6kN Wy5wJmu6cDTbdYf82hdITBmU42Bysm3q98fCDf2LFAo8kcuIAigy_2Q9WW9FRNnlJgrAe8jiFjiP EwVoJZe86MFY4ToG08hEDarxbFYf5vOsKw73pJGliNYkKDJ1Srfzk2OhyMaI7Rm598pPXwLBq2Kq YqCWyp2zL1DYB0hBHdC_7Km3KuCXdtrExV8DqEbYby7xsXDaKiJJxy8aKNcC6b0_a6q0xbj.rFM1 Qs0BEwXczpejxweJgSBNvTLTkb8rtyTEidukjYjJps3qvSKZuh3wYQMLgVhYS_2uccBBzagDRK7X qCW4n4LkO06ev9w27NtfMpucts3ZiBY80AdG8hHecNQ4R38oL63e6n8j8nWiOrTvvJRKrTUICabY RoEB7MLZeatInHbhVVyvGQMneU.zPrLD6 Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.gq1.yahoo.com with HTTP; Wed, 7 Aug 2019 21:37:07 +0000 Received: by smtp405.mail.gq1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 06e9493cdc8885697e643df2e74b5e99; Wed, 07 Aug 2019 21:37:05 +0000 (UTC) From: Mark Millard Message-Id: 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 Date: Wed, 7 Aug 2019 14:37:04 -0700 In-Reply-To: <20190807205846.GM94703@spindle.one-eyed-alien.net> Cc: freebsd-toolchain@freebsd.org, freebsd-ports@freebsd.org, freebsd-ppc@freebsd.org To: Brooks Davis References: <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> <4FF9540B-E1FE-4947-8E45-8D4FB57A7E34@yahoo.com> <20190807195613.GK94703@spindle.one-eyed-alien.net> <68CDAEA5-73D8-40FB-A22F-CC3B357FA992@yahoo.com> <20190807205846.GM94703@spindle.one-eyed-alien.net> X-Mailer: Apple Mail (2.3445.104.11) X-Rspamd-Queue-Id: 463lFx2f9yz4NF3 X-Spamd-Bar: - X-Spamd-Result: default: False [-1.51 / 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:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.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.88)[-0.884,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.60)[0.601,0]; NEURAL_HAM_LONG(-0.72)[-0.722,0]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; IP_SCORE(0.00)[ip: (4.16), ipnet: 98.137.64.0/21(0.90), asn: 36647(0.72), country: US(-0.05)]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[147.69.137.98.list.dnswl.org : 127.0.5.0]; RCVD_COUNT_TWO(0.00)[2] Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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 21:37:12 -0000 On 2019-Aug-7, at 13:58, Brooks Davis wrote: > On Wed, Aug 07, 2019 at 01:42:26PM -0700, Mark Millard wrote: >>=20 >>=20 >> On 2019-Aug-7, at 12:56, Brooks Davis wrote: >>=20 >>> On Wed, Aug 07, 2019 at 11:55:04AM -0700, Mark Millard wrote: >>>>=20 >>>>=20 >>>> On 2019-Aug-7, at 11:02, Brooks Davis = wrote: >>>>=20 >>>>> 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. >>>>=20 >>>> You mentioned applying the patch but not also >>>> setting: >>>>=20 >>>> LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF >>>>=20 >>>> with either: >>>>=20 >>>> -D LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF >>>>=20 >>>> 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 .) >>>>=20 >>>> =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. >>>>=20 >>>> Taking from an example from web of a CMakeCache.txt . . . >>>>=20 >>>>=20 >>>> # 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. >>>>=20 >>>> ######################## >>>> # EXTERNAL cache entries >>>> ######################## >>>>=20 >>>> //Build a 32 bit version of the library. >>>> BENCHMARK_BUILD_32_BITS:BOOL=3DOFF >>>>=20 >>>> . . . (lots omitted) . . . >>>>=20 >>>>=20 >>>> //Fail and stop if a warning is triggered. >>>> LLVM_ENABLE_WERROR:BOOL=3DOFF >>>>=20 >>>> //Enable Support for the Z3 constraint solver in LLVM. >>>> LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF >>>>=20 >>>> //Use zlib for compression/decompression if available. >>>> LLVM_ENABLE_ZLIB:BOOL=3DON >>>>=20 >>>> . . . (lots more omitted) . . . >>>>=20 >>>>=20 >>>> The example already had the "LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF" >>>> line, I did not adjust it. >>>=20 >>> Upstream spotted this error as well. I've hopefully committed a fix = (of >>> course just as I committed I discovered I'd had the patch applied = and it >>> shouldn't be needed so I'm now rebuilding again and will add the = patch >>> if needed.) >>=20 >> Just for my curiosity: which way are you >> initializing LLVM_ENABLE_Z3_SOLVER to OFF ?: >>=20 >> A) Having -D LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF on the cmake command = line? >> B) Having LLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF in the CMakeCache.txt = file? >> C) Something else (that I missed as a technique)? >=20 > (A) via: >=20 > CMAKE_ARGS+=3D -DLLVM_ENABLE_Z3_SOLVER=3DOFF Thanks. =46rom what I've seen the :BOOL part of the syntax should be used: CMAKE_ARGS+=3D -DLLVM_ENABLE_Z3_SOLVER:BOOL=3DOFF It is not a textual definition from what I gather and the intended type should be specified as well. (But I'm learning things as I go.) =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)