From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58394) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f32co-0001nP-Dg for guix-patches@gnu.org; Mon, 02 Apr 2018 12:48:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f32cl-0006bJ-Gi for guix-patches@gnu.org; Mon, 02 Apr 2018 12:48:06 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:55671) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f32cl-0006bC-9k for guix-patches@gnu.org; Mon, 02 Apr 2018 12:48:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1f32cl-0005zI-0F for guix-patches@gnu.org; Mon, 02 Apr 2018 12:48:03 -0400 Subject: [bug#31025] [core-updates] LLVM 6.0 Resent-Message-ID: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f32bq-0001Iy-Dc for guix-patches@gnu.org; Mon, 02 Apr 2018 12:47:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f32bm-0005we-UG for guix-patches@gnu.org; Mon, 02 Apr 2018 12:47:06 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:59565) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f32bm-0005wS-Ku for guix-patches@gnu.org; Mon, 02 Apr 2018 12:47:02 -0400 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 1260720F66 for ; Mon, 2 Apr 2018 12:47:02 -0400 (EDT) Received: from localhost (ti0089a400-2222.bb.online.no [88.89.166.190]) by mail.messagingengine.com (Postfix) with ESMTPA id 87571E50B9 for ; Mon, 2 Apr 2018 12:47:01 -0400 (EDT) From: Marius Bakke Date: Mon, 02 Apr 2018 18:46:59 +0200 Message-ID: <87k1tpbloc.fsf@fastmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 31025@debbugs.gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Hello! This is an update for LLVM and Clang. I haven't yet found a package that actually works with this new version; the consumers I've tested does not support LLVM >4. However they can keep using the old version, and if there turns out to be a problem with 6.0 we can fix it later since there are no dependents. WDYT? --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-gnu-llvm-clang-Update-to-6.0.0.patch Content-Transfer-Encoding: quoted-printable From=2028e48a152c99c4c0911c794dd449c4df5ed193f5 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 31 Mar 2018 22:04:44 +0200 Subject: [PATCH] gnu: llvm, clang: Update to 6.0.0. * gnu/packages/llvm.scm (llvm, clang-runtime, clang): Update to 6.0.0. (clang-from-llvm)(patches): Set to empty list. [arguments]: Set CLANG_RESOURCE_DIR in #:configure-flags. Adjust substitutions depending on major version. (llvm-3.8, clang-runtime-3.8, clang-3.8): New public variables. (clang-3.7, clang-3.6, clang-3.5)(patches): Add 'clang-3.5-libc-search-path= .patch'. (clang-3.9.1)(patches): Add 'clang-3.8-libc-search-path.patch'. * gnu/packages/patches/clang-6.0-libc-search-path.patch: New file. * gnu/packages/patches/clang-libc-search-path.patch: Rename to ... * gnu/packages/patches/clang-3.5-libc-search-path.patch: ... this. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. Add CLANG_RESOURCE_DIR (not sure if needed). =2D-- gnu/local.mk | 3 +- gnu/packages/llvm.scm | 100 +++++++++++++++--= ---- ...path.patch =3D> clang-3.5-libc-search-path.patch} | 0 .../patches/clang-6.0-libc-search-path.patch | 67 ++++++++++++++ 4 files changed, 142 insertions(+), 28 deletions(-) rename gnu/packages/patches/{clang-libc-search-path.patch =3D> clang-3.5-l= ibc-search-path.patch} (100%) create mode 100644 gnu/packages/patches/clang-6.0-libc-search-path.patch diff --git a/gnu/local.mk b/gnu/local.mk index 2705fb37a..cf66d4bdf 100644 =2D-- a/gnu/local.mk +++ b/gnu/local.mk @@ -590,8 +590,9 @@ dist_patch_DATA =3D \ %D%/packages/patches/ceph-skip-collect-sys-info-test.patch \ %D%/packages/patches/ceph-skip-unittest_blockdev.patch \ %D%/packages/patches/chmlib-inttypes.patch \ =2D %D%/packages/patches/clang-libc-search-path.patch \ + %D%/packages/patches/clang-3.5-libc-search-path.patch \ %D%/packages/patches/clang-3.8-libc-search-path.patch \ + %D%/packages/patches/clang-6.0-libc-search-path.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \ %D%/packages/patches/classpath-aarch64-support.patch \ diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 2dddbc436..6c20ce496 100644 =2D-- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -5,6 +5,7 @@ ;;; Copyright =C2=A9 2016 Dennis Mungai ;;; Copyright =C2=A9 2016 Ricardo Wurmus ;;; Copyright =C2=A9 2017 Roel Janssen +;;; Copyright =C2=A9 2018 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,7 +41,7 @@ (define-public llvm (package (name "llvm") =2D (version "3.8.1") + (version "6.0.0") (source (origin (method url-fetch) @@ -48,7 +49,7 @@ version "/llvm-" version ".src.tar.xz")) (sha256 (base32 =2D "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf")))) + "0224xvfg6h40y5lrbnb9qaq3grmdc5rg00xq03s1wxjfbf8krx8z")))) (build-system cmake-build-system) (native-inputs `(("python" ,python-2) ;bytes->str conversion in clang>=3D3.7 needs p= ython-2 @@ -131,7 +132,7 @@ compiler. In LLVM this library is called \"compiler-rt= \".") (supported-systems (delete "mips64el-linux" %supported-systems)))) =20 (define* (clang-from-llvm llvm clang-runtime hash =2D #:key (patches '("clang-libc-search-path.patch= "))) + #:key (patches '())) (package (name "clang") (version (package-version llvm)) @@ -158,6 +159,10 @@ compiler. In LLVM this library is called \"compiler-r= t\".") `(#:configure-flags (list "-DCLANG_INCLUDE_TESTS=3DTrue" =20 + ;; Link to libclang_rt files from clang-runtime. + (string-append "-DCLANG_RESOURCE_DIR=3D" + (assoc-ref %build-inputs "clang-runtime")) + ;; Find libgcc_s, crtbegin.o, and crtend.o. (string-append "-DGCC_INSTALL_PREFIX=3D" (assoc-ref %build-inputs "gcc-lib")) @@ -176,22 +181,37 @@ compiler. In LLVM this library is called \"compiler-= rt\".") (lambda* (#:key inputs #:allow-other-keys) (let ((libc (assoc-ref inputs "libc")) (compiler-rt (assoc-ref inputs "clang-runtime")= )) =2D (substitute* "lib/Driver/Tools.cpp" =2D ;; Patch the 'getLinuxDynamicLinker' function t= o that =2D ;; it uses the right dynamic linker file name. =2D (("/lib64/ld-linux-x86-64.so.2") =2D (string-append libc =2D ,(glibc-dynamic-linker))) =2D =2D ;; Link to libclang_rt files from clang-runtime. =2D (("TC\\.getDriver\\(\\)\\.ResourceDir") =2D (string-append "\"" compiler-rt "\""))) =2D =2D ;; Same for libc's libdir, to allow crt1.o & co. = to be =2D ;; found. =2D (substitute* "lib/Driver/ToolChains.cpp" =2D (("@GLIBC_LIBDIR@") =2D (string-append libc "/lib"))))))))) + (case (string->number ,(version-major (package-vers= ion + clang-runtim= e))) + ((6) + ;; Make "LibDir" refer to /lib so that it + ;; uses the right dynamic linker file name. + (substitute* "lib/Driver/ToolChains/Linux.cpp" + (("(^[[:blank:]]+LibDir =3D ).*" _ declaration) + (string-append declaration "\"" libc "/lib\";= \n")) + + ;; Make sure libc's libdir is on the search pa= th, to + ;; allow crt1.o & co. to be found. + (("@GLIBC_LIBDIR@") + (string-append libc "/lib")))) + ((3) + (substitute* "lib/Driver/Tools.cpp" + ;; Patch the 'getLinuxDynamicLinker' function = so that + ;; it uses the right dynamic linker file name. + (("/lib64/ld-linux-x86-64.so.2") + (string-append libc + ,(glibc-dynamic-linker))) + + ;; Link to libclang_rt files from clang-runtim= e. + (("TC\\.getDriver\\(\\)\\.ResourceDir") + (string-append "\"" compiler-rt "\""))) + + ;; Same for libc's libdir, to allow crt1.o & co.= to be + ;; found. + (substitute* "lib/Driver/ToolChains.cpp" + (("@GLIBC_LIBDIR@") + (string-append libc "/lib"))))) + #t)))))) =20 ;; Clang supports the same environment variables as GCC. (native-search-paths @@ -214,13 +234,12 @@ code analysis tools.") (define-public clang-runtime (clang-runtime-from-llvm llvm =2D "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d" =2D '("clang-runtime-asan-build-fixes.patch"))) + "16m7rvh3w6vq10iwkjrr1nn293djld3xm62l5zasisaprx117k6h")) =20 (define-public clang (clang-from-llvm llvm clang-runtime =2D "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc" =2D #:patches '("clang-3.8-libc-search-path.patch"))) + "0cnznvfyl3hgbg8gj58pmwf0pvd2sv5k3ccbivy6q6ggv7c6szg0" + #:patches '("clang-6.0-libc-search-path.patch"))) =20 (define-public llvm-3.9.1 (package (inherit llvm) @@ -245,7 +264,31 @@ code analysis tools.") (define-public clang-3.9.1 (clang-from-llvm llvm-3.9.1 clang-runtime-3.9.1 "0qsyyb40iwifhhlx9a3drf8z6ni6zwyk3bvh0kx2gs6yjsxwxi76" =2D #:patches '())) + #:patches '("clang-3.8-libc-search-path.patch"))) + +(define-public llvm-3.8 + (package (inherit llvm) + (name "llvm") + (version "3.8.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://llvm.org/releases/" + version "/llvm-" version ".src.tar.xz")) + (sha256 + (base32 + "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf")))))) + +(define-public clang-runtime-3.8 + (clang-runtime-from-llvm + llvm-3.8 + "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d" + '("clang-runtime-asan-build-fixes.patch"))) + +(define-public clang-3.8 + (clang-from-llvm llvm-3.8 clang-runtime-3.8 + "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc" + #:patches '("clang-3.8-libc-search-path.patch"))) =20 (define-public llvm-3.7 (package (inherit llvm) @@ -267,7 +310,8 @@ code analysis tools.") =20 (define-public clang-3.7 (clang-from-llvm llvm-3.7 clang-runtime-3.7 =2D "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn= ")) + "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn" + #:patches '("clang-3.5-libc-search-path.patch"))) =20 (define-public llvm-3.6 (package (inherit llvm) @@ -289,7 +333,8 @@ code analysis tools.") =20 (define-public clang-3.6 (clang-from-llvm llvm-3.6 clang-runtime-3.6 =2D "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df= ")) + "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df" + #:patches '("clang-3.5-libc-search-path.patch"))) =20 (define-public llvm-3.5 (package (inherit llvm) @@ -313,7 +358,8 @@ code analysis tools.") =20 (define-public clang-3.5 (clang-from-llvm llvm-3.5 clang-runtime-3.5 =2D "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg= ")) + "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg" + #:patches '("clang-3.5-libc-search-path.patch"))) =20 (define-public llvm-for-extempore (package (inherit llvm-3.7) diff --git a/gnu/packages/patches/clang-libc-search-path.patch b/gnu/packag= es/patches/clang-3.5-libc-search-path.patch similarity index 100% rename from gnu/packages/patches/clang-libc-search-path.patch rename to gnu/packages/patches/clang-3.5-libc-search-path.patch diff --git a/gnu/packages/patches/clang-6.0-libc-search-path.patch b/gnu/pa= ckages/patches/clang-6.0-libc-search-path.patch new file mode 100644 index 000000000..a62e8063c =2D-- /dev/null +++ b/gnu/packages/patches/clang-6.0-libc-search-path.patch @@ -0,0 +1,67 @@ +Clang attempts to guess file names based on the OS and distro (yes!), +but unfortunately, that doesn't work for us. + +This patch makes it easy to insert libc's $libdir so that Clang passes the +correct absolute file name of crt1.o etc. to 'ld'. It also disables all +the distro-specific stuff and removes the hard-coded FHS directory names +to make sure Clang also works on non-GuixSD systems. + +--- cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp ++++ cfe-6.0.0.src/lib/Driver/ToolChains/Linux.cpp +@@ -207,7 +207,9 @@ + PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" + + GCCInstallation.getTriple().str() + "/bin") + .str()); +- ++ // Comment out the distro-specific tweaks so that they don't bite when ++ // using Guix on a foreign distro. ++#if 0 + Distro Distro(D.getVFS()); +=20 + if (Distro.IsAlpineLinux()) { +@@ -255,6 +257,7 @@ +=20 + if (IsAndroid || Distro.IsOpenSUSE()) + ExtraOpts.push_back("--enable-new-dtags"); ++#endif +=20 + // The selection of paths to try here is designed to match the patterns= which + // the GCC driver itself uses, as this is part of the GCC-compatible dr= iver. +@@ -329,14 +332,12 @@ + addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths); + } +=20 +- addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths); +- addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths); +- addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths); +- addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths); +- + // Try walking via the GCC triple path in case of biarch or multiarch G= CC + // installations with strange symlinks. + if (GCCInstallation.isValid()) { ++ // The following code would end up adding things like ++ // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path. ++#if 0 + addPathIfExists(D, + SysRoot + "/usr/lib/" + GCCInstallation.getTriple().s= tr() + + "/../../" + OSLibDir, +@@ -349,6 +350,7 @@ + BiarchSibling.gccSuffix(), + Paths); + } ++#endif +=20 + // See comments above on the multilib variant for details of why this= is + // included even from outside the sysroot. +@@ -373,8 +375,9 @@ + if (StringRef(D.Dir).startswith(SysRoot)) + addPathIfExists(D, D.Dir + "/../lib", Paths); +=20 +- addPathIfExists(D, SysRoot + "/lib", Paths); +- addPathIfExists(D, SysRoot + "/usr/lib", Paths); ++ // Add libc's lib/ directory to the search path, so that crt1.o, crti.o, ++ // and friends can be found. ++ addPathIfExists(D, "@GLIBC_LIBDIR@", Paths); + } +=20 + bool Linux::HasNativeLLVMSupport() const { return true; } =2D-=20 2.16.3 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlrCXoMACgkQoqBt8qM6 VPr4WAf+IMNkYNiHCMQvQ2X2DFuW2gPRZrZuBAmr7y8kXOMOYyA4ZO3GLXo8vpdJ P2YhwYW6yPCP9iHz3wUobEcOrTD1OpXWyHKyZorUHxNCvA+PVFaCcxdoUPPNzdKI aC+NTVkMeOa3mAHnKL4fMse5dNZNWzCp6+//U39Y+t0Cfiw3zZ54Bv4KnMdC/Y4G e8y8pIQ3PjyBNxGfHPqhqbGBSwMJh7UbdfbvO6+NfDip4Viaic/VooFnh/GmJewg nCRNHu0mh1YhazJ7Jwm9X2Zwtml0hfPEYbnnQo6HiW7ANQYUc+YP3fbo9PHGOEfT +8Zf9+kVBcZG4tWs5b4tU+urmCqcgQ== =PI2t -----END PGP SIGNATURE----- --==-=-=--