--- xml/htdocs/proj/en/glep/glep-0054.txt 2007/10/12 13:01:36 1.3 +++ xml/htdocs/proj/en/glep/glep-0054.txt 2007/12/17 18:42:33 1.4 @@ -1,74 +1,115 @@ GLEP: 54 -Title: An "old-school" metastructure proposal with "boot for being a slacker" Part II -Version: $Revision: 1.3 $ -Last-Modified: $Date: 2007/10/12 13:01:36 $ -Author: Alec Warner -Status: Final -Type: Informational +Title: scm package version suffix +Version: $Revision: 1.4 $ +Last-Modified: $Date: 2007/12/17 18:42:33 $ +Author: Piotr JaroszyƄski +Status: Draft +Type: Standards Track Content-Type: text/x-rst -Created: 11-Oct-2007 -Replaces: 39 -Requires: 39 -Post-History: 11-Oct-2007 - +Created: 09-Dec-2007 +Post-History: 09-Dec-2007 Abstract ======== -This GLEP amends GLEP 39[#GLEP39]_. A new project must be announced -to the community prior to it's conception. The announcement should state -the project goals, the plan to achieve those goals, and any other information -deemed useful to the community by the person proposing a new project. - +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 ========== -Projects were being started behind the scenes that people were not aware of; -this included developers and users alike. It was thought important to notify -the community of new projects. This also enables new projects to get valuable -feedback before getting to far into design and implementation. +Currently there is no standard way of marking 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 separate package with -cvs suffix in its name, but that +forces 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 +never been used in the tree 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, but that's beyond +this GLEP. +Specification +============= -Rationale -========= - -We hope projects receiving feedback fare better in the long run with regards -to general reception as well as meeting the goals set forth in their -announcement. We hope projects announced early get more volunteers by virtue -of being announced and in the community's view. +``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. + * 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``. + +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 ======================= -Projects already announced before 19-Oct-2006 are not affected. Since this -GLEP was authored nearly a year later, conceivably projects announced since -then should retroactively send mail regarding their goals and means to achieve -them if they have not done so already; otherwise they would be in breach of -policy set in 2006. - - -Specification -============= - -New projects should send an Request For Comments mail to gentoo-dev (and -optionally gentoo-project) in order to received feedback from the Gentoo -community. Once the feedback has been received and changes incorportated into -the goals and design (if any), the project team should send a mail to -gentoo-dev-announce (and optionally gentoo-announce) regarding it's launch. - -The contents of the announcements is left intentionally vague as to not -restrict the scope of projects, goals, and means. If announcement, projects, -goals, or means end up being terrible; the authors of this GLEP fully expect -the community to chew you out over it. - -This GLEP does not empower the community to kill a new project, even if everyone -decides it sucks. - +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 :