Re: [gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-11 Thread Nirbheek Chauhan
On Dec 11, 2007 4:47 PM, Ciaran McCreesh
<[EMAIL PROTECTED]> wrote:
> On Tue, 11 Dec 2007 16:36:51 +0530
> "Nirbheek Chauhan" <[EMAIL PROTECTED]> wrote:
> > The idea is that no one would want to automatically upgrade to a
> > branch (because you cannot define "upgrade" for branches), so make it
> > manual.
>
> ...and this is why branches shouldn't be treated like versions. They
> have their own set of rules and expected behaviours that are best dealt
> with by a different proposal.

I made that statement in the context of unversioned branches where you
do not know when the branch will be merged. In the case where you do
know when the branch will be merged, the versioned branch ebuild can
easily be included in the upgrade list via it's version.
So, you cannot "upgrade" to app-misc/foo-scm_bblah but you *can*
upgrade from app-misc/foo-1.2 to app-misc/foo-1.2-scm_bblahblah and
then finally upgrade to app-misc/foo-1.3 when the branch gets merged.

-- 
~Nirbheek Chauhan
-- 
[EMAIL PROTECTED] mailing list



Re: [gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-11 Thread Ciaran McCreesh
On Tue, 11 Dec 2007 16:36:51 +0530
"Nirbheek Chauhan" <[EMAIL PROTECTED]> wrote:
> The idea is that no one would want to automatically upgrade to a
> branch (because you cannot define "upgrade" for branches), so make it
> manual.

...and this is why branches shouldn't be treated like versions. They
have their own set of rules and expected behaviours that are best dealt
with by a different proposal.

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-11 Thread Nirbheek Chauhan
On Dec 11, 2007 1:51 PM, Duncan <[EMAIL PROTECTED]> wrote:
> But what about when there's a dependency on any of several branches?
> That gets hard to maintain if there are multiple ebuilds with similar
> dependencies.

How does it become hard to maintain? Different branch ebuilds are
still the same package. For example:

app-misc/foo-1.2 depends on app-misc/bar

branches won't show up in an upgrade, but you can remove app-misc/bar,
do an `emerge --oneshot =app-misc/bar-scm_bfeature` and app-misc/foo's
dependency will be satisfied.
The idea is that no one would want to automatically upgrade to a
branch (because you cannot define "upgrade" for branches), so make it
manual.



-- 
~Nirbheek Chauhan
-- 
[EMAIL PROTECTED] mailing list



Re: [gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-11 Thread Nirbheek Chauhan
On Dec 11, 2007 5:57 AM, Steve Long <[EMAIL PROTECTED]> wrote:
> I don't find the argument for versioning the scm live ebuild compelling.
> The point wrt comparison, ie foo-1-scm is < 2.0.1, doesn't seem enough; it'd
> be better to slot that imo, and have a slot identifier[1] in the existing
> cvs digit space. You could still have gtk-1-cvs, for example, for packages
> where slots don't work.

Versioning for scm live ebuilds can be useful when you know which
version the branch will be merged in. For example, if you have a
branch "awesome-feature" and you know it will be merged in  2.5, you
could call the ebuild app-misc/blah-2.4-scm_bawesome-feature so that
it will have higher priority over all versions of the package till 2.5
(if we're not doing mutual blocking for versioned branches). In this
case, you'd have automatic upgrading to 2.5 which can be very
desirable if you have lots of such branches to maintain.

>
> I prefer the way it works now; SLOT and cvs compares later than any other
> version in the same slot. (I agree the name is misleading and prefer vcs
> since it collides less than other options.)
>
> foo-vcs-rN# standard vcs (i prefer the explicit 0 of current spec)
> foo-vcsN-rN   # slotted pkg

Why not keep slotting the way it is now via the SLOT variable? What
you're suggesting is pkg-scm${SLOT} which can break if you have string
slots, since then pkg-scm${SLOT} could very well be the name of some
other package, say "pkg-scmomg".

> foo-vcs_branch_FOO-rN # branch

Hmmm, I prefer foo-scm_b${BRANCHNAME} it keeps the versioning conciser..

> foo-vcsN_branch_STRING-rN
>
> ..make sense[2] and cover all the use cases that I have read about so far.
> It'd be useful to restrict the STRING to a simple upper case ID with a
> length limit; the ebuild description will give more information to a user

I don't see why there should be a technical length limit to the
STRING. I say it should just use the name of the branch. This way we
can just have one place to get the branch name from (making them
similar to versions this way).
If a branch name is too large (upto the maintainer's discretion), he
can always use something like MY_BRANCH=${REALLY_LONG_BRANCH_NAME}
inside the ebuild and use something else for the ebuild's name.

>
> A numeric slot id with different branches applying to the same slot would
> seem to be enough to track any project over its lifecycle. The id would
> only be visible to users choosing to install a live ebuild when the package
> is slotted.

While it's true that branches will usually not carry over between
slots, I don't see why we have to restrict them to order purely on the
basis of slots.

- If the package has multiple slots, and a branch only applies to one
of them, the ebuild can just use the SLOT variable to restrict it to
that slot.
- If the branch will be merged by version 2.5, version the branch
ebuild as foo-2.4-scm_b${B}
- If ETA for merging is unknown, foo-scm_b${B}

>
> The reason I don't think it's a good idea to allow full versioning is that
> it seems to be clouding the issue. Packages are available, in slots. If the

I don't understand how it's clouding the issue, the versioning system
seems simple enough. Perhaps I'm missing something? Could you please
elaborate?

> user chooses version control, it applies to the slot:pkg combination, and
> beyond that only needs a mechanism to choose which branch to track.
> Maintainers need to track ebuild revisions, and all of us, including
> package managers, can do with keeping things simple, imo.
>
> [1] Since SLOT is one of the most basic items in an ebuild, it's something
> any user making an ebuild is aware of. A vcs ebuild-writer should have no
> problem finding a suitable id, especially if it is to go into the tree.
>
> [2] s/vcs/whatever acronym you prefer/
> -vcsN* and -rN+ (or -r0N+.N+ for prefix portage) in regex terms
> -rN if missing, is implicit -r0 (compares before explicit)
>



-- 
~Nirbheek Chauhan
-- 
[EMAIL PROTECTED] mailing list



Re: [gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-11 Thread Nirbheek Chauhan
On Dec 11, 2007 5:57 AM, Steve Long <[EMAIL PROTECTED]> wrote:
> I don't find the argument for versioning the scm live ebuild compelling.
> The point wrt comparison, ie foo-1-scm is < 2.0.1, doesn't seem enough; it'd
> be better to slot that imo, and have a slot identifier[1] in the existing
> cvs digit space. You could still have gtk-1-cvs, for example, for packages
> where slots don't work.

Versioning for scm live ebuilds can be useful when you know which
version the branch will be merged in. For example, if you have a
branch "awesome-feature" and you know it will be merged in  2.5, you
could call the ebuild app-misc/blah-2.4-scm_bawesome-feature so that
it will have higher priority over all versions of the package till 2.5
(if we're not doing mutual blocking for versioned branches). In this
case, you'd have automatic upgrading to 2.5 which can be very
desirable if you have lots of such branches to maintain.

>
> I prefer the way it works now; SLOT and cvs compares later than any other
> version in the same slot. (I agree the name is misleading and prefer vcs
> since it collides less than other options.)
>
> foo-vcs-rN# standard vcs (i prefer the explicit 0 of current spec)
> foo-vcsN-rN   # slotted pkg

Why not keep slotting the way it is now via the SLOT variable? What
you're suggesting is pkg-scm${SLOT} which can break if you have string
slots, since then pkg-scm${SLOT} could very well be the name of some
other package, say "pkg-scmomg".

> foo-vcs_branch_FOO-rN # branch

Hmmm, I prefer foo-scm_b${BRANCHNAME} it keeps the versioning conciser..

> foo-vcsN_branch_STRING-rN
>
> ..make sense[2] and cover all the use cases that I have read about so far.
> It'd be useful to restrict the STRING to a simple upper case ID with a
> length limit; the ebuild description will give more information to a user

I don't see why there should be a technical length limit to the
STRING. I say it should just use the name of the branch. This way we
can just have one place to get the branch name from (making them
similar to versions this way).
If a branch name is too large (upto the maintainer's discretion), he
can always use something like MY_BRANCH=${REALLY_LONG_BRANCH_NAME}
inside the ebuild and use something else for the ebuild's name.

>
> A numeric slot id with different branches applying to the same slot would
> seem to be enough to track any project over its lifecycle. The id would
> only be visible to users choosing to install a live ebuild when the package
> is slotted.

While it's true that branches will usually not carry over between
slots, I don't see why we have to restrict them to order purely on the
basis of slots.

- If the package has multiple slots, and a branch only applies to one
of them, the ebuild can just use the SLOT variable to restrict it to
that slot.
- If the branch will be merged by version 2.5, version the branch
ebuild as foo-2.4-scm_b${B}
- If ETA for merging is unknown, foo-scm_b${B}

>
> The reason I don't think it's a good idea to allow full versioning is that
> it seems to be clouding the issue. Packages are available, in slots. If the

I don't understand how it's clouding the issue, the versioning system
seems simple enough. Perhaps I'm missing something? Could you please
elaborate?

> user chooses version control, it applies to the slot:pkg combination, and
> beyond that only needs a mechanism to choose which branch to track.
> Maintainers need to track ebuild revisions, and all of us, including
> package managers, can do with keeping things simple, imo.
>
> [1] Since SLOT is one of the most basic items in an ebuild, it's something
> any user making an ebuild is aware of. A vcs ebuild-writer should have no
> problem finding a suitable id, especially if it is to go into the tree.
>
> [2] s/vcs/whatever acronym you prefer/
> -vcsN* and -rN+ (or -r0N+.N+ for prefix portage) in regex terms
> -rN if missing, is implicit -r0 (compares before explicit)
>



-- 
~Nirbheek Chauhan
-- 
[EMAIL PROTECTED] mailing list



[gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-11 Thread Duncan
"Nirbheek Chauhan" <[EMAIL PROTECTED]> posted
[EMAIL PROTECTED], excerpted
below, on  Tue, 11 Dec 2007 01:14:06 +0530:

> On Dec 10, 2007 8:44 PM, Robert Buchholz <[EMAIL PROTECTED]> wrote:
>> That would still mean everything relies on n ebuilds with mutual
>> blocks. Even if that would work and it block upgrades, it is still not
>> a solution in terms of how to display a list of ebuilds in one tree in
>> an ordered list.
> 
> The mutual blocks can be via the very nature of the name of the ebuild
> (ie, the scm_bbranch), and not via unmaintainable dep blocks in the
> ebuilds.

But what about when there's a dependency on any of several branches?  
That gets hard to maintain if there are multiple ebuilds with similar 
dependencies.

However, that's where virtuals come in.  Create a single virtual, depend 
on it, and you have a single dependency instead of a whole complex list 
to maintain in all the various depending ebuilds.  Another alternative of 
course is an eclass, inherited by whatever otherwise depending ebuilds, 
that manages all the dependencies and blockages all in one spot.

Which just means there are existing solutions for that angle, so it's out 
of scope for this GLEP.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

-- 
[EMAIL PROTECTED] mailing list



[gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-10 Thread Ryan Hill

Ciaran McCreesh wrote:


Incidentally, I suspect the gcc example with _p is confusing people. The
normal use for an -scm suffix will be as follows:


Yeah I abused the _p suffix. My bad.


The whole _p thing only comes up for those very rare (or possibly
non-existent) projects that have patchset branches that are themselves
live.


Actually I was thinking local patchset level.  Using a date was silly
though.  What I'm doing with gcc locally is currently more like:

gcc-4.2.3_pre20071210_p2

(_preDATE is used solely due to restrictions of toolchain.eclass)

Basically I want to force an update
- when the ebuild is edited (_pre)
- when the patchset is updated (_p)

This naming is pretty much the same as the snapshot ebuilds in 
the toolchain overlay, so an -scm suffix to indicate that these

are indeed live SVN ebuilds would be welcome.

I hope this clears up what I meant, to give an example of why one
might want to use version numbers with an -scm suffix.


--
   looks like christmas at fifty-five degrees
   this latitude weakens my knees
   EFFD 380E 047A 4B51 D2BD  C64F 8AA8 8346 F9A4 0662 (0xF9A40662)

--
[EMAIL PROTECTED] mailing list



[gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-10 Thread Steve Long
Nirbheek Chauhan wrote:

> On Dec 10, 2007 8:44 PM, Robert Buchholz <[EMAIL PROTECTED]> wrote:
>> That would still mean everything relies on n ebuilds with mutual blocks.
>> Even if that would work and it block upgrades, it is still not a
>> solution in terms of how to display a list of ebuilds in one tree in an
>> ordered list.
> 
> The mutual blocks can be via the very nature of the name of the ebuild
> (ie, the scm_bbranch), and not via unmaintainable dep blocks in the
> ebuilds. This could be similar to the way SLOTS are handled. In fact,
> as Donnie and Santiago discussed in the other "branch string" thread,
> the concept of SLOTS could be extended to branches with no concept of
> an "upgrade" between them, and them being mutually blocking and
> perhaps blocking the actual package as well.
> Of course this could be extended to apply only to branch ebuilds
> without a version number (where you don't know when the branch will be
> merged), etc.
>
This makes a lot of sense to me.

If different branches of a vcs build are to come into the tree, it only
makes sense they block the main package and each other. Handling that
within the package manager makes sense, since it's information that can be
derived automatically. At a later stage one can envisage branches being
installed to their own prefixes.

>> You are right. But this just shows that named feature branches do not
>> fit the context of this GLEP, as you usually cannot know when a feature
>> will be merged at the time one version is branched.
> 
> Completely removing the concept of an "upgrade" from (unversioned?)
> branch ebuilds and making them block all other versions of the package
> will give the task of knowing when a feature has been merged to the
> user itself. Which is after all what one does manually while working
> on branches.
> 
++

I don't find the argument for versioning the scm live ebuild compelling.
The point wrt comparison, ie foo-1-scm is < 2.0.1, doesn't seem enough; it'd
be better to slot that imo, and have a slot identifier[1] in the existing
cvs digit space. You could still have gtk-1-cvs, for example, for packages
where slots don't work.

I prefer the way it works now; SLOT and cvs compares later than any other
version in the same slot. (I agree the name is misleading and prefer vcs
since it collides less than other options.)

foo-vcs-rN# standard vcs (i prefer the explicit 0 of current spec)
foo-vcsN-rN   # slotted pkg
foo-vcs_branch_FOO-rN # branch
foo-vcsN_branch_STRING-rN

..make sense[2] and cover all the use cases that I have read about so far.
It'd be useful to restrict the STRING to a simple upper case ID with a
length limit; the ebuild description will give more information to a user 

A numeric slot id with different branches applying to the same slot would
seem to be enough to track any project over its lifecycle. The id would
only be visible to users choosing to install a live ebuild when the package
is slotted. 

The reason I don't think it's a good idea to allow full versioning is that
it seems to be clouding the issue. Packages are available, in slots. If the
user chooses version control, it applies to the slot:pkg combination, and
beyond that only needs a mechanism to choose which branch to track.
Maintainers need to track ebuild revisions, and all of us, including
package managers, can do with keeping things simple, imo.

[1] Since SLOT is one of the most basic items in an ebuild, it's something
any user making an ebuild is aware of. A vcs ebuild-writer should have no
problem finding a suitable id, especially if it is to go into the tree.

[2] s/vcs/whatever acronym you prefer/
-vcsN* and -rN+ (or -r0N+.N+ for prefix portage) in regex terms
-rN if missing, is implicit -r0 (compares before explicit)


-- 
[EMAIL PROTECTED] mailing list



[gentoo-dev] Re: [GLEP] scm package version suffix

2007-12-09 Thread Ryan Hill
� wrote:
>> 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`_).
> 
> What is the point of using version information along the scm suffix?
> From the logical POV, scm is a special decorator saying "this is a
> special tarball that can change in time and we don't know its version
> when parsing ebuild, we'd have to ask the repository". Surely I can
> think of uses for *revision* specification (as in "revision of the
> ebuild"), but why to support full version for scm packages?

for example:
sys-devel/gcc-4.2.3_p20071127-scm-r1 would be GCC 4.2 branch prerelease
with the 20071127 patchset and one ebuild revision.

or more generally, why go through the /extra/ trouble of /not/ allowing
normal version specifiers?

-- 
looks like christmas at fifty-five degrees
this latitude weakens my knees
EFFD 380E 047A 4B51 D2BD  C64F 8AA8 8346 F9A4 0662 (0xF9A40662)



signature.asc
Description: OpenPGP digital signature