Package names with digits following dashes

  • Done
  • quality assurance status badge
Details
8 participants
  • Alex Kost
  • Andreas Enge
  • carl hansen
  • Christopher Allan Webber
  • Efraim Flashner
  • Leo Famulari
  • Ludovic Courtès
  • Mathieu Lirzin
Owner
unassigned
Submitted by
Andreas Enge
Severity
normal

Debbugs page

A
A
Andreas Enge wrote on 29 Nov 2014 12:31
(address . bug-guix@gnu.org)
20141129203122.GA15720@debian
Trying to rename the font-adobe100dpi package to font-adobe-100dpi
(which is the correct name given our font conventions and even before),
I noticed the following problem:
guix build font-adobe-100dpi
looks in vain for a version 100dpi of the package named font-adobe.
The problem only occurs with digits following the dash; font-adobe-xdpi
would work.

I think we need a more sophisticated mechanism for separating package names
and versions, such as this:
- Try the compete string as a package name.
- If it does not exist, treat the part after the last dash as a version and
the part before the last dash as the name.

One could continue recursively to the second to last dash and so on, but
I think it would be easier to prohibit dashes as part of version names.

Andreas
L
L
Ludovic Courtès wrote on 6 Dec 2014 15:38
(name . Andreas Enge)(address . andreas@enge.fr)
87ppbws61p.fsf@gnu.org
tag 19219 patch
thanks

Andreas Enge <andreas@enge.fr> skribis:

Toggle quote (6 lines)
> I think we need a more sophisticated mechanism for separating package names
> and versions, such as this:
> - Try the compete string as a package name.
> - If it does not exist, treat the part after the last dash as a version and
> the part before the last dash as the name.

Attached is the beginning of a patch to do that.

However, there are users of ‘package-specification->name+version+output’
that still need to be adjusted, such as Emacs (in guix-main.scm.) Also,
the responsibility of trying NAME-VERSION is on each caller, which is
not really satisfying.

I’ll ponder it some more. Suggestions welcome.

Thanks,
Ludo’.
Toggle diff (80 lines)
diff --git a/gnu/packages.scm b/gnu/packages.scm
index c9efd0d..25f1221 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -370,19 +370,24 @@ but ~a is available upstream~%")
"Return a package matching SPEC. SPEC may be a package name, or a package
name followed by a hyphen and a version number. If the version number is not
present, return the preferred newest version."
- (let-values (((name version)
- (package-name->name+version spec)))
+ (define (lookup name version)
(match (find-best-packages-by-name name version)
- ((p) ; one match
+ ((p) ;one match
p)
- ((p x ...) ; several matches
+ ((p x ...) ;several matches
(warning (_ "ambiguous package specification `~a'~%") spec)
(warning (_ "choosing ~a from ~a~%")
(package-full-name p)
(location->string (package-location p)))
p)
- (_ ; no matches
- (if version
- (leave (_ "~A: package not found for version ~a~%")
- name version)
- (leave (_ "~A: unknown package~%") name))))))
+ (_ ;no matches
+ #f)))
+
+ (let-values (((name version)
+ (package-name->name+version spec)))
+ (or (lookup name version)
+ (if version
+ (or (lookup spec #f)
+ (leave (_ "~A: package not found for version ~a~%")
+ name version))
+ (leave (_ "~A: unknown package~%") name)))))
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 21dc66c..ae11ee2 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -296,8 +296,7 @@ version; if SPEC does not specify an output, return OUTPUT."
(package-full-name p)
sub-drv)))
- (let-values (((name version sub-drv)
- (package-specification->name+version+output spec output)))
+ (define (lookup name version sub-drv)
(match (find-best-packages-by-name name version)
((p)
(values p (ensure-output p sub-drv)))
@@ -309,7 +308,26 @@ version; if SPEC does not specify an output, return OUTPUT."
(location->string (package-location p)))
(values p (ensure-output p sub-drv)))
(()
- (leave (_ "~a: package not found~%") spec)))))
+ (values #f #f))))
+
+ (define (fail)
+ (leave (_ "~a: package not found~%") spec))
+
+ (let-values (((name version sub-drv)
+ (package-specification->name+version+output spec output)))
+ (let-values (((package output) (lookup name version sub-drv)))
+ (cond
+ ((package? package)
+ (values package output))
+ (version
+ (let-values (((package output)
+ (lookup (string-append name "-" version) #f
+ sub-drv)))
+ (if package
+ (values package output)
+ (fail))))
+ (else
+ (fail))))))
(define (upgradeable? name current-version current-path)
"Return #t if there's a version of package NAME newer than CURRENT-VERSION,
M
M
Mathieu Lirzin wrote on 8 Dec 2015 10:42
(name . Ludovic Courtès)(address . ludo@gnu.org)
874mfssrxd.fsf@gnu.org
Hi,

ludo@gnu.org (Ludovic Courtès) writes:

Toggle quote (17 lines)
> Andreas Enge <andreas@enge.fr> skribis:
>
>> I think we need a more sophisticated mechanism for separating package names
>> and versions, such as this:
>> - Try the compete string as a package name.
>> - If it does not exist, treat the part after the last dash as a version and
>> the part before the last dash as the name.
>
> Attached is the beginning of a patch to do that.
>
> However, there are users of ‘package-specification->name+version+output’
> that still need to be adjusted, such as Emacs (in guix-main.scm.) Also,
> the responsibility of trying NAME-VERSION is on each caller, which is
> not really satisfying.
>
> I’ll ponder it some more. Suggestions welcome.

I had the same issue when trying to create a package named
'rxvt-unicode-256-color'. I have tried to fix
‘package-name->name+version’ by matching the last hyphen and check if
the next character is a number.
From 1c7d036cc7ef310bc57bbde490d41b12d01f38a4 Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@gnu.org>
Date: Mon, 7 Dec 2015 05:20:08 +0100
Subject: [PATCH] PRELIM: utils: Fix version detection.

---
guix/build/utils.scm | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)

Toggle diff (45 lines)
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index e3f9edc..717c88b 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -100,25 +100,28 @@ is typically a \"PACKAGE-VERSION\" string."
(+ 34 (string-length (%store-directory)))))
(define (package-name->name+version name)
- "Given NAME, a package name like \"foo-0.9.1b\", return two values:
-\"foo\" and \"0.9.1b\". When the version part is unavailable, NAME and
-#f are returned. The first hyphen followed by a digit is considered to
-introduce the version part."
+ "Given NAME, a package name like \"foo-0.9.1b\", return two values: \"foo\"
+and \"0.9.1b\". When the version part is unavailable, NAME and #f are
+returned. The last hyphen followed by some digits is considered to introduce
+the version part."
;; See also `DrvName' in Nix.
(define number?
(cut char-set-contains? char-set:digit <>))
- (let loop ((chars (string->list name))
- (prefix '()))
+ (let loop ((chars (reverse (string->list name)))
+ (suffix '()))
(match chars
(()
(values name #f))
- ((#\- (? number? n) rest ...)
- (values (list->string (reverse prefix))
- (list->string (cons n rest))))
+ ((#\- rest ...)
+ (match suffix
+ (((? number? s1) s2 ...)
+ (values (list->string (reverse rest))
+ (list->string suffix)))
+ (_ (values name #f))))
((head tail ...)
- (loop tail (cons head prefix))))))
+ (loop tail (cons head suffix))))))
(define parallel-job-count
;; Number of processes to be passed next to GNU Make's `-j' argument.
--
2.6.3
The result was a fail attempt to rebuild the earth:

Toggle snippet (280 lines)
mthl@godel:~/src/gnu/guix$ ./pre-inst-env guix build -K rxvt-unicode-256-color
substitute: updating list of substitutes from 'http://hydra.gnu.org'... 100.0%
Les dérivations suivantes seront compilées:
/gnu/store/b3zv46ini53j6icpnzmd17shky4fx6b5-rxvt-unicode-256-color-9.21.drv
/gnu/store/8j2csyqy2f74cnq59lw78hk1l3ag36ah-expat-2.1.0.tar.xz.drv
/gnu/store/5rnsqky3a8kmz3zgvj16pmvmazf23223-libxml2-2.9.2.tar.xz.drv
/gnu/store/3r4djy1y1lq0pa8war89ahvmar5y5azj-libgpg-error-1.19.drv
/gnu/store/akah1zs8pxwafwzbpq4c6v0l009n4a92-libgcrypt-1.6.3.drv
/gnu/store/c2k690cnfi31vh7gfjcq773anigl37my-libxml2-2.9.2.drv
/gnu/store/kjk3dq19pazvnhmlv6259ln6mhhqlm03-libxslt-1.1.28.tar.xz.drv
/gnu/store/hxmgd3z01xnk1jvfsldvlylcvl7gmgy4-openssl-1.0.2d.tar.xz.drv
/gnu/store/gwm6hzyhc8y5jyqja46nz1ab17lbvy8i-zlib-1.2.7.drv
/gnu/store/rj28q5fw37v6qhcbwryq1k6bi2qr2z6s-Python-3.4.3.tar.xz.drv
/gnu/store/zad1p8j5jabvq6acvaa4bp8s8bb9nlhq-openssl-1.0.2d.drv
/gnu/store/2vzrshxnzasfv6vjkjj1x1qravf51cg3-python-minimal-3.4.3.drv
/gnu/store/8w4v18895iiikjk4xb55d4mbwq655ix3-xcb-proto-1.11.drv
/gnu/store/d6dpq3jnchbhmsal9s6vifg794lspbs1-python-wrapper-3.4.3.drv
/gnu/store/skk30najhll63385vdzk9s5x8kkcajpb-libxslt-1.1.28.drv
/gnu/store/phy9xyxcanmwksgmlj8xi8swwdazrq2r-gs-fonts-8.11.drv
/gnu/store/afxqxpg7yldx5mrsrp73r190sfxiqafj-inputproto-2.3.1.drv
/gnu/store/b7f6jzqvmkn3chwbq1i95ph4cvzslcwv-xtrans-1.3.5.drv
/gnu/store/r00m0yki2b1xmf4xz43my107gxj7yrvw-xextproto-7.3.0.drv
/gnu/store/xdj2iys20pwdayyw3lvjchxaqccj3gi9-gzip-1.6.drv
/gnu/store/qjvjxmi84rmfn5mvjbhpbh10q24brani-gettext-boot0-0.19.6.drv
/gnu/store/6jrzlx643a8y3rlwbdlfzsqv3ayjy3y7-indent-2.2.10.drv
/gnu/store/lc89xky5bx2liji5kra8nyapgv3phzvr-flex-2.5.37.tar.xz.drv
/gnu/store/rwd3q7966g2x2ylhlvrsk6sdjnj6h532-bison-2.7.1.drv
/gnu/store/1bsm9z6lkl4gbmp1yd4xhqmrj5lfwhf0-perl-5.16.1.drv
/gnu/store/r1x13yyjfzgk19y033lvlansb61qsavg-flex-2.5.37.drv
/gnu/store/38vb3w7jzz7cvyrgygna1p4kzbrkm5fw-m4-1.4.17.drv
/gnu/store/8ckg52fggmd7c4lf2bv3gxa2z201sf02-bison-3.0.4.drv
/gnu/store/n6gvf7c4z05y3ia3jqsrz9j29n1infky-readline-6.3.drv
/gnu/store/yf64y8g7zbjjlcrls120d2ncbg03g8a9-ncurses-6.0.drv
/gnu/store/6wxpvmlb7g4haf37280l6bdiqsbz8php-pkg-config-0.28.drv
/gnu/store/7g5a05072khdrr67mb9rc8f2s7rra9sp-expat-2.1.0.tar.xz.drv
/gnu/store/hgjsmx0yv25zpnwkm7yvjhn1zlfawx43-expat-2.1.0.drv
/gnu/store/2k5lh7m8vixhysq8afg50bs7pl0jv5py-attr-2.4.46.drv
/gnu/store/aa30r852nlzqy8wqklykhbda4svpyij5-acl-2.2.52.src.tar.xz.drv
/gnu/store/kg0rgja7vi01v4p9hgahpdrxsqryzzwk-gettext-0.19.6.drv
/gnu/store/c7rafddhbi8shfjd14c7cv0y1jdncaaj-m4-1.4.17.drv
/gnu/store/a37vf710ygdv2jaq63xghih6mryxpm35-gmp-6.0.0a.drv
/gnu/store/j39dnpislqll7g8x739qslkjlbbl77w4-perl-5.16.1.drv
/gnu/store/kk9dj99mql89f4h45zmkdnpvsh7c2amb-coreutils-8.24.tar.xz.drv
/gnu/store/s6gbc9n2if8b0yqp8w94x2va2ygza45i-acl-2.2.52.drv
/gnu/store/w9lib8z4lyk1f2aa9nh6vf3m1429vw7v-libcap-2.24.drv
/gnu/store/n1g3mm81i2z51z580dk45xkadd9y30wh-grep-2.21.tar.xz.drv
/gnu/store/bjlrn0a9q6653kvsdzqi44hzgdja42g1-libsigsegv-2.10.drv
/gnu/store/ky6mn000zxnbbwacwlxnmpirbwcj5dym-sed-4.2.2.tar.xz.drv
/gnu/store/gmjanqpb0b1s65ai7b5lr4iz1im2pbr7-lzip-1.16.drv
/gnu/store/19mxk6s5p4g1cxfvqk8z3c9292b7kxqj-patch-2.7.5.tar.xz.drv
/gnu/store/q3dfm50qilm8k9yhlpac6jf8my78phz6-ed-1.12.drv
/gnu/store/d43c38p9ljs33i0dpn43n49mzll6x60g-module-import.drv
/gnu/store/lxhw0rjdgl4h74301nmjing5zysysbyg-module-import-compiled.drv
/gnu/store/r9cc4rd5li8qiwjrn3b04dymz21zclb5-gzip-1.6.drv
/gnu/store/crzjkm3vjj4v1lqwr8k9c6xp2r14hgp7-tar-1.28.tar.xz.drv
/gnu/store/rsfvqnws7xbydjzv90iyb9di9pk46g3l-glibc-utf8-locales-2.22.drv
/gnu/store/cbf1skg1cr005xj9d17396pviaprv988-module-import-compiled.drv
/gnu/store/pplcmjbzbr93wdzd8y4brwf2bi02sdl0-module-import.drv
/gnu/store/80b5ka2vw78lfa1pk12j9mscnm6f099k-perl-5.16.1.tar.xz.drv
/gnu/store/qz9c8h7mvzbsfk73i2kwjvzqbp29c6n9-libatomic-ops-7.4.2.drv
/gnu/store/mh4zp5ryvlhfwr5sd8jawyrzi2r0gxaz-m4-1.4.17.drv
/gnu/store/h8przrpw0gzfj4a2plnsg757pady3j98-readline-6.3.tar.xz.drv
/gnu/store/5m4irwifpwxqhp6ljcbrvvpmxscwrzz3-make-4.1.tar.xz.drv
/gnu/store/55ckmn7ya4askz4b5q0a2c54x1fb6l5n-findutils-4.4.2.tar.xz.drv
/gnu/store/wlxsp7z8ahknh2wyyx62wf684az3hd8s-glibc-2.22.tar.xz.drv
/gnu/store/dcfksz0an9yd6ypdms4nf5v2vcn8flm0-perl-5.16.1.drv
/gnu/store/a9biqnpx060j6nmii4csisa5lnq16slr-bison-3.0.4.drv
/gnu/store/h9ssvwdrl03dg8cxm928xdlxfj6vyw63-m4-1.4.17.drv
/gnu/store/i6b01h7rgd7zgvzzak2rpahkjahzf8vv-bash-4.3.tar.xz.drv
/gnu/store/k2w5c6pc53ddwv9rn10gwsn9in89jka7-gcc-cross-boot0-wrapped-4.9.3.drv
/gnu/store/n1nkh6sq52mcs9k6wxilbb7288rn9vrk-glibc-intermediate-2.22.drv
/gnu/store/i9wk20fhfqg6n7lxdazqn58q0068jnyz-gcc-cross-boot0-4.9.3.drv
/gnu/store/v2lgka9vxb4qn55l6w189f82c1piwj3h-perl-5.16.1.tar.xz.drv
/gnu/store/akz50ri34dp81iwhjsng2sifbawd9hv5-xz-5.0.4.drv
/gnu/store/x8zyvgd77cg1bz5hnd18kqvc6djlv5zk-perl-5.16.1.drv
/gnu/store/1s7fn2gpfp0ag5igqlxspqdicn2q72yj-texinfo-6.0.drv
/gnu/store/8lk4w91vy5icmjgcdmbpm8p1h77gmadm-gcc-cross-boot0-wrapped-4.9.3.drv
/gnu/store/8p2rmf7w2azh3px6sdc7gjhiial9i9v9-gcc-4.9.3.tar.xz.drv
/gnu/store/sir4zzx412sks2fgsh3c0y583hiyfhkx-bash-static-4.3.39.drv
/gnu/store/xivdnbs9prqs523zlv5my9w2k13g5cbp-libstdc++-4.9.3.drv
/gnu/store/xxprcifxw1wk6mxhnvrxrv6k7r8zgsgf-gmp-6.0.0a.tar.xz.drv
/gnu/store/84ada1zdrs1z91z6v9z5xj22slam4nxc-module-import-compiled.drv
/gnu/store/8aad5ydzh1hx9dr18yws360qjdqjc4cx-module-import.drv
/gnu/store/35al8r8431zkc933rrxd0l6d1db8xnfs-binutils-bootstrap-0.drv
/gnu/store/7q4xn8c1s10wsl358swh2356ag84a7y0-glibc-bootstrap-0.drv
/gnu/store/i19jihpa9hv5lmpq5h7bgd9505m8srbx-gcc-bootstrap-0.drv
/gnu/store/inviyrvi0jkv4fl6czydvabv6b1nj0p5-binutils-2.25.1.tar.xz.drv
/gnu/store/4qh015x4x9xf2l3n5di2wh9qdd70xqgd-module-import-compiled.drv
/gnu/store/dfa4293g2n8nw4a8dm8v85g0b63qzwml-module-import.drv
/gnu/store/6g5v8hb5j615d2350mjqlgmpy4nriqsl-pkg-config-0.28.drv
/gnu/store/8h8md6x1rlhlz8cmvz8g2zcp2j45j8la-guile-2.0.11.tar.xz.drv
/gnu/store/ala9ppkdm09dix70x69cqlyww24szpq8-binutils-cross-boot0-2.25.1.drv
/gnu/store/csc18bnkscl0qaajz292wcjm5mwkbzy4-gcc-4.9.3.drv
/gnu/store/dahin5amv1rsbcsd2k1rck08xwrf89gd-findutils-4.4.2.drv
/gnu/store/fsankw4x5fp1kkvhdrpf7xhnsm2srsdd-make-boot0-4.1.drv
/gnu/store/h8i287b81pbs9bssh4c6ad2v51vq1ch7-libffi-3.1.drv
/gnu/store/h8z1dgs0fdsfkk8xks6v58z4xz5k55z5-diffutils-3.3.drv
/gnu/store/j17h8n2qby0q70wrwpkkvm24c8dcxnld-module-import.drv
/gnu/store/j8414pfdiqfkbkpfwk4ip0cavld35kmp-file-5.22.drv
/gnu/store/m31wanlfgirmvq2kw8rj1wb7pxxfps6w-libltdl-2.4.6.drv
/gnu/store/mj4ahd71l08ypjvg6qawf3hbfc3vnnwp-readline-6.3.drv
/gnu/store/msi8i2348n5khwvyxr72hq5nnfbkwj3g-module-import-compiled.drv
/gnu/store/n0fayygdvrjlzfxv4mqsm9924pbbn86c-gmp-6.0.0a.drv
/gnu/store/nzh0a8l2n7wif1n0wy2q5ixp7pxy65l2-bootstrap-binaries-0.drv
/gnu/store/p30px7xm9v2ha8gv80n9kpz2gqkqgkp2-ld-wrapper-boot3-0.drv
/gnu/store/wzl21wm81q0l2583dbzg60jwaqa41q68-ncurses-6.0.drv
/gnu/store/xaxrm0c4ha5wdhgy1imdfsc4y3d5fjsq-libgc-7.4.2.drv
/gnu/store/ym66xj2s2wi5sy555b1ppr41n1n6y741-libunistring-0.9.6.drv
/gnu/store/6ckhnjkrk0w8ivsqqn650p9nvqmlw39i-guile-2.0.11.drv
/gnu/store/m7r4syanb98yyf83pzw8s7wkb1689myy-ncurses-6.0.drv
/gnu/store/kkx13lmrpsxc36b030ljpqf46297zl5c-perl-5.16.1.drv
/gnu/store/8dhrvqri54bifzjp0b8lcsjsnn7wmxxr-pkg-config-0.28.drv
/gnu/store/dy9v8sl8cq8q34567l4dn4dq6p67mxxc-tar-1.28.drv
/gnu/store/zhyxhq3c0cl9wh0dy9253ks6jmsrbhhk-gzip-1.6.drv
/gnu/store/pnv38sskq3qm9i11cps3plnnfkf6kx14-bzip2-1.0.6.drv
/gnu/store/7myf60idmlwx95qqfl0wk2vvg0n71mdy-xz-5.0.4.drv
/gnu/store/c1ch9jzrj0vrgwnf56wgmp0mw81067li-file-5.22.drv
/gnu/store/6vxs9vpakdi4h2sdwmmlsis3w83z596i-diffutils-3.3.drv
/gnu/store/zwjkymgzvlvq1mqbjpcwjbkv7jms190g-patch-2.7.5.drv
/gnu/store/qj1rsdcc5i2n91gzllg3d1r2apcagp4f-sed-4.2.2.drv
/gnu/store/d6s931cp43pdppgl8c7mpnbm3ag2w82i-findutils-4.4.2.drv
/gnu/store/1z5pqvkd66dwwm9yi8zw1s5x7v508pjj-gawk-4.1.3.drv
/gnu/store/7qgfzpmiwln3hwcpz6hy0yzad7w4vaq3-grep-2.21.drv
/gnu/store/4fv98wlv58gr5zkxzsszc4ndq5hdwvv5-coreutils-8.24.drv
/gnu/store/is5gkglsyczqi45x3719211wd48cij96-make-4.1.drv
/gnu/store/vkr0r05w07p5jn80gz1hfph0flpv3abv-bash-4.3.39.drv
/gnu/store/jb7bcsnis9s383zx6rpvqhkvvzghys6v-ld-wrapper-0.drv
/gnu/store/7y1gii2cpaa5rzgb01nzvpms4vghfvzh-binutils-2.25.1.drv
/gnu/store/i9j2q1w8gkx2z2cpc4d06zb4j1ba07fk-gcc-4.9.3.drv
/gnu/store/dsq7i94k4xn0igj1hwkrd6lbplj8sbgv-glibc-2.22.drv
/gnu/store/sl680k0ijx0hi7ixn40yac0csr503bbs-glibc-utf8-locales-2.22.drv
/gnu/store/9wm00w0052rlsz3d3wd5v7vfwviwp08h-libxft-2.3.2.drv
/gnu/store/ic4w7yfma7hz6ypakgb7iinb465rr3lp-libx11-1.6.2.drv
/gnu/store/1y8szkj0vnj3pk4w1wzgj8gw63r4r4wk-linux-libre-headers-3.14.37.drv
/gnu/store/8dnmcd8lcgwgkih23xv46ijd9hgh9v8s-fontconfig-2.11.94.drv
/gnu/store/q4mzadajz948qh37aazhadn3x6127sr3-freetype-2.6.drv
/gnu/store/xrr4yga4vl2kkmxiyja4wk7zz6limwr6-libxrender-0.9.8.drv
/gnu/store/4b2gpjs9aqhaic8lc4798xrijsfmb5lq-libxcb-1.11.drv
/gnu/store/29zrb2dcfnr5h61msxjyk052a8wi6zj9-kbproto-1.0.6.drv
/gnu/store/b3c76cv2wmdipamssfhiw3r253763ix7-expat-2.1.0.drv
/gnu/store/1465cclkh3c8sc8bsdsy1gnm29n9sad0-renderproto-0.11.1.drv
/gnu/store/7q49x70vdy4kgqqkqplrzwf1nvb90mxl-libxdmcp-1.1.1.drv
/gnu/store/4b2x996m3gdx1gs01d2diqm2dmdfz4ab-libxau-1.0.8.drv
/gnu/store/ih5n2vy79kfx079phhh746yymzqv7d0p-libpthread-stubs-0.3.drv
/gnu/store/5x33jkr6gjq3jh9rzm0i6jlgmbn4dj66-xproto-7.0.26.drv
/gnu/store/cknx55i004zpiy08lyf77gylsv22ypil-util-macros-1.19.0.drv
/gnu/store/p48nn50r5zxwanhivwhjflri1lkvhzd0-module-import.drv
/gnu/store/ly68jp4xnwkxhm819ziwhn8x9z11lvxx-module-import-compiled.drv
Les fichiers suivants seront téléchargés:
/gnu/store/3h4krhn4k2dm6bxh8p2l1hqbaab1li69-util-macros-1.19.0.tar.bz2
/gnu/store/x1gj4kzwmsi3r34bsmymhb71fwdw7naq-xproto-7.0.26.tar.bz2
/gnu/store/1xyi1l5n53mvx6ad1iy71fj6z0i4cbl9-libpthread-stubs-0.3.tar.bz2
/gnu/store/wlhqy843wnd73znkahpix7p44krcsydy-libXau-1.0.8.tar.bz2
/gnu/store/nn0gc6bljmp5z9q87h0zx62lx4r6af0n-libXdmcp-1.1.1.tar.bz2
/gnu/store/7xy8zihsgr8ilzrw2n3dyai58wpkrir1-renderproto-0.11.1.tar.bz2
/gnu/store/n3n1w8avlc41qgy886sxhdkk6lamipvk-expat-2.1.0.tar.gz
/gnu/store/4kvacx6lvdr7jpzm65g1qn0sqm822z41-kbproto-1.0.6.tar.bz2
/gnu/store/4gqp60hijd53j1nl0ybsbq8kw5b6f2wr-libxslt-1.1.28.tar.gz
/gnu/store/d35cqram5gh8h6nr8qb09y6kpaqn9n3b-libxml2-2.9.2.tar.gz
/gnu/store/dhpnla367mpj5pycd7kglgbyrjxsdx70-libgcrypt-1.6.3.tar.bz2
/gnu/store/1hm09ywaa8s3qli067jqd1rkh4431411-libgpg-error-1.19.tar.bz2
/gnu/store/hwcxisl3njd8nnmnn0rrrn5qr2ixy8d5-xcb-proto-1.11.tar.bz2
/gnu/store/07g62p2a5q8ppx4q9h5jwhri1gck5lyf-openssl-1.0.2d.tar.gz
/gnu/store/gbjq0sxwzh9z1hna7h1c8d1b1b85py06-Python-3.4.3.tar.xz
/gnu/store/gpvn3cp4h885hlxpl5qnjgfs25vcs1w6-zlib-1.2.7.tar.gz
/gnu/store/3jch0bhr64c8lm1y6ap385p4hggxq2r8-libxcb-1.11.tar.bz2
/gnu/store/za9s0pjy549hdns5qr0ryn7lj9fyfiac-libXrender-0.9.8.tar.bz2
/gnu/store/fv9ikikgqfc6w9nmc8q3jl77g1ap6422-freetype-2.6.tar.bz2
/gnu/store/z483nc9b6w9h261w7wqq8mc6p7pvwldk-ghostscript-fonts-std-8.11.tar.gz
/gnu/store/v55hic2g257hk2bc5bmr9abslf649pc0-fontconfig-2.11.94.tar.bz2
/gnu/store/c2qv2apxw7bi3m5yazaqglgdigibnqhx-linux-libre-3.14.37-gnu.tar.xz
/gnu/store/aiz8db2gni401wc9fgidmcggxyb1czis-guile-bootstrap-2.0
/gnu/store/4mg0b0b7wf6alrfikfnx57dpz0glrbl7-xextproto-7.3.0.tar.bz2
/gnu/store/p2a6rhji41izw40kss4w742n5cna676c-xtrans-1.3.5.tar.bz2
/gnu/store/0qwbgz4r19hzx4zgjmfgalzzsii8i1b5-inputproto-2.3.1.tar.bz2
/gnu/store/rmskwi5cla09bk1aba67d8h2d9kbj3ky-libX11-1.6.2.tar.bz2
/gnu/store/anyv7kids1cfm962f8s1mk17qv8y2b0d-libXft-2.3.2.tar.bz2
/gnu/store/c6573fmbld9z293sl7ycdmllw2h8526z-gzip-1.6.tar.gz
/gnu/store/gb93yglsw38knxm21ryv1n6jcxmq6rq5-gettext-0.19.6.tar.gz
/gnu/store/s5nw83vs8n22df0fxcqa6babdfyc1r84-mpfr-3.1.3.tar.xz
/gnu/store/y9akh452n3p4w2v631nj0injx7y0d68x-mpc-1.0.3.tar.gz
/gnu/store/1i515s240fqpzgigakdbkidnxgkgnldl-bison-2.7.1.tar.xz
/gnu/store/9c9mmx7i1xk81rrgmb3m1r1xdp1plhf9-flex-2.5.37.tar.bz2
/gnu/store/nvarny121kqi9kbmqn9nc4a50a4pwx6x-indent-2.2.10.tar.gz
/gnu/store/829bkhjp870l8xx3x5h4njw7836hrcnj-bison-3.0.4.tar.xz
/gnu/store/q6si4g7i42x18mmav1p61ih79kzjq56c-m4-1.4.17.tar.bz2
/gnu/store/n7hw4dgm9qh1ihhb13jf5a1ll0wgf6ns-pkg-config-0.28.tar.gz
/gnu/store/288vbaj26b5mijg1mlj6wail4v8fq2y1-libcap-2.24.tar.xz
/gnu/store/2x3b0w1cx9128p564s5iryp76yy4l8w0-acl-2.2.52.src.tar.gz
/gnu/store/y23pyisb22na45pjwflnysiy6vrbr1j0-attr-2.4.46.src.tar.gz
/gnu/store/zv4q2jj4frjqns7b4z416la3ifj7lb7q-coreutils-8.24.tar.xz
/gnu/store/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0
/gnu/store/7payzrwxn2jrpkpi28knv4zin94k5lrj-grep-2.21.tar.xz
/gnu/store/dwp927b6lvsdxv5816dnpix0645cr5kc-libsigsegv-2.10.tar.gz
/gnu/store/pzh4nvlv5wkfnxwcp9vck6d6q4mfrk8k-gawk-4.1.3.tar.xz
/gnu/store/k07kbclxbpc54m3pw6w105h13zd83rv6-sed-4.2.2.tar.bz2
/gnu/store/igs2ybsib115wkccwnidyr2cmlf4al6k-lzip-1.16.tar.gz
/gnu/store/f7zbx10dy9xa3alabxvr43mif9gg4yin-ed-1.12.tar.lz
/gnu/store/2rq0dh8mkzi8x02yh38j71vc4d1dcnbr-patch-2.7.5.tar.xz
/gnu/store/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gz
/gnu/store/0d7xnp3nji2mi4cw4jmd3mzbpija9a5a-xz-5.0.4.tar.gz
/gnu/store/nwp6jsg2bnd0cv756hv1v8pid3py8a3h-tar-1.28.tar.xz
/gnu/store/7dbskk7yv9vnpkm3qa44dy8sdxq334rn-perl-5.16.1.tar.gz
/gnu/store/v15vaq5yhkh294nd7ivxmdrxpj9rq0zp-libunistring-0.9.6.tar.gz
/gnu/store/15i7r667gvs6x753zbwik2kr8fi8y185-libatomic_ops-7.4.2.tar.gz
/gnu/store/dm2a2zpfpdrz7lks85ffm6pwa5mafl52-gc-7.4.2.tar.gz
/gnu/store/1k26zf7qsmg6pkaygi75xnxm2ga9ppdm-static-binaries.tar.xz
/gnu/store/1ibfp6q6431rd43xh54jw7hvglnh7zxx-readline-6.3.tar.gz
/gnu/store/sji2sqfh4x9b6vb9kp6qk0l5ci8h55h2-libtool-2.4.6.tar.xz
/gnu/store/nbbiv8hyn9nsiim5qrybbxffn5yl4wv9-libffi-3.1.tar.gz
/gnu/store/sahl359ai78ci7rg2pbmlvfwq55xbpp9-make-4.1.tar.bz2
/gnu/store/yr1yb386zw4s4r8dwpap9mf47wwkrgkd-findutils-4.4.2.tar.gz
/gnu/store/ynwa5d9ghl29hwlxf1xckf12i52k6wy3-gmp-6.0.0a.tar.xz
/gnu/store/vvm8pcjgpxnhlqks6vnwp3sj97rhmsmg-glibc-2.22.tar.xz
/gnu/store/yca84ljyx56i31b7wmp700zcg3gn80p3-bash43-017
/gnu/store/h7ncblfv0dxk036cihxwqkymkz4vs7m3-bash43-001
/gnu/store/4x154ffbi3gwmy7xbv3f8igk9sz6f5d3-bash43-032
/gnu/store/69a8xk8a55rl8194lgpjcx6x5bh503af-bash43-015
/gnu/store/6qhx57w9kfqlsgg9fba911v7qlrrbq0h-bash43-018
/gnu/store/gakaqqn642zjw8shmkgn5nkrcssv3vif-bash43-010
/gnu/store/ir3kf45fqaa9bzlcid9l0z5fzl65jixl-bash43-035
/gnu/store/mnyx26pm6xqh75j0q2pwx60xm1cqmi5a-bash43-005
/gnu/store/bbn5p22mfq5w6mxngh9zgpjnngaydq6x-bash43-002
/gnu/store/7l63pzpgl07nhr2cn66vawxyf8wx07mz-bash43-024
/gnu/store/094plzy7v18kyll6xfyscl68l0vpvnim-bash43-003
/gnu/store/jxqhxa429pi68vwk8m2vn9g28wal90qn-bash43-007
/gnu/store/l8l9qcm6kzzsq3d3smml5is49y819sfp-bash43-036
/gnu/store/msc9i78392v4vblzfgyjaa0rghdm3mbr-bash43-039
/gnu/store/y633n120y8a8bbrw5a744hck6zsgwmak-bash43-008
/gnu/store/3mjnsrxpdmz1wkfng4hbig16x15sdq9q-bash43-019
/gnu/store/is65c16lyj34qpkk6ifqard9ihdv9r86-bash43-026
/gnu/store/ppvhn48d45m2p359q2a79nfqdmdz6jxx-bash43-034
/gnu/store/bff6vzimv62cwy6gsvqavf7paxsbplsr-bash43-014
/gnu/store/nvn3dw0467z6rx3a8070saixqkf1kgsf-bash43-033
/gnu/store/xb3ahhdxnj6mfwr5139qmrlswzvrk9m0-bash43-031
/gnu/store/axjfdnc45dwfipgj7ymm4gi3s4rn0g77-bash43-027
/gnu/store/2x8bg76lmjy2g39zj9z638k9riqscg9n-bash43-021
/gnu/store/c0x51s4ksl77i5a8vrns5fc9771injsx-bash43-020
/gnu/store/4ass5dmchxw2ycbk48gdm76p114ci420-bash43-022
/gnu/store/dk0gavi6l7a2pp21r0xaax1xgw2zm715-bash43-006
/gnu/store/fazrziwpk2xw6vdwifmj4km0aw0pinxh-bash43-012
/gnu/store/lq1hbdn1iyjpc25xxbqqpx7fnxnmbgmx-bash-4.3.tar.gz
/gnu/store/y83wjq69cap97z662kiv42bljjcm950g-bash43-037
/gnu/store/315kjv9dc6nff46v39sxlnqspxs7rvl0-bash43-011
/gnu/store/6arl6w972qwi7k384y5nf0pg00dsy5rl-bash43-028
/gnu/store/mm9nb1ywnlmg6n5yhknyxslrwqrimn1v-bash43-013
/gnu/store/igr9cd9bmfn376cll0q4jjfm796cg78b-bash43-023
/gnu/store/p2allvs8jbs832dgjhqkli0kjxb0k254-bash43-004
/gnu/store/njzjdmcbwd6dpifpz6p62gjdw9jbr11s-bash43-029
/gnu/store/pqfxx6jxlsdjh8hp6gnf1gj6n82g31rz-bash43-016
/gnu/store/p9aw6fjq71snp6sid226j8rb31izrs2m-bash43-009
/gnu/store/c442c68li24v8ix260sx3lv67vk5ygha-bash43-025
/gnu/store/9ga17ppi7xq7nvdsas2235da516j9ncv-bash43-030
/gnu/store/q4i2b6ggla06wf8n7jk2wczflpcq0734-bash43-038
/gnu/store/jwz7l0v8zp7hx2imvi496pasackmaigj-gcc-4.9.3.tar.bz2
/gnu/store/77pwki3c8chb2hisrncfg4kfyhn1z5f1-texinfo-6.0.tar.xz
/gnu/store/k78dz54pl07qawhhb7pzaf2qx6lwhjwp-binutils-2.25.1.tar.bz2
/gnu/store/ipzn49z81cvsgkg9pghcxvb8fsxk06i1-gcc-4.8.2.tar.xz
/gnu/store/3fjmnhbjvgmgyym3i6idv1vxv2grb8ki-glibc-2.18.tar.xz
/gnu/store/a62j9z64i667zi6c2g9xhm15pld6rnyz-binutils-2.23.2.tar.xz
/gnu/store/6bqdkvhgx50q3rrv7mnp1c2flx2jf5sf-guile-2.0.11.tar.xz
@ substituter-started /gnu/store/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gz /usr/local/libexec/guix/substitute

Found valid signature for /gnu/store/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gz
From http://hydra.gnu.org/nar/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gz
Downloading fpl50c…-file-5.22.tar.gz (716KiB installed)...
http://hydra.gnu.org/nar/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gz 67KiB/s 00:11 | 719KiB transferred
@ substituter-succeeded /gnu/store/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gz
@ substituter-started /gnu/store/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0 /usr/local/libexec/guix/substitute

Found valid signature for /gnu/store/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0
From http://hydra.gnu.org/nar/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0
Downloading hg3692…-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0 (4KiB installed)...
guix substitute: error: download from 'http://hydra.gnu.org/nar/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0' failed: 410, "Gone"
@ substituter-failed /gnu/store/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0 256 fetching path `/gnu/store/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0' failed with exit code 1
@ substituter-started /gnu/store/gbjq0sxwzh9z1hna7h1c8d1b1b85py06-Python-3.4.3.tar.xz /usr/local/libexec/guix/substitute
killing process 4603
guix build: error: build failed: some substitutes for the outputs of derivation `/gnu/store/q5yiqxnckc4krmcixqa34dx888ylks60-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0.drv' failed (usually happens due to networking issues); try `--fallback' to build derivation from source

I guess this is not the good angle...

Thanks,

--
Mathieu Lirzin
L
L
Ludovic Courtès wrote on 10 Dec 2015 05:36
(name . Mathieu Lirzin)(address . mthl@gnu.org)
87si3ah1d1.fsf@gnu.org
Mathieu Lirzin <mthl@gnu.org> skribis:

Toggle quote (5 lines)
> I had the same issue when trying to create a package named
> 'rxvt-unicode-256-color'. I have tried to fix
> ‘package-name->name+version’ by matching the last hyphen and check if
> the next character is a number.

Sounds like a reasonable approach (better than what I submitted), but we
would need test for the various corner cases. Could you augment the
test that’s in tests/utils.scm?

Toggle quote (2 lines)
> The result was a fail attempt to rebuild the earth:

This is because everything depends on (guix build utils).

But we’re right in time to make this change in ‘core-updates’.

Thanks!

Ludo’.
M
M
Mathieu Lirzin wrote on 21 Dec 2015 10:27
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 19219@debbugs.gnu.org)
87h9jblks4.fsf@gnu.org
ludo@gnu.org (Ludovic Courtès) writes:

Toggle quote (11 lines)
> Mathieu Lirzin <mthl@gnu.org> skribis:
>
>> I had the same issue when trying to create a package named
>> 'rxvt-unicode-256-color'. I have tried to fix
>> ‘package-name->name+version’ by matching the last hyphen and check if
>> the next character is a number.
>
> Sounds like a reasonable approach (better than what I submitted), but we
> would need test for the various corner cases. Could you augment the
> test that’s in tests/utils.scm?

The test case contains the example "guile-2.0.6.65-134c9" which
invalidates my proposal. Here is another idea which identifies the
version part by the presence of dots. WDYT?

--
Mathieu Lirzin
From 19d37ea3843d236a3e32127a724a712dba3c58db Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@gnu.org>
Date: Mon, 7 Dec 2015 05:20:08 +0100
Subject: [PATCH] utils: Improve 'package-name->name+version' version
detection.


* guix/build/utils.scm (package-name->name+version): Use a more generic
heuristic to detect version. Usage of digits in names is now possible.
* tests/utils.scm ("package-name->name+version"): Add some cases.
---
guix/build/utils.scm | 29 +++++++++++++++--------------
tests/utils.scm | 6 +++++-
2 files changed, 20 insertions(+), 15 deletions(-)

Toggle diff (64 lines)
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index e3f9edc..0ace2c7 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -100,25 +100,26 @@ is typically a \"PACKAGE-VERSION\" string."
(+ 34 (string-length (%store-directory)))))
(define (package-name->name+version name)
- "Given NAME, a package name like \"foo-0.9.1b\", return two values:
-\"foo\" and \"0.9.1b\". When the version part is unavailable, NAME and
-#f are returned. The first hyphen followed by a digit is considered to
-introduce the version part."
+ "Given NAME, a package name like \"foo-0.9.1b\", return two values: \"foo\"
+and \"0.9.1b\". When the version part is unavailable, NAME and #f are
+returned. The version part must contain a dot to be properly detected."
;; See also `DrvName' in Nix.
(define number?
(cut char-set-contains? char-set:digit <>))
- (let loop ((chars (string->list name))
- (prefix '()))
- (match chars
- (()
- (values name #f))
- ((#\- (? number? n) rest ...)
- (values (list->string (reverse prefix))
- (list->string (cons n rest))))
- ((head tail ...)
- (loop tail (cons head prefix))))))
+ (let ((lst (reverse (string->list name))))
+ (let loop ((chars lst) (suffix '()) (retry #t) (dots #f))
+ (match chars
+ (()
+ (values name #f))
+ ((#\- rest ...)
+ (cond (dots (values (list->string (reverse rest))
+ (list->string suffix)))
+ (retry (loop rest (cons #\- suffix) #f #f))
+ (else (values name #f))))
+ ((head tail ...)
+ (loop tail (cons head suffix) retry (or dots (char=? #\. head))))))))
(define parallel-job-count
;; Number of processes to be passed next to GNU Make's `-j' argument.
diff --git a/tests/utils.scm b/tests/utils.scm
index 04a859f..a7d8900 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -68,7 +68,11 @@
'(("foo" "0.9.1b")
("foo-bar" "1.0")
("foo-bar2" #f)
- ("guile" "2.0.6.65-134c9") ; as produced by `git-version-gen'
+ ("emacs" "24.5")
+ ("font-adobe-100-dpi" #f)
+ ("rxvt-unicode-256-color" "9.21")
+ ("guile" "2.0.6.65-134c9") ;as produced by Gnulib 'git-version-gen'
+ ("guile" "2.1.1.75-a147") ;and with a different hash
("nixpkgs" "1.0pre22125_a28fe19")
("gtk2" "2.38.0"))))
--
2.6.3
L
L
Ludovic Courtès wrote on 21 Dec 2015 13:46
(name . Mathieu Lirzin)(address . mthl@gnu.org)(address . 19219@debbugs.gnu.org)
87k2o7h3ux.fsf@gnu.org
Mathieu Lirzin <mthl@gnu.org> skribis:

Toggle quote (4 lines)
> The test case contains the example "guile-2.0.6.65-134c9" which
> invalidates my proposal. Here is another idea which identifies the
> version part by the presence of dots. WDYT?

Sometimes the version part does not contain dots, as in “diffoscope-34”.
Here’s the complete list of dot-less versions:

Toggle snippet (9 lines)
scheme@(guile-user)> ,use(gnu packages)
scheme@(guile-user)> (fold-packages (lambda (p r)
(if (string-index (package-version p) #\.)
r
(cons (package-full-name p) r)))
'())
$38 = ("xterm-320" "unclutter-8" "tidy-20091223" "perl-uri-find-20140709" "libx264-20150706-2245" "vapoursynth-28" "texlive-texmf-2015" "texlive-bin-2015" "texlive-2015" "scmutils-20140302" "perl-regexp-common-2013031301" "parallel-20151122" "diffoscope-34" "mg-20050429" "ngircd-22" "bootstrap-tarballs-0" "static-binaries-tarball-0" "usbutils-006" "kmod-17" "less-481" "libjpeg-9a" "libjpeg-8d" "hugs-Sep2006" "ghc-bifunctors-5" "ghc-nats-1" "brdf-explorer-17" "libgudev-230" "psutils-17" "gcal-4" "libspiro-20071029" "fontforge-20120731-b" "font-gnu-freefont-ttf-20100919" "pcb-20140316" "paredit-24" "sfarkxtc-b5e0a2ba39" "lz4-131" "ld-wrapper-0" "glibc-bootstrap-0" "gcc-bootstrap-0" "binutils-bootstrap-0" "bootstrap-binaries-0" "bless-1p02" "tzdata-2015c" "freepats-20060219" "acpica-20150410")

Would they still be suitably parsed?

I liked that the initial algorithm was trivial, as in Nix:

Toggle snippet (19 lines)
/* Parse a derivation name. The `name' part of a derivation name is
everything up to but not including the first dash *not* followed by
a letter. The `version' part is the rest (excluding the separating
dash). E.g., `apache-httpd-2.0.48' is parsed to (`apache-httpd',
'2.0.48'). */
DrvName::DrvName(const string & s) : hits(0)
{
name = fullName = s;
for (unsigned int i = 0; i < s.size(); ++i) {
/* !!! isalpha/isdigit are affected by the locale. */
if (s[i] == '-' && i + 1 < s.size() && !isalpha(s[i + 1])) {
name = string(s, 0, i);
version = string(s, i + 1);
break;
}
}
}

Another option would be to return a list of possible name version pairs,
and to change the UI to try them one after another? The downside would
be that it moves complexity to the UI. Hmm…

Ludo’.
M
M
Mathieu Lirzin wrote on 22 Dec 2015 13:23
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 19219@debbugs.gnu.org)
8737uu9pro.fsf@gnu.org
ludo@gnu.org (Ludovic Courtès) writes:

Toggle quote (9 lines)
> Mathieu Lirzin <mthl@gnu.org> skribis:
>
>> The test case contains the example "guile-2.0.6.65-134c9" which
>> invalidates my proposal. Here is another idea which identifies the
>> version part by the presence of dots. WDYT?
>
> Sometimes the version part does not contain dots, as in “diffoscope-34”.
> Here’s the complete list of dot-less versions:

Oops, I have totally overlooked that. I have blindly followed the
examples in the test case. Sorry about that.

Toggle quote (10 lines)
> scheme@(guile-user)> ,use(gnu packages)
> scheme@(guile-user)> (fold-packages (lambda (p r)
> (if (string-index (package-version p) #\.)
> r
> (cons (package-full-name p) r)))
> '())
> $38 = ("xterm-320" "unclutter-8" "tidy-20091223" "perl-uri-find-20140709" "libx264-20150706-2245" "vapoursynth-28" "texlive-texmf-2015" "texlive-bin-2015" "texlive-2015" "scmutils-20140302" "perl-regexp-common-2013031301" "parallel-20151122" "diffoscope-34" "mg-20050429" "ngircd-22" "bootstrap-tarballs-0" "static-binaries-tarball-0" "usbutils-006" "kmod-17" "less-481" "libjpeg-9a" "libjpeg-8d" "hugs-Sep2006" "ghc-bifunctors-5" "ghc-nats-1" "brdf-explorer-17" "libgudev-230" "psutils-17" "gcal-4" "libspiro-20071029" "fontforge-20120731-b" "font-gnu-freefont-ttf-20100919" "pcb-20140316" "paredit-24" "sfarkxtc-b5e0a2ba39" "lz4-131" "ld-wrapper-0" "glibc-bootstrap-0" "gcc-bootstrap-0" "binutils-bootstrap-0" "bootstrap-binaries-0" "bless-1p02" "tzdata-2015c" "freepats-20060219" "acpica-20150410")
>
> Would they still be suitably parsed?

Nope, we are screwed! :) There are too many combinaisons.

Toggle quote (2 lines)
> I liked that the initial algorithm was trivial, as in Nix:
>
[...]
Toggle quote (13 lines)
> DrvName::DrvName(const string & s) : hits(0)
> {
> name = fullName = s;
> for (unsigned int i = 0; i < s.size(); ++i) {
> /* !!! isalpha/isdigit are affected by the locale. */
> if (s[i] == '-' && i + 1 < s.size() && !isalpha(s[i + 1])) {
> name = string(s, 0, i);
> version = string(s, i + 1);
> break;
> }
> }
> }

Baahh.

In fact I think that having the same character for separating words and
version is a design flaw. This brings non desirable limitations when
choosing a package name (as shown in this bug report) and/or requires a
complex parsing algorithm. We could use a reserved character instead
(just like we do for multiple outputs). My proposition would be to have
':' for versions and '/' for outputs, like this:

guile:1.8/doc
xterm-256-color:320
emacs:24.5/out

WDYT?

Toggle quote (4 lines)
> Another option would be to return a list of possible name version pairs,
> and to change the UI to try them one after another? The downside would
> be that it moves complexity to the UI. Hmm…

This sounds like possible non-determinism, so it feels ugly. ;)

--
Mathieu Lirzin
A
A
Alex Kost wrote on 23 Dec 2015 00:05
(name . Mathieu Lirzin)(address . mthl@gnu.org)
87vb7pmvxb.fsf@gmail.com
Mathieu Lirzin (2015-12-23 00:23 +0300) wrote:

[...]
Toggle quote (3 lines)
> In fact I think that having the same character for separating words and
> version is a design flaw.

Wow, I didn't think about it before. And I totally agree!

Toggle quote (5 lines)
> This brings non desirable limitations when
> choosing a package name (as shown in this bug report) and/or requires a
> complex parsing algorithm. We could use a reserved character instead
> (just like we do for multiple outputs).

Great idea! I also think it would be a right decision to have different
separators for package name words, versions and outputs.

Toggle quote (9 lines)
> My proposition would be to have
> ':' for versions and '/' for outputs, like this:
>
> guile:1.8/doc
> xterm-256-color:320
> emacs:24.5/out
>
> WDYT?

The choice of the separator characters doesn't really matter I think. I
would prefer '_' and ':', i.e. 'emacs-foo-bar_24.5:out'.

--
Alex
L
L
Ludovic Courtès wrote on 30 Dec 2015 06:07
New command-line syntax for package + version?
(name . Mathieu Lirzin)(address . mthl@gnu.org)(address . 19219@debbugs.gnu.org)
87oad8vxkx.fsf_-_@gnu.org
Mathieu Lirzin <mthl@gnu.org> skribis:

Toggle quote (13 lines)
> In fact I think that having the same character for separating words and
> version is a design flaw. This brings non desirable limitations when
> choosing a package name (as shown in this bug report) and/or requires a
> complex parsing algorithm. We could use a reserved character instead
> (just like we do for multiple outputs). My proposition would be to have
> ':' for versions and '/' for outputs, like this:
>
> guile:1.8/doc
> xterm-256-color:320
> emacs:24.5/out
>
> WDYT?

I had to think a lot because that’s a big change (technically simple I
think, but it’s the change of UI and habits that’s bigger ;-)). I came
to the conclusion that it’s probably a necessary thing.

Regarding the aesthetics, I’d be in favor of using @ for the version:

guile@1.8
guile@1.8:doc

I’m not sure if we should also allow:

guile:doc@1.8

Thoughts?

Ludo’.
M
M
Mathieu Lirzin wrote on 30 Dec 2015 14:45
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 19219@debbugs.gnu.org)
87io3fo8sl.fsf@gnu.org
ludo@gnu.org (Ludovic Courtès) writes:

Toggle quote (4 lines)
> I had to think a lot because that’s a big change (technically simple I
> think, but it’s the change of UI and habits that’s bigger ;-)). I came
> to the conclusion that it’s probably a necessary thing.

Sure, such change should not be made lightly.

Toggle quote (2 lines)
> Regarding the aesthetics, I’d be in favor of using @ for the version:

You mean like npm... :)

Toggle quote (9 lines)
> guile@1.8
> guile@1.8:doc
>
> I’m not sure if we should also allow:
>
> guile:doc@1.8
>
> Thoughts?

I'm OK with that. Since choosing the reserved characters is not a
technical decision, maybe we could poll users?

--
Mathieu Lirzin
L
L
Leo Famulari wrote on 30 Dec 2015 17:16
Re: bug#19219: New command-line syntax for package + version?
(name . Mathieu Lirzin)(address . mthl@gnu.org)
20151231011631.GB23122@jasmine
On Wed, Dec 30, 2015 at 11:45:14PM +0100, Mathieu Lirzin wrote:
Toggle quote (24 lines)
> ludo@gnu.org (Ludovic Courtès) writes:
>
> > I had to think a lot because that’s a big change (technically simple I
> > think, but it’s the change of UI and habits that’s bigger ;-)). I came
> > to the conclusion that it’s probably a necessary thing.
>
> Sure, such change should not be made lightly.
>
> > Regarding the aesthetics, I’d be in favor of using @ for the version:
>
> You mean like npm... :)
>
> > guile@1.8
> > guile@1.8:doc
> >
> > I’m not sure if we should also allow:
> >
> > guile:doc@1.8
> >
> > Thoughts?
>
> I'm OK with that. Since choosing the reserved characters is not a
> technical decision, maybe we could poll users?

I think we should poll a big list of packages and see which characters
are most safe to use.

The question is: which big list? Debian's?

Toggle quote (6 lines)
>
> --
> Mathieu Lirzin
>
>
>
E
E
Efraim Flashner wrote on 31 Dec 2015 00:09
(name . Leo Famulari)(address . leo@famulari.name)
20151231100934.231cee5b@debian-netbook
On Wed, 30 Dec 2015 20:16:31 -0500
Leo Famulari <leo@famulari.name> wrote:

Toggle quote (17 lines)
> On Wed, Dec 30, 2015 at 11:45:14PM +0100, Mathieu Lirzin wrote:
> [...]
> [...]
> [...]
> [...]
> [...]
> [...]
> >
> > I'm OK with that. Since choosing the reserved characters is not a
> > technical decision, maybe we could poll users?
>
> I think we should poll a big list of packages and see which characters
> are most safe to use.
>
> The question is: which big list? Debian's?
>
>
When debian adopted multiarch they had a small internal fight about what characters to use, since there are only so many usable characters. IIRC, a long version of a debian package could be 1:6.3.2-1+bpo1~henry. I don't remember if their sorting takes into account ascii order or their own internal order, but I'm pretty sure they only allow using each character once.


--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCgAGBQJWhOK/AAoJEPTB05F+rO6TzpYP/2BSH0ETza05sgJUf59SMYvX
XB8RITR4U0oMaqQUl/yECauh4Pg58rRsKGp6C2ukCJeiP8eNBo3qILGR6hipnZyB
JcIiazw5DcPbro1fJ52Qi8ygbK6ge2Ta2I2cusRhtg53Rel+6u44p+KkLJv2BwWW
scws6q3mTp4tApYu9e6jpvxM9rdKmSxGtNq9xdfnhaHSL/ep1tBy6FKKxyBBfrg3
RcuJEpip0vYAWY5rBfpIMG17fD/kRpwKSNugShQHoRMWdVAhrKr/D5kZKU75fllf
B37iM80PS6t5Cf3vD7TGpkh/r8Un9ZqXFNyOPmWnjyqSNuylDZHNiyW/uaAq8yGz
Dd2LloiaIdaL0EKIZY7sdSvjDrhL1V40szCKUAwtcjq97wgoLjrOOaxbuWIgRGRg
WQm2NGsE1KjQT+GNjXtPeMOrgEFWjMa1lZAi6Pjbk66sGaGTrhoozVecb2FEzt9r
rTq3Ths4XeD6qSfTJnyI9lOlhepna70ABTH4LNsZ166rH9zsbuyIHwatKYTh+8uE
VASCwEF9W2jCh7008zHPmlD2dhEqCc2FODeRHKlCEwsdcU976AxRKhloX8hy8Hu7
a3hyfIBZedqCJ3P9Qwb7H52dt4KLqfXsl00fcfBjdH5YUPzG/GPCwogyI34+lSV3
wpz+0OUsW0mWce2Kcs7U
=xWcN
-----END PGP SIGNATURE-----


A
A
Alex Kost wrote on 31 Dec 2015 00:19
(name . Mathieu Lirzin)(address . mthl@gnu.org)
87vb7ff2s0.fsf@gmail.com
Mathieu Lirzin (2015-12-31 01:45 +0300) wrote:

Toggle quote (24 lines)
> ludo@gnu.org (Ludovic Courtès) writes:
>
>> I had to think a lot because that’s a big change (technically simple I
>> think, but it’s the change of UI and habits that’s bigger ;-)). I came
>> to the conclusion that it’s probably a necessary thing.
>
> Sure, such change should not be made lightly.
>
>> Regarding the aesthetics, I’d be in favor of using @ for the version:
>
> You mean like npm... :)
>
>> guile@1.8
>> guile@1.8:doc
>>
>> I’m not sure if we should also allow:
>>
>> guile:doc@1.8
>>
>> Thoughts?
>
> I'm OK with that. Since choosing the reserved characters is not a
> technical decision, maybe we could poll users?

I'm for the polling (but how should it be organized?) I don't really
like "@" character.

--
Alex
L
L
Ludovic Courtès wrote on 31 Dec 2015 03:27
Re: New command-line syntax for package + version?
(name . Mathieu Lirzin)(address . mthl@gnu.org)(address . 19219@debbugs.gnu.org)
874meyoo1x.fsf@gnu.org
Mathieu Lirzin <mthl@gnu.org> skribis:

Toggle quote (2 lines)
> ludo@gnu.org (Ludovic Courtès) writes:

[...]

Toggle quote (4 lines)
>> Regarding the aesthetics, I’d be in favor of using @ for the version:
>
> You mean like npm... :)

Possibly, but I’m not that proficient at npm. ;-) I think I’ve seen
another tool use that convention, though I don’t remember which one
(maybe Spack?).

It’s more that “guile@1.8” reads like “Guile at [version] 1.8.”

Toggle quote (12 lines)
>> guile@1.8
>> guile@1.8:doc
>>
>> I’m not sure if we should also allow:
>>
>> guile:doc@1.8
>>
>> Thoughts?
>
> I'm OK with that. Since choosing the reserved characters is not a
> technical decision, maybe we could poll users?

Yes, why not (bikeshedding ahead! :-)). Would you like to email
guix-devel about it?

Note that it only affects the CLI. The Emacs and Web UIs won’t see any
difference.

Ludo’.
C
C
Christopher Allan Webber wrote on 31 Dec 2015 08:26
Re: bug#19219: New command-line syntax for package + version?
(name . Ludovic Courtès)(address . ludo@gnu.org)
8737ui37mn.fsf@dustycloud.org
Ludovic Courtès writes:

Toggle quote (20 lines)
>>> guile@1.8
>>> guile@1.8:doc
>>>
>>> I’m not sure if we should also allow:
>>>
>>> guile:doc@1.8
>>>
>>> Thoughts?
>>
>> I'm OK with that. Since choosing the reserved characters is not a
>> technical decision, maybe we could poll users?
>
> Yes, why not (bikeshedding ahead! :-)). Would you like to email
> guix-devel about it?
>
> Note that it only affects the CLI. The Emacs and Web UIs won’t see any
> difference.
>
> Ludo’.

If the @ is for the optional choice of including a version, I'm good
with it. It does mean we can never have @ in our package names, but
that might be a good restriction anyway :)

Anyway, I like it, since it's for command-line only.
L
L
Leo Famulari wrote on 1 Jan 2016 13:45
(name . Ludovic Courtès)(address . ludo@gnu.org)
20160101214518.GA12106@jasmine
On Fri, Jan 01, 2016 at 04:25:40PM -0500, Leo Famulari wrote:
Toggle quote (37 lines)
> On Fri, Jan 01, 2016 at 04:55:40PM +0100, Ludovic Courtès wrote:
> > Efraim Flashner <efraim@flashner.co.il> skribis:
> >
> > > On Wed, 30 Dec 2015 20:16:31 -0500
> > > Leo Famulari <leo@famulari.name> wrote:
> > >
> > >> On Wed, Dec 30, 2015 at 11:45:14PM +0100, Mathieu Lirzin wrote:
> > >> [...]
> > >> [...]
> > >> [...]
> > >> [...]
> > >> [...]
> > >> [...]
> > >> >
> > >> > I'm OK with that. Since choosing the reserved characters is not a
> > >> > technical decision, maybe we could poll users?
> > >>
> > >> I think we should poll a big list of packages and see which characters
> > >> are most safe to use.
> > >>
> > >> The question is: which big list? Debian's?
> > >>
> > >>
> > >
> > > When debian adopted multiarch
> >
> > [...]
> >
> > I forgot to reply to Leo’s message, but it seems clear to me that it
> > only makes sense to discuss on Guix mailing lists. I don’t think anyone
> > else cares about the syntax of Guix’s command-line interface. ;-)
>
> I don't mean that we should discuss it on Debian's mailing list. I mean
> that we should consult the largest list of packages that we can find in
> order to learn which characters are safest to choose as reserved. Debian
> has a very long list of packages.

Of course, Debian has to choose how to name their packages, so the list
provided by `apt-cache pkgnames` is not the same as the list of upstream
names. But it does give some idea of what is possible once everything is
packaged.

I did this:
$ apt-cache pkgnames | tr -d 'a-zA-Z0-9' | tr -d - | tr -d '\n'

The only remaining characters were '.' and '+'. So it could be possible
to reserve : and @ without causing too many problems.

Toggle quote (3 lines)
>
> >
> > Ludo’.
L
L
Leo Famulari wrote on 1 Jan 2016 13:25
(name . Ludovic Courtès)(address . ludo@gnu.org)
20160101212540.GC11284@jasmine
On Fri, Jan 01, 2016 at 04:55:40PM +0100, Ludovic Courtès wrote:
Toggle quote (31 lines)
> Efraim Flashner <efraim@flashner.co.il> skribis:
>
> > On Wed, 30 Dec 2015 20:16:31 -0500
> > Leo Famulari <leo@famulari.name> wrote:
> >
> >> On Wed, Dec 30, 2015 at 11:45:14PM +0100, Mathieu Lirzin wrote:
> >> [...]
> >> [...]
> >> [...]
> >> [...]
> >> [...]
> >> [...]
> >> >
> >> > I'm OK with that. Since choosing the reserved characters is not a
> >> > technical decision, maybe we could poll users?
> >>
> >> I think we should poll a big list of packages and see which characters
> >> are most safe to use.
> >>
> >> The question is: which big list? Debian's?
> >>
> >>
> >
> > When debian adopted multiarch
>
> [...]
>
> I forgot to reply to Leo’s message, but it seems clear to me that it
> only makes sense to discuss on Guix mailing lists. I don’t think anyone
> else cares about the syntax of Guix’s command-line interface. ;-)

I don't mean that we should discuss it on Debian's mailing list. I mean
that we should consult the largest list of packages that we can find in
order to learn which characters are safest to choose as reserved. Debian
has a very long list of packages.

Toggle quote (2 lines)
>
> Ludo’.
A
A
Andreas Enge wrote on 1 Jan 2016 12:36
(name . Christopher Allan Webber)(address . cwebber@dustycloud.org)
20160101203623.GA8169@debian.fritz.box
On Thu, Dec 31, 2015 at 10:26:56AM -0600, Christopher Allan Webber wrote:
Toggle quote (4 lines)
> If the @ is for the optional choice of including a version, I'm good
> with it. It does mean we can never have @ in our package names, but
> that might be a good restriction anyway :)

According to the packaging guidelines, package names should only contain
lower-case letters, digits and "-" (the formulation is a bit ambiguous,
but this is the intent). So any choice of separators apart from "-" should
be fine, and we can happily bikeshed!

Andreas
L
L
Ludovic Courtès wrote on 1 Jan 2016 07:55
(name . Efraim Flashner)(address . efraim@flashner.co.il)
87k2nti9ab.fsf@gnu.org
Efraim Flashner <efraim@flashner.co.il> skribis:

Toggle quote (23 lines)
> On Wed, 30 Dec 2015 20:16:31 -0500
> Leo Famulari <leo@famulari.name> wrote:
>
>> On Wed, Dec 30, 2015 at 11:45:14PM +0100, Mathieu Lirzin wrote:
>> [...]
>> [...]
>> [...]
>> [...]
>> [...]
>> [...]
>> >
>> > I'm OK with that. Since choosing the reserved characters is not a
>> > technical decision, maybe we could poll users?
>>
>> I think we should poll a big list of packages and see which characters
>> are most safe to use.
>>
>> The question is: which big list? Debian's?
>>
>>
>
> When debian adopted multiarch

[...]

I forgot to reply to Leo’s message, but it seems clear to me that it
only makes sense to discuss on Guix mailing lists. I don’t think anyone
else cares about the syntax of Guix’s command-line interface. ;-)

Ludo’.
C
C
carl hansen wrote on 1 Jan 2016 19:18
(name . Leo Famulari)(address . leo@famulari.name)
CAHEkXCSAcs5iM2HEaaVx0+C2Mtwof4hjbCy3f_-wgz=+5WOcrQ@mail.gmail.com
On Fri, Jan 1, 2016 at 1:45 PM, Leo Famulari <leo@famulari.name> wrote:

Toggle quote (9 lines)
>
>
> I did this:
> $ apt-cache pkgnames | tr -d 'a-zA-Z0-9' | tr -d - | tr -d '\n'
>
> The only remaining characters were '.' and '+'.
>
>
> I did:
ls -1 /var/cache/apt/archive/ | tr -d 'a-zA-Z0-9' | tr -d - | tr -d '\n'
Got: . + % ~ _

typical pkgnames, as seen in the file system:
zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb
zoo_2.10-27_amd64.deb
zynjacku_6-4build1_amd64.deb

Note pkgname:

package-name _ upstreamversion - localversion _ otherstuff

version delimited by _
may have optional subversions split by -
(like when an upstream version is remade on hydra, but is only locally
different somehow.)

For your comtemplation.

I believe on debian the : is used when the package starts a new numbering
scheme, like when
they decide the old scheme was crazy.
Attachment: file
M
M
Mathieu Lirzin wrote on 8 Jan 2016 19:04
Re: New command-line syntax for package + version?
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 19219@debbugs.gnu.org)
877fjjo3m2.fsf@gnu.org
ludo@gnu.org (Ludovic Courtès) writes:

Toggle quote (8 lines)
> Mathieu Lirzin <mthl@gnu.org> skribis:

>> I'm OK with that. Since choosing the reserved characters is not a
>> technical decision, maybe we could poll users?
>
> Yes, why not (bikeshedding ahead! :-)). Would you like to email
> guix-devel about it?

Sorry for the late answer, I am quite busy with my school duties. As a
consequence my mind is not available anymore for polling/bikeshedding.
Feel free to do the the poll or to exercise your dictatorial maintainer
power. :)

--
Mathieu Lirzin
L
L
Ludovic Courtès wrote on 18 Jan 2016 00:10
Re: bug#19219: New command-line syntax for package + version?
(name . Mathieu Lirzin)(address . mthl@gnu.org)(address . 19219@debbugs.gnu.org)
8737tvmhok.fsf@gnu.org
Following the poll, it seems there’s a slight preference for the
“guile@1.8” syntax (and I admit it’s also my preference; hope I’m not
too biased ;-)).


Mathieu, would you be willing/available to implement the change?

Ludo’.
M
M
Mathieu Lirzin wrote on 18 Jan 2016 00:31
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 19219@debbugs.gnu.org)
87wpr7xp8g.fsf@gnu.org
Hi,

ludo@gnu.org (Ludovic Courtès) writes:

Toggle quote (4 lines)
> Following the poll, it seems there’s a slight preference for the
> “guile@1.8” syntax (and I admit it’s also my preference; hope I’m not
> too biased ;-)).

I have the same impression.

Toggle quote (2 lines)
> Mathieu, would you be willing/available to implement the change?

I am free of any school project for now, so I can work on it.

--
Mathieu Lirzin
M
M
M
Mathieu Lirzin wrote on 2 Mar 2016 13:18
control message for bug #19219
(address . control@debbugs.gnu.org)
87povczigz.fsf@gnu.org
close 19219
M
M
Mathieu Lirzin wrote on 2 Mar 2016 13:21
(address . control@debbugs.gnu.org)
87oaawzid9.fsf@gnu.org
tags 19219 fixed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 19219@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 19219
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