diff options
Diffstat (limited to 'xml/htdocs/proj/en/glep/glep-0054.txt')
-rw-r--r-- | xml/htdocs/proj/en/glep/glep-0054.txt | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/xml/htdocs/proj/en/glep/glep-0054.txt b/xml/htdocs/proj/en/glep/glep-0054.txt new file mode 100644 index 00000000..b3c992c5 --- /dev/null +++ b/xml/htdocs/proj/en/glep/glep-0054.txt @@ -0,0 +1,121 @@ +GLEP: 54 +Title: scm package version suffix +Version: $Revision: 1.5 $ +Last-Modified: $Date: 2008/01/06 02:08:59 $ +Author: Piotr Jaroszyński <peper@gentoo.org> +Status: Draft +Type: Standards Track +Content-Type: text/x-rst +Created: 09-Dec-2007 +Post-History: 09-Dec-2007 + +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 still + ``1_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 + for ``alpha-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`` and + ``1``. ``cat/pkg-scm`` wins. + * ``cat/pkg-1-scm > cat/pkg-1.0-scm`` + When parsing from left to right the first difference is ``scm`` and + ``0``. ``cat/pkg-1-scm`` wins. + * ``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 an ``scm`` 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 the ``alpha`` suffix. Maximum value + yielded by the following ``scm`` suffix wins with ``1``. + +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 document has been placed in the public domain. + +.. vim: set tw=80 fileencoding=utf-8 spell spelllang=en et : |