On Thursday 04 December 2008 02:42:34 Willie Wong wrote:
> On Thu, Dec 04, 2008 at 12:58:28AM +0530, Penguin Lover Rajat Vig squawked:
> > The 9999 Builds are Live CVS Builds.
> > The default is to use the Snapshot builds which are getting pulled in.
> >
> > -Rajat
>
> Okay, a better question then is: how does
>
> > > case ${EKEY_STATE:-${E_STATE}} in
> > >        release) KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh
> > > sparc x86 ~x86-fbsd";;
> > >        snap)    KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc
> > > ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd";;
> > >        live)    KEYWORDS="";;
> > > esac
>
> know that the 9999 ebuilds should be live, and that default it should
> be snap? I am completely puzzled by the ebuilds.

The answer is not in the ebuild, it's in the eclass. You will find it at 
$PORTDIR/ecalss/enlightenment.eclass. I'll take you through the relevant bits 
step by step. Lines 34 to 58 are the relevant ones, and everything afterwards 
depends on the value assigned to E_STATE. I'll assume you are familiar with 
bash's parameter expansion syntax (man bash, line 1135 if not)

E_STATE="release"
if [[ ${PV/9999} != ${PV} ]] ; then
    E_STATE="live"
elif [[ -n ${E_SNAP_DATE} ]] ; then
    E_STATE="snap"
else
    E_STATE="release"
fi

So, "release" is the default. 
If the version number is 9999, it's "live".
If E_SNAP_DATE is defined, then it's "snapshot"
Otherwise, the ebuild is for a "release"

Later on, various other ebuild variable are defined depending on the value of 
E_STATE - such things as KEYWORDS and a whole slew of things used by the svn 
eclass (which does the actual checkout)

> In other words, is it hardcoded somethere in portage that all 9999
> version numbers automatically trigger that variable above to be live?
> Or is there some configuration somewhere?

It's a convention. No sane coder will ever release a package with version 
9999, that is conventionally used by devs for their development stuff in 
cvs/svn/git/whatever, so vapier is just falling in line.

The intention was to have version numbers work like this:

enlightenment-0.16.8    a stable e16 release
enlightenment-0.16.9999 Kim's testing code for e16
enlightenment-9999      current cvs code for e17

so you could simply emerge a specific version and as long as your keywords 
were correct in portage.keywords, the right thing would happen.

That all looks cute and dandy and all, but stuff has broken a bit lately. I 
think vapier is extremely busy with other stuff and the e17 overlay took 
lower priority, he took 6 weeks to reply to a one-line patch I sent him.

I recommend you do what I did - read the eclass and all the ebuilds, plus man 
5 ebuild, plus a long wiki document I found on the dev section at gentoo.org 
written by Ciaran McCreesh. At the end of that, I knew a whole lot more about 
portage that I didn't before and it all made sense. These days I maintain my 
own e17 overlay, based off Vapier's stuff. I can share it if you want.


-- 
alan dot mckinnon at gmail dot com

Reply via email to