Package names with digits following dashes

DoneSubmitted by Andreas Enge.
Details
8 participants
  • Alex Kost
  • Andreas Enge
  • carl hansen
  • Christopher Allan Webber
  • Efraim Flashner
  • Leo Famulari
  • Ludovic Courtès
  • Mathieu Lirzin
Owner
unassigned
Severity
normal
A
A
Andreas Enge wrote on 29 Nov 2014 21: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-100dpilooks in vain for a version 100dpi of the package named font-adobe.The problem only occurs with digits following the dash; font-adobe-xdpiwould work.
I think we need a more sophisticated mechanism for separating package namesand 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, butI think it would be easier to prohibit dashes as part of version names.
Andreas
L
L
Ludovic Courtès wrote on 7 Dec 2014 00:38
(name . Andreas Enge)(address . andreas@enge.fr)
87ppbws61p.fsf@gnu.org
tag 19219 patchthanks
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 isnot 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.scmindex 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.scmindex 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 19: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 ifthe next character is a number.
From 1c7d036cc7ef310bc57bbde490d41b12d01f38a4 Mon Sep 17 00:00:00 2001From: Mathieu Lirzin <mthl@gnu.org>Date: Mon, 7 Dec 2015 05:20:08 +0100Subject: [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.scmindex 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-colorsubstitute: 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.drvLes 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.gzFrom http://hydra.gnu.org/nar/fpl50c6v7n44qmp6zd2n7almkzkifa18-file-5.22.tar.gzDownloading 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=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0From http://hydra.gnu.org/nar/hg3692jqq4jmhg4qx8d7y67fspimy898-?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0Downloading 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/substitutekilling process 4603guix 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 14: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 wewould need test for the various corner cases. Could you augment thetest 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 19: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" whichinvalidates my proposal. Here is another idea which identifies theversion part by the presence of dots. WDYT?
--Mathieu Lirzin
From 19d37ea3843d236a3e32127a724a712dba3c58db Mon Sep 17 00:00:00 2001From: Mathieu Lirzin <mthl@gnu.org>Date: Mon, 7 Dec 2015 05:20:08 +0100Subject: [PATCH] utils: Improve 'package-name->name+version' version detection.
Fixes http://bugs.gnu.org/19219.
* guix/build/utils.scm (package-name->name+version): Use a more genericheuristic 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.scmindex 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.scmindex 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 22: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 wouldbe that it moves complexity to the UI. Hmm…
Ludo’.
M
M
Mathieu Lirzin wrote on 22 Dec 2015 22: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 theexamples 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 andversion is a design flaw. This brings non desirable limitations whenchoosing a package name (as shown in this bug report) and/or requires acomplex 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 09: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 differentseparators 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. Iwould prefer '_' and ':', i.e. 'emacs-foo-bar_24.5:out'.
-- Alex
L
L
Ludovic Courtès wrote on 30 Dec 2015 15: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 Ithink, but it’s the change of UI and habits that’s bigger ;-)). I cameto 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 23: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 atechnical decision, maybe we could poll users?
--Mathieu Lirzin
L
L
Leo Famulari wrote on 31 Dec 2015 02: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 charactersare 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 09:09
(name . Leo Famulari)(address . leo@famulari.name)
20151231100934.231cee5b@debian-netbook
On Wed, 30 Dec 2015 20:16:31 -0500Leo 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.
http://www.fifi.org/doc/debian-policy/policy.html/ch-versions.htmlhttps://www.debian.org/doc/manuals/maint-guide/first.en.html#nameverhttps://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
-- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנרGPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----Version: GnuPG v2
iQIcBAEBCgAGBQJWhOK/AAoJEPTB05F+rO6TzpYP/2BSH0ETza05sgJUf59SMYvXXB8RITR4U0oMaqQUl/yECauh4Pg58rRsKGp6C2ukCJeiP8eNBo3qILGR6hipnZyBJcIiazw5DcPbro1fJ52Qi8ygbK6ge2Ta2I2cusRhtg53Rel+6u44p+KkLJv2BwWWscws6q3mTp4tApYu9e6jpvxM9rdKmSxGtNq9xdfnhaHSL/ep1tBy6FKKxyBBfrg3RcuJEpip0vYAWY5rBfpIMG17fD/kRpwKSNugShQHoRMWdVAhrKr/D5kZKU75fllfB37iM80PS6t5Cf3vD7TGpkh/r8Un9ZqXFNyOPmWnjyqSNuylDZHNiyW/uaAq8yGzDd2LloiaIdaL0EKIZY7sdSvjDrhL1V40szCKUAwtcjq97wgoLjrOOaxbuWIgRGRgWQm2NGsE1KjQT+GNjXtPeMOrgEFWjMa1lZAi6Pjbk66sGaGTrhoozVecb2FEzt9rrTq3Ths4XeD6qSfTJnyI9lOlhepna70ABTH4LNsZ166rH9zsbuyIHwatKYTh+8uEVASCwEF9W2jCh7008zHPmlD2dhEqCc2FODeRHKlCEwsdcU976AxRKhloX8hy8Hu7a3hyfIBZedqCJ3P9Qwb7H52dt4KLqfXsl00fcfBjdH5YUPzG/GPCwogyI34+lSV3wpz+0OUsW0mWce2Kcs7U=xWcN-----END PGP SIGNATURE-----

A
A
Alex Kost wrote on 31 Dec 2015 09: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 reallylike "@" character.
-- Alex
L
L
Ludovic Courtès wrote on 31 Dec 2015 12: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 seenanother 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 emailguix-devel about it?
Note that it only affects the CLI. The Emacs and Web UIs won’t see anydifference.
Ludo’.
C
C
Christopher Allan Webber wrote on 31 Dec 2015 17: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 goodwith it. It does mean we can never have @ in our package names, butthat 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 22: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 listprovided by `apt-cache pkgnames` is not the same as the list of upstreamnames. But it does give some idea of what is possible once everything ispackaged.
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 possibleto reserve : and @ without causing too many problems.
Toggle quote (3 lines)> > > > > Ludo’.
L
L
Leo Famulari wrote on 1 Jan 2016 22: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 meanthat we should consult the largest list of packages that we can find inorder to learn which characters are safest to choose as reserved. Debianhas a very long list of packages.
Toggle quote (2 lines)> > Ludo’.
A
A
Andreas Enge wrote on 1 Jan 2016 21: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 containlower-case letters, digits and "-" (the formulation is a bit ambiguous,but this is the intent). So any choice of separators apart from "-" shouldbe fine, and we can happily bikeshed!
Andreas
L
L
Ludovic Courtès wrote on 1 Jan 2016 16: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 itonly makes sense to discuss on Guix mailing lists. I don’t think anyoneelse cares about the syntax of Guix’s command-line interface. ;-)
Ludo’.
C
C
carl hansen wrote on 2 Jan 2016 04: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.debzoo_2.10-27_amd64.debzynjacku_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 locallydifferent somehow.)
For your comtemplation.
I believe on debian the : is used when the package starts a new numberingscheme, like whenthey decide the old scheme was crazy.
Attachment: file
M
M
Mathieu Lirzin wrote on 9 Jan 2016 04: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 aconsequence my mind is not available anymore for polling/bikeshedding.Feel free to do the the poll or to exercise your dictatorial maintainerpower. :)
--Mathieu Lirzin
L
L
Ludovic Courtès wrote on 18 Jan 2016 09: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 nottoo biased ;-)).
https://lists.gnu.org/archive/html/guix-devel/2016-01/threads.html#00335
Mathieu, would you be willing/available to implement the change?
Ludo’.
M
M
Mathieu Lirzin wrote on 18 Jan 2016 09: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
Mathieu Lirzin wrote on 2 Mar 2016 22:10
(name . Ludovic Courtès)(address . ludo@gnu.org)
87twkoziub.fsf@gnu.org
close 19219
This is bug is Fixed by commit 1b846da8c372bee78851439fd9e72b2499115e5a, see:
http://git.savannah.gnu.org/cgit/guix.git/commit/?id=1b846da8c372bee78851439fd9e72b2499115e5a
-- Mathieu Lirzin
M
M
Mathieu Lirzin wrote on 2 Mar 2016 22: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 22: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 email to 19219@debbugs.gnu.org