From: Torsten Veller <tove@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Cc: gentoo-perl@lists.gentoo.org
Subject: [gentoo-dev] Ebuild- and CPAN-versions compatibility
Date: Wed, 29 Dec 2010 09:56:31 +0100 [thread overview]
Message-ID: <20101229085631.GA6757@veller.net> (raw)
CPAN and ebuild versions are ordered in different ways. The idea here is
to change the ebuild versions to be predictable and CPAN compatible.
CPAN versions exist as "decimal" and "dotted-integer" versions.
| # Decimal versions #
| \d+(\.d+)?
|
| Any version which "looks like a number"[...]. This
| also includes versions with a single decimal point[...]
1.19 < 1.191 < 1.2
| # Dotted-Integer Versions #
| v\d+(\.\d{1,3}){2,}
|
| These contain more than one decimal point[...]
| This is what is commonly used in most open source software as the
| "external" version[...] A leading 'v' character is now required
v1.9.0 < v1.10.0 < v1.10.0.1
These version objects can be compared by grouping three digits of the
decimal number to one integer part of the dotted-integer version...
1.19 = 1.190 = 1.190000 ~ v1.190.0
1.191 = 1.191 = 1.191000 ~ v1.191.0
1.2 = 1.200000 ~ v1.200.0
1.009 = 1.009000 ~ v1.9.0
1.01 = 1.010000 ~ v1.10.0
1.010000001 ~ v1.10.0.1
perl -wE'use version;@v=map{version->parse($_)}@ARGV;print map{$_->numify," ",$_->normal,"\n"}@v' \
1.19 1.191 1.2 1.9.0 1.10.0 1.10.0.1
Many CPAN distributions are released in decimal version format. Most of
the time it's no problem to use the same version as PV. Sometimes it is...[2]
I solved it by adding additional dots.
1.191 becomes 1.19.1, 5.251 becomes 5.2.5.1, depending on former
releases. By removing the additional dots from PV it's easy to get the
upstream decimal version. But it differs from perlish versions meaning.
The current list of outdated cpan packages[1] contains at least four
packages that need attention:
| App-CLI 0.08 0.313
| IO-AIO 3.65 3.7
| MARC-Charset 1.3 1.31
| Sphinx-Search 0.22 0.2401
Vincent Pit currently maintains a number of special version mappings[6] for
CPANPLUS-Dist-Gentoo[4][5] (creates ebuilds from the CPAN like g-cpan
does) and suggested to move to a predictable and CPAN-compatible
versioning scheme:
| if the version starts by 'v' or has at least two dots, then it's used
| as-is (thus 'v1.2' becames '1.2' and '1.2.3' stays the same) ; otherwise
| the version number is a float 1.xxxyyyzzz... which is mapped to
| 1.xxx.yyy.zzz with padding zeros if needed ('1.1' would become '1.100',
| and '1.0701' would be '1.070.100')
(whether 1.0701 becomes 1.070.100 or 1.70.100 has to be decided but
doesn't really matter.)
I like this but it also means:
- set the CPAN version inside the ebuilds
- touch a lot of ebuilds
- have some downgrades[3]
- some upstreams force 0.21 < 0.21.1 (which isn't true for cpan
versioning!). hopefully these are only historical issues.
- versions look different but mean the same
- fix tools like up2date-ng, g-cpan,...
Maybe we should start by fixing only the packages where the CPAN versions
weren't compatible with PMS? Instead of having mappings for many cases
we only need a list of packages with transformed versions?
Comments?
[0] https://github.com/gentoo-perl/wiki/wiki/version
[1] http://www.gentoo.org/proj/en/perl/outdated-cpan-packages.xml
[2] grep "^inherit.*versionator" dev-perl/**/*.ebuild | wc -l # 86
[3] find dev-perl -name "*.ebuild" | egrep "\.[0-9]{4,}" | wc -l # ~68 downgrades
[4] http://search.cpan.org/dist/CPANPLUS-Dist-Gentoo/
[5] https://github.com/gentoo-perl/perl-experimental/tree/master/dev-perl/CPANPLUS-Dist-Gentoo
[6] http://cpansearch.perl.org/src/VPIT/CPANPLUS-Dist-Gentoo-0.11/lib/CPANPLUS/Dist/Gentoo/Maps.pm
next reply other threads:[~2010-12-29 8:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-29 8:56 Torsten Veller [this message]
2011-01-11 20:10 ` [gentoo-dev] Re: Ebuild- and CPAN-versions compatibility Torsten Veller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101229085631.GA6757@veller.net \
--to=tove@gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
--cc=gentoo-perl@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox