GNU bug report logs -
#19219
Package names with digits following dashes
Previous Next
Reported by: Andreas Enge <andreas <at> enge.fr>
Date: Sat, 29 Nov 2014 20:32:02 UTC
Severity: normal
Tags: fixed, patch
Done: Mathieu Lirzin <mthl <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Mathieu Lirzin <mthl <at> 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:
--8<---------------cut here---------------start------------->8---
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")
--8<---------------cut here---------------end--------------->8---
Would they still be suitably parsed?
I liked that the initial algorithm was trivial, as in Nix:
--8<---------------cut here---------------start------------->8---
/* 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;
}
}
}
--8<---------------cut here---------------end--------------->8---
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’.
This bug report was last modified 9 years and 80 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.