Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Gentoo Development (http://www.linux-archive.org/gentoo-development/)
-   -   ebuild laziness and binpkg overhead (http://www.linux-archive.org/gentoo-development/674684-ebuild-laziness-binpkg-overhead.html)

Jeroen Roovers 06-19-2012 09:35 PM

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

Samuli Suominen 06-20-2012 02:46 AM

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

Mike Frysinger 06-20-2012 03:19 AM

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

Mike Frysinger 06-20-2012 03:21 AM

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

Samuli Suominen 06-20-2012 03:27 AM

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

Doug Goldstein 06-20-2012 03:46 AM

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

Mike Gilbert 06-20-2012 03:59 AM

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.

Samuli Suominen 06-20-2012 04:18 AM

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

Mike Frysinger 06-29-2012 05:33 AM

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

Mike Frysinger 06-29-2012 05:34 AM

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


All times are GMT. The time now is 12:55 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.