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