From: Nikita Gillmann <nikita@n0.is>
To: "Ludovic Courtès" <ludovic.courtes@inria.fr>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Packaging ‘clang-tools-extra’ (‘clang-tidy’, etc.)
Date: Fri, 24 Apr 2020 19:07:36 +0200 [thread overview]
Message-ID: <20200424170736.qvuiz5bzgdp2olrl@hex> (raw)
In-Reply-To: <87eesdhup7.fsf@inria.fr>
Ludovic Courtès transcribed 4.9K bytes:
> Hello!
>
> The patch below produces a ‘clang’ package that contains
> ‘clang-tools-extra’ commands¹.
>
[...]
> Any idea how to best package it?
>
> We could of course have a ‘clang-full’ package, but it seems wasteful.
> We could also have a separate output for the extra commands, but it’s
> inconvenient. It would be ideal to have a ‘clang-tools-extra’ package
> that depends on ‘clang’, but building them separately appears to be
> impossible.
Is it? The way we build clang and clang-tools-extra in pkgsrc is to
have them separate.
Refer to lang/clang-tools-extra and lang/clang to see how.
The gist is, BUILD_TARGET for clang-tools-extra gets overridden
and appended with targets to build.
That'S just after skipping through the clang-tools-extra package
for a minute.
I'm not sure if this is applicable to guix in any way.
> Thanks in advance! :-)
>
> Ludo’.
>
> ¹ https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/index.html
>
> diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
> index d6c519bcbd..a3bcd75190 100644
> --- a/gnu/packages/llvm.scm
> +++ b/gnu/packages/llvm.scm
> @@ -166,7 +166,11 @@ compiler. In LLVM this library is called \"compiler-rt\".")
> (supported-systems (delete "mips64el-linux" %supported-systems))))
>
> (define* (clang-from-llvm llvm clang-runtime hash
> - #:key (patches '()))
> + #:key (patches '()) tools-extra)
> + "Produce Clang with dependencies on LLVM and CLANG-RUNTIME, and applying the
> +given PATCHES. When TOOLS-EXTRA is given, it must point to the
> +'clang-tools-extra' tarball, which contains code for 'clang-tidy', 'pp-trace',
> +'modularize', and other tools."
> (package
> (name "clang")
> (version (package-version llvm))
> @@ -187,7 +191,10 @@ compiler. In LLVM this library is called \"compiler-rt\".")
> (inputs
> `(("libxml2" ,libxml2)
> ("gcc-lib" ,gcc "lib")
> - ,@(package-inputs llvm)))
> + ,@(package-inputs llvm)
> + ,@(if tools-extra
> + `(("clang-tools-extra" ,tools-extra))
> + '())))
> (propagated-inputs
> `(("llvm" ,llvm)
> ("clang-runtime" ,clang-runtime)))
> @@ -208,6 +215,19 @@ compiler. In LLVM this library is called \"compiler-rt\".")
> #:build-type "Release"
>
> #:phases (modify-phases %standard-phases
> + ,@(if tools-extra
> + `((add-after 'unpack 'add-tools-extra
> + (lambda* (#:key inputs #:allow-other-keys)
> + (let ((extra (assoc-ref inputs
> + "clang-tools-extra")))
> + (invoke "tar" "xf" extra)
> + (rename-file ,(string-append
> + "clang-tools-extra-"
> + (package-version llvm)
> + ".src")
> + "tools/extra")
> + #t))))
> + '())
> (add-after 'unpack 'add-missing-triplets
> (lambda _
> ;; Clang iterates through known triplets to search for
> @@ -376,7 +396,16 @@ output), and Binutils.")
> (define-public clang-10
> (clang-from-llvm llvm-10 clang-runtime-10
> "08fbxa2a0kr3ni35ckppj0kyvlcyaywrhpqwcdrdy0z900mhcnw8"
> - #:patches '("clang-10.0-libc-search-path.patch")))
> + #:patches '("clang-10.0-libc-search-path.patch")
> + #:tools-extra
> + #f
> + #;(origin
> + (method url-fetch)
> + (uri (llvm-download-uri "clang-tools-extra"
> + (package-version llvm-10)))
> + (sha256
> + (base32
> + "074ija5s2jsdn0k035r2dzmryjmqxdnyg4xwvaqych2bazv8rpxc")))))
>
> (define-public clang-toolchain-10
> (make-clang-toolchain clang-10))
next prev parent reply other threads:[~2020-04-24 17:08 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-24 13:36 Packaging ‘clang-tools-extra’ (‘clang-tidy’, etc.) Ludovic Courtès
2020-04-24 17:07 ` Nikita Gillmann [this message]
2020-04-27 7:31 ` Ludovic Courtès
2020-04-27 8:50 ` Efraim Flashner
2020-04-27 11:23 ` Nikita Gillmann
2020-05-05 10:21 ` Ludovic Courtès
2020-05-29 16:57 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200424170736.qvuiz5bzgdp2olrl@hex \
--to=nikita@n0.is \
--cc=guix-devel@gnu.org \
--cc=ludovic.courtes@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).