FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Development

 
 
LinkBack Thread Tools
 
Old 06-19-2012, 09:35 PM
Jeroen Roovers
 
Default ebuild laziness and binpkg overhead

On Tue, 12 Jun 2012 23:02:40 -0400
Mike Frysinger <vapier@gentoo.org> wrote:

> i've noticed a growing trend where people put setup of variables into
> pkg_setup that only matter to src_* funcs presumably so they don't
> have to call the respective src_* func from an inherited eclass.
> unfortunately this adds pointless overhead to binpkgs. can we please
> move away from this practice ?

Like this?

* ERROR: cat/pkg-version failed (prepare phase):
* python_set_active_version() can be used only in pkg_setup() phase
*
* Call stack:
* ebuild.sh, line 85: Called src_prepare
* environment, line 5885: Called python_set_active_version '2'
* environment, line 5603: Called die
* The specific snippet of code:
* die "${FUNCNAME}() can be used only in pkg_setup() phase";
*

Shouldn't that be in src_prepare already, or does python.eclass do
something rather important here while installing a binpkg?


jer
 
Old 06-20-2012, 02:46 AM
Samuli Suominen
 
Default ebuild laziness and binpkg overhead

On 06/15/2012 06:10 PM, Mike Frysinger wrote:

On Friday 15 June 2012 03:44:14 Samuli Suominen wrote:

On 06/13/2012 06:02 AM, Mike Frysinger wrote:

i've noticed a growing trend where people put setup of variables into
pkg_setup that only matter to src_* funcs presumably so they don't have
to call the respective src_* func from an inherited eclass.
unfortunately this adds pointless overhead to binpkgs. can we please
move away from this practice ?


Every Xfce ebuild in gentoo-x86 is using pkg_setup() for 3 variables,
DOCS for src_install, PATCHES for src_prepare


these are static variables, so defining them in a func is pointless


"sort of" not necessarily, 'has $useflag && PATCHES+=( )' has been used
before, not sure if it's used in tree right now or not





and XFCONF for src_configure


now you're down to one variable which means you've got one func to /properly/
define


src_configure() still requires calling itself (xfconf_src_configure) in
the end of the function
someone suggested writing, for example, xfconf() function that accepts
$@ arguments so you could

src_configure() {
xfconf
$(use_enable foo)
}
but I don't really like that either...

src_setup() would be cool and solve all the forementioned issues

-Samuli
 
Old 06-20-2012, 03:19 AM
Mike Frysinger
 
Default ebuild laziness and binpkg overhead

On Tuesday 19 June 2012 22:46:26 Samuli Suominen wrote:
> On 06/15/2012 06:10 PM, Mike Frysinger wrote:
> > On Friday 15 June 2012 03:44:14 Samuli Suominen wrote:
> >> On 06/13/2012 06:02 AM, Mike Frysinger wrote:
> >>> i've noticed a growing trend where people put setup of variables into
> >>> pkg_setup that only matter to src_* funcs presumably so they don't have
> >>> to call the respective src_* func from an inherited eclass.
> >>> unfortunately this adds pointless overhead to binpkgs. can we please
> >>> move away from this practice ?
> >>
> >> Every Xfce ebuild in gentoo-x86 is using pkg_setup() for 3 variables,
> >> DOCS for src_install, PATCHES for src_prepare
> >
> > these are static variables, so defining them in a func is pointless
>
> "sort of" not necessarily, 'has $useflag && PATCHES+=( )' has been used
> before, not sure if it's used in tree right now or not

as we've always said, USE conditional patches are to be highly discouraged

> >> and XFCONF for src_configure
> >
> > now you're down to one variable which means you've got one func to
> > /properly/ define
>
> src_configure() still requires calling itself (xfconf_src_configure) in
> the end of the function

yes, but that's the correct way to do it
-mike
 
Old 06-20-2012, 03:21 AM
Mike Frysinger
 
Default ebuild laziness and binpkg overhead

On Tuesday 19 June 2012 17:35:00 Jeroen Roovers wrote:
> On Tue, 12 Jun 2012 23:02:40 -0400 Mike Frysinger wrote:
> > i've noticed a growing trend where people put setup of variables into
> > pkg_setup that only matter to src_* funcs presumably so they don't
> > have to call the respective src_* func from an inherited eclass.
> > unfortunately this adds pointless overhead to binpkgs. can we please
> > move away from this practice ?
>
> Like this?

not quite

> * ERROR: cat/pkg-version failed (prepare phase):
> * python_set_active_version() can be used only in pkg_setup() phase
> *
> * Call stack:
> * ebuild.sh, line 85: Called src_prepare
> * environment, line 5885: Called python_set_active_version '2'
> * environment, line 5603: Called die
> * The specific snippet of code:
> * die "${FUNCNAME}() can be used only in pkg_setup() phase";
> *
>
> Shouldn't that be in src_prepare already, or does python.eclass do
> something rather important here while installing a binpkg?

Gentoo's python integration is an ugly beast. in this case, i believe it's
screwing with your $ROOT which means it has to be in pkg_* (let's quietly
ignore what happens if you try to emerge two ebuilds which need conflicting
versions of python active).
-mike
 
Old 06-20-2012, 03:27 AM
Samuli Suominen
 
Default ebuild laziness and binpkg overhead

On 06/20/2012 06:19 AM, Mike Frysinger wrote:

On Tuesday 19 June 2012 22:46:26 Samuli Suominen wrote:

On 06/15/2012 06:10 PM, Mike Frysinger wrote:

On Friday 15 June 2012 03:44:14 Samuli Suominen wrote:

On 06/13/2012 06:02 AM, Mike Frysinger wrote:

i've noticed a growing trend where people put setup of variables into
pkg_setup that only matter to src_* funcs presumably so they don't have
to call the respective src_* func from an inherited eclass.
unfortunately this adds pointless overhead to binpkgs. can we please
move away from this practice ?


Every Xfce ebuild in gentoo-x86 is using pkg_setup() for 3 variables,
DOCS for src_install, PATCHES for src_prepare


these are static variables, so defining them in a func is pointless


"sort of" not necessarily, 'has $useflag && PATCHES+=( )' has been used
before, not sure if it's used in tree right now or not


as we've always said, USE conditional patches are to be highly discouraged


I agree BUT there are cases where it's OK to use conditional patching:

For example, libfoo-0.1.1 is broken and is fixed in git for master which
will be in next release. The fix doesn't apply to 0.1.1 cleanly without
heavy modifications.
Then you would take the easiest possible route to get 0.1.1 working
again, with the comfort of knowing it's properly fixed for the next version.


-Samuli
 
Old 06-20-2012, 03:46 AM
Doug Goldstein
 
Default ebuild laziness and binpkg overhead

On Tue, Jun 19, 2012 at 10:27 PM, Samuli Suominen <ssuominen@gentoo.org> wrote:
> On 06/20/2012 06:19 AM, Mike Frysinger wrote:
>>
>> On Tuesday 19 June 2012 22:46:26 Samuli Suominen wrote:
>>>
>>> On 06/15/2012 06:10 PM, Mike Frysinger wrote:
>>>>
>>>> On Friday 15 June 2012 03:44:14 Samuli Suominen wrote:
>>>>>
>>>>> On 06/13/2012 06:02 AM, Mike Frysinger wrote:
>>>>>>
>>>>>> i've noticed a growing trend where people put setup of variables into
>>>>>> pkg_setup that only matter to src_* funcs presumably so they don't
>>>>>> have
>>>>>> to call the respective src_* func from an inherited eclass.
>>>>>> unfortunately this adds pointless overhead to binpkgs. *can we please
>>>>>> move away from this practice ?
>>>>>
>>>>>
>>>>> Every Xfce ebuild in gentoo-x86 is using pkg_setup() for 3 variables,
>>>>> DOCS for src_install, PATCHES for src_prepare
>>>>
>>>>
>>>> these are static variables, so defining them in a func is pointless
>>>
>>>
>>> "sort of" not necessarily, 'has $useflag && PATCHES+=( )' has been used
>>> before, not sure if it's used in tree right now or not
>>
>>
>> as we've always said, USE conditional patches are to be highly discouraged
>
>
> I agree BUT there are cases where it's OK to use conditional patching:
>
> For example, libfoo-0.1.1 is broken and is fixed in git for master which
> will be in next release. The fix doesn't apply to 0.1.1 cleanly without
> heavy modifications.
> Then you would take the easiest possible route to get 0.1.1 working again,
> with the comfort of knowing it's properly fixed for the next version.
>
> -Samuli
>

I assume you mean libfoo-0.1.1 is broken when USE=bar is enabled and
you get a patch for that conditional case when USE=bar is enabled.

Either way, the better solution is to mask it and have people use libfoo-0.1.0

--
Doug Goldstein
 
Old 06-20-2012, 03:59 AM
Mike Gilbert
 
Default ebuild laziness and binpkg overhead

On Tue, Jun 19, 2012 at 11:21 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> On Tuesday 19 June 2012 17:35:00 Jeroen Roovers wrote:
>> On Tue, 12 Jun 2012 23:02:40 -0400 Mike Frysinger wrote:
>> > i've noticed a growing trend where people put setup of variables into
>> > pkg_setup that only matter to src_* funcs presumably so they don't
>> > have to call the respective src_* func from an inherited eclass.
>> > unfortunately this adds pointless overhead to binpkgs. *can we please
>> > move away from this practice ?
>>
>> Like this?
>
> not quite
>
>> ** ERROR: cat/pkg-version failed (prepare phase):
>> ** * python_set_active_version() can be used only in pkg_setup() phase
>> **
>> ** Call stack:
>> ** * * ebuild.sh, line * 85: *Called src_prepare
>> ** * environment, line 5885: *Called python_set_active_version '2'
>> ** * environment, line 5603: *Called die
>> ** The specific snippet of code:
>> ** * * * * * die "${FUNCNAME}() can be used only in pkg_setup() phase";
>> **
>>
>> Shouldn't that be in src_prepare already, or does python.eclass do
>> something rather important here while installing a binpkg?
>
> Gentoo's python integration is an ugly beast. *in this case, i believe it's
> screwing with your $ROOT which means it has to be in pkg_* (let's quietly
> ignore what happens if you try to emerge two ebuilds which need conflicting
> versions of python active).
> -mike

python_set_active_version basically just sets the EPYTHON and
PYTHON_ABI variables; nothing in ${ROOT} is modified.

The variables are used in python_pkg_setup to implement use-flag
checks for PYTHON_USE_WITH, and also in python_mod_optimize which is
called in pkg_postinst.
 
Old 06-20-2012, 04:18 AM
Samuli Suominen
 
Default ebuild laziness and binpkg overhead

On 06/20/2012 06:46 AM, Doug Goldstein wrote:

On Tue, Jun 19, 2012 at 10:27 PM, Samuli Suominen <ssuominen@gentoo.org> wrote:

On 06/20/2012 06:19 AM, Mike Frysinger wrote:


On Tuesday 19 June 2012 22:46:26 Samuli Suominen wrote:


On 06/15/2012 06:10 PM, Mike Frysinger wrote:


On Friday 15 June 2012 03:44:14 Samuli Suominen wrote:


On 06/13/2012 06:02 AM, Mike Frysinger wrote:


i've noticed a growing trend where people put setup of variables into
pkg_setup that only matter to src_* funcs presumably so they don't
have
to call the respective src_* func from an inherited eclass.
unfortunately this adds pointless overhead to binpkgs. can we please
move away from this practice ?



Every Xfce ebuild in gentoo-x86 is using pkg_setup() for 3 variables,
DOCS for src_install, PATCHES for src_prepare



these are static variables, so defining them in a func is pointless



"sort of" not necessarily, 'has $useflag && PATCHES+=( )' has been used
before, not sure if it's used in tree right now or not



as we've always said, USE conditional patches are to be highly discouraged



I agree BUT there are cases where it's OK to use conditional patching:

For example, libfoo-0.1.1 is broken and is fixed in git for master which
will be in next release. The fix doesn't apply to 0.1.1 cleanly without
heavy modifications.
Then you would take the easiest possible route to get 0.1.1 working again,
with the comfort of knowing it's properly fixed for the next version.

-Samuli



I assume you mean libfoo-0.1.1 is broken when USE=bar is enabled and
you get a patch for that conditional case when USE=bar is enabled.


Right. Of course.


Either way, the better solution is to mask it and have people use libfoo-0.1.0



Doesn't really apply to this case:
Think about masking stable Xfce 4.10 when the fix is in git that will be
released as 4.12 in about year. ;-)


- Samuli
 
Old 06-29-2012, 05:33 AM
Mike Frysinger
 
Default ebuild laziness and binpkg overhead

On Tuesday 19 June 2012 23:27:06 Samuli Suominen wrote:
> On 06/20/2012 06:19 AM, Mike Frysinger wrote:
> > On Tuesday 19 June 2012 22:46:26 Samuli Suominen wrote:
> >> On 06/15/2012 06:10 PM, Mike Frysinger wrote:
> >>> On Friday 15 June 2012 03:44:14 Samuli Suominen wrote:
> >>>> On 06/13/2012 06:02 AM, Mike Frysinger wrote:
> >>>>> i've noticed a growing trend where people put setup of variables into
> >>>>> pkg_setup that only matter to src_* funcs presumably so they don't
> >>>>> have to call the respective src_* func from an inherited eclass.
> >>>>> unfortunately this adds pointless overhead to binpkgs. can we please
> >>>>> move away from this practice ?
> >>>>
> >>>> Every Xfce ebuild in gentoo-x86 is using pkg_setup() for 3 variables,
> >>>> DOCS for src_install, PATCHES for src_prepare
> >>>
> >>> these are static variables, so defining them in a func is pointless
> >>
> >> "sort of" not necessarily, 'has $useflag && PATCHES+=( )' has been used
> >> before, not sure if it's used in tree right now or not
> >
> > as we've always said, USE conditional patches are to be highly
> > discouraged
>
> I agree BUT there are cases where it's OK to use conditional patching:
>
> For example, libfoo-0.1.1 is broken and is fixed in git for master which
> will be in next release. The fix doesn't apply to 0.1.1 cleanly without
> heavy modifications.
> Then you would take the easiest possible route to get 0.1.1 working
> again, with the comfort of knowing it's properly fixed for the next
> version.

hypothetical situations are great and all, but how many of those apply to the
ebuilds you're worried about ? i'd wager most do not. can we please fix the
majority here ? i'd be significantly less grumpy if we treated this as the
exception instead of the rule.
-mike
 
Old 06-29-2012, 05:34 AM
Mike Frysinger
 
Default ebuild laziness and binpkg overhead

On Tuesday 19 June 2012 23:59:02 Mike Gilbert wrote:
> On Tue, Jun 19, 2012 at 11:21 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> > On Tuesday 19 June 2012 17:35:00 Jeroen Roovers wrote:
> >> On Tue, 12 Jun 2012 23:02:40 -0400 Mike Frysinger wrote:
> >> > i've noticed a growing trend where people put setup of variables into
> >> > pkg_setup that only matter to src_* funcs presumably so they don't
> >> > have to call the respective src_* func from an inherited eclass.
> >> > unfortunately this adds pointless overhead to binpkgs. can we please
> >> > move away from this practice ?
> >>
> >> Like this?
> >
> > not quite
> >
> >> * ERROR: cat/pkg-version failed (prepare phase):
> >> * python_set_active_version() can be used only in pkg_setup() phase
> >> *
> >> * Call stack:
> >> * ebuild.sh, line 85: Called src_prepare
> >> * environment, line 5885: Called python_set_active_version '2'
> >> * environment, line 5603: Called die
> >> * The specific snippet of code:
> >> * die "${FUNCNAME}() can be used only in pkg_setup() phase";
> >> *
> >>
> >> Shouldn't that be in src_prepare already, or does python.eclass do
> >> something rather important here while installing a binpkg?
> >
> > Gentoo's python integration is an ugly beast. in this case, i believe
> > it's screwing with your $ROOT which means it has to be in pkg_* (let's
> > quietly ignore what happens if you try to emerge two ebuilds which need
> > conflicting versions of python active).
>
> python_set_active_version basically just sets the EPYTHON and
> PYTHON_ABI variables; nothing in ${ROOT} is modified.

good to know

> The variables are used in python_pkg_setup to implement use-flag
> checks for PYTHON_USE_WITH, and also in python_mod_optimize which is
> called in pkg_postinst.

thx for the details
-mike
 

Thread Tools




All times are GMT. The time now is 01:41 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org