From unknown Fri Jun 13 10:09:53 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#46162 <46162@debbugs.gnu.org> To: bug#46162 <46162@debbugs.gnu.org> Subject: Status: [PATCH] staging gnu: Add more tools to rust outputs. Reply-To: bug#46162 <46162@debbugs.gnu.org> Date: Fri, 13 Jun 2025 17:09:53 +0000 retitle 46162 [PATCH] staging gnu: Add more tools to rust outputs. reassign 46162 guix-patches submitter 46162 John Soo severity 46162 normal tag 46162 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Jan 28 17:00:46 2021 Received: (at submit) by debbugs.gnu.org; 28 Jan 2021 22:00:46 +0000 Received: from localhost ([127.0.0.1]:50474 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5FLE-0005rh-NI for submit@debbugs.gnu.org; Thu, 28 Jan 2021 17:00:46 -0500 Received: from lists.gnu.org ([209.51.188.17]:43900) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5FLA-0005rX-U7 for submit@debbugs.gnu.org; Thu, 28 Jan 2021 17:00:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52276) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l5FL7-0002KD-Oj for guix-patches@gnu.org; Thu, 28 Jan 2021 17:00:35 -0500 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:45667) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l5FL0-0003XD-Bn for guix-patches@gnu.org; Thu, 28 Jan 2021 17:00:31 -0500 Received: by mail-pf1-x434.google.com with SMTP id j12so4891694pfj.12 for ; Thu, 28 Jan 2021 14:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asu-edu.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=cnBJLO5DlVxpRSxyhVMDVu2l8kkjzbNZr96hoZO77ZE=; b=IaNn13peu0zQLwsnd9p73P6IbOUQjVdc0o5/5DybD76Y/QYgj15nx7lvAtOypl+Ac7 6aAxFTf/9g4OBQGFOs9IW1QIouh9BaixNESCzRVTplpsrZbyoVfnVtho7LKFxo6iaiPU tr0/b7c6Ud/CMwqb/U+WhbpWXGIkJCR94NA72bGtpIHZWrj3SqLtjQlkWn/2bJU554qn me3HVP3Iy9l2tl8rMhdbeDbnJHF//aXCdkefWQz57BPHgwx6bVGMkhfOzRC/O0m/zAdA maWT3HyBPvxRmv8FpjsB8MgFdP3MGVDWSu4+6j85M8Wmy3j2fcz3hHUbIzfMvw3rsbWz 0F4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=cnBJLO5DlVxpRSxyhVMDVu2l8kkjzbNZr96hoZO77ZE=; b=dpLU0WKpyOT07qPbtTBZ5U9MnxKAbNfn3OaRdVq09LkKam541h3ByhwAWVTCXejTjq WCcYGYT046YdkhVMl1QSKG9c0uP2Pz+aV86rBhwRCLpo82VQ6xw8aGvCKnPdSdZEityK qM0mGHclxCg1fQu7naZNtUOcXhgx4Ud6OONnHsqW+5rIwJTn8uXBWXKCHheNE6gsO72K 5OhD8dmM/rV5rPrs0p/gx6znMmKy8DbyEAlclxIOzgiw3AzDXJnKf9iaWQO3Mox54x6H Ggvt//4rpxloBy0HcP+AqFLnFf8Fktw2ULpSZ+Xw2OquvXv3D3HeX5+DZiNUV5+OwxHO 3gEw== X-Gm-Message-State: AOAM531emh1BSiiUh8bedBOSao41IsyHbwZi9g+V04GSUgkgFFICimEc XvOMmyAgk2DCFGTC+ESLb33mXbLuOrHlSg== X-Google-Smtp-Source: ABdhPJwGxahRc8utwuZ4DVU0DhDr4lnyEuyvMaVTHIZ5TMKdAZ+MI83iR6Q+L2TKCETwFhXhRQotmA== X-Received: by 2002:a62:7b8a:0:b029:1bb:4a06:bb57 with SMTP id w132-20020a627b8a0000b02901bb4a06bb57mr1237027pfc.47.1611871223335; Thu, 28 Jan 2021 14:00:23 -0800 (PST) Received: from ecenter ([2600:1700:83b0:8bd0::7a8]) by smtp.gmail.com with ESMTPSA id u12sm6179657pgi.91.2021.01.28.14.00.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 28 Jan 2021 14:00:22 -0800 (PST) From: John Soo To: guix-patches@gnu.org Subject: [PATCH] staging gnu: Add more tools to rust outputs. Date: Thu, 28 Jan 2021 14:00:20 -0800 Message-ID: <87eei4k9hn.fsf@asu.edu> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=jsoo1@asu.edu; helo=mail-pf1-x434.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Hi Guix! I work with rust for my job and I would love to be able to use clippy and the other tools that are in the rustc tree. This patch installs those tools as other outputs in the same way we have cargo and rustfmt now. Thanks! All the best, John --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-gnu-Add-more-tools-to-rust-outputs.patch Content-Transfer-Encoding: quoted-printable From=202f381b5af04a2e487242b3661edf088fecb6c484 Mon Sep 17 00:00:00 2001 From: John Soo Date: Wed, 25 Nov 2020 06:25:43 -0800 Subject: [PATCH] gnu: Add more tools to rust outputs. The goal is to provide standard rust tools as outputs of rustc. The tools = we were missing were rls, clippy, src, and rust-analyzer. * gnu/packages/rust.scm (rust-1.46): [outputs] add rls, clippy, src, and rust-analyzer, [arguments] alter phases to build, test, and install each new output, [arguments] patch RUNPATHS of outputs that require it, [arguments] delete all uninstall scripts from outputs, [arguments] delete all the insta= ll logs and manifests. =2D-- gnu/packages/rust.scm | 133 +++++++++++++++++++++++++++++++----------- 1 file changed, 99 insertions(+), 34 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index e646cd0091..98ae770745 100644 =2D-- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -11,6 +11,7 @@ ;;; Copyright =C2=A9 2020, 2021 Jakub K=C4=85dzio=C5=82ka ;;; Copyright =C2=A9 2020 Pierre Langlois ;;; Copyright =C2=A9 2020 Matthew Kraai +;;; Copyright =C2=A9 2021 John Soo ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,6 +42,7 @@ #:use-module (gnu packages jemalloc) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) + #:use-module (gnu packages node) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages ssh) @@ -1322,19 +1324,42 @@ move around." "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid"))) (package (inherit base-rust) =2D (outputs (cons "rustfmt" (package-outputs base-rust))) + (outputs (append '("rustfmt" "rls" "src" "clippy" "rust-analyzer") + (package-outputs base-rust))) + (inputs + `(("gcc-lib" ,gcc "lib") + ,@(package-inputs base-rust))) + (native-inputs + `(("node" ,node) + ("patchelf" ,patchelf) + ,@(package-native-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases + (replace 'patch-cargo-checksums + ;; Generate checksums after patching generated files (in + ;; particular, vendor/jemalloc/rep/Makefile). + (lambda* _ + (use-modules (guix build cargo-utils)) + (substitute* '("Cargo.lock" + "src/tools/rust-analyzer/Cargo.lock") + (("(checksum =3D )\".*\"" all name) + (string-append name "\"" ,%cargo-reference-hash "\""))) + (generate-all-checksums "vendor") + #t)) (replace 'build (lambda* _ (invoke "./x.py" "build") (invoke "./x.py" "build" "src/tools/cargo") =2D (invoke "./x.py" "build" "src/tools/rustfmt"))) + (invoke "./x.py" "build" "src/tools/rustfmt") + (invoke "./x.py" "build" "src/tools/clippy") + (invoke "./x.py" "build" "src/tools/rls") + (invoke "./x.py" "build" + "src/tools/rust-analyzer/crates/rust-analyzer"))) (replace 'check (lambda* _ =2D ;; Test rustfmt. + ;; Enable parallel execution. (let ((parallel-job-spec (string-append "-j" (number->string (min 4 @@ -1343,44 +1368,84 @@ move around." (invoke "./x.py" parallel-job-spec "test" "src/tools/cargo") (invoke "./x.py" parallel-job-spec "test" =2D "src/tools/rustfmt")))) + "src/tools/rustfmt") + ;; Clippy tests do not work. See + ;; https://github.com/rust-lang/rust/issues/78717 + ;; Even with --stage 1, they fail to compile + ;; (invoke "./x.py" parallel-job-spec "test" "--stage" = "1" + ;; "src/tools/clippy") + (substitute* "src/tools/rls/tests/client.rs" + (("fn client_dependency_typo_and_fix" all) + (string-append "#[ignore]\n" all))) + (invoke "./x.py" parallel-job-spec "test" + "src/tools/rls")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") + (for-each delete-file-recursively + (find-files (assoc-ref outputs "out") + "^uninstall\\.sh$")) (substitute* "config.toml" ;; replace prefix to specific output =2D (("prefix =3D \"[^\"]*\"") =2D (string-append "prefix =3D \"" (assoc-ref outputs "c= argo") "\""))) =2D (invoke "./x.py" "install" "cargo") =2D (substitute* "config.toml" =2D ;; replace prefix to specific output =2D (("prefix =3D \"[^\"]*\"") =2D (string-append "prefix =3D \"" (assoc-ref outputs "r= ustfmt") "\""))) =2D (invoke "./x.py" "install" "rustfmt"))) + (("\\[build\\]" all) + (string-append all " +extended =3D true +tools =3D +"))) + (define (install-component component) + (substitute* "config.toml" + ;; replace prefix to specific output + (("(tools =3D).*" all tools) + (string-append tools " [\"" component "\"]\n")) + (("prefix =3D \"[^\"]*\"") + (string-append + "prefix =3D \"" (assoc-ref outputs component) "\"")= )) + (mkdir-p (assoc-ref outputs component)) + (invoke "./x.py" "install" component) + (for-each delete-file-recursively + (find-files (assoc-ref outputs component) + "uninstall\\.sh"))) + (for-each install-component + '("cargo" + "rustfmt" + "clippy" + "rls" + "src" + "rust-analyzer")) + #t)) + (add-after 'install 'patch-tools-runpaths + (lambda* (#:key outputs inputs #:allow-other-keys) + (use-modules (ice-9 popen) + (ice-9 textual-ports)) + (define (patch-path path) + (let* ((read-rpath + (string-append + "patchelf --print-rpath " path)) + (pipe (open-input-pipe read-rpath)) + (current-rpath (get-string-all pipe)) + (out (assoc-ref outputs "out")) + (libc (assoc-ref inputs "libc")) + (gcc-lib (assoc-ref inputs "gcc-lib"))) + (close-pipe pipe) + (invoke "patchelf" "--set-rpath" + (string-append current-rpath + ":" out "/lib" + ":" libc "/lib" + ":" gcc-lib "/lib") + path))) + (define (patch-component component) + (for-each patch-path + (find-files (assoc-ref outputs component) + (lambda (p s) (executable-file? p= ))))) + (for-each patch-component '("clippy" "rls")))) (replace 'delete-install-logs (lambda* (#:key outputs #:allow-other-keys) =2D (define (delete-manifest-file out-path file) =2D (delete-file (string-append out-path "/lib/rustlib/" = file))) =2D =2D (let ((out (assoc-ref outputs "out")) =2D (cargo-out (assoc-ref outputs "cargo")) =2D (rustfmt-out (assoc-ref outputs "rustfmt"))) =2D (for-each =2D (lambda (file) (delete-manifest-file out file)) =2D '("install.log" =2D "manifest-rust-docs" =2D ,(string-append "manifest-rust-std-" =2D (nix-system->gnu-triplet-for-rust= )) =2D "manifest-rustc")) =2D (for-each =2D (lambda (file) (delete-manifest-file cargo-out file= )) =2D '("install.log" =2D "manifest-cargo")) =2D (for-each =2D (lambda (file) (delete-manifest-file rustfmt-out fi= le)) =2D '("install.log" =2D "manifest-rustfmt-preview")) =2D #t)))))))))) + (define log-manifest-re + "^install\\.log$|^manifest-([a-z]|[0-9]|_|-)+(-preview)= ?$") + (define (delete-install-log output) + (for-each delete-file-recursively + (find-files output log-manifest-re))) + (for-each delete-install-log (map cdr outputs))))))))))) =20 (define-public rust-1.47 (let ((base-rust =2D-=20 2.30.0 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCAAsFiEEWhWPr0BqdIqBqdxOT0N6drRIojsFAmATM/QOHGpzb28xQGFz dS5lZHUACgkQT0N6drRIojtLBBAA0tIdWUdry9+VKn67NlIMjvxOAvN8krw9VSzd z5+APOhmtscN956V0lkBKgc1ME1nA+iE643lnmKfK+DWnr621afd52JJAMrmG4xv Ds7XOGGfANxHDRNqxqrEPZUEN1vL7eUC0z1hsl11hCOkjL6Ka56/DUIerPViOMLW AZEPBhx6eDsKPLckRFPGWZUbB/O6ejLtpmou38IeYGAMlgJVop7Uk4JGzo6h9ZHD c2bkoEofi8DgtBoYuZ4RmCSGFw1JrqIFnZtXzrqqSdjaFA/GBV5ozGRtfXLlfxZN qB4ZEvgJRnvGOWELKJVuyk9oeD4BqpYYva3Xqf3zlp3jCNHLa17ZC1EKlyt/WaOm r7EorYpJdIuc1kpAwVzz3ns/LatdmnMZX3aWyifAU6jJWDH8xl1TPAiKTo8hRil/ RhEtqfUBegV/qIn/hdidKWXEnWlEtEgU3gRl1KTrZ5+f/hy2eSj3T7RFPkdQmH3i qhyF8HFGmlejjX2IXN5/UB0bVBWVnR3PF7cjAE+D3yJdJ/PwGVetPlydsL6nFISL CVhlDsjFiNiv6Ry1evYEI9NYhl+jLTRt4eygSk9iP7zFFq0bk3aib6F2VX83gdXM fVceT5S+SiE32w7OYhn8A0+4+yywKciasJZTV1zBP86YYGb993Y0bvctKujiD33p rEOqDQA= =V2V8 -----END PGP SIGNATURE----- --==-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jan 28 18:30:13 2021 Received: (at 46162) by debbugs.gnu.org; 28 Jan 2021 23:30:13 +0000 Received: from localhost ([127.0.0.1]:50591 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5Gjo-0001lS-Hg for submit@debbugs.gnu.org; Thu, 28 Jan 2021 18:30:13 -0500 Received: from mail-pj1-f54.google.com ([209.85.216.54]:35051) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5Gjj-0001jR-8C for 46162@debbugs.gnu.org; Thu, 28 Jan 2021 18:30:06 -0500 Received: by mail-pj1-f54.google.com with SMTP id e9so5315721pjj.0 for <46162@debbugs.gnu.org>; Thu, 28 Jan 2021 15:30:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asu-edu.20150623.gappssmtp.com; s=20150623; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=0rt6tFJHQ08vwyy/lqiMpm8Uxpvp+h71XJk76lDTM8I=; b=aSG3wTpX9aBzHfmbt7ANNgcd2ypF1nSTuZoOBatlYqnL8ZvqIG2zVXNU1xQ+P6xDWH 84dv7qHyJWDCZx4y4xmcrmN2beu9IgM5fNrY1ovD5cGa9i1ZcZX6AX3ZQQhqbkvai91n dgSnj+QC78H2yl0DGVaFCT5kbR6U2hTN+qzQIe1eGV+Y7TUz9u5GARxumGYX1NTooEy+ lZwGFq6iBuaEOlWriLlQo+jVaRE3MUgdWSRaT3RKIEIYtlXP+sQc+sTiMth8zIRYnGZa Jem4WWygG+clJFvHwZXfReMOG6PsbmNwBkQ94F7CpRM/JBf+qyP/RDxhaoqc9/lkIMjj JHYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=0rt6tFJHQ08vwyy/lqiMpm8Uxpvp+h71XJk76lDTM8I=; b=d4zjyBJs0reqxaQ0u5PG5NfATs1QUxhQ+Jo61sTJ7Y20VAbPxW8s6F730zh9NV6T5l dXIqzdajKIuHDIDoXGDEaGBAoUMZgHMJ3GNl7IcKazYLnBSSybFI6lHK3IeoJCUJY6NX D9iYVtInIzfl22mU3SNtaIQxCz4ww87NxipG7xLN07146zfvqH2kFYvalfLt+YUHFN1o PgC5Pe0DZYD9eeDLf6aRwPMOg8qg6yMSiNFPF62KFLqJAXbV9HDxkUYm3nJ0yLgKrCvq lTwzT3Xa/pRxPP5udJWlZMs58702hmrlGGi0TKFrDQ1Gxug+V/n6Xu0JOGt3JXe9YGUX /iwg== X-Gm-Message-State: AOAM533Bak4EuRYNO3gOguIss6R4DtmJHuIjMVHYVRjq8ZR45jXPM0e6 bd7FDjvtBJ1bsorf8d0lqMHzaUsHbkZJlA== X-Google-Smtp-Source: ABdhPJzm/0/WAJftAzWa9s3P1EZ9XDL2rd3MzLqCJyRSXwIXtdne6gAZvA5CK0DDmAVzTPdbPeHKyw== X-Received: by 2002:a17:90a:5993:: with SMTP id l19mr1590551pji.203.1611876596965; Thu, 28 Jan 2021 15:29:56 -0800 (PST) Received: from ecenter ([2600:1700:83b0:8bd0::7a8]) by smtp.gmail.com with ESMTPSA id 6sm6520838pfo.139.2021.01.28.15.29.55 for <46162@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 28 Jan 2021 15:29:56 -0800 (PST) From: John Soo To: 46162@debbugs.gnu.org Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. References: <87eei4k9hn.fsf@asu.edu> Date: Thu, 28 Jan 2021 15:29:54 -0800 In-Reply-To: <87eei4k9hn.fsf@asu.edu> (John Soo's message of "Thu, 28 Jan 2021 14:00:20 -0800") Message-ID: <875z3gk5cd.fsf@asu.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46162 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Here is an edited patch. I had rebased incorrectly, my apologies. - John --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-gnu-Add-more-tools-to-rust-outputs.patch Content-Transfer-Encoding: quoted-printable From=20cd3bddf4785f9efac275424c5c735092600f45c5 Mon Sep 17 00:00:00 2001 From: John Soo Date: Wed, 25 Nov 2020 06:25:43 -0800 Subject: [PATCH] gnu: Add more tools to rust outputs. The goal is to provide standard rust tools as outputs of rustc. The tools = we were missing were rls, clippy, src, and rust-analyzer. * gnu/packages/rust.scm (rust-1.46): [outputs] add rls, clippy, src, and rust-analyzer, [arguments] alter phases to build, test, and install each new output, [arguments] patch RUNPATHS of outputs that require it, [arguments] delete all uninstall scripts from outputs, [arguments] delete all the insta= ll logs and manifests. =2D-- gnu/packages/rust.scm | 131 +++++++++++++++++++++++++++++++----------- 1 file changed, 97 insertions(+), 34 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index e646cd0091..b59fe98546 100644 =2D-- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -11,6 +11,7 @@ ;;; Copyright =C2=A9 2020, 2021 Jakub K=C4=85dzio=C5=82ka ;;; Copyright =C2=A9 2020 Pierre Langlois ;;; Copyright =C2=A9 2020 Matthew Kraai +;;; Copyright =C2=A9 2021 John Soo ;;; ;;; This file is part of GNU Guix. ;;; @@ -1322,19 +1323,41 @@ move around." "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid"))) (package (inherit base-rust) =2D (outputs (cons "rustfmt" (package-outputs base-rust))) + (outputs (append '("rustfmt" "rls" "src" "clippy" "rust-analyzer") + (package-outputs base-rust))) + (inputs + `(("gcc-lib" ,gcc "lib") + ,@(package-inputs base-rust))) + (native-inputs + `(("patchelf" ,patchelf) + ,@(package-native-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases + (replace 'patch-cargo-checksums + ;; Generate checksums after patching generated files (in + ;; particular, vendor/jemalloc/rep/Makefile). + (lambda* _ + (use-modules (guix build cargo-utils)) + (substitute* '("Cargo.lock" + "src/tools/rust-analyzer/Cargo.lock") + (("(checksum =3D )\".*\"" all name) + (string-append name "\"" ,%cargo-reference-hash "\""))) + (generate-all-checksums "vendor") + #t)) (replace 'build (lambda* _ (invoke "./x.py" "build") (invoke "./x.py" "build" "src/tools/cargo") =2D (invoke "./x.py" "build" "src/tools/rustfmt"))) + (invoke "./x.py" "build" "src/tools/rustfmt") + (invoke "./x.py" "build" "src/tools/clippy") + (invoke "./x.py" "build" "src/tools/rls") + (invoke "./x.py" "build" + "src/tools/rust-analyzer/crates/rust-analyzer"))) (replace 'check (lambda* _ =2D ;; Test rustfmt. + ;; Enable parallel execution. (let ((parallel-job-spec (string-append "-j" (number->string (min 4 @@ -1343,44 +1366,84 @@ move around." (invoke "./x.py" parallel-job-spec "test" "src/tools/cargo") (invoke "./x.py" parallel-job-spec "test" =2D "src/tools/rustfmt")))) + "src/tools/rustfmt") + ;; Clippy tests do not work. See + ;; https://github.com/rust-lang/rust/issues/78717 + ;; Even with --stage 1, they fail to compile + ;; (invoke "./x.py" parallel-job-spec "test" "--stage" = "1" + ;; "src/tools/clippy") + (substitute* "src/tools/rls/tests/client.rs" + (("fn client_dependency_typo_and_fix" all) + (string-append "#[ignore]\n" all))) + (invoke "./x.py" parallel-job-spec "test" + "src/tools/rls")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") + (for-each delete-file-recursively + (find-files (assoc-ref outputs "out") + "^uninstall\\.sh$")) (substitute* "config.toml" ;; replace prefix to specific output =2D (("prefix =3D \"[^\"]*\"") =2D (string-append "prefix =3D \"" (assoc-ref outputs "c= argo") "\""))) =2D (invoke "./x.py" "install" "cargo") =2D (substitute* "config.toml" =2D ;; replace prefix to specific output =2D (("prefix =3D \"[^\"]*\"") =2D (string-append "prefix =3D \"" (assoc-ref outputs "r= ustfmt") "\""))) =2D (invoke "./x.py" "install" "rustfmt"))) + (("\\[build\\]" all) + (string-append all " +extended =3D true +tools =3D +"))) + (define (install-component component) + (substitute* "config.toml" + ;; replace prefix to specific output + (("(tools =3D).*" all tools) + (string-append tools " [\"" component "\"]\n")) + (("prefix =3D \"[^\"]*\"") + (string-append + "prefix =3D \"" (assoc-ref outputs component) "\"")= )) + (mkdir-p (assoc-ref outputs component)) + (invoke "./x.py" "install" component) + (for-each delete-file-recursively + (find-files (assoc-ref outputs component) + "uninstall\\.sh"))) + (for-each install-component + '("cargo" + "rustfmt" + "clippy" + "rls" + "src" + "rust-analyzer")) + #t)) + (add-after 'install 'patch-tools-runpaths + (lambda* (#:key outputs inputs #:allow-other-keys) + (use-modules (ice-9 popen) + (ice-9 textual-ports)) + (define (patch-path path) + (let* ((read-rpath + (string-append + "patchelf --print-rpath " path)) + (pipe (open-input-pipe read-rpath)) + (current-rpath (get-string-all pipe)) + (out (assoc-ref outputs "out")) + (libc (assoc-ref inputs "libc")) + (gcc-lib (assoc-ref inputs "gcc-lib"))) + (close-pipe pipe) + (invoke "patchelf" "--set-rpath" + (string-append current-rpath + ":" out "/lib" + ":" libc "/lib" + ":" gcc-lib "/lib") + path))) + (define (patch-component component) + (for-each patch-path + (find-files (assoc-ref outputs component) + (lambda (p s) (executable-file? p= ))))) + (for-each patch-component '("clippy" "rls")))) (replace 'delete-install-logs (lambda* (#:key outputs #:allow-other-keys) =2D (define (delete-manifest-file out-path file) =2D (delete-file (string-append out-path "/lib/rustlib/" = file))) =2D =2D (let ((out (assoc-ref outputs "out")) =2D (cargo-out (assoc-ref outputs "cargo")) =2D (rustfmt-out (assoc-ref outputs "rustfmt"))) =2D (for-each =2D (lambda (file) (delete-manifest-file out file)) =2D '("install.log" =2D "manifest-rust-docs" =2D ,(string-append "manifest-rust-std-" =2D (nix-system->gnu-triplet-for-rust= )) =2D "manifest-rustc")) =2D (for-each =2D (lambda (file) (delete-manifest-file cargo-out file= )) =2D '("install.log" =2D "manifest-cargo")) =2D (for-each =2D (lambda (file) (delete-manifest-file rustfmt-out fi= le)) =2D '("install.log" =2D "manifest-rustfmt-preview")) =2D #t)))))))))) + (define log-manifest-re + "^install\\.log$|^manifest-([a-z]|[0-9]|_|-)+(-preview)= ?$") + (define (delete-install-log output) + (for-each delete-file-recursively + (find-files output log-manifest-re))) + (for-each delete-install-log (map cdr outputs))))))))))) =20 (define-public rust-1.47 (let ((base-rust =2D-=20 2.30.0 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCAAsFiEEWhWPr0BqdIqBqdxOT0N6drRIojsFAmATSPIOHGpzb28xQGFz dS5lZHUACgkQT0N6drRIojthdw//b0ZQ+OGlEdBbInkATFXl0e+AMw77cttcJO2y iYE95ZiK2H7HprM36x9cdTTZfXyGnOp1rqe3G/U2245U7TvaSymqlPWsSGEIZ2Ut gVSrFFOulF9DwsUuBPvCxcPHFvHLZYTQtmcp8fUkHvVYswOhwkZ9ir11bkfffpXw zjzEWeZDVhN8lv+iqvHSkX8qrOjn8YNX3vvI71urbtFuLc5K3EQH01ZIlso6v290 rLc7hGqJW+Y6dh4FmEorVDvCbr/EWo4AJkTic4odcew6PTb7XcFZi+VqQdyW6IxS d8eGghlOzi6zi+X2t4n84nZWCgdjjaG+qsj60oaMC3qTUAH87CRy/EObCHSckRcv 7CZWjyKrXH7ZTQ3p0me+HMc7lLUGWS9DiMZxYGXHColWNYDtt73hlyVE4fSkRlXk GZsDPDtaabim9hs9sBHwQhxNYWvK3Stx722bhKC8i7KKfXOaVvhNdcpJM0aBE+fD Aj4qMuN5O4PejOaWt0pR1hzrucd4THnzNTN1dzQUc1hVa1P1HRCJlNGddg/NlT7p I2SYc6aDbE+GBTo3mRibYMBdV2zhqJNw1GRBInnKdk/bFoTu/F/1WSTk9QMP1ehK wFOr8MLcG+3yiq2zl6svXVpXVjLyM0NmVvRmjiHINB4E8d3tvcTVkILk+vtAa+Z/ XtLziOY= =CwBZ -----END PGP SIGNATURE----- --==-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 15 11:13:31 2021 Received: (at 46162) by debbugs.gnu.org; 15 Feb 2021 16:13:31 +0000 Received: from localhost ([127.0.0.1]:38568 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBgV3-0004Wm-CQ for submit@debbugs.gnu.org; Mon, 15 Feb 2021 11:13:31 -0500 Received: from mail-pf1-f171.google.com ([209.85.210.171]:35948) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBgUz-0004WW-Qh for 46162@debbugs.gnu.org; Mon, 15 Feb 2021 11:13:23 -0500 Received: by mail-pf1-f171.google.com with SMTP id z15so4448606pfc.3 for <46162@debbugs.gnu.org>; Mon, 15 Feb 2021 08:13:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asu-edu.20150623.gappssmtp.com; s=20150623; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version; bh=xUXSHjD6QZqiZfM3ruHg+astR6rqcVT5Gd2QfCK+o70=; b=ZjSVa8cbLl93mi25AAa7lWENgMVKC5NYXixyezogW87PYKZdJRPCfB9oc5m1DsEvYb MSpfWOsb3ZfLoat7chGOW+oiDP/DcQSRt2N8YDy3pnjKfjzn8D8RIyJ6I+2BqWVlJ4ZZ 5udboRIuHorK7Kuw7VcmgUhxDRR70Q6uIX16BbGTrRFH5Ig/oK1rLuJNDqhdHVsCBG5+ e8CuNvsetXvmk8deO4cEL/QiSJM6XoHKjTnawIyZHiVID4/0BYlSNakshxMjXpROQYgT +YYIQChrOae3TJALyay2cAv4wWlKr9YC5ULI/9TXwf1XSh8dbA+v1bEp9JsqJ05+FFZZ hx3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=xUXSHjD6QZqiZfM3ruHg+astR6rqcVT5Gd2QfCK+o70=; b=SIgUOQ47evwjmwEKM4IXgmOWUwd9Z6OpOuHBPTxgoyslaoHcRB0ftRv1GfkDRD6v9L 7goocF3TD+X+ZkdUS7c+QJ6C4sVvYA6Hug1i7sp++bSM7teEsLBTkdHLBnj2YzxBGrpg BmjHKURTngEAJS9I49oWSPG5FAQ+M3oL0g1hjRxzpw0wv7AyIUK8FKnS46A5NVNBcFO3 rK+dNPsiS20EY867uaerbUNRMNUBgUkjzGErFlMmZpRjzGWoioxM5pWKtY22fzPtLijw OGdLS296FwG7lmyFPwLqbR/OcZ3q9+9KJMF+HywpL668U1f6H8XxaW0JHd/+LBG3lJoS bjEQ== X-Gm-Message-State: AOAM533saSZ/6qlepmBJX0vBWujXCAGqbKfXl9pmNQL7sm8zKDieaqip QiZ2lYH1I8++aO2XlN/Pxu/gIossN1McmA== X-Google-Smtp-Source: ABdhPJy1CHFQgrQIdkhMufwjSqVNWzrqnjm9t+MUawrGiA4PU8sE3c2VlE3kBAr9jS3n6HB4uCIx1g== X-Received: by 2002:a62:1ad1:0:b029:1e8:228e:1cf5 with SMTP id a200-20020a621ad10000b02901e8228e1cf5mr15785663pfa.58.1613405595006; Mon, 15 Feb 2021 08:13:15 -0800 (PST) Received: from ecenter (cpe-76-175-213-72.socal.res.rr.com. [76.175.213.72]) by smtp.gmail.com with ESMTPSA id x11sm18936678pfr.24.2021.02.15.08.13.10 for <46162@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 15 Feb 2021 08:13:11 -0800 (PST) From: John Soo To: 46162@debbugs.gnu.org Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. References: <87eei4k9hn.fsf@asu.edu> Date: Mon, 15 Feb 2021 08:13:10 -0800 In-Reply-To: <87eei4k9hn.fsf@asu.edu> (John Soo's message of "Thu, 28 Jan 2021 14:00:20 -0800") Message-ID: <87ft1xwbqh.fsf@asu.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 46162 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain Rebased on staging. There is one more question that I have about search paths. A lot of rust tools use the $RUST_SRC_PATH to find the source of rust. I add the source output as "src" but I am not sure how to specify a search path to the top directory of a separate output. Any pointers? Thanks! John --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-gnu-Add-more-tools-to-rust-outputs.patch Content-Transfer-Encoding: quoted-printable >From cd849893e7f9b6ad8c380b3ebc74ea92530f8c48 Mon Sep 17 00:00:00 2001 From: John Soo Date: Wed, 25 Nov 2020 06:25:43 -0800 Subject: [PATCH] gnu: Add more tools to rust outputs. The goal is to provide standard rust tools as outputs of rustc. The tools = we were missing were rls, clippy, src, and rust-analyzer. as a separate output= of rust. * gnu/packages/rust.scm (rust-1.46): [outputs] add rls, clippy, src, and rust-analyzer, [arguments] alter phases to build, test, and install each new output, [arguments] patch RUNPATHS of outputs that require it, [arguments] delete all uninstall scripts from outputs, [arguments] delete all the insta= ll logs and manifests. --- gnu/packages/rust.scm | 145 +++++++++++++++++++++++++++++++----------- 1 file changed, 109 insertions(+), 36 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index f72f310169..8a09e1077e 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -11,6 +11,7 @@ ;;; Copyright =C2=A9 2020, 2021 Jakub K=C4=85dzio=C5=82ka ;;; Copyright =C2=A9 2020 Pierre Langlois ;;; Copyright =C2=A9 2020 Matthew Kraai +;;; Copyright =C2=A9 2021 John Soo ;;; ;;; This file is part of GNU Guix. ;;; @@ -41,6 +42,7 @@ #:use-module (gnu packages jemalloc) #:use-module (gnu packages linux) #:use-module (gnu packages llvm) + #:use-module (gnu packages node) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages ssh) @@ -1322,19 +1324,41 @@ move around." "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid"))) (package (inherit base-rust) - (outputs (cons "rustfmt" (package-outputs base-rust))) + (outputs (append '("rustfmt" "rls" "src" "clippy" "rust-analyzer") + (package-outputs base-rust))) + (inputs + `(("gcc-lib" ,gcc "lib") + ,@(package-inputs base-rust))) + (native-inputs + `(("node" ,node) + ("patchelf" ,patchelf) + ,@(package-native-inputs base-rust))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) `(modify-phases ,phases + (replace 'patch-cargo-checksums + ;; Generate checksums after patching generated files (in + ;; particular, vendor/jemalloc/rep/Makefile). + (lambda* _ + (use-modules (guix build cargo-utils)) + (substitute* '("Cargo.lock" + "src/tools/rust-analyzer/Cargo.lock") + (("(checksum =3D )\".*\"" all name) + (string-append name "\"" ,%cargo-reference-hash "\""))) + (generate-all-checksums "vendor") + #t)) (replace 'build (lambda* _ (invoke "./x.py" "build") (invoke "./x.py" "build" "src/tools/cargo") - (invoke "./x.py" "build" "src/tools/rustfmt"))) + (invoke "./x.py" "build" "src/tools/rustfmt") + (invoke "./x.py" "build" "src/tools/clippy") + (invoke "./x.py" "build" "src/tools/rls") + (invoke "./x.py" "build" + "src/tools/rust-analyzer/crates/rust-analyzer"))) (replace 'check (lambda* _ - ;; Test rustfmt. (let ((parallel-job-spec (string-append "-j" (number->string (min 4 @@ -1343,44 +1367,84 @@ move around." (invoke "./x.py" parallel-job-spec "test" "src/tools/cargo") (invoke "./x.py" parallel-job-spec "test" - "src/tools/rustfmt")))) + "src/tools/rustfmt") + ;; Clippy tests do not work. See + ;; https://github.com/rust-lang/rust/issues/78717 + ;; Even with --stage 1, they fail to compile + ;; (invoke "./x.py" parallel-job-spec "test" "--stage" = "1" + ;; "src/tools/clippy") + (substitute* "src/tools/rls/tests/client.rs" + (("fn client_dependency_typo_and_fix" all) + (string-append "#[ignore]\n" all))) + (invoke "./x.py" parallel-job-spec "test" + "src/tools/rls")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") + (for-each delete-file-recursively + (find-files (assoc-ref outputs "out") + "^uninstall\\.sh$")) (substitute* "config.toml" ;; replace prefix to specific output - (("prefix =3D \"[^\"]*\"") - (string-append "prefix =3D \"" (assoc-ref outputs "car= go") "\""))) - (invoke "./x.py" "install" "cargo") - (substitute* "config.toml" - ;; replace prefix to specific output - (("prefix =3D \"[^\"]*\"") - (string-append "prefix =3D \"" (assoc-ref outputs "rus= tfmt") "\""))) - (invoke "./x.py" "install" "rustfmt"))) + (("\\[build\\]" all) + (string-append all " +extended =3D true +tools =3D +"))) + (define (install-component component) + (substitute* "config.toml" + ;; replace prefix to specific output + (("(tools =3D).*" all tools) + (string-append tools " [\"" component "\"]\n")) + (("prefix =3D \"[^\"]*\"") + (string-append + "prefix =3D \"" (assoc-ref outputs component) "\"")= )) + (mkdir-p (assoc-ref outputs component)) + (invoke "./x.py" "install" component) + (for-each delete-file-recursively + (find-files (assoc-ref outputs component) + "uninstall\\.sh"))) + (for-each install-component + '("cargo" + "rustfmt" + "clippy" + "rls" + "src" + "rust-analyzer")) + #t)) + (add-after 'install 'patch-tools-runpaths + (lambda* (#:key outputs inputs #:allow-other-keys) + (use-modules (ice-9 popen) + (ice-9 textual-ports)) + (define (patch-path path) + (let* ((read-rpath + (string-append + "patchelf --print-rpath " path)) + (pipe (open-input-pipe read-rpath)) + (current-rpath (get-string-all pipe)) + (out (assoc-ref outputs "out")) + (libc (assoc-ref inputs "libc")) + (gcc-lib (assoc-ref inputs "gcc-lib"))) + (close-pipe pipe) + (invoke "patchelf" "--set-rpath" + (string-append current-rpath + ":" out "/lib" + ":" libc "/lib" + ":" gcc-lib "/lib") + path))) + (define (patch-component component) + (for-each patch-path + (find-files (assoc-ref outputs component) + (lambda (p s) (executable-file? p= ))))) + (for-each patch-component '("clippy" "rls")))) (replace 'delete-install-logs (lambda* (#:key outputs #:allow-other-keys) - (define (delete-manifest-file out-path file) - (delete-file (string-append out-path "/lib/rustlib/" fi= le))) - - (let ((out (assoc-ref outputs "out")) - (cargo-out (assoc-ref outputs "cargo")) - (rustfmt-out (assoc-ref outputs "rustfmt"))) - (for-each - (lambda (file) (delete-manifest-file out file)) - '("install.log" - "manifest-rust-docs" - ,(string-append "manifest-rust-std-" - (nix-system->gnu-triplet-for-rust)) - "manifest-rustc")) - (for-each - (lambda (file) (delete-manifest-file cargo-out file)) - '("install.log" - "manifest-cargo")) - (for-each - (lambda (file) (delete-manifest-file rustfmt-out file= )) - '("install.log" - "manifest-rustfmt-preview")) - #t)))))))))) + (define log-manifest-re + "^install\\.log$|^manifest-([a-z]|[0-9]|_|-)+(-preview)= ?$") + (define (delete-install-log output) + (for-each delete-file-recursively + (find-files output log-manifest-re))) + (for-each delete-install-log (map cdr outputs))))))))))) =20 (define-public rust-1.47 (let ((base-rust @@ -1413,7 +1477,8 @@ move around." ;; particular, vendor/jemalloc/rep/Makefile). (lambda* _ (use-modules (guix build cargo-utils)) - (substitute* "Cargo.lock" + (substitute* '("Cargo.lock" + "src/tools/rust-analyzer/Cargo.lock") (("(checksum =3D )\".*\"" all name) (string-append name "\"" ,%cargo-reference-hash "\""))) (generate-all-checksums "vendor") @@ -1445,7 +1510,15 @@ move around." (("fn test_process_mask") "#[allow(unused_attributes)] #[ignore] fn test_process_mask")) - #t)))))))))) + #t))) + ;; FIXME: This fixes the "src" output which is not critical. = We + ;; should probably copy the source of the de-vendored libunwi= nd + ;; for completeness' sake. + (add-before 'install 'remove-vendored-llvm-reference-in-src + (lambda _ + (substitute* "src/bootstrap/dist.rs" + ((", \"src/llvm-project/libunwind\"") "")) + #t))))))))) =20 (define-public rust-1.49 (rust-bootstrapped-package rust-1.48 "1.49.0" --=20 2.30.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 15 13:09:37 2021 Received: (at 46162) by debbugs.gnu.org; 15 Feb 2021 18:09:37 +0000 Received: from localhost ([127.0.0.1]:38675 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBiJU-0007MK-Q2 for submit@debbugs.gnu.org; Mon, 15 Feb 2021 13:09:37 -0500 Received: from mail-pj1-f53.google.com ([209.85.216.53]:55691) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBiJS-0007M6-GR for 46162@debbugs.gnu.org; Mon, 15 Feb 2021 13:09:35 -0500 Received: by mail-pj1-f53.google.com with SMTP id cv23so4155387pjb.5 for <46162@debbugs.gnu.org>; Mon, 15 Feb 2021 10:09:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asu-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=XUKQDgPcLQhbRqgqPBefBlyi7WP4ZjeywhEShRDG1SE=; b=HjCn7EN5Z3cwY2vkOAmKj+Zm7mmu6ZRZWyj+8iNLZI/8LUGUa7tB4HC9rFhCFP5lJg 0INNnZloLS3PMT5k59SUMHslz+HqU7Q1I1z9STcFGLiVxtS0Mjnk8m0QUJjRXN1j/Y3x o97seJ+S6KP2tN9CpoYys5Sm/lrQ0ay7NEG69GkUCYPlHb+xFR6sskXCl4nww900ZuFZ D4A2mEjyTO5XJXJ9hrfw4AProkgVsbL11Lm4HRIueb18Pf5JSLyoIpy50OKIUeIBXl7X ArUnv4+CGX1bvvzw+rG/qW9ED7aQZhAV7DDvq6P4xlpnzojADFeG3WW0k4O/k2xIYEGS tcJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=XUKQDgPcLQhbRqgqPBefBlyi7WP4ZjeywhEShRDG1SE=; b=X04vLWLfkcKfFJYrgBUgN1RaR1TtO4vGoSeA3jnJ9/L3tUffRP0SEA3sN466qw2xBY 5fAWIquPi8bpvxCjTECNKu/IiMUsF2Y0Qns+wKA7dr18330oFouFFRqrF9xDa8BPqFPE PRBZUDO/MHKULKJrb905BzFpjuCDSFhOzFQkKk9xCal6np0EjcfR3rYgwbCudaDdSu3b yjiLQp63l33V6VunwtSUwdC3LaQT9KvVroagW/LZi5zkGJqS6goaWF9MIC2BdHKsuHMo 86kVc1FSWm/5oOIXlxtLW3ztrllzGItTPRToZXCwBElpI526to5nwy6e5IpN1Y6HTyjZ c0TQ== X-Gm-Message-State: AOAM5313TfzGBLHbt6W/AUAKHx6PFOShrcSYo1rV+PoYjh6BIIm6bnDL 3KX3xcL3ne5j/Fz1QYN1SnMl4FoV2SyZqg== X-Google-Smtp-Source: ABdhPJzlPbXEufSQ3hJQqF69b+6Diis1zxwMvxIZHssvkqCECPCPug9cPOX4FGywwlZg9mReZGYAGQ== X-Received: by 2002:a17:902:cece:b029:e1:1057:9cbe with SMTP id d14-20020a170902ceceb02900e110579cbemr16633161plg.31.1613412568633; Mon, 15 Feb 2021 10:09:28 -0800 (PST) Received: from ecenter (cpe-76-175-213-72.socal.res.rr.com. [76.175.213.72]) by smtp.gmail.com with ESMTPSA id a15sm19194572pfg.159.2021.02.15.10.09.26 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 15 Feb 2021 10:09:26 -0800 (PST) From: John Soo To: 46162@debbugs.gnu.org Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. References: <87eei4k9hn.fsf@asu.edu> <87ft1xwbqh.fsf@asu.edu> Date: Mon, 15 Feb 2021 10:09:25 -0800 In-Reply-To: <87ft1xwbqh.fsf@asu.edu> (John Soo's message of "Mon, 15 Feb 2021 08:13:10 -0800") Message-ID: <877dn9w6cq.fsf_-_@asu.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46162 Cc: kuba@kadziolka.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Jakub, Thanks again for your work on rust. I cc'd you for feedback on adding the "extended" tools to rust's outputs. - John From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 15 18:54:05 2021 Received: (at 46162) by debbugs.gnu.org; 15 Feb 2021 23:54:05 +0000 Received: from localhost ([127.0.0.1]:38924 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBngq-0001PK-TQ for submit@debbugs.gnu.org; Mon, 15 Feb 2021 18:54:05 -0500 Received: from pat.zlotemysli.pl ([37.59.186.212]:37942) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lBngp-0001Oz-35 for 46162@debbugs.gnu.org; Mon, 15 Feb 2021 18:54:03 -0500 Received: (qmail 6300 invoked by uid 1009); 16 Feb 2021 00:54:00 +0100 Received: from 188.123.215.55 (kuba@kadziolka.net@188.123.215.55) by pat.zlotemysli.pl (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/26075. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.017351 secs); 15 Feb 2021 23:54:00 -0000 Received: from unknown (HELO localhost) (kuba@kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 16 Feb 2021 00:54:00 +0100 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 To: "John Soo" , <46162@debbugs.gnu.org> Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. From: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= Date: Tue, 16 Feb 2021 00:41:12 +0100 Message-Id: In-Reply-To: <877dn9w6cq.fsf_-_@asu.edu> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46162 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Mon Feb 15, 2021 at 7:09 PM CET, John Soo wrote: > Hi Jakub, > > Thanks again for your work on rust. > > I cc'd you for feedback on adding the "extended" tools to rust's > outputs. I don't think tools beyond rustc and cargo should be included in the main rust package, as this causes them to be built in each step of the bootstrap. I believe a better approach would be to define separate packages for them. We would have something like ;; TODO(staging): Bump this variable to the latest packaged rust. (define-public rust rust-1.45) +(define-public rust-for-tools rust-1.50) I'm not sure if rustbuild can be convinced to not build the compiler itself when the version used for the build is the same as the sources'. If so, defining packages for each tool shouldn't need any guix-side tricks. Otherwise, I would define a single rust-tools package with (outputs '("rustfmt" "clippy" ...)). Perhaps it would help with UX if rust-tools itself was hidden, and instead the tools would be exposed with simple packages that expose each tool separately, with a symlink or similar. I'll see if I can find some time to try this out this week. Regards, Jakub K=C4=85dzio=C5=82ka From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 16 11:40:36 2021 Received: (at 46162) by debbugs.gnu.org; 16 Feb 2021 16:40:36 +0000 Received: from localhost ([127.0.0.1]:41365 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lC3Ou-0003zV-4n for submit@debbugs.gnu.org; Tue, 16 Feb 2021 11:40:36 -0500 Received: from mail-pf1-f182.google.com ([209.85.210.182]:33387) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lC3Or-0003z8-Hl for 46162@debbugs.gnu.org; Tue, 16 Feb 2021 11:40:35 -0500 Received: by mail-pf1-f182.google.com with SMTP id z6so6489749pfq.0 for <46162@debbugs.gnu.org>; Tue, 16 Feb 2021 08:40:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=asu-edu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=WXMRdzfku+kqH46jNG96vw5nEXCdLC462Wx5IFwylV0=; b=FaQtXFNPb4jyeiLFQZt31dtLdoPSGECjinprGhxYbU5AAEUPjGUqquMDgbikA12egw VZsZDLa8YsvuEVjB8ZBIGjSg62xFLKHV7WeZqUvO4zV+fGtdUXGhIAgmScS5A95kGSJJ yZTcpx3XqdIgb/5cYMv2KPqAKO4ELzVW03gbDPiWn89oJNRzDtad6yTcXsa8Ialow3j1 dXwAMl5QdXJ67ReOiehFb2uP14PWBctX1sohCJvMpkXruLzVIzoMcTOLvIPDoWD2I9g8 nitA+6PhOsJ2Sj8KuFsYLgay+DEp5kg8vBGTV9ZA0PZOk2MI+L7c41TqR9MkR8TcKfgc m66Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=WXMRdzfku+kqH46jNG96vw5nEXCdLC462Wx5IFwylV0=; b=pR+cm7VWV1QPCx4/YA5PEfRm+kbrTlbX6YHnEL7/5ETIlrIjsdX1AZblCtx6fMsBIw QCunZUegPVmPKf1dfykHGVpt6pALkSlM5rAqgiabEGBxFygR5y42n1SW6hnP1lLO4ihR gzubXenhtq4urO7PHcfg47mLrtdrsj7leLQvkZEZhS5rfAKeUG+0GoXLy3Hy/OM7Z60e HL288w88kdCBH+te1bVQ/bx/IV6zHRPEik0GG9+rbB/v+IQgXFyhGujjkWDdxXAQ/l3l BF4KR4tx1y/4CI/EiU2/4ilPGYLqUsVpk9RIizGKknj7OBTRMQ5X1BaACe05xcJWJLDA FHaw== X-Gm-Message-State: AOAM533ujf492V0qxVI3Mdyz9IZIU1t8cMXd++H46XZ0QF5wKP5rbsqS TgP1pdj1/eV9+G4Q4wtO6oVKOyo+bb9GmA== X-Google-Smtp-Source: ABdhPJzMU714Czo13qziNHzaGJI/yMtRA+kqUGHht/qHm6K7Av9T2wpMLh+u0D+EqkaeJbAIfLlyXw== X-Received: by 2002:a63:f14b:: with SMTP id o11mr20128050pgk.440.1613493624421; Tue, 16 Feb 2021 08:40:24 -0800 (PST) Received: from ecenter (2603-8001-433f-08c9-0000-0000-0000-1ca6.res6.spectrum.com. [2603:8001:433f:8c9::1ca6]) by smtp.gmail.com with ESMTPSA id b17sm20864304pfl.190.2021.02.16.08.40.21 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 16 Feb 2021 08:40:22 -0800 (PST) From: John Soo To: Jakub =?utf-8?B?S8SFZHppb8WCa2E=?= Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. References: Date: Tue, 16 Feb 2021 08:40:20 -0800 In-Reply-To: ("Jakub =?utf-8?B?S8SF?= =?utf-8?B?ZHppb8WCa2EiJ3M=?= message of "Tue, 16 Feb 2021 00:41:12 +0100") Message-ID: <87wnv80xvv.fsf@asu.edu> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46162 Cc: 46162@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Jakub, Jakub K=C4=85dzio=C5=82ka writes: > I don't think tools beyond rustc and cargo should be included in the > main rust package, as this causes them to be built in each step of the > bootstrap. I believe a better approach would be to define separate > packages for them. Yeah that would make sense. Have we explored any of the incremental or --keep-stage options to speedup the bootstrap? > We would have something like > > ;; TODO(staging): Bump this variable to the latest packaged rust. > (define-public rust rust-1.45) > > +(define-public rust-for-tools rust-1.50) > > I'm not sure if rustbuild can be convinced to not build the compiler > itself when the version used for the build is the same as the sources'. > If so, defining packages for each tool shouldn't need any guix-side > tricks. Even if it did build the compiler for each tool it may not be a problem if only the last 3 versions had the tools available (for instance). > Otherwise, I would define a single rust-tools package with > (outputs '("rustfmt" "clippy" ...)). Perhaps it would help with UX if > rust-tools itself was hidden, and instead the tools would be exposed > with simple packages that expose each tool separately, with a symlink or > similar. I could see this working nicely. I think this is just more evidence for language-environment related documentation. > I'll see if I can find some time to try this out this week. Thanks! That would be helpful. It is really painful to have all these unmerged patches to rust. Kindly, John From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 16 11:43:27 2021 Received: (at 46162) by debbugs.gnu.org; 16 Feb 2021 16:43:27 +0000 Received: from localhost ([127.0.0.1]:41379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lC3Rf-00046P-Kv for submit@debbugs.gnu.org; Tue, 16 Feb 2021 11:43:27 -0500 Received: from pat.zlotemysli.pl ([37.59.186.212]:52032) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lC3Rd-00046D-Ez for 46162@debbugs.gnu.org; Tue, 16 Feb 2021 11:43:26 -0500 Received: (qmail 2254 invoked by uid 1009); 16 Feb 2021 17:43:23 +0100 Received: from 188.123.215.55 (kuba@kadziolka.net@188.123.215.55) by pat.zlotemysli.pl (envelope-from , uid 1002) with qmail-scanner-2.08st (clamdscan: 0.98.6/26075. spamassassin: 3.4.0. perlscan: 2.08st. Clear:RC:1(188.123.215.55):. Processed in 0.01484 secs); 16 Feb 2021 16:43:23 -0000 Received: from unknown (HELO localhost) (kuba@kadziolka.net@188.123.215.55) by pat.zlotemysli.pl with SMTP; 16 Feb 2021 17:43:23 +0100 Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. From: =?utf-8?q?Jakub_K=C4=85dzio=C5=82ka?= To: "John Soo" Date: Tue, 16 Feb 2021 17:41:29 +0100 Message-Id: In-Reply-To: <87wnv80xvv.fsf@asu.edu> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46162 Cc: 46162@debbugs.gnu.org, maxim.cournoyer@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Tue Feb 16, 2021 at 5:40 PM CET, John Soo wrote: > Hi Jakub, > > Jakub K=C4=85dzio=C5=82ka writes: > > > I don't think tools beyond rustc and cargo should be included in the > > main rust package, as this causes them to be built in each step of the > > bootstrap. I believe a better approach would be to define separate > > packages for them. > > Yeah that would make sense. Have we explored any of the incremental or > --keep-stage options to speedup the bootstrap? apteryx mentioned some experiments with those on #mrustc. Regards, Jakub K=C4=85dzio=C5=82ka From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 18 13:01:17 2021 Received: (at 46162) by debbugs.gnu.org; 18 Feb 2021 18:01:17 +0000 Received: from localhost ([127.0.0.1]:47908 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCnc5-00059X-FB for submit@debbugs.gnu.org; Thu, 18 Feb 2021 13:01:17 -0500 Received: from mail-qk1-f181.google.com ([209.85.222.181]:34610) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lCnc3-00059J-NU for 46162@debbugs.gnu.org; Thu, 18 Feb 2021 13:01:16 -0500 Received: by mail-qk1-f181.google.com with SMTP id t63so3001490qkc.1 for <46162@debbugs.gnu.org>; Thu, 18 Feb 2021 10:01:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=IfrobHY0X/6a1aQd4MS3gVTuUJJcUGOHhGUoEWLNNHs=; b=GTAmCva1iADUX/XM09ew6+9Zxrsrck9nJ410fgkXquZgE2KYu5fBvEtX2NKCbqifoc l0yfl1X++N8JC4vTtMRvtDdItvhOJuJhTyeYI68joYcIMbXGuPdJyIF2zF3kvSroPYps hxxIOfUzTbvMDieRwDD+uYuAjGOGnLzvgklSlKtLAz7HNfMZ9j4Q9bny2jGfLUdOGSBn Jwl2OcXm/SBP7E7ai4DHKqCHbRTnmWRgEwy45ISQy5n1G/w+kEdLFhm3QHxn9409ZfD2 cmCxiqMj4QuoNn2unFIDgdub0ggrzmVr60i4CpOnZ2O58Z5argRTZtpEfPKcPzoZCaLU nYZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=IfrobHY0X/6a1aQd4MS3gVTuUJJcUGOHhGUoEWLNNHs=; b=lJ8nFXSMn/wJDCyEWr9j0Z3UN463Oas/TVLgl/ucgmVZ2VjXvyGe82picjkY7XgiNj uLJlW9Gn5euiat9Opn3FwyUf4Q3OOQq8SD4sJBTtklhGyVyapDJYVD9Tv/LYzVjZ9Hf7 11QEF/f3zfYPBe2eekUORgkJyCvlWyD+uIEH0GVpS3a2JXdq9PnzMrXqSTYLxbQXncqq i53+wUSzHOlTwpBlekdXX7NkSbR0AIjEw8v7S3n2K4oyFLMd/qD8NAQMsbPtXKfTugzC 7ect6FoAQVQNJ7o+BnSqVUU6GEPeVFhVy7pOPJPLlQZa106GfyCIKgPOTr8/yWa+gRYD u2pA== X-Gm-Message-State: AOAM532Hc+DdfetCLqY8BOhZZ2q6cRpv1J6GuOU2jkYMbazpC9utXBds qJFSJgPbcrpKFXSsJPwBvHlc6grFv4ps/w== X-Google-Smtp-Source: ABdhPJypdd16Af+zcL1Wi5wxGmbSUTdaErAh4T+dw2pMohRnQNi29WlgIS26W/JD1+QudGDZKNADMA== X-Received: by 2002:a37:418d:: with SMTP id o135mr2597086qka.293.1613671270124; Thu, 18 Feb 2021 10:01:10 -0800 (PST) Received: from hurd (dsl-157-68.b2b2c.ca. [66.158.157.68]) by smtp.gmail.com with ESMTPSA id p81sm4416212qke.18.2021.02.18.10.01.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Feb 2021 10:01:09 -0800 (PST) From: Maxim Cournoyer To: Jakub =?utf-8?B?S8SFZHppb8WCa2E=?= Subject: Re: bug#46162: [PATCH] staging gnu: Add more tools to rust outputs. References: Date: Thu, 18 Feb 2021 13:01:09 -0500 In-Reply-To: ("Jakub =?utf-8?B?S8SF?= =?utf-8?B?ZHppb8WCa2EiJ3M=?= message of "Tue, 16 Feb 2021 17:41:29 +0100") Message-ID: <87wnv5uufu.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 46162 Cc: 46162@debbugs.gnu.org, John Soo X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, Jakub K=C4=85dzio=C5=82ka writes: > On Tue Feb 16, 2021 at 5:40 PM CET, John Soo wrote: >> Hi Jakub, >> >> Jakub K=C4=85dzio=C5=82ka writes: >> >> > I don't think tools beyond rustc and cargo should be included in the >> > main rust package, as this causes them to be built in each step of the >> > bootstrap. I believe a better approach would be to define separate >> > packages for them. >> >> Yeah that would make sense. Have we explored any of the incremental or >> --keep-stage options to speedup the bootstrap? > > apteryx mentioned some experiments with those on #mrustc. > > Regards, > Jakub K=C4=85dzio=C5=82ka Those weren't fruitful, but I didn't push it; I think it caused cargo to fail compiling itself, or its test suite. Maxim