This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
GLEP:54
This GLEP is no longer maintained in the Gentoo Wiki and remains here only as a historical record. Please visit https://www.gentoo.org/glep/glep-0054.html for the current version of this GLEP.
GLEP 54: scm package version suffix | |
---|---|
Type | Standards Track |
Status | Deferred |
Author | Piotr Jaroszyński <peper@gentoo.org> |
Editor | |
Replaces | |
Replaced by | (none) |
Requires | |
Post History |
Status
Marked as deferred by GLEP editor creffett due to inactivity
Abstract
This GLEP proposes addition of a new special package version suffix - scm
- for ebuilds checking out source directly from a source code management system.
Motivation
Currently there is no standard way of identifying SCM ebuilds. Using 9999 as the version is pretty common, but it is handled like any other ebuild and hence portage cannot provide any additional features for packages with such a version. Another way is adding a separate package with a -cvs suffix in its name, but that forces the author to use || ( cat/pkg cat/pkg-cvs )
dependencies. The closest to what is proposed in this GLEP is the cvs
version part, but its implementation is of very limited use. It has strange comparison rules, no documentation, has been used sparingly (if ever) and has a misleading name.
The possibility for package managers to recognise SCM ebuilds would allow them to add features dedicated specially to said ebuilds. One such feature could be automatic re-installation of SCM packages once a day or week. Any specifications for such features are beyond the scope of this GLEP.
Specification
scm
is a special suffix. It can be used on its own, but also in any other valid version spec, just before the place where revision would go. And just like revision it can be used only once in a version spec, e.g.:
cat/pkg-1.0_alpha0-scm
cat/pkg-1.0_alpha-scm
cat/pkg-1.0-scm-r3
cat/pkg-1-scm
cat/pkg-1-scm-r2
cat/pkg-scm
These package atoms are sorted in ascending order (see Version Comparison).
Version Comparison
The addition of the scm suffix yields changes in version comparison:
- When comparing version components from left to right the scm component has the highest priority over other version components. Hence
pkg-1_alpha-r3 < pkg-1-scm
, 'scm' is greater than 'alpha-r3'. - Current suffixes with no number part no longer default to zero if they are followed by an scm suffix. If that's the case the number part is considered to be of a maximum value. Hence
1_alpha2-scm < 1_alpha-scm
, but still1_alpha == 1_alpha0
. The rationale behind this choice is to allow multiple branches. For instance imagine a package with an alpha branch and multiple scm releases, as the following:alpha-scm
,alpha2-scm
,alpha3-scm
and so forth. The desired outcome is foralpha-scm
to be greater than all other branches of the same tree.
Example parsing:
cat/pkg-scm > cat/pkg-1
- When parsing from left to right the first difference is
scm
and1
cat/pkg-scm
wins.
- When parsing from left to right the first difference is
cat/pkg-1-scm > cat/pkg-1.0-scm
- When parsing from left to right the first difference is
scm
and0
.cat/pkg-1-scm
wins.
- When parsing from left to right the first difference is
cat/pkg-1_alpha-scm > cat/pkg-1_alpha1-scm
- In the first package version
alpha
doesn't have a number part *and* is followed by anscm
suffix, hence it is considered to have a maximum value as the number part. When parsing from left to right the first difference is the number part of thealpha
suffix. Maximum value yielded by the followingscm
suffix wins with1
.
- In the first package version
List of version specs in ascending order:
1
1.1-scm
1.2_alpha-scm
1.2_beta_p
1.2_beta_p0-scm
1.2_beta_p1-scm
1.2_beta_p-scm
1.2_beta1_p-scm
1.2_beta10
1.2_beta10_p1-scm
1.2_beta10-scm
1.2_beta-scm
1.2
1.2-scm
1.2-scm-r1
1-scm
10
scm
scm-r3
Backwards Compatibility
Portage versions prior to 2.1.2.12 (included in 2007.0) don't handle arbitrary version suffixes and die during various tasks making portage hard or impossible to use. Later versions just ignore them displaying warnings. Hence use of scm
suffixes in gentoo-x86 tree will probably have to wait till 2008.0 release or later.
Copyright
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.