emacs-irony-mode fails to build on LLVM 10

  • Open
  • quality assurance status badge
Details
3 participants
  • Jakub K?dzio?ka
  • Ludovic Courtès
  • Marius Bakke
Owner
unassigned
Submitted by
Jakub K?dzio?ka
Severity
normal
J
J
Jakub K?dzio?ka wrote on 15 Jun 2020 17:41
(address . bug-guix@gnu.org)(address . ludo@gnu.org)
20200615154111.m5ls5s3znv7rqpxk@gravity
I was trying to update the default LLVM.

========================================================================
Toggle diff (92 lines)
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 11e4cfbe4c..b0e80507f4 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -527,10 +527,10 @@ output), and Binutils.")
(make-clang-toolchain clang-9))

;; Default LLVM and Clang version.
-(define-public llvm llvm-9)
-(define-public clang-runtime clang-runtime-9)
-(define-public clang clang-9)
-(define-public clang-toolchain clang-toolchain-9)
+(define-public llvm llvm-10)
+(define-public clang-runtime clang-runtime-10)
+(define-public clang clang-10)
+(define-public clang-toolchain clang-toolchain-10)

(define-public llvm-8
(package
========================================================================

With the help of `guix refresh', I have identified all packages that
depended on LLVM 9 and will now potentially be using LLVM 10. Among
those is emacs-irony-mode-server, which fails to build with the
following error:

========================================================================
CMake Error at /gnu/store/4ml806jam2af7f8i8sg8xi7b4mw81x9g-clang-10.0.0/lib/cmake/clang/ClangTargets.cmake:627 (message):
The imported target "clangApplyReplacements" references the file

"/gnu/store/4ml806jam2af7f8i8sg8xi7b4mw81x9g-clang-10.0.0/lib/libclangApplyReplacements.a"

but this file does not exist. Possible reasons include:

* The file was deleted, renamed, or moved to another location.

* An install or uninstall procedure did not complete successfully.

* The installation package was faulty and contained

"/gnu/store/4ml806jam2af7f8i8sg8xi7b4mw81x9g-clang-10.0.0/lib/cmake/clang/ClangTargets.cmake"

but not all the files it references.

Call Stack (most recent call first):
/gnu/store/4ml806jam2af7f8i8sg8xi7b4mw81x9g-clang-10.0.0/lib/cmake/clang/ClangConfig.cmake:18 (include)
src/CMakeLists.txt:4 (find_package)


-- Configuring incomplete, errors occurred!
See also "/tmp/guix-build-emacs-irony-mode-server-1.4.0.drv-0/source/CMakeFiles/CMakeOutput.log".
command "cmake" "server" "-DCMAKE_INSTALL_PREFIX=/gnu/store/5clyjcgw8g9jhryhk8bhljg950ijmwm4-emacs-irony-mode-server-1.4.0" failed with status 1
builder for `/gnu/store/qiiqbbzpigs7lnywplbwjdsh4qc2ic94-emacs-irony-mode-server-1.4.0.drv' failed with exit code 1
========================================================================

The ClangTargets.cmake file for LLVM 10 gained ApplyReplacements in a
list of libraries provided by clang, but Guix removes these libraries:

========================================================================
;; Remove MiBs of .a files coming from
;; 'clang-tools-extra'.
(for-each (lambda (component)
(delete-file
(string-append lib "/libclang"
component ".a")))
'("ApplyReplacements"
"ChangeNamespace"
"Daemon"
"DaemonTweaks"
"Doc"
"IncludeFixer"
"IncludeFixerPlugin"
"Move"))
========================================================================

The code was introduced in this commit:

commit 77a87ad4aceed9d89d615540e0fd147e3a8b2f64
Author: Ludovic Courtès <ludo@gnu.org>
Date: Thu May 28 11:46:59 2020 +0200

gnu: clang: Build 'clang-tools-extra'.

* gnu/packages/llvm.scm (clang-from-llvm): Add #:tools-extra.
Add 'output' field. In 'inputs', add TOOLS-EXTRA when it's given.
In 'arguments', add 'add-tools-extra' and 'move-extra-tools' phases when
TOOLS-EXTRA is given.

I don't know cmake nearly well enough to fix this.

Regards,
Jakub K?dzio?ka
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl7nlpcACgkQ4xWnWEYT
FWTQqxAAsRRVmhjb6oniGcRIoeeyZ+Z8xLOYdoHPp0loz92SJ8/B6+5hEPnYVo3Y
CXlHAuflk1zjyJ2OBb7TbOdhssCE5Vxw8h0ZA3oPlnCy4JqrG6xJ0QGcOs9ISvHJ
gNwT7hEUUyERep2b3JCZ94TCnLfSHOMiAWvqdLXMRBEoTaqthOZppR7OKgMPuh/W
P9YfylY3/nqIH8VhKnPPvS4rT0UvWzyY8oaL8HvoQQAy9CPto5gP8aOJKrszoTQm
liT8Hxd+HgsPZBoCXQmOgHeQfVyU9HbThScqN14ry0C4v54GHj104vXONf8CkPAT
HhvsLtXK1ACHRb3AK/nA6Y8wrMaweiE6Htx5DSdixLLRw2cAEbO336JAFRpieLaj
ccrEsOmqEzAn030qIxelv1s06xXNbPFlDlI+sEgamfaNsfeFBMOj55F9Uozk7fm3
UJKDMtESyrNQXcMatoxMAU0N73dEDaxHjuoe0Ya+qr4nBV3RGhR9YzTHHkIm826d
GlurDxUe953HzBfqucatBXAalJU3vjKeEGQZHN4nLWBiS6QdqAIfdGeJls6Z59sp
gW95iF2GuLR7lMn4FnB9UaDRgyhR1Fy2GtwRhwJ+KM0xsh7Coc5cWnTMek10916O
PcLkIGxa8hjZ0j6dPiTOyodjTeAKTO3+2U46WNd+l5viYtg+c+I=
=6pDM
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 16 Jun 2020 12:13
(name . Jakub K?dzio?ka)(address . kuba@kadziolka.net)(address . bug-guix@gnu.org)
87sgevtj1b.fsf@gnu.org
Hi,

Jakub K?dzio?ka <kuba@kadziolka.net> skribis:

Toggle quote (20 lines)
> The ClangTargets.cmake file for LLVM 10 gained ApplyReplacements in a
> list of libraries provided by clang, but Guix removes these libraries:
>
> ========================================================================
> ;; Remove MiBs of .a files coming from
> ;; 'clang-tools-extra'.
> (for-each (lambda (component)
> (delete-file
> (string-append lib "/libclang"
> component ".a")))
> '("ApplyReplacements"
> "ChangeNamespace"
> "Daemon"
> "DaemonTweaks"
> "Doc"
> "IncludeFixer"
> "IncludeFixerPlugin"
> "Move"))
> ========================================================================

I think these libraries come from clang-tools-extra, not plain clang. I
came up with the list above by comparing the lib/ directory of clang
without clang-tools-extra and clang with clang-tools-extra. I was
pretty sure these libraries were only used by the clang-tools-extra
binaries.

Toggle quote (7 lines)
> CMake Error at /gnu/store/4ml806jam2af7f8i8sg8xi7b4mw81x9g-clang-10.0.0/lib/cmake/clang/ClangTargets.cmake:627 (message):
> The imported target "clangApplyReplacements" references the file
>
> "/gnu/store/4ml806jam2af7f8i8sg8xi7b4mw81x9g-clang-10.0.0/lib/libclangApplyReplacements.a"
>
> but this file does not exist. Possible reasons include:

Does it work to comment out in that file all the lines like:

Toggle snippet (4 lines)
list(APPEND _IMPORT_CHECK_TARGETS clangApplyReplacements )
list(APPEND _IMPORT_CHECK_FILES_FOR_clangApplyReplacements "${_IMPORT_PREFIX}/lib/libclangApplyReplacements.a" )

?

Alternatively, we can try building clang@10 with the flags Pierre
mentioned recently on this list so that we’re only building shared
libraries; that should take up less space.

HTH,
Ludo’.
J
J
Jakub K?dzio?ka wrote on 20 Jun 2020 03:27
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . bug-guix@gnu.org)
20200620012743.kg3kqnxyc4eyrzdf@gravity
On Tue, Jun 16, 2020 at 12:13:52PM +0200, Ludovic Courtès wrote:
Toggle quote (6 lines)
> Hi,
>
> Alternatively, we can try building clang@10 with the flags Pierre
> mentioned recently on this list so that we’re only building shared
> libraries; that should take up less space.

I'm currently building clang@10 with -DCLANG_LINK_CLANG_DYLIB=ON, but
unfortunately this flag requires -DLLVM_LINK_LLVM_DYLIB=ON, and it
doesn't work if LLVM wasn't build with that same flag.

Unfortunately, LLVM is a reverse-dep to the entire mesa mess, so this
approach would require a trip through staging (unless we create a
separate llvm-for-mesa package - would that be reasonable?).

Thoughts?

Regards,
Jakub K?dzio?ka
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEE5Xa/ss9usT31cTO54xWnWEYTFWQFAl7tZg8ACgkQ4xWnWEYT
FWTkYQ//W04iZ6XgqS8HlKNXHeM6OZMILuR3kB8waFPh7ryYp4mXyRfHgPanV6Oy
YfgAoS0wr83DWJJ10n2AKTieRZ6ZfxcBDr8rHLph3f7+pW+Yrv+JW75XDx3bceiW
C9MCTVfrU5BsqKvt7hnDAa3WzYCuqr7Zlcd8V+43nL1PxYYUDxK1Cmi/WlhzFRRB
qoIqtvjpuFKijAYzC1FjVrg0De1NGpuqHAc48MWkpvEXw/VciDbMe8B+BnhYQEDv
MOw1bMZbKWjW19JR28jKIJpTbmhjyzZMp6jtxxIby3+9fDrAlo016izB4yXog4he
KmUuAOoHSIYernRxsDMdo72zvrbDN2YKu323nJtEDK7MGmuRmRVWJrec0tYoEDn1
Zc0S+rXfno62MbPSEywUvzKRxjs2DBW2wa29L+15eL4wmK7Uav4soZmpXQ0/5dS5
zlA6VX3MXYbTc6EbEh5dhh5bqf9HKUiw/ln+TNz8HFOyjtDqGNLZLTJJiwKtomEg
b9TFj5Q/6ixYTk/25yDP5kF+qKf6z/AmK+qm5beTWn7Y9CELDvRr1/HvRudyTgf6
+pC6FRhbMyePu0YXCaJqL4VgG7Fi5xQ3bQuFi2sqwtc230P0/5qy1ge5AQi3OMJ5
dkJtrQDCFwnVIEpB2MTNMtgcH8FXhxFCVwXDx5OQt/v4TuGDfys=
=/W05
-----END PGP SIGNATURE-----


M
M
Marius Bakke wrote on 20 Jun 2020 16:07
Re: bug#41872: emacs-irony-mode fails to build on LLVM 10
(address . 41872@debbugs.gnu.org)
87sgepde61.fsf@gnu.org
Jakub K?dzio?ka <kuba@kadziolka.net> writes:

Toggle quote (4 lines)
> Unfortunately, LLVM is a reverse-dep to the entire mesa mess, so this
> approach would require a trip through staging (unless we create a
> separate llvm-for-mesa package - would that be reasonable?).

Sounds good to me.

On a mostly unrelated note, I wonder if we should make 'llvm-for-mesa' a
permanent thing in the long term, and build only the subset of LLVM that
Mesa uses.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl7uGAYACgkQoqBt8qM6
VPq0NQf+IBCfsyKQjqmeY5DSRb7miH37VsBgbetLcHxvBiztaLuRLiJL+2jOoNe9
zi2tWPhDk3oQgt/QHAEgejJauNE4+iYEZ5QB8mV3XWAeTfnWwys8XggdjSdNA5yC
7J94HmI1PxiB0jQikdLR9qMMVMhez2um8GLKn338JWUhmNqSfSreKNXRyx3Z+7DL
Az5q6YWKuzvMYTfm65hmrr3xoPTIxt6KKYeyoie8++zDZf4JP8ofETMKiS6HNRaV
YCHUuBWJXeKIcf+rvxGsWvZ4ElszbXaSq+sgsC74lSPN9/9eTNCRs5783rB/xYYI
cAaWO1ndXPfbt5ESW8rfeZAy8UnwhA==
=eJDX
-----END PGP SIGNATURE-----

?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 41872@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 41872
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch