Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-29 Thread Francesco Riosa
2011/12/29 Brian Harring ferri...@gmail.com:
 On Thu, Dec 29, 2011 at 02:37:07AM +, Francesco Riosa wrote:
 2011/12/28 Zac Medico zmed...@gentoo.org:
  On 12/28/2011 05:12 AM, Francesco Riosa wrote:
  Seem to me that append a time slice to the function, in the name or as
  a parent function that call the underling function can solve most of
  the versioning/deprecation problems
 
  I've overheard Arfrever discussing a similar approach in funtoo's irc
  channel, where the ebuild would set a variable prior to inherit if it
  wants to use a specific eclass API. For the python eclass, he's planning
  to have ebuilds set the PYTHON_ECLASS_API variable to use the new API.
  When the variable is unset, the eclass will default to the older API.

 There is a fundamental difference, with timeslices it's not the
 ebuild that select the implementation but the point in time it's used,
 or the user forcing a fake time. From what I've read Artfever approach
 require changes in every ebuild and keeping old functions forever. On
 the other hand it may be risky to change the preferred interface from
 the eclass and not the ebuild.

 Respectfully, the proposals thus far (including python eclass bit) are
 going in the opposite direction of maintainability, simplicity,
 robustness.

 People have problems as is dealing w/ eclasses changing and their
 dependencies in external repositories not being updated; this
 complicates that issue and introduces the same potential into
 gentoo-x86 itself.  That's not beneficial.

 Thing to keep in mind beyond the potential for confusion the proposals
 entail were they implemented, is the implementation itself.
 Timeslices?  python eclass api versions (when people have problems
 figuring out the existing, *singular* version)?  These things aren't
 going to be simple which means more than likely, they're going to
 break, and more than likely it's going to be a PITA to maintain it.

 Per the norm, I could be wrong, but reading these proposals, they
 really feel like they need to revisit the notion of
 maintainability/robustness as an actual full fledged implementation,
 beyond the (admittedly semi nifty) notion of versioned apis.

 My 2 cents, hopefully not at my usual offensive level-
 ~harring

yeah, after a good sleep the problems of this approach are more clear,
it's a pity, it seemed really bright while eating my spaghetti.



Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-29 Thread Jeroen Roovers
On Wed, 28 Dec 2011 19:36:01 -0800
Brian Harring ferri...@gmail.com wrote:

 People have problems as is dealing w/ eclasses changing and their 
 dependencies in external repositories not being updated; this 
 complicates that issue and introduces the same potential into 
 gentoo-x86 itself.  That's not beneficial.

I agree with nearly all of that: introducing changes to an eclass
usually means going through the whole tree and fixing what breaks.
That's a lot more easy to fix than adding more layers of indirection
based on a variable's value and adjusting the value according to the
time the ebuild was written versus when the eclass was changed.

 Thing to keep in mind beyond the potential for confusion the
 proposals entail were they implemented, is the implementation
 itself. Timeslices?  python eclass api versions (when people have
 problems figuring out the existing, *singular* version)?  These
 things aren't going to be simple which means more than likely,
 they're going to break, and more than likely it's going to be a PITA
 to maintain it.

Last time I took tranquilisers and set myself up to read python.eclass,
I found that it still doesn't break at 80 characters. Apparently even
that can't be fixed in a timely fashion.

Assing even more layers of mystification like:

if [[ PYTHON_ECLASS_API = 2 ]]; then
python_pkg_setup() {

or even:

python_pkg_setup() {
if [[ PYTHON_ECLASS_API = 2 ]]; then

would be insane, in my opinion.

Also, from the perspective of an ebuild writer, setting

PYTHON_ECLASS_API=2
inherit python

would be meaningless lacking a very clear description of what the
number 2 means.


 jer



Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-28 Thread Zac Medico
On 12/28/2011 05:12 AM, Francesco Riosa wrote:
 Disclaimer: this is just one idea that come at lunch, and sharing (in
 a short pause before my demanding daughter request me) here to not
 forget in the next busy days.
 
 Seem to me that append a time slice to the function, in the name or as
 a parent function that call the underling function can solve most of
 the versioning/deprecation problems
 
 how could it work:
 
 1) package manager record the time it start an emerge transaction,
 and share it via the environment with ebuilds and eclasses. The time
 could be faked by an argument via command line too.
 2) the bash functions which are versioned this way chose the right one
 3) package manager save the build time in the binpkg and in /var/db
 for unmergin and other purposes

You're idea is irrelevant for binary packages and unmerge of installed
packages, since they make use of environment.bz2 which contains a
snapshot of the eclass functions / environment from build time.
-- 
Thanks,
Zac



Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-28 Thread Zac Medico
On 12/28/2011 05:12 AM, Francesco Riosa wrote:
 Seem to me that append a time slice to the function, in the name or as
 a parent function that call the underling function can solve most of
 the versioning/deprecation problems

I've overheard Arfrever discussing a similar approach in funtoo's irc
channel, where the ebuild would set a variable prior to inherit if it
wants to use a specific eclass API. For the python eclass, he's planning
to have ebuilds set the PYTHON_ECLASS_API variable to use the new API.
When the variable is unset, the eclass will default to the older API.
-- 
Thanks,
Zac



Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-28 Thread Francesco Riosa
2011/12/28 Zac Medico zmed...@gentoo.org:
 On 12/28/2011 05:12 AM, Francesco Riosa wrote:
 Disclaimer: this is just one idea that come at lunch, and sharing (in
 a short pause before my demanding daughter request me) here to not
 forget in the next busy days.

 Seem to me that append a time slice to the function, in the name or as
 a parent function that call the underling function can solve most of
 the versioning/deprecation problems

 how could it work:

 1) package manager record the time it start an emerge transaction,
 and share it via the environment with ebuilds and eclasses. The time
 could be faked by an argument via command line too.
 2) the bash functions which are versioned this way chose the right one
 3) package manager save the build time in the binpkg and in /var/db
 for unmergin and other purposes

 You're idea is irrelevant for binary packages and unmerge of installed
 packages, since they make use of environment.bz2 which contains a
 snapshot of the eclass functions / environment from build time.

The environment would contain all the versioned functions but it will
also contain the timestamp of the original merge possibly solving the
dilemma



Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-28 Thread Francesco Riosa
2011/12/28 Zac Medico zmed...@gentoo.org:
 On 12/28/2011 05:12 AM, Francesco Riosa wrote:
 Seem to me that append a time slice to the function, in the name or as
 a parent function that call the underling function can solve most of
 the versioning/deprecation problems

 I've overheard Arfrever discussing a similar approach in funtoo's irc
 channel, where the ebuild would set a variable prior to inherit if it
 wants to use a specific eclass API. For the python eclass, he's planning
 to have ebuilds set the PYTHON_ECLASS_API variable to use the new API.
 When the variable is unset, the eclass will default to the older API.

There is a fundamental difference, with timeslices it's not the
ebuild that select the implementation but the point in time it's used,
or the user forcing a fake time. From what I've read Artfever approach
require changes in every ebuild and keeping old functions forever. On
the other hand it may be risky to change the preferred interface from
the eclass and not the ebuild.

Thanks for reviewing,
Francesco



Re: [gentoo-dev] Versioning of eclasses and possibly functions inside ebuilds

2011-12-28 Thread Brian Harring
On Thu, Dec 29, 2011 at 02:37:07AM +, Francesco Riosa wrote:
 2011/12/28 Zac Medico zmed...@gentoo.org:
  On 12/28/2011 05:12 AM, Francesco Riosa wrote:
  Seem to me that append a time slice to the function, in the name or as
  a parent function that call the underling function can solve most of
  the versioning/deprecation problems
 
  I've overheard Arfrever discussing a similar approach in funtoo's irc
  channel, where the ebuild would set a variable prior to inherit if it
  wants to use a specific eclass API. For the python eclass, he's planning
  to have ebuilds set the PYTHON_ECLASS_API variable to use the new API.
  When the variable is unset, the eclass will default to the older API.
 
 There is a fundamental difference, with timeslices it's not the
 ebuild that select the implementation but the point in time it's used,
 or the user forcing a fake time. From what I've read Artfever approach
 require changes in every ebuild and keeping old functions forever. On
 the other hand it may be risky to change the preferred interface from
 the eclass and not the ebuild.

Respectfully, the proposals thus far (including python eclass bit) are 
going in the opposite direction of maintainability, simplicity, 
robustness.

People have problems as is dealing w/ eclasses changing and their 
dependencies in external repositories not being updated; this 
complicates that issue and introduces the same potential into 
gentoo-x86 itself.  That's not beneficial.

Thing to keep in mind beyond the potential for confusion the proposals 
entail were they implemented, is the implementation itself.  
Timeslices?  python eclass api versions (when people have problems 
figuring out the existing, *singular* version)?  These things aren't 
going to be simple which means more than likely, they're going to 
break, and more than likely it's going to be a PITA to maintain it.

Per the norm, I could be wrong, but reading these proposals, they 
really feel like they need to revisit the notion of 
maintainability/robustness as an actual full fledged implementation, 
beyond the (admittedly semi nifty) notion of versioned apis.

My 2 cents, hopefully not at my usual offensive level-
~harring