public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] EBUILD_FORMAT support
@ 2005-07-07  0:20 Sven Wegener
  2005-07-07  0:41 ` Mike Frysinger
  0 siblings, 1 reply; 27+ messages in thread
From: Sven Wegener @ 2005-07-07  0:20 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 919 bytes --]

Hi all!

We would like to introduce a new ebuild variable named EBUILD_FORMAT,
that tags the ebuild with a specific ebuild API version it provides or
uses. ebuilds will get an automatic dependency on a version of portage
that is required for the used API to work correctly. The mapping between
API and portage versions will be distributed with our portage tree.

There are some major ebuild API changes being discussed. These changes
need backward compatibility and the information from EBUILD_FORMAT can
be used to provide backward compatiblity in an easy way. It can be used
for the src_configure[1] support and it might as well be used to get
backward compatibility for the RDEPEND=DEPEND[2] changes.

Cheers,
Sven

[1] http://thread.gmane.org/gmane.linux.gentoo.devel/29510
[2] http://thread.gmane.org/gmane.linux.gentoo.devel/29509

-- 
Sven Wegener
Gentoo Developer
http://www.gentoo.org/

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  0:20 [gentoo-dev] EBUILD_FORMAT support Sven Wegener
@ 2005-07-07  0:41 ` Mike Frysinger
  2005-07-07  0:49   ` Sven Wegener
  0 siblings, 1 reply; 27+ messages in thread
From: Mike Frysinger @ 2005-07-07  0:41 UTC (permalink / raw
  To: gentoo-dev

On Wednesday 06 July 2005 08:20 pm, Sven Wegener wrote:
> We would like to introduce a new ebuild variable named EBUILD_FORMAT,

seems like the name is much longer than it needs to be ... what's wrong with 
say 'EVER' ?
-mike
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  0:41 ` Mike Frysinger
@ 2005-07-07  0:49   ` Sven Wegener
  2005-07-07  1:01     ` Nathan L. Adams
  0 siblings, 1 reply; 27+ messages in thread
From: Sven Wegener @ 2005-07-07  0:49 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 481 bytes --]

On Wed, Jul 06, 2005 at 08:41:43PM -0400, Mike Frysinger wrote:
> On Wednesday 06 July 2005 08:20 pm, Sven Wegener wrote:
> > We would like to introduce a new ebuild variable named EBUILD_FORMAT,
> 
> seems like the name is much longer than it needs to be ... what's wrong with 
> say 'EVER' ?

It's fine too. EBUILD_FORMAT was just the name that fell in
#gentoo-portage once we discussed about it.

Sven

-- 
Sven Wegener
Gentoo Developer
http://www.gentoo.org/


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  0:49   ` Sven Wegener
@ 2005-07-07  1:01     ` Nathan L. Adams
  2005-07-07  1:09       ` Sven Wegener
  2005-07-07  4:36       ` Kito
  0 siblings, 2 replies; 27+ messages in thread
From: Nathan L. Adams @ 2005-07-07  1:01 UTC (permalink / raw
  To: gentoo-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Sven Wegener wrote:
> On Wed, Jul 06, 2005 at 08:41:43PM -0400, Mike Frysinger wrote:
> 
>>On Wednesday 06 July 2005 08:20 pm, Sven Wegener wrote:
>>
>>>We would like to introduce a new ebuild variable named EBUILD_FORMAT,
>>
>>seems like the name is much longer than it needs to be ... what's wrong with 
>>say 'EVER' ?
> 
> 
> It's fine too. EBUILD_FORMAT was just the name that fell in
> #gentoo-portage once we discussed about it.
> 
> Sven
> 

EVER looks like the english word 'ever'; what does it stand for? EBUILD
VERSION? If so, how about EVERSION? Since when was variable name length
a problem? Go with whatever best describes the variable and is easy to
figure out.

Nathan


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFCzH772QTTR4CNEQARAlimAJ0Yh80KpXqc0yZv6Gli+KqpWaKBxQCfU6pR
2WqrKs4MfY+RCgpoFxZKD8Q=
=5nzV
-----END PGP SIGNATURE-----
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  1:01     ` Nathan L. Adams
@ 2005-07-07  1:09       ` Sven Wegener
  2005-07-07  1:22         ` Olivier Crête
  2005-07-07  1:28         ` Joshua Baergen
  2005-07-07  4:36       ` Kito
  1 sibling, 2 replies; 27+ messages in thread
From: Sven Wegener @ 2005-07-07  1:09 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 697 bytes --]

On Wed, Jul 06, 2005 at 09:01:47PM -0400, Nathan L. Adams wrote:
> EVER looks like the english word 'ever'; what does it stand for? EBUILD
> VERSION? If so, how about EVERSION? Since when was variable name length
> a problem? Go with whatever best describes the variable and is easy to
> figure out.

Yes, ebuild version. For me all that starts with E (in combination with
Gentoo) is separated in my mind between E and the remaining part. Like:

- ebuild == e-build
- emerge == e-merge

And EVER automatically was E-VER for me, never had the idea to read it
as ever. Does that count as being addicted to Gentoo?

Sven

-- 
Sven Wegener
Gentoo Developer
http://www.gentoo.org/

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  1:09       ` Sven Wegener
@ 2005-07-07  1:22         ` Olivier Crête
  2005-07-07  1:28         ` Joshua Baergen
  1 sibling, 0 replies; 27+ messages in thread
From: Olivier Crête @ 2005-07-07  1:22 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 265 bytes --]

On Thu, 2005-07-07 at 03:09 +0200, Sven Wegener wrote:
> And EVER automatically was E-VER for me, never had the idea to read it
> as ever. Does that count as being addicted to Gentoo?

Yes it does

-- 
Olivier Crête
tester@gentoo.org
x86 Security Liaison

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  1:09       ` Sven Wegener
  2005-07-07  1:22         ` Olivier Crête
@ 2005-07-07  1:28         ` Joshua Baergen
  1 sibling, 0 replies; 27+ messages in thread
From: Joshua Baergen @ 2005-07-07  1:28 UTC (permalink / raw
  To: gentoo-dev

Sven Wegener wrote:

>And EVER automatically was E-VER for me, never had the idea to read it
>as ever. Does that count as being addicted to Gentoo?
>
>Sven
>
>  
>
Under the influence at the very least...

--
Joshua Baergen
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  1:01     ` Nathan L. Adams
  2005-07-07  1:09       ` Sven Wegener
@ 2005-07-07  4:36       ` Kito
  2005-07-07  4:47         ` Mike Frysinger
  1 sibling, 1 reply; 27+ messages in thread
From: Kito @ 2005-07-07  4:36 UTC (permalink / raw
  To: gentoo-dev


On Jul 6, 2005, at 8:01 PM, Nathan L. Adams wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Sven Wegener wrote:
>
>> On Wed, Jul 06, 2005 at 08:41:43PM -0400, Mike Frysinger wrote:
>>
>>
>>> On Wednesday 06 July 2005 08:20 pm, Sven Wegener wrote:
>>>
>>>
>>>> We would like to introduce a new ebuild variable named  
>>>> EBUILD_FORMAT,
>>>>
>>>
>>> seems like the name is much longer than it needs to be ... what's  
>>> wrong with
>>> say 'EVER' ?
>>>
>>
>>
>> It's fine too. EBUILD_FORMAT was just the name that fell in
>> #gentoo-portage once we discussed about it.
>>
>> Sven
>>
>>
>
> EVER looks like the english word 'ever'; what does it stand for?  
> EBUILD
> VERSION? If so, how about EVERSION? Since when was variable name  
> length
> a problem? Go with whatever best describes the variable and is easy to
> figure out.

Why not follow that logic through and use something like EBUILD_API ?  
the term VERSION implies release version which of course may not be  
tied to API changes...

Kito

>
> Nathan
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
>
> iD8DBQFCzH772QTTR4CNEQARAlimAJ0Yh80KpXqc0yZv6Gli+KqpWaKBxQCfU6pR
> 2WqrKs4MfY+RCgpoFxZKD8Q=
> =5nzV
> -----END PGP SIGNATURE-----
> -- 
> gentoo-dev@gentoo.org mailing list
>
>

-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  4:36       ` Kito
@ 2005-07-07  4:47         ` Mike Frysinger
  2005-07-07 12:19           ` Ned Ludd
  0 siblings, 1 reply; 27+ messages in thread
From: Mike Frysinger @ 2005-07-07  4:47 UTC (permalink / raw
  To: gentoo-dev

On Thursday 07 July 2005 12:36 am, Kito wrote:
> On Jul 6, 2005, at 8:01 PM, Nathan L. Adams wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Sven Wegener wrote:
> >> On Wed, Jul 06, 2005 at 08:41:43PM -0400, Mike Frysinger wrote:
> >>> On Wednesday 06 July 2005 08:20 pm, Sven Wegener wrote:
> >>>> We would like to introduce a new ebuild variable named
> >>>> EBUILD_FORMAT,
> >>>
> >>> seems like the name is much longer than it needs to be ... what's
> >>> wrong with
> >>> say 'EVER' ?
> >>
> >> It's fine too. EBUILD_FORMAT was just the name that fell in
> >> #gentoo-portage once we discussed about it.
> >>
> >> Sven
> >
> > EVER looks like the english word 'ever'; what does it stand for?
> > EBUILD
> > VERSION? If so, how about EVERSION? Since when was variable name
> > length
> > a problem? Go with whatever best describes the variable and is easy to
> > figure out.
>
> Why not follow that logic through and use something like EBUILD_API ?
> the term VERSION implies release version which of course may not be
> tied to API changes...

hmm that sounds even better ... EAPI ?
-mike
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07  4:47         ` Mike Frysinger
@ 2005-07-07 12:19           ` Ned Ludd
  2005-07-07 12:31             ` Diego 'Flameeyes' Pettenò
                               ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Ned Ludd @ 2005-07-07 12:19 UTC (permalink / raw
  To: gentoo-dev

On Thu, 2005-07-07 at 00:47 -0400, Mike Frysinger wrote:
> On Thursday 07 July 2005 12:36 am, Kito wrote:
> > On Jul 6, 2005, at 8:01 PM, Nathan L. Adams wrote:
> > > -----BEGIN PGP SIGNED MESSAGE-----
> > > Hash: SHA1
> > >
> > > Sven Wegener wrote:
> > >> On Wed, Jul 06, 2005 at 08:41:43PM -0400, Mike Frysinger wrote:
> > >>> On Wednesday 06 July 2005 08:20 pm, Sven Wegener wrote:
> > >>>> We would like to introduce a new ebuild variable named
> > >>>> EBUILD_FORMAT,
> > >>>
> > >>> seems like the name is much longer than it needs to be ... what's
> > >>> wrong with
> > >>> say 'EVER' ?
> > >>
> > >> It's fine too. EBUILD_FORMAT was just the name that fell in
> > >> #gentoo-portage once we discussed about it.
> > >>
> > >> Sven
> > >
> > > EVER looks like the english word 'ever'; what does it stand for?
> > > EBUILD
> > > VERSION? If so, how about EVERSION? Since when was variable name
> > > length
> > > a problem? Go with whatever best describes the variable and is easy to
> > > figure out.
> >
> > Why not follow that logic through and use something like EBUILD_API ?
> > the term VERSION implies release version which of course may not be
> > tied to API changes...
> 
> hmm that sounds even better ... EAPI ?

I would be in favor of EAPI= or an even shorter variable name.

strlen(EBUILD_FORMAT) * 19546 = 249K
strlen(EAPI) * 19546 = 77K
strlen(EV) *  19546 = 39K

Where 19546 is the number if ebuilds in the tree as.

-- 
Ned Ludd <solar@gentoo.org>

-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 12:19           ` Ned Ludd
@ 2005-07-07 12:31             ` Diego 'Flameeyes' Pettenò
  2005-07-07 14:37             ` twofourtysix
  2005-07-07 17:52             ` Donnie Berkholz
  2 siblings, 0 replies; 27+ messages in thread
From: Diego 'Flameeyes' Pettenò @ 2005-07-07 12:31 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 413 bytes --]

On Thursday 07 July 2005 14:19, Ned Ludd wrote:
> I would be in favor of EAPI= or an even shorter variable name.
EAPI is probably the best name, EV makes it possible to confuse it with 
PV-like variables, referring to the versions of the package, not portage 
itself.

-- 
Diego "Flameeyes" Pettenò
Gentoo Developer - http://dev.gentoo.org/~flameeyes/
(Gentoo/FreeBSD, Video, Gentoo/AMD64, Sound, PAM)

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 12:19           ` Ned Ludd
  2005-07-07 12:31             ` Diego 'Flameeyes' Pettenò
@ 2005-07-07 14:37             ` twofourtysix
  2005-07-07 17:20               ` Alec Warner
  2005-07-07 17:52             ` Donnie Berkholz
  2 siblings, 1 reply; 27+ messages in thread
From: twofourtysix @ 2005-07-07 14:37 UTC (permalink / raw
  To: gentoo-dev

On 07/07/05, Ned Ludd <solar@gentoo.org> wrote:
> I would be in favor of EAPI= or an even shorter variable name.
> 
> strlen(EBUILD_FORMAT) * 19546 = 249K
> strlen(EAPI) * 19546 = 77K
> strlen(EV) *  19546 = 39K
> 
> Where 19546 is the number if ebuilds in the tree as.

If you're that interested in saving space on variable names, why not
make an eclass called, say, a.eclass, that aliases all the existing
'long' names (DESCRIPTION, SRC_URI, RDEPEND, DEPEND, IUSE, src_unpack,
...) onto 'x', 'y', 'z' and so on? Yes, another eclass would make the
tree slightly bigger, but you'd save that many times over once you
changed a few hundred ebuilds to use it.

-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 14:37             ` twofourtysix
@ 2005-07-07 17:20               ` Alec Warner
  0 siblings, 0 replies; 27+ messages in thread
From: Alec Warner @ 2005-07-07 17:20 UTC (permalink / raw
  To: gentoo-dev

twofourtysix wrote:

>On 07/07/05, Ned Ludd <solar@gentoo.org> wrote:
>  
>
>>I would be in favor of EAPI= or an even shorter variable name.
>>
>>strlen(EBUILD_FORMAT) * 19546 = 249K
>>strlen(EAPI) * 19546 = 77K
>>strlen(EV) *  19546 = 39K
>>
>>Where 19546 is the number if ebuilds in the tree as.
>>    
>>
>
>  
>
<sarcasm>

>If you're that interested in saving space on variable names, why not
>make an eclass called, say, a.eclass, that aliases all the existing
>'long' names (DESCRIPTION, SRC_URI, RDEPEND, DEPEND, IUSE, src_unpack,
>...) onto 'x', 'y', 'z' and so on? Yes, another eclass would make the
>tree slightly bigger, but you'd save that many times over once you
>changed a few hundred ebuilds to use it.
>
>  
>
</sarcasm>
<file:///H:/Satish/Desktop/>
-- 
gentoo-dev@gentoo.org mailing list



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 12:19           ` Ned Ludd
  2005-07-07 12:31             ` Diego 'Flameeyes' Pettenò
  2005-07-07 14:37             ` twofourtysix
@ 2005-07-07 17:52             ` Donnie Berkholz
  2005-07-07 18:28               ` Maurice van der Pot
  2005-07-07 20:42               ` Robin H. Johnson
  2 siblings, 2 replies; 27+ messages in thread
From: Donnie Berkholz @ 2005-07-07 17:52 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 499 bytes --]

On Thu, 2005-07-07 at 08:19 -0400, Ned Ludd wrote:
> I would be in favor of EAPI= or an even shorter variable name.
> 
> strlen(EBUILD_FORMAT) * 19546 = 249K
> strlen(EAPI) * 19546 = 77K
> strlen(EV) *  19546 = 39K
> 
> Where 19546 is the number if ebuilds in the tree as.

So, the size of the tree is 500216K. This makes the percent increase in
size for the options above 0.0005%, 0.0002% and 0.0001% respectively. In
any case, nearly irrelevant to its present size.

Thanks,
Donnie

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 17:52             ` Donnie Berkholz
@ 2005-07-07 18:28               ` Maurice van der Pot
  2005-07-08  3:31                 ` Donnie Berkholz
  2005-07-07 20:42               ` Robin H. Johnson
  1 sibling, 1 reply; 27+ messages in thread
From: Maurice van der Pot @ 2005-07-07 18:28 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 380 bytes --]

On Thu, Jul 07, 2005 at 10:52:06AM -0700, Donnie Berkholz intended to write:
> size for the options above 0.05%, 0.02% and 0.01% respectively. In
> any case, nearly irrelevant to its present size.

-- 
Maurice van der Pot

Gentoo Linux Developer   griffon26@gentoo.org     http://www.gentoo.org
Creator of BiteMe!       griffon26@kfk4ever.com   http://www.kfk4ever.com


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 17:52             ` Donnie Berkholz
  2005-07-07 18:28               ` Maurice van der Pot
@ 2005-07-07 20:42               ` Robin H. Johnson
  2005-08-23 13:20                 ` Paul de Vrieze
  1 sibling, 1 reply; 27+ messages in thread
From: Robin H. Johnson @ 2005-07-07 20:42 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1327 bytes --]

On Thu, Jul 07, 2005 at 10:52:06AM -0700, Donnie Berkholz wrote:
> > strlen(EBUILD_FORMAT) * 19546 = 249K
> > strlen(EAPI) * 19546 = 77K
> > strlen(EV) *  19546 = 39K
> > 
> > Where 19546 is the number if ebuilds in the tree as.
> So, the size of the tree is 500216K. This makes the percent increase in
> size for the options above 0.0005%, 0.0002% and 0.0001% respectively. In
> any case, nearly irrelevant to its present size.

Probably should count some more formatting too.
strlen(EBUILD_FORMAT="") = 16, 16 * 19546 = 306K
strlen(EAPI="") = 7, 7 * 19546 = 134K
strlen(EV="") = 5, 5 *  19546 = 96K

Don't just count the 4K blocks. Count the actual data instead (du -b).
The tree contains 95912503 bytes of data, including metadata.
Excluding metadata it is 85301916 bytes. 

It's still less than 0.4% increase in the worst case.

I like the 'EAPI' variant, as it's clearly seperate from 'EV', without
being too long.

To combat some of the increase, EAPI only needs to go into new ebuilds
that use the functionality. Old ebuilds should default to the current
syntax.

-- 
Robin Hugh Johnson
E-Mail     : robbat2@orbis-terrarum.net
Home Page  : http://www.orbis-terrarum.net/?l=people.robbat2
ICQ#       : 30269588 or 41961639
GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85

[-- Attachment #2: Type: application/pgp-signature, Size: 241 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 18:28               ` Maurice van der Pot
@ 2005-07-08  3:31                 ` Donnie Berkholz
  0 siblings, 0 replies; 27+ messages in thread
From: Donnie Berkholz @ 2005-07-08  3:31 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 353 bytes --]

On Thu, 2005-07-07 at 20:28 +0200, Maurice van der Pot wrote:
> On Thu, Jul 07, 2005 at 10:52:06AM -0700, Donnie Berkholz intended to write:
> > size for the options above 0.05%, 0.02% and 0.01% respectively. In
> > any case, nearly irrelevant to its present size.

Mixed up my decimal points and percent signs again, eh? I guess I only
get one.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-07-07 20:42               ` Robin H. Johnson
@ 2005-08-23 13:20                 ` Paul de Vrieze
  2005-08-23 16:00                   ` Brian Harring
  0 siblings, 1 reply; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-23 13:20 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1757 bytes --]

On Thursday 07 July 2005 22:42, Robin H. Johnson wrote:
> On Thu, Jul 07, 2005 at 10:52:06AM -0700, Donnie Berkholz wrote:
> > > strlen(EBUILD_FORMAT) * 19546 = 249K
> > > strlen(EAPI) * 19546 = 77K
> > > strlen(EV) *  19546 = 39K
> > >
> > > Where 19546 is the number if ebuilds in the tree as.
> >
> > So, the size of the tree is 500216K. This makes the percent increase
> > in size for the options above 0.0005%, 0.0002% and 0.0001%
> > respectively. In any case, nearly irrelevant to its present size.
>
> Probably should count some more formatting too.
> strlen(EBUILD_FORMAT="") = 16, 16 * 19546 = 306K
> strlen(EAPI="") = 7, 7 * 19546 = 134K
> strlen(EV="") = 5, 5 *  19546 = 96K
>
> Don't just count the 4K blocks. Count the actual data instead (du -b).
> The tree contains 95912503 bytes of data, including metadata.
> Excluding metadata it is 85301916 bytes.
>
> It's still less than 0.4% increase in the worst case.
>
> I like the 'EAPI' variant, as it's clearly seperate from 'EV', without
> being too long.
>
> To combat some of the increase, EAPI only needs to go into new ebuilds
> that use the functionality. Old ebuilds should default to the current
> syntax.

To allow for this to work with current portage versions, perhaps it would 
be an option to introduce a new extension for .ebuild scripts that use 
it's functionality. That would allow all non-EAPI aware portage versions 
to automatically ignore ebuilds that use this.

Paul

ps. I would also suggest requiring that EAPI can be retrieved by a simple 
line by line parsing without using bash. (This allows for changing the 
parsing system)

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-23 13:20                 ` Paul de Vrieze
@ 2005-08-23 16:00                   ` Brian Harring
  2005-08-25 10:34                     ` Paul de Vrieze
  0 siblings, 1 reply; 27+ messages in thread
From: Brian Harring @ 2005-08-23 16:00 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1257 bytes --]

On Tue, Aug 23, 2005 at 03:20:16PM +0200, Paul de Vrieze wrote:
> To allow for this to work with current portage versions, perhaps it would 
> be an option to introduce a new extension for .ebuild scripts that use 
> it's functionality. That would allow all non-EAPI aware portage versions 
> to automatically ignore ebuilds that use this.
not much for .ebuild? in the tree, personally.
Why?  Cause portage *should not* ignore those ebuilds.  If the user 
wants to merge something that is a later ebuild api then they have, at 
least portage chucks an exception that the UI can wrap into "upgrade 
portage".

With what you're proposing, we instead get bugs about portage missing 
packages.

> ps. I would also suggest requiring that EAPI can be retrieved by a simple 
> line by line parsing without using bash. (This allows for changing the 
> parsing system)
No, that's yanks EAPI setting away from eclasses.

Only time this would be required is if we move away from bash; if that 
occurs, then I'd think a new extension would be required.

As is, shifting the 'template' loaded for an ebuild can be done in 
ebd's init_environ easy enough, so no reason to add the extra 
restrictions/changes.

My 2 cents, at least ;)
~harring

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-23 16:00                   ` Brian Harring
@ 2005-08-25 10:34                     ` Paul de Vrieze
  2005-08-26  7:35                       ` Brian Harring
  0 siblings, 1 reply; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-25 10:34 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 3586 bytes --]

On Tuesday 23 August 2005 18:00, Brian Harring wrote:
> On Tue, Aug 23, 2005 at 03:20:16PM +0200, Paul de Vrieze wrote:
> > To allow for this to work with current portage versions, perhaps it
> > would be an option to introduce a new extension for .ebuild scripts
> > that use it's functionality. That would allow all non-EAPI aware
> > portage versions to automatically ignore ebuilds that use this.
>
> not much for .ebuild? in the tree, personally.
> Why?  Cause portage *should not* ignore those ebuilds.  If the user
> wants to merge something that is a later ebuild api then they have, at
> least portage chucks an exception that the UI can wrap into "upgrade
> portage".
>
> With what you're proposing, we instead get bugs about portage missing
> packages.

What I mean is compatibility with current portage versions. Current 
versions do not understand EAPI. There would be a good chance that they 
could choke on packages with all kinds of new features, even in the sync 
phase. A different extension would ensure that those portage versions 
would still work (crippled) on a new tree. Of course such an extension 
change should only be done once. Once the API versions are available this 
is not an issue.

>
> > ps. I would also suggest requiring that EAPI can be retrieved by a
> > simple line by line parsing without using bash. (This allows for
> > changing the parsing system)
>
> No, that's yanks EAPI setting away from eclasses.

If the eclasses follow similar rules that would be easilly parseable. 
(taking inherit ...) into account is easy as long as the inherit line is 
on one line of it's own. (unconditionally) These rules that would 
allready be followed out of style reasons would make various kinds of 
parsers able to parse them.

> Only time this would be required is if we move away from bash; if that
> occurs, then I'd think a new extension would be required.

It would allow to for example restrict the ebuild format such that initial 
parsing is not done by bash (but the files are still parseable by bash). 
If we perform changes I think it should be done right in the first place.

> As is, shifting the 'template' loaded for an ebuild can be done in
> ebd's init_environ easy enough, so no reason to add the extra
> restrictions/changes.

One of the issues of ebuilds is the cache/metadata stuff. Parsing an 
ebuild for basic information takes a lot of time. This can be done lots 
faster with a less featured parser (I've written one some day) that 
accepts 98% of all current ebuilds, just doesn't like dynamic features in 
the toplevel. Such a parser could be a python plugin and as such easy to 
use from python. However to ensure compatibility with a faster parser the 
EAPI variable should be there in a way that is a little more strict than 
the other variables. And such a restriction is in practice not a 
restriction.

The restriction I propose would be:
- If EAPI is defined in the ebuild it should be unconditional, on it's own
  line in the toplevel of the ebuild before any functions are defined.
  (preferably the first element after the comments and whitespace)

- If EAPI is not defined in the ebuild, but in an eclass, the inherit
  chain should be unconditional and direct. Further more in the eclass the
  above rules should be followed.

Please note that many of the conditions are allready true for current 
ebuilds, just portage can "handle" more.

Paul

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-25 10:34                     ` Paul de Vrieze
@ 2005-08-26  7:35                       ` Brian Harring
  2005-08-26 11:19                         ` [gentoo-portage-dev] " Paul de Vrieze
  0 siblings, 1 reply; 27+ messages in thread
From: Brian Harring @ 2005-08-26  7:35 UTC (permalink / raw
  To: gentoo-dev; +Cc: gentoo-portage-dev

[-- Attachment #1: Type: text/plain, Size: 10039 bytes --]

Pardon the delay, been putting this one off since it's going to be a 
fun one to address, and will be a bit long :)

On Thu, Aug 25, 2005 at 12:34:00PM +0200, Paul de Vrieze wrote:
> What I mean is compatibility with current portage versions. Current 
> versions do not understand EAPI. There would be a good chance that they 
> could choke on packages with all kinds of new features, even in the sync 
> phase. A different extension would ensure that those portage versions 
> would still work (crippled) on a new tree. Of course such an extension 
> change should only be done once. Once the API versions are available this 
> is not an issue.

General portage stance towards EAPI is unset EAPI == 0 (current stable 
ebuild format); if EAPI > then portage internal EAPI, unable to merge, 
which should be able to be detected during buildplan.

Current portage doesn't know about EAPI; boned in that respect I'll 
admit, but it's the case for all new features rolled out- three options 
for dealing with this
1) Usual method, deploy support, N months later use support.
2) tweak stable so it's aware and can complain.  Still requires 
   people to upgrade, just makes it so that they're not forced into 
   upgrading to 3.x; this is mainly a benefit for those who may don't 
   care to try the first few releases of 3.x when it hits (akin to 
   people dodging the first release or two of a gcc release).

Worth noting that one rather visibile aspect of EAPI=1 is that 
(assuming the council votes on it, and yay's it) glep33 *will* result 
in current eclasses being effectively abandoned w/in the N months 
after an EAPI capable portage is released.

Sound kind of bad, but people will have to upgrade for the 
capabilities.  If EAPI was pegged into portage/ebuilds already 
it wouldn't be an issue, issues could be detected prior.  
Unfortunately it's not, and introduction of it (and use of it) is 
going to involve a few road bumps.

Plus side, once it's in, portage *will* know if the ebuild is 
incompatible with the pythonic/bash ebuild code, and portage/the UI 
can act accordingly.

Meanwhile, the changes that are being pushed into EAPI are addition of 
configure phase (broken out from compile), elib addition, and eclass2 
support (same beast, different rules due to env save/restoration).

The potential for horkage on sync'ing isn't there due to the fact 
that's purely python side; ebuild*sh doesn't play into it.

Re: regen, issue isn't really there either; if you try and merge an 
eapi=0 on a non eapi aware portage, it works, same as it did before.
If you try to merge an eapi=1 ebuild you hit either an issue with 
inherit, or a bail immediately in src_compile, due to the fact eapi=1 
ebuilds will seperate configure out from compile (eapi=0 portage won't 
know to call it; no configure == failed compile).

That said, there also quite likely is a change coming down the pipe to 
the tree's cache; the change will shift the rsync'd metadata cache 
over to a key/val based cache.

Why oh why, yet another cache change?  Simple.  The change moves away 
from list based format to key:value pairs; in short it's a change that 
once made, means keys can be added to the cache from that point on 
without causing cache complaints on sync'ing.  Last cache breakage, I 
swear :P

EAPI addition being the next key tagged in; stable (not surprising) 
needs to be released with a version capable of reading both old and 
new format; once that's done, time for the usual "yo, upgrade people, 
something's coming down the line".  Same version that supports 
old and new cache format can also include rudimentary eapi awareness.

At least that's what I'm thinking.  It's roughly inline with the 
previous forced cache breakages, just in this case slipping in some 
extra support in the process.

Notices obviously would go out prior to moving on this also, along 
with a good chunk of waiting.


> > > ps. I would also suggest requiring that EAPI can be retrieved by a
> > > simple line by line parsing without using bash. (This allows for
> > > changing the parsing system)
> >
> > No, that yanks EAPI setting away from eclasses.
> 
> If the eclasses follow similar rules that would be easilly parseable. 
> (taking inherit ...) into account is easy as long as the inherit line is 
> on one line of it's own. (unconditionally) These rules that would 
> allready be followed out of style reasons would make various kinds of 
> parsers able to parse them.

while it's insane, people *can* use indirection (eg inherit $var) for 
inherit's as long as it's deterministic, always the same inherit call 
for that ebuild's data.  Don't see a good reason to ixnay that, which 
means we'd have to parse the whole enchilada, eclasses and the ebuild.

Effectively, raiding a single var out wouldn't fly; eclasses could 
override an ebuild's eapi setting for example, just like any other 
metadata key (imo).

A *true* format change, moving away from bash for example or moving to 
an executing design of ebuilds would require an extension change; such 
a change must imo anyways, since it's not a change of the ebuild env's 
template/hooks; either it's a fundamentally different model for 
ebuilds- either via no longer being bash based, or moving away from our 
declarative design of ebuilds.


> > Only time this would be required is if we move away from bash; if that
> > occurs, then I'd think a new extension would be required.
<inserting a comment> contradicting myself via above, above is correct </comment>
>
> It would allow to for example restrict the ebuild format such that initial 
> parsing is not done by bash (but the files are still parseable by bash). 
> If we perform changes I think it should be done right in the first place.
Elaborate please

> > As is, shifting the 'template' loaded for an ebuild can be done in
> > ebd's init_environ easy enough, so no reason to add the extra
> > restrictions/changes.
> 
> One of the issues of ebuilds is the cache/metadata stuff. Parsing an 
> ebuild for basic information takes a lot of time. This can be done lots 
> faster with a less featured parser (I've written one some day) that 
> accepts 98% of all current ebuilds, just doesn't like dynamic features in 
> the toplevel. Such a parser could be a python plugin and as such easy to 
> use from python. However to ensure compatibility with a faster parser the 
> EAPI variable should be there in a way that is a little more strict than 
> the other variables. And such a restriction is in practice not a 
> restriction.

Any parser that doesn't support full bash syntax isn't acceptable from 
where I sit; re: slow down, 2.1 is around 33% faster sourcing the 
whole tree (some cases 60% faster, some 5%, etc).  The speed up's are 
also what allow template's to be swapped, the eapi concept.

I'd note limiting the bash capabilities is a restriction that 
transcends anything EAPI should supply; changes to what's possible in 
the language (a subset of bash syntax as you're suggesting) are a 
seperate format from where I draw the line in the sand.

Mainly, limiting the syntax has the undesired affect of deviating from 
what users/devs know already; mistakes *will* occur.  QA tools can be 
written, but people are fallable; both in writing a QA tool, and 
abiding by the syntax subset allowed.


> The restriction I propose would be:
> - If EAPI is defined in the ebuild it should be unconditional, on it's own
>   line in the toplevel of the ebuild before any functions are defined.
>   (preferably the first element after the comments and whitespace)
> 
> - If EAPI is not defined in the ebuild, but in an eclass, the inherit
>   chain should be unconditional and direct. Further more in the eclass the
>   above rules should be followed.
> 
> Please note that many of the conditions are allready true for current 
> ebuilds, just portage can "handle" more.

inherit chain must be unconditional anyways.  re: eapi placement, I 
would view that as somewhat arbitrary; the question is what gain it 
would give.

I'd wonder about the parsing speed of your parser; the difference 
between parsing ebuilds and running from cache metadata is several 
orders of magnitude differant- the current cache backend flat_list 
and portage design properly corrected ought to widen the gap too.
General cache lookup is slow due to- 
A) bad call patterns, allowed by the api; N calls to get different 
   bits of metadata from a cpv, resulting in potentially N to disk set 
   of ops.
B) default cache requires opening/closing a file per cpv lookup; syscall's 
   are killer here.
C) every metadata lookup incurs 2 stats, ebuild and cache file.

Getting to the point; cache is 100x to 400x faster then sourcing for 
<=2.0.51.  Haven't tested it under 2.1, should be different due to 
cache and regen fixups/rewrites.

Back to the point, essentially, EAPI matters in two places; 
1) metadata transfer from the ebuild env into python side during 
   depends phase; has to know what to transfer key wise.
2) actual ebuild build phase executions; if it isn't the depends phase, 
   eapi being required so that the parser can swap drop in the appropriate 
   ebuild env template.

The restrictions suggested for EAPI would only make sense if eyeing 
#1, an alternative parser; no reason to drop the cache unless the 
parser is capable of hitting the same runtime performance the cache 
can hit (frankly, it's not possible from where I'm sitting although 
the gap can be narrowed).

So... the EAPI limitations, not much for due to the conclusion above.  

Interested in the parser however, since ebd is effectively a pipe 
hack so that pythonic portage can control ebuild.sh.  I (and others) 
have been after a bashlib for a while, just no one has crunched down 
and done it (easier said then done I suspect).

My 2 cents at least.
~harring

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-portage-dev] Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-26  7:35                       ` Brian Harring
@ 2005-08-26 11:19                         ` Paul de Vrieze
  2005-08-26 12:50                           ` Paul de Vrieze
  0 siblings, 1 reply; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-26 11:19 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 8414 bytes --]

On Friday 26 August 2005 09:35, Brian Harring wrote:
> Any parser that doesn't support full bash syntax isn't acceptable from
> where I sit; re: slow down, 2.1 is around 33% faster sourcing the
> whole tree (some cases 60% faster, some 5%, etc).  The speed up's are
> also what allow template's to be swapped, the eapi concept.

For the toplevel of the ebuilds there are many things that are not 
allowed. Basically things must be deterministic for the cache to work. I 
have built an extension that would parse 98% of current ebuilds properly, 
and much (more than 10 times) faster than the bash/ecache way. It is in 
the shape of a python module written in C. It just ignores the functions, 
so anything is allowed in there. As such the parser understands enough of 
bash to support it. Even variable substitution and inherit are supported. 
What's not supported is various kinds of uncommon substitution tricks 
that should probably not happen in the toplevel either.

Using EAPI would also allow to see something as capabilities. Say have 
portage support version 2-relaxed and version 2-strict. 2-relaxed has all 
the bash freedom and is parsed using bash. 2-strict would allow parsing 
by a faster parser module, but would limit the bash freedom. I don't say 
we have to do this, but if ebuild and eclass EAPI declarations follow a 
few very simple rules that are normally obeyed, it would be possible to 
support this thing in the future.

One of the problems I see with the current ebuild format is that it is 
impossible to do incompatible changes at all. This means that many 
features that might be desired can not be implemented. EAPI can relieve 
that. To make it easier there should be an easy way to get the EAPI of a 
package.

>
> I'd note limiting the bash capabilities is a restriction that
> transcends anything EAPI should supply; changes to what's possible in
> the language (a subset of bash syntax as you're suggesting) are a
> seperate format from where I draw the line in the sand.

What I suggest is making a policy that would make this possible in the 
future. Note that I do not wish to restrict any bash functionality in the 
various functions in the ebuild. 

> Mainly, limiting the syntax has the undesired affect of deviating from
> what users/devs know already; mistakes *will* occur.  QA tools can be
> written, but people are fallable; both in writing a QA tool, and
> abiding by the syntax subset allowed.

The QA tools would just be running the parser. If the parser chokes (which 
it doesn't easilly) then the ebuild does not conform to the correct 
syntax. It's even possible to just compare the variables returned. If 
they don't match, the format is wrong for the C parser.

>
> > The restriction I propose would be:
> > - If EAPI is defined in the ebuild it should be unconditional, on
> > it's own line in the toplevel of the ebuild before any functions are
> > defined. (preferably the first element after the comments and
> > whitespace)
> >
> > - If EAPI is not defined in the ebuild, but in an eclass, the inherit
> >   chain should be unconditional and direct. Further more in the
> > eclass the above rules should be followed.
> >
> > Please note that many of the conditions are allready true for current
> > ebuilds, just portage can "handle" more.
>
> inherit chain must be unconditional anyways.  re: eapi placement, I
> would view that as somewhat arbitrary; the question is what gain it
> would give.

The gain of putting it at the top would be that there are less chances for 
parsers to have choked on incompatible syntax. If EAPI is in the top, at 
some point incompatible syntax might be allowed, and older parsers could 
still retrieve the EAPI. Of course any syntax that works on 'egrep 
"^[ \t]*EAPI[ \t]*="' should be no problem.

>
> I'd wonder about the parsing speed of your parser; the difference
> between parsing ebuilds and running from cache metadata is several
> orders of magnitude differant- the current cache backend flat_list
> and portage design properly corrected ought to widen the gap too.
> General cache lookup is slow due to-
> A) bad call patterns, allowed by the api; N calls to get different
>    bits of metadata from a cpv, resulting in potentially N to disk set
>    of ops.
> B) default cache requires opening/closing a file per cpv lookup;
> syscall's are killer here.
> C) every metadata lookup incurs 2 stats, ebuild and cache file.

This parser was part of a stranded rewrite attempt. One of the features 
was that it regarded packages and package instances (specific files) as 
objects whose attributes would be lazilly evaluated. That means that it 
would parse if not available, lookup otherwise. The speed of "emerge -s" 
is stunning on the program as it uses a directory search which is orders 
of magnitudes faster than python doing the same thing.

> Getting to the point; cache is 100x to 400x faster then sourcing for
> <=2.0.51.  Haven't tested it under 2.1, should be different due to
> cache and regen fixups/rewrites.

Don't forget the fact that bash must be execed for normal parses, and that 
python has extremely slow string handling when not using one of the 
standard parsing modules (that work in C). To put my money where my mouth 
is, I've tarred up my code and put it on my dev space:
http://dev.gentoo.org/~pauldv/portage_native-0.1.tar.bz2

Just run make in the extracted dir. The binary created is xbuildparse, 
this is a standalone parser that takes the ebuild as argument. It will 
look for eclasses in /usr/portage/eclass.

The python module can be built with "make xbuildparse.so", and includes a 
little bit of help reachable through the normal python way.
>
> Back to the point, essentially, EAPI matters in two places;
> 1) metadata transfer from the ebuild env into python side during
>    depends phase; has to know what to transfer key wise.
> 2) actual ebuild build phase executions; if it isn't the depends phase,
>    eapi being required so that the parser can swap drop in the
> appropriate ebuild env template.

I think it also matters in actually allowing future incompatible versions 
of ebuild formats. I don't mean to say good bye to the current format, 
but when redesigning the format, we should now design it for 
extensionability.

> The restrictions suggested for EAPI would only make sense if eyeing
> #1, an alternative parser; no reason to drop the cache unless the
> parser is capable of hitting the same runtime performance the cache
> can hit (frankly, it's not possible from where I'm sitting although
> the gap can be narrowed).

You're probably right, but the time needed to parse an ebuild can be 
reduced that much that parsing will not be the issue anymore, but 
building the right tree is:

time ./xbuildparse /usr/portage/sys-libs/db/db-4.2.52_p2.ebuild 
&>/dev/null

real    0m0.054s
user    0m0.048s
sys     0m0.002s

Please note that the parser is incomplete, does have some small bugs 
(don't try it on flag-o-matic as it someway goes into an endless loop), 
and could probably do some things smarter.

> So... the EAPI limitations, not much for due to the conclusion above.
>
> Interested in the parser however, since ebd is effectively a pipe
> hack so that pythonic portage can control ebuild.sh.  I (and others)
> have been after a bashlib for a while, just no one has crunched down
> and done it (easier said then done I suspect).

See it above. It does not fully understand every bash statement around. 
And important is that it currently does not understand the "if" 
statement. This is easy to add though, just wasn't added out of "policy". 
But being that even my own ebuilds (like db) use it, it should probably 
be added.

I do believe that the parser could be made usefull for most ebuilds. This 
would however still mean a small restriction in allowed syntax. The 
parser module has basically one function which is "parse" it parses an 
ebuild, the eclasses, and returns a list of variables. Not all variables 
are substituted though, I have a python function that does this. If 
people are interested I can take a look at sanitizing my whole tree and 
providing it.

Paul

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-portage-dev] Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-26 11:19                         ` [gentoo-portage-dev] " Paul de Vrieze
@ 2005-08-26 12:50                           ` Paul de Vrieze
  2005-08-26 14:58                             ` Ciaran McCreesh
  0 siblings, 1 reply; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-26 12:50 UTC (permalink / raw
  To: gentoo-dev; +Cc: gentoo-portage-dev

[-- Attachment #1: Type: text/plain, Size: 871 bytes --]

> Don't forget the fact that bash must be execed for normal parses, and
> that python has extremely slow string handling when not using one of
> the standard parsing modules (that work in C). To put my money where my
> mouth is, I've tarred up my code and put it on my dev space:
> http://dev.gentoo.org/~pauldv/portage_native-0.1.tar.bz2

I've fixed up a particular issue with it (getting into an endless loop) 
and made a very simple webpage for it:
http://dev.gentoo.org/~pauldv/

ps. People please be aware that this is still alpha in the sense of not 
being complete. For better working it should probably support if 
statements properly, and at least do variable substitution. It would mean 
that the parser would have to retain a state etc.

Paul

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-portage-dev] Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-26 12:50                           ` Paul de Vrieze
@ 2005-08-26 14:58                             ` Ciaran McCreesh
  2005-08-26 15:08                               ` Paul de Vrieze
  2005-08-26 15:11                               ` Paul de Vrieze
  0 siblings, 2 replies; 27+ messages in thread
From: Ciaran McCreesh @ 2005-08-26 14:58 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 747 bytes --]

On Fri, 26 Aug 2005 14:50:52 +0200 Paul de Vrieze <pauldv@gentoo.org>
wrote:
| ps. People please be aware that this is still alpha in the sense of
| not being complete. For better working it should probably support if 
| statements properly, and at least do variable substitution. It would
| mean that the parser would have to retain a state etc.

Isn't this pretty much a waste of time if it can't handle all the code
in versionator? We're trying to move people away from ugly unreliable
manual substitutions towards readable, maintainable code using the
eclass...

-- 
Ciaran McCreesh : Gentoo Developer (Vim, Shell tools, Fluxbox, Cron)
Mail            : ciaranm at gentoo.org
Web             : http://dev.gentoo.org/~ciaranm


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-portage-dev] Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-26 14:58                             ` Ciaran McCreesh
@ 2005-08-26 15:08                               ` Paul de Vrieze
  2005-08-26 15:11                               ` Paul de Vrieze
  1 sibling, 0 replies; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-26 15:08 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1050 bytes --]

On Friday 26 August 2005 16:58, Ciaran McCreesh wrote:
> On Fri, 26 Aug 2005 14:50:52 +0200 Paul de Vrieze <pauldv@gentoo.org>
>
> wrote:
> | ps. People please be aware that this is still alpha in the sense of
> | not being complete. For better working it should probably support if
> | statements properly, and at least do variable substitution. It would
> | mean that the parser would have to retain a state etc.
>
> Isn't this pretty much a waste of time if it can't handle all the code
> in versionator? We're trying to move people away from ugly unreliable
> manual substitutions towards readable, maintainable code using the
> eclass...

Hey, it said "alpha". I've just been working on having it parse even more 
eclasses. It now handles multilib.eclass, and I'll be working on making 
eutils parse fully. I need to revamp the variable substitution 
recognition a bit. I'll make sure that it handles versionator too.

Paul

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-portage-dev] Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-26 14:58                             ` Ciaran McCreesh
  2005-08-26 15:08                               ` Paul de Vrieze
@ 2005-08-26 15:11                               ` Paul de Vrieze
  2005-08-26 15:20                                 ` Paul de Vrieze
  1 sibling, 1 reply; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-26 15:11 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1017 bytes --]

On Friday 26 August 2005 16:58, Ciaran McCreesh wrote:
> On Fri, 26 Aug 2005 14:50:52 +0200 Paul de Vrieze <pauldv@gentoo.org>
>
> wrote:
> | ps. People please be aware that this is still alpha in the sense of
> | not being complete. For better working it should probably support if
> | statements properly, and at least do variable substitution. It would
> | mean that the parser would have to retain a state etc.
>
> Isn't this pretty much a waste of time if it can't handle all the code
> in versionator? We're trying to move people away from ugly unreliable
> manual substitutions towards readable, maintainable code using the
> eclass...

With lack of variable substitution support I mean that it just forwards 
the variable substitutions to the calling application (output). It should 
probably also be made more aware of the variables that are allways 
extended like USE and DEPEND.

Paul

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [gentoo-portage-dev] Re: [gentoo-dev] EBUILD_FORMAT support
  2005-08-26 15:11                               ` Paul de Vrieze
@ 2005-08-26 15:20                                 ` Paul de Vrieze
  0 siblings, 0 replies; 27+ messages in thread
From: Paul de Vrieze @ 2005-08-26 15:20 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1817 bytes --]

On Friday 26 August 2005 17:11, Paul de Vrieze wrote:
> On Friday 26 August 2005 16:58, Ciaran McCreesh wrote:
> > On Fri, 26 Aug 2005 14:50:52 +0200 Paul de Vrieze <pauldv@gentoo.org>
> >
> > wrote:
> > | ps. People please be aware that this is still alpha in the sense of
> > | not being complete. For better working it should probably support
> > | if statements properly, and at least do variable substitution. It
> > | would mean that the parser would have to retain a state etc.
> >
> > Isn't this pretty much a waste of time if it can't handle all the
> > code in versionator? We're trying to move people away from ugly
> > unreliable manual substitutions towards readable, maintainable code
> > using the eclass...
>
> With lack of variable substitution support I mean that it just forwards
> the variable substitutions to the calling application (output). It
> should probably also be made more aware of the variables that are
> allways extended like USE and DEPEND.

I just checked the versionator eclass though, and indeed it wouldn't 
support it. Versionator uses functions inside the variables. The parser 
does not parse functions at all beyond being able to determine their end. 
Perhaps it would be best to handle versionator specially and internalize 
the functions. While it is possible to interpret the bash functions this 
would mean full bash function duplication, make the parser more complex 
and diminish the speed of the parser.

I could even do this function mimicking in such a way that nonsupported 
functions automatically get signaled as requiring compatibility mode 
(parser is uncertain about it's results, and the old parser should be 
used).

Paul

-- 
Paul de Vrieze
Gentoo Developer
Mail: pauldv@gentoo.org
Homepage: http://www.devrieze.net

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2005-08-26 15:28 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-07  0:20 [gentoo-dev] EBUILD_FORMAT support Sven Wegener
2005-07-07  0:41 ` Mike Frysinger
2005-07-07  0:49   ` Sven Wegener
2005-07-07  1:01     ` Nathan L. Adams
2005-07-07  1:09       ` Sven Wegener
2005-07-07  1:22         ` Olivier Crête
2005-07-07  1:28         ` Joshua Baergen
2005-07-07  4:36       ` Kito
2005-07-07  4:47         ` Mike Frysinger
2005-07-07 12:19           ` Ned Ludd
2005-07-07 12:31             ` Diego 'Flameeyes' Pettenò
2005-07-07 14:37             ` twofourtysix
2005-07-07 17:20               ` Alec Warner
2005-07-07 17:52             ` Donnie Berkholz
2005-07-07 18:28               ` Maurice van der Pot
2005-07-08  3:31                 ` Donnie Berkholz
2005-07-07 20:42               ` Robin H. Johnson
2005-08-23 13:20                 ` Paul de Vrieze
2005-08-23 16:00                   ` Brian Harring
2005-08-25 10:34                     ` Paul de Vrieze
2005-08-26  7:35                       ` Brian Harring
2005-08-26 11:19                         ` [gentoo-portage-dev] " Paul de Vrieze
2005-08-26 12:50                           ` Paul de Vrieze
2005-08-26 14:58                             ` Ciaran McCreesh
2005-08-26 15:08                               ` Paul de Vrieze
2005-08-26 15:11                               ` Paul de Vrieze
2005-08-26 15:20                                 ` Paul de Vrieze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox