From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Marusich Subject: bug#31088: Use '@' as version number separator in guix output Date: Tue, 10 Apr 2018 21:41:23 -0700 Message-ID: <877epegxsc.fsf@gmail.com> References: <871sfr2bsg.fsf@gmail.com> <87k1tf5zxy.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:50372) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f67aB-0004Cg-0h for bug-guix@gnu.org; Wed, 11 Apr 2018 00:42:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f67a6-0003Ir-4K for bug-guix@gnu.org; Wed, 11 Apr 2018 00:42:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:37697) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f67a5-0003Id-W3 for bug-guix@gnu.org; Wed, 11 Apr 2018 00:42:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1f67a5-0004rh-NG for bug-guix@gnu.org; Wed, 11 Apr 2018 00:42:01 -0400 Sender: "Debbugs-submit" Resent-Message-ID: In-Reply-To: <87k1tf5zxy.fsf@gmail.com> (Chris Marusich's message of "Mon, 09 Apr 2018 23:38:01 -0700") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: Pierre Neidhardt Cc: Mathieu Lirzin , 31088@debbugs.gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Here's a new version of the patch. The only change is: I modified the tests (tests/graph.scm and tests/profiles.scm) so that they also use the package-full-name procedure's new #:delimiter keyword argument when necessary. I intended to do that from the start, but I forgot. Alex Kost writes: > Chris Marusich (2018-04-09 23:38 -0700) wrote: > > [...] >> Because I changed the package-full-name procedure, this also fixes the >> package names in other places, such as graphs produced by "guix graph". > > I recall there was some discussion about 'package-full-name' in the past > but I remember nothing about it :-) > > Well, maybe it is not relevant at all, but I've found there was a > proposition to use "@" in 'package-full-name' and it is still not used > there. Look at: > > http://lists.gnu.org/archive/html/guix-devel/2016-04/msg01141.html Yes, we need to be careful. The most obvious problem I encountered was that the Guix daemon prohibits "@" in store item names (which I learned only after attempting to change the delimiter everywhere and then running some tests). However, my patch does not put the "@" symbol into store item names. In fact, to be extra clear, I've added a comment to the package->bag procedure to explain why we can't use "@" there. I think the risk is fairly low that something in Guix itself will malfunction if we make this change, since I've looked at the call sites for package-full-name (in the guix Git repo only), I've run "make check" successfully, and I've verified manually that a handful of guix commands still function correctly. But you never really know until you try. We should probably still check in some other places before changing the default delimiter from "-" to "@". For example, we should probably check at least the following places: * Hydra * Cuirass * Emacs-Guix Where else should we check? If it's too risky, we can always make the default delimiter "-" and only change it to "@" in those places where we really need to (e.g., the package->recutils procedure in (guix ui), to fix this specific bug report). What do you think? =2D-=20 Chris --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-guix-Separate-the-package-name-and-version-with-not.patch Content-Transfer-Encoding: quoted-printable From=2067165c95ff9b52b7ae34d7c07778138548013ccd Mon Sep 17 00:00:00 2001 From: Chris Marusich Date: Sun, 8 Apr 2018 16:51:42 -0700 Subject: [PATCH] guix: Separate the package name and version with "@", not "-". * guix/packages.scm (package-full-name): By default, use "@" to separate the package name and package version. Add #:delimiter keyword argument so that there is still a way to explicitly use a different delimiter. * gnu/packages/commencement.scm (gcc-boot0) : Adjust accordingly. * tests/graph.scm: Adjust accordingly. * tests/profiles.scm: Adjust accordingly. * NEWS: Mention the change. Fixes: . Reported by Pierre Neidhardt . =2D-- NEWS | 1 + gnu/packages/commencement.scm | 2 +- guix/packages.go.134WZR | 0 guix/packages.scm | 13 +++++++++---- tests/graph.scm | 3 ++- tests/profiles.scm | 12 ++++++------ 6 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 guix/packages.go.134WZR diff --git a/NEWS b/NEWS index 2c898e65f..9769bfc87 100644 =2D-- a/NEWS +++ b/NEWS @@ -777,6 +777,7 @@ zynaddsubfx@3.0.2 =20 ** Programming interfaces =20 +*** package-full-name (guix packages) now uses "@" instead of "-" as its d= elimiter. *** New build systems: =E2=80=98font=E2=80=99, =E2=80=98meson=E2=80=99, = =E2=80=98minify=E2=80=99, =E2=80=98scons=E2=80=99, =E2=80=98texlive=E2=80=99 *** =E2=80=98cmake-build-system=E2=80=99 now supports cross-compilation *** Various improvements to =E2=80=98asdf-build-system=E2=80=99, =E2=80=98= emacs-build-system=E2=80=99, diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index fe9fbebcc..9506fbb2b 100644 =2D-- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -282,7 +282,7 @@ ;; Drop trailing letters, as gmp-6.0.0a unpacks ;; into gmp-6.0.0. `(symlink ,(string-trim-right =2D (package-full-name lib) + (package-full-name lib #:delimiter= "-") char-set:letter) ,(package-name lib))) (list gmp-6.0 mpfr mpc)))) diff --git a/guix/packages.go.134WZR b/guix/packages.go.134WZR new file mode 100644 index 000000000..e69de29bb diff --git a/guix/packages.scm b/guix/packages.scm index b5c0b6044..38e6344bf 100644 =2D-- a/guix/packages.scm +++ b/guix/packages.scm @@ -388,10 +388,11 @@ object." (define-condition-type &package-cross-build-system-error &package-error package-cross-build-system-error?) =20 =2D =2D(define (package-full-name package) =2D "Return the full name of PACKAGE--i.e., `NAME-VERSION'." =2D (string-append (package-name package) "-" (package-version package))) +(define* (package-full-name package #:key (delimiter "@")) + "Return the full name of PACKAGE--i.e., `NAME@VERSION'. By specifying +DELIMITER (a string), you can customize what will appear between the name = and +the version. By default, DELIMITER is \"@\"." + (string-append (package-name package) delimiter (package-version package= ))) =20 (define (%standard-patch-inputs) (let* ((canonical (module-ref (resolve-interface '(gnu packages base)) @@ -935,6 +936,10 @@ and return it." (($ name version source build-system args inputs propagated-inputs native-inputs self-native-input? outputs) + ;; Even though we prefer to use "@" to separate the package + ;; name from the package version in various user-facing par= ts + ;; of Guix, checkStoreName (in nix/libstore/store-api.cc) + ;; prohibits the use of "@", so use "-" instead. (or (make-bag build-system (string-append name "-" version) #:system system #:target target diff --git a/tests/graph.scm b/tests/graph.scm index 5faa19298..a2941056d 100644 =2D-- a/tests/graph.scm +++ b/tests/graph.scm @@ -134,7 +134,8 @@ edges." (map (lambda (destination) (list "p-0.drv" (string-append =2D (package-full-name destination) + (package-full-name destination + #:delimiter "-") ".drv"))) implicit))))))) =20 diff --git a/tests/profiles.scm b/tests/profiles.scm index 92eb08cb9..218bf5f8a 100644 =2D-- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -242,8 +242,9 @@ #:hooks '() #:locales? #t #:target target))) =2D (define (find-input name) =2D (let ((name (string-append name ".drv"))) + (define (find-input package) + (let ((name (string-append (package-full-name package #:delimiter "-= ") + ".drv"))) (any (lambda (input) (let ((input (derivation-input-path input))) (and (string-suffix? name input) input))) @@ -252,12 +253,11 @@ ;; The inputs for grep and sed should be cross-build derivations, but = that ;; for the glibc-utf8-locales should be a native build. (return (and (string=3D? (derivation-system drv) (%current-system)) =2D (string=3D? (find-input (package-full-name packages:gre= p)) + (string=3D? (find-input packages:grep) (derivation-file-name grep)) =2D (string=3D? (find-input (package-full-name packages:sed= )) + (string=3D? (find-input packages:sed) (derivation-file-name sed)) =2D (string=3D? (find-input =2D (package-full-name packages:glibc-utf8-local= es)) + (string=3D? (find-input packages:glibc-utf8-locales) (derivation-file-name locales)))))) =20 (test-assert "package->manifest-entry defaults to \"out\"" =2D-=20 2.17.0 --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEy/WXVcvn5+/vGD+x3UCaFdgiRp0FAlrNkfMACgkQ3UCaFdgi Rp2Oaw//c7DYaxpsGoi8qXiFGlz7Cic6qiQ/yDguqPlQUdioYuAdy8M5lp7eYHlR ZMGIjYqoLV/InYLWmABKquA5CXm8wxMIkgdx2UspAHKg0iWlNJ4BUNvK6p8ecDsc eA39t/Erxij6hLjPEAyCmwAyAY0lfe0jy342RArrzogRcS7aXGHuDxB2T9kzR8qN dHVW39iItaG8W6m6fidJli7Q3ki2o+qaRIDLNVNLsO6g3uF9Ep0vN5neWCbkNWdS cx+ujW9vw/d+7tqr4QcwbGQK4BbVVBbZZFSiUwKHzM3G2zCnWRpwyPmN4L3AVQHv r2i0wXAWyYlVuTOOKIdpjyJj99FTnzZD5mPnKzPiOLbTkD40288uT59B17NVd41F L5V5YPK/tFD/uwE4QaknRxGfAn7XycnL1JEZl0Hqf7tG2mmCt+plZnA+zQs8tLw9 yt3Me/tkFIHL8/JYSXkZUCXX89ptpSo4bWn+0U0bnpkmKuhL98jGw8svc5uH+MSH RzJLtcP3ZeqY1H5LWZDhpLMqKUXjaKZeLWxri488/qM6fC1l4NaTnaC84O0gP1hT LfLybObL2TabijXGf1o1NusDVlmGfK9MC8B3DG/b9PSsSgtM1YMwZq0KSDQidd45 aJXkWqqW6a4P7q3q7jHb91nMLJCu3Y1neduavufAr1SeKq44meE= =OJy6 -----END PGP SIGNATURE----- --==-=-=--