public inbox for gentoo-council@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-council] Agenda (draft) for November meeting 2009-11-09
@ 2009-11-03 17:03 Ulrich Mueller
  2009-11-03 18:06 ` Ciaran McCreesh
                   ` (3 more replies)
  0 siblings, 4 replies; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-03 17:03 UTC (permalink / raw
  To: gentoo-council; +Cc: Fabian Groffen, Zac Medico

Find below a proposed agenda for our next meeting.

I'll post it to gentoo-council and gentoo-dev-announce this Friday,
unless there are objections.

Ulrich


1. Intro (10 minutes, including late arrivals)
   1.1. Make sure that at least a couple people are logging the meeting.
   1.2. Roll call.
   1.3. Any volunteers to chair this meeting?

2. Approve summary of October meeting (5 minutes)
   (in case it will be ready then)

3. Follow-ups from previous meeting (15 minutes)
   3.1. EAPI 3 status (zmedico, ulm)
   3.2. Upgrade path for old systems (leio, solar)
        Should important system packages (e.g. Python) be reverted to
        EAPI 0, in order to provide a defined upgrade path?

4. Prefix support in main Portage tree (grobian) (20 minutes)
   Fabian Groffen proposes that package managers should define the
   EPREFIX, EROOT, and ED variables (see [1] and replies).
   4.1. Does the council generally support this idea?
   4.2. Can it still be included in EAPI 3, or even in a fast EAPI 2.1?

5. AOB / open floor (10 minutes)

[1] http://archives.gentoo.org/gentoo-dev/msg_2a62689c71f95e4de5699a330b8b5524.xml



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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 17:03 [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Ulrich Mueller
@ 2009-11-03 18:06 ` Ciaran McCreesh
  2009-11-04 15:07   ` [gentoo-council] mtime preservation (was: Agenda (draft) for November meeting 2009-11-09) Ulrich Mueller
  2009-11-03 20:17 ` [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Patrick Lauer
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-03 18:06 UTC (permalink / raw
  To: gentoo-council

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

On Tue, 3 Nov 2009 18:03:20 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:
> Find below a proposed agenda for our next meeting.

Could you add in something like:

"Agree upon a wording for PMS for the mtime modification change
introduced to EAPI 3 last time"

please? Due to insufficient clarity in the proposal, the PMS team hasn't
been able to come up with a wording that wouldn't either require
changes to Portage (which appears to be against the Council's intent)
or that would permit behaviour currently seen as undesirable. As I
understand it, the issues are:

* What's to be done about sub-second timestamps? What about cases where
  the build filesystem supports them but the root filesystem doesn't?

* For which files must mtimes be preserved, and which can be modified?

* Is it the intent of this proposal to prevent package managers from
  automatically rewriting, say, #!/usr/bin/python to
  #!/opt/gentoo/bin/python if prefix is being used?

Or, a solution before the meeting would be fine too. It's just I don't
think this is something the PMS team is able to resolve on its own.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 17:03 [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Ulrich Mueller
  2009-11-03 18:06 ` Ciaran McCreesh
@ 2009-11-03 20:17 ` Patrick Lauer
  2009-11-03 22:56   ` Denis Dupeyron
  2009-11-04 15:19 ` Ulrich Mueller
  2009-11-05 20:44 ` Ulrich Mueller
  3 siblings, 1 reply; 34+ messages in thread
From: Patrick Lauer @ 2009-11-03 20:17 UTC (permalink / raw
  To: gentoo-council

On Tuesday 03 November 2009 18:03:20 Ulrich Mueller wrote:
> Find below a proposed agenda for our next meeting.
> 
I'd like council to discuss what I consider a major bug in PMS - 
see the discussion at
http://archives.gentoo.org/gentoo-pms/msg_95a13d880eb521b13d7090f30350c26a.xml

Since the PMS / QA ppl seemingly don't have the authority to decide it needs 
to be deferred to council as far as I can tell.

Short version, PMS mandates bash 3.0, eclasses use 3.2 features (e.g. += 
assignment). No 3.0 ebuild is in the tree anymore, so the PMS requirement is 
quite silly.
Practically the tree has grown beyond what PMS defines (and done so for about 
a year now with eclasses and ebuilds "violating" PMS with noone caring).

I would appreciate a resolution to this issue, preferably one that doesn't 
kill half our eclasses.

Thanks,

Patrick



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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 20:17 ` [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Patrick Lauer
@ 2009-11-03 22:56   ` Denis Dupeyron
  2009-11-03 23:10     ` Ciaran McCreesh
  2009-11-03 23:14     ` Patrick Lauer
  0 siblings, 2 replies; 34+ messages in thread
From: Denis Dupeyron @ 2009-11-03 22:56 UTC (permalink / raw
  To: gentoo-council

On Tue, Nov 3, 2009 at 11:06 AM, Ciaran McCreesh
<ciaran.mccreesh@googlemail.com> wrote:
> Could you add in something like:
> "Agree upon a wording for PMS for the mtime modification change
> introduced to EAPI 3 last time"

On Tue, Nov 3, 2009 at 1:17 PM, Patrick Lauer <patrick@gentoo.org> wrote:
> I'd like council to discuss what I consider a major bug in PMS -
> see the discussion at
> http://archives.gentoo.org/gentoo-pms/msg_95a13d880eb521b13d7090f30350c26a.xml

Could the both of you please flesh out a proposal on how you'd expect
the council to solve these issues? It would best if, on top of telling
what should be done, you explained why it should be done this way.
Raising the questions is already interesting but proposing answers is
even better. You may have done that elsewhere before but summarizing
it here would help tremendously. And by the way those who know they
will disagree with the above posters are welcome to make proposals of
their own. It would be nice if we'd all get an opportunity to discuss
it here before the council meeting.

Denis.



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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 22:56   ` Denis Dupeyron
@ 2009-11-03 23:10     ` Ciaran McCreesh
  2009-11-03 23:14     ` Patrick Lauer
  1 sibling, 0 replies; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-03 23:10 UTC (permalink / raw
  To: gentoo-council

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

On Tue, 3 Nov 2009 15:56:39 -0700
Denis Dupeyron <calchan@gentoo.org> wrote:
> Could the both of you please flesh out a proposal on how you'd expect
> the council to solve these issues? It would best if, on top of telling
> what should be done, you explained why it should be done this way.
> Raising the questions is already interesting but proposing answers is
> even better. You may have done that elsewhere before but summarizing
> it here would help tremendously.

Ok. For this:

> > "Agree upon a wording for PMS for the mtime modification change
> > introduced to EAPI 3 last time"

I honestly don't have an answer to this, nor a preferred solution. So
far as I can see, any possible solution is hit by one of:

* requiring changes to Portage.

* preventing future changes to Portage that would clearly be useful
  (for example, shebang rewriting for Prefix).

* being so vague and unspecific that it is entirely legal for package
  managers not to implement mtime preservation at all.

Obviously the Council had something else in mind when they voted the
proposal in, but the combined wisdom of the PMS team hasn't managed to
work out what that is. Thus, I'd like the Council to explain their
decision in sufficiently precise language that I can convert it to
LaTeX for PMS, and implement it in Paludis.

> > I'd like council to discuss what I consider a major bug in PMS -
> > see the discussion at
> > http://archives.gentoo.org/gentoo-pms/msg_95a13d880eb521b13d7090f30350c26a.xml  

As for this one, I was hoping Patrick would, as asked, start a
discussion on the gentoo-dev list regarding backwards compatibility and
how much developers care about having a clean upgrade path. I gather
from the previous Council meeting and from other comments that at least
some developers consider not being able to upgrade from an older Gentoo
install as being a problem.

The question, really, is whether there not being an upgrade path is
deliberate, or whether it's an accident that needs fixing. I don't
think that's a decision that should be made without a general
discussion amongst all Gentoo developers, and I certainly don't think
it's a decision that should be made arbitrarily by the PMS editors.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 22:56   ` Denis Dupeyron
  2009-11-03 23:10     ` Ciaran McCreesh
@ 2009-11-03 23:14     ` Patrick Lauer
  1 sibling, 0 replies; 34+ messages in thread
From: Patrick Lauer @ 2009-11-03 23:14 UTC (permalink / raw
  To: gentoo-council


> On Tue, Nov 3, 2009 at 1:17 PM, Patrick Lauer <patrick@gentoo.org> wrote:
> > I'd like council to discuss what I consider a major bug in PMS -
> > see the discussion at
> > http://archives.gentoo.org/gentoo-pms/msg_95a13d880eb521b13d7090f30350c26
> >a.xml
> 
> Could the both of you please flesh out a proposal on how you'd expect
> the council to solve these issues? 

Problem:
Usage of bash 3.2 features in ebuilds and eclasses where PMS forces bash 3.0
Apart from potentially breaking backwards compatibility etc. this is an 
inconsistency between specification and product.

Possible solutions:
1) Forbid bash 3.2 features.
Impact: Cleanup of many eclasses, lots of work for maintainers, removes 
actively used and useful functionality. Makes many people unhappy.

2) Fix PMS to require bash 3.2
Impact: one-line patch to PMS, small reduction in backwards compatibility
As bash 3.2 was added Oct 2006 and stabled May 2007 this would only affect 
systems not updated for over 2 years, which is far beyond our usual support 
horizon. Thus compatibility impact is negligible.

3) Ignore it
Impact: Well, it's what we've been doing for a year now. Seems to work out ok, 
but it's slightly unsatisfying.

4) something else?

I strongly suggest (2) since it has a very low impact, comes at no cost to 
maintainers and removes the need for endless further discussions of the topic.


> It would best if, on top of telling
> what should be done, you explained why it should be done this way.
> Raising the questions is already interesting but proposing answers is
> even better. You may have done that elsewhere before but summarizing
> it here would help tremendously. And by the way those who know they
> will disagree with the above posters are welcome to make proposals of
> their own. It would be nice if we'd all get an opportunity to discuss
> it here before the council meeting.
> 
> Denis.
> 



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

* [gentoo-council] mtime preservation (was: Agenda (draft) for November meeting 2009-11-09)
  2009-11-03 18:06 ` Ciaran McCreesh
@ 2009-11-04 15:07   ` Ulrich Mueller
  2009-11-04 15:28     ` [gentoo-council] " Ciaran McCreesh
  0 siblings, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-04 15:07 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-council

>>>>> On Tue, 3 Nov 2009, Ciaran McCreesh wrote:

> Due to insufficient clarity in the proposal, the PMS team hasn't
> been able to come up with a wording that wouldn't either require
> changes to Portage (which appears to be against the Council's
> intent) or that would permit behaviour currently seen as
> undesirable. As I understand it, the issues are:

> * What's to be done about sub-second timestamps? What about cases
>   where the build filesystem supports them but the root filesystem
>   doesn't?

Obviously we cannot guarantee anything below the seconds level because
of limitations in the underlying filesystems or software (e.g., tar
for binpkgs). But is there a reason for limiting it further, i.e. not
preserving sub-second timestamps if they are supported by both
filesystems?

> * For which files must mtimes be preserved, and which can be modified?

> * Is it the intent of this proposal to prevent package managers from
>   automatically rewriting, say, #!/usr/bin/python to
>   #!/opt/gentoo/bin/python if prefix is being used?

Part of the problem (what you call "insufficient clarity") is that the
proposal's original intention was to cover only the merge process,
i.e. what takes place after pkg_preinst. Whereas you want to extend it
to include everything that is taking place after src_install (for
Portage, prepstrip and whatnot).

If you limit it to the final merge process from D to ROOT, then the
answer is easy, namely mtimes of all regular files must be preserved.

Ulrich



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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 17:03 [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Ulrich Mueller
  2009-11-03 18:06 ` Ciaran McCreesh
  2009-11-03 20:17 ` [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Patrick Lauer
@ 2009-11-04 15:19 ` Ulrich Mueller
  2009-11-04 15:22   ` Denis Dupeyron
  2009-11-05 20:44 ` Ulrich Mueller
  3 siblings, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-04 15:19 UTC (permalink / raw
  To: gentoo-council

I can add both points suggested by Ciaran and Patrick to the agenda.
But the amount of topics is becoming a bit unrealistic for an one-hour
meeting.

Can the meeting be extended to 90 minutes, exceptionally?

Ulrich



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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-04 15:19 ` Ulrich Mueller
@ 2009-11-04 15:22   ` Denis Dupeyron
  0 siblings, 0 replies; 34+ messages in thread
From: Denis Dupeyron @ 2009-11-04 15:22 UTC (permalink / raw
  To: Ulrich Mueller; +Cc: gentoo-council

On Wed, Nov 4, 2009 at 8:19 AM, Ulrich Mueller <ulm@gentoo.org> wrote:
> I can add both points suggested by Ciaran and Patrick to the agenda.
> But the amount of topics is becoming a bit unrealistic for an one-hour
> meeting.
>
> Can the meeting be extended to 90 minutes, exceptionally?

I don't mind at all. But if we discussed it on lists before the
meeting we would mostly have to vote and that would allow us to gain a
lot of time. Should we post something to gentoo-dev-announce to tell
people about this thread?

Denis.



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

* [gentoo-council] Re: mtime preservation (was: Agenda (draft) for November meeting 2009-11-09)
  2009-11-04 15:07   ` [gentoo-council] mtime preservation (was: Agenda (draft) for November meeting 2009-11-09) Ulrich Mueller
@ 2009-11-04 15:28     ` Ciaran McCreesh
  2009-11-04 21:12       ` [gentoo-council] Re: mtime preservation Zac Medico
  2009-11-05 10:24       ` Ulrich Mueller
  0 siblings, 2 replies; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-04 15:28 UTC (permalink / raw
  To: Ulrich Mueller; +Cc: gentoo-council

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

On Wed, 4 Nov 2009 16:07:30 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:
> Obviously we cannot guarantee anything below the seconds level because
> of limitations in the underlying filesystems or software (e.g., tar
> for binpkgs). But is there a reason for limiting it further, i.e. not
> preserving sub-second timestamps if they are supported by both
> filesystems?

So far as I can see, if they're fully supported on both filesystems,
Portage sometimes preserves nanosecond-resolution timestamps and
sometimes doesn't. So, requiring nanosecond-resolution timestamp
preservation where possible will need Portage changes. But not
requiring it means we'll go through this whole thing again as packages
start using more accurate timestamps for cache validation things (and
yes, this will happen -- we've already hit make-related issues on this
front).

> > * For which files must mtimes be preserved, and which can be
> > modified?
> 
> > * Is it the intent of this proposal to prevent package managers from
> >   automatically rewriting, say, #!/usr/bin/python to
> >   #!/opt/gentoo/bin/python if prefix is being used?
> 
> Part of the problem (what you call "insufficient clarity") is that the
> proposal's original intention was to cover only the merge process,
> i.e. what takes place after pkg_preinst. Whereas you want to extend it
> to include everything that is taking place after src_install (for
> Portage, prepstrip and whatnot).
> 
> If you limit it to the final merge process from D to ROOT, then the
> answer is easy, namely mtimes of all regular files must be preserved.

What I want is for the proposal to be sufficiently specific that it
covers exactly what the package manager can and cannot do, and what
ebuilds can and cannot rely upon happening. If you require mtime
preservation between pkg_preinst and the merge to /, the package
manager can just screw things up (by implementing reasonable features)
elsewhere. It is by no means clear to me that merely requiring mtime
preservation from after pkg_preinst to before pkg_postinst, and
allowing arbitrary mtime tinkering elsewhere, is what is desired.

As an example for the above, is it legal for a package manager to
rewrite any mtime that is before the start of the build process if it
does it after src_install but before pkg_preinst?

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-04 15:28     ` [gentoo-council] " Ciaran McCreesh
@ 2009-11-04 21:12       ` Zac Medico
  2009-11-04 21:29         ` Ciaran McCreesh
  2009-11-05 10:24       ` Ulrich Mueller
  1 sibling, 1 reply; 34+ messages in thread
From: Zac Medico @ 2009-11-04 21:12 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: Ulrich Mueller, gentoo-council

Ciaran McCreesh wrote:
> On Wed, 4 Nov 2009 16:07:30 +0100
> Ulrich Mueller <ulm@gentoo.org> wrote:
>> Obviously we cannot guarantee anything below the seconds level because
>> of limitations in the underlying filesystems or software (e.g., tar
>> for binpkgs). But is there a reason for limiting it further, i.e. not
>> preserving sub-second timestamps if they are supported by both
>> filesystems?
> 
> So far as I can see, if they're fully supported on both filesystems,
> Portage sometimes preserves nanosecond-resolution timestamps and
> sometimes doesn't. So, requiring nanosecond-resolution timestamp
> preservation where possible will need Portage changes.

I think it always preserves them, as long as you have at least
python-2.5 since that is required for floating-point mtime support.
-- 
Thanks,
Zac



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-04 21:12       ` [gentoo-council] Re: mtime preservation Zac Medico
@ 2009-11-04 21:29         ` Ciaran McCreesh
  2009-11-05  5:54           ` Zac Medico
  0 siblings, 1 reply; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-04 21:29 UTC (permalink / raw
  To: Zac Medico; +Cc: Ulrich Mueller, gentoo-council

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

On Wed, 04 Nov 2009 13:12:37 -0800
Zac Medico <zmedico@gentoo.org> wrote:
> > So far as I can see, if they're fully supported on both filesystems,
> > Portage sometimes preserves nanosecond-resolution timestamps and
> > sometimes doesn't. So, requiring nanosecond-resolution timestamp
> > preservation where possible will need Portage changes.
> 
> I think it always preserves them, as long as you have at least
> python-2.5 since that is required for floating-point mtime support.

Mm, I can't see the code for that. So far as I can see, for the
non-fast case you're using stat.st_mtime and os.utime, which assuming
they correspond to the POSIX things of the same name, are
second-resolution. What am I missing?

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-04 21:29         ` Ciaran McCreesh
@ 2009-11-05  5:54           ` Zac Medico
  2009-11-05  6:11             ` Ulrich Mueller
  0 siblings, 1 reply; 34+ messages in thread
From: Zac Medico @ 2009-11-05  5:54 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: Ulrich Mueller, gentoo-council

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

Ciaran McCreesh wrote:
> On Wed, 04 Nov 2009 13:12:37 -0800
> Zac Medico <zmedico@gentoo.org> wrote:
>>> So far as I can see, if they're fully supported on both filesystems,
>>> Portage sometimes preserves nanosecond-resolution timestamps and
>>> sometimes doesn't. So, requiring nanosecond-resolution timestamp
>>> preservation where possible will need Portage changes.
>> I think it always preserves them, as long as you have at least
>> python-2.5 since that is required for floating-point mtime support.
> 
> Mm, I can't see the code for that. So far as I can see, for the
> non-fast case you're using stat.st_mtime and os.utime, which assuming
> they correspond to the POSIX things of the same name, are
> second-resolution. What am I missing?

Ah, I guess you're right. The documentation led me to believe that
os.utime would provide nanosecond-resolution on platforms that
support it, but a simple test case seems to indicate that it does not.
-- 
Thanks,
Zac

[-- Attachment #2: utime_test.py --]
[-- Type: text/x-python, Size: 193 bytes --]

#!/usr/bin/env python

import os
import sys
import tempfile

f = tempfile.NamedTemporaryFile()
t = 0.1
os.utime(f.name, (t, t))
sys.stdout.write(str(os.stat(f.name).st_mtime) + '\n')
f.close()

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-05  5:54           ` Zac Medico
@ 2009-11-05  6:11             ` Ulrich Mueller
  2009-11-05  6:18               ` Zac Medico
  0 siblings, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-05  6:11 UTC (permalink / raw
  To: Zac Medico; +Cc: Ciaran McCreesh, gentoo-council

>>>>> On Wed, 04 Nov 2009, Zac Medico wrote:

> Ah, I guess you're right. The documentation led me to believe that
> os.utime would provide nanosecond-resolution on platforms that
> support it, but a simple test case seems to indicate that it does not.

Is there an os.utimes in Python? utime(2) is marked as obsolete in
POSIX.1-2008 (says the man page).

Ulrich



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-05  6:11             ` Ulrich Mueller
@ 2009-11-05  6:18               ` Zac Medico
  2009-11-05  9:11                 ` Ulrich Mueller
  0 siblings, 1 reply; 34+ messages in thread
From: Zac Medico @ 2009-11-05  6:18 UTC (permalink / raw
  To: Ulrich Mueller; +Cc: Ciaran McCreesh, gentoo-council

Ulrich Mueller wrote:
>>>>>> On Wed, 04 Nov 2009, Zac Medico wrote:
> 
>> Ah, I guess you're right. The documentation led me to believe that
>> os.utime would provide nanosecond-resolution on platforms that
>> support it, but a simple test case seems to indicate that it does not.
> 
> Is there an os.utimes in Python? utime(2) is marked as obsolete in
> POSIX.1-2008 (says the man page).

There is no separate os.utimes function, but it looks like the patch
on this bug might make os.utime behave as desired:

  http://bugs.python.org/issue3425
-- 
Thanks,
Zac



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-05  6:18               ` Zac Medico
@ 2009-11-05  9:11                 ` Ulrich Mueller
  0 siblings, 0 replies; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-05  9:11 UTC (permalink / raw
  To: Zac Medico; +Cc: Ciaran McCreesh, gentoo-council

>>>>> On Wed, 04 Nov 2009, Zac Medico wrote:

>>> Ah, I guess you're right. The documentation led me to believe that
>>> os.utime would provide nanosecond-resolution on platforms that
>>> support it, but a simple test case seems to indicate that it does not.
>> 
>> Is there an os.utimes in Python? utime(2) is marked as obsolete in
>> POSIX.1-2008 (says the man page).

> There is no separate os.utimes function, but it looks like the patch
> on this bug might make os.utime behave as desired:

>   http://bugs.python.org/issue3425

So let's declare it as a Python bug and include sub-second timestamps
(where possible with the filesystem) in the spec?

Anyway, I see this as a very minor issue.

Ulrich



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

* [gentoo-council] Re: mtime preservation
  2009-11-04 15:28     ` [gentoo-council] " Ciaran McCreesh
  2009-11-04 21:12       ` [gentoo-council] Re: mtime preservation Zac Medico
@ 2009-11-05 10:24       ` Ulrich Mueller
  2009-11-08 19:14         ` Ciaran McCreesh
  1 sibling, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-05 10:24 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-council

>>>>> On Wed, 4 Nov 2009, Ciaran McCreesh wrote:

>> Part of the problem (what you call "insufficient clarity") is that
>> the proposal's original intention was to cover only the merge
>> process, i.e. what takes place after pkg_preinst. Whereas you want
>> to extend it to include everything that is taking place after
>> src_install (for Portage, prepstrip and whatnot).
>> 
>> If you limit it to the final merge process from D to ROOT, then the
>> answer is easy, namely mtimes of all regular files must be
>> preserved.

> What I want is for the proposal to be sufficiently specific that it
> covers exactly what the package manager can and cannot do, and what
> ebuilds can and cannot rely upon happening. If you require mtime
> preservation between pkg_preinst and the merge to /, the package
> manager can just screw things up (by implementing reasonable
> features) elsewhere. It is by no means clear to me that merely
> requiring mtime preservation from after pkg_preinst to before
> pkg_postinst, and allowing arbitrary mtime tinkering elsewhere, is
> what is desired.

Can you try to find a suitable wording? Otherwise, it's not clear to
me how the council could resolve the issue during the next meeting.

(And as my suggested wording [1] caused some unfortunate discussion,
I don't feel like I should come up with a new one myself.)

> As an example for the above, is it legal for a package manager to
> rewrite any mtime that is before the start of the build process if
> it does it after src_install but before pkg_preinst?

So you really want this? ;-) My personal opinion is that it wouldn't
break anything and we could therefore declare it as an allowed QA
measure. And if it takes place before pkg_preinst then the ebuild
could override it in special cases.

But please be aware that the council (October meeting) has voted
against this sort of mtime fixup.

Ulrich

[1] <http://bugs.gentoo.org/264130#c39> and following comments



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

* Re: [gentoo-council] Agenda (draft) for November meeting 2009-11-09
  2009-11-03 17:03 [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Ulrich Mueller
                   ` (2 preceding siblings ...)
  2009-11-04 15:19 ` Ulrich Mueller
@ 2009-11-05 20:44 ` Ulrich Mueller
  3 siblings, 0 replies; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-05 20:44 UTC (permalink / raw
  To: gentoo-council

>>>>> On Tue, 3 Nov 2009, I wrote:

> Find below a proposed agenda for our next meeting.

Find an updated version below. I'll post it to gentoo-council and
gentoo-dev-announce tomorrow, unless there are objections.

Ulrich


1. Intro (10 minutes, including late arrivals)
   1.1. Make sure that at least a couple people are logging the meeting.
   1.2. Roll call.
   1.3. Does everyone agree to extend today's meeting to 90 minutes?

2. Approve summary of October meeting (5 minutes)
   (in case it will be ready then)

3. Follow-ups from previous meeting (15 minutes)
   3.1. EAPI 3 status (zmedico, ulm)
   3.2. Upgrade path for old systems (leio, solar)
        Should important system packages (e.g. Python) be reverted to
        EAPI 0, in order to provide a defined upgrade path?

4. Prefix support in main Portage tree (grobian) (20 minutes)
   Fabian Groffen proposes that package managers should define the
   EPREFIX, EROOT, and ED variables (see [1] and replies).
   4.1. Does the council generally support this idea?
   4.2. Can it still be included in EAPI 3, or even in a fast EAPI 2.1?

5. Usage of bash 3.2 features in Portage tree (patrick) (15 minutes)
   Should usage of bash 3.2 features in the Portage tree be forbidden,
   allowed, or should the issue be ignored? See [2] for details.

6. Preservation of file modification times in EAPI 3 (ciaranm) (15 minutes)
   Agree upon a wording for PMS for the mtime modification change
   introduced to EAPI 3 last time.

7. AOB / open floor (10 minutes)

[1] http://archives.gentoo.org/gentoo-dev/msg_2a62689c71f95e4de5699a330b8b5524.xml
[2] http://archives.gentoo.org/gentoo-council/msg_ed3cba3e0ded55c4e497451af46ea55b.xml



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-05 10:24       ` Ulrich Mueller
@ 2009-11-08 19:14         ` Ciaran McCreesh
  2009-11-09 15:18           ` Denis Dupeyron
  0 siblings, 1 reply; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-08 19:14 UTC (permalink / raw
  To: Ulrich Mueller; +Cc: gentoo-council

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

On Thu, 5 Nov 2009 11:24:05 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:
> > What I want is for the proposal to be sufficiently specific that it
> > covers exactly what the package manager can and cannot do, and what
> > ebuilds can and cannot rely upon happening. If you require mtime
> > preservation between pkg_preinst and the merge to /, the package
> > manager can just screw things up (by implementing reasonable
> > features) elsewhere. It is by no means clear to me that merely
> > requiring mtime preservation from after pkg_preinst to before
> > pkg_postinst, and allowing arbitrary mtime tinkering elsewhere, is
> > what is desired.
> 
> Can you try to find a suitable wording? Otherwise, it's not clear to
> me how the council could resolve the issue during the next meeting.

I've been thinking about this, and I honestly don't think it's
achievable without losing at least one of the aims. So far as I can
see, the Council's goals are mutually contradictory on this one.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-08 19:14         ` Ciaran McCreesh
@ 2009-11-09 15:18           ` Denis Dupeyron
  2009-11-09 15:34             ` Ciaran McCreesh
  2009-11-09 16:36             ` [gentoo-council] " Ulrich Mueller
  0 siblings, 2 replies; 34+ messages in thread
From: Denis Dupeyron @ 2009-11-09 15:18 UTC (permalink / raw
  To: gentoo-council

Let the clueless dev that I am summarize the situation. Please correct
me if I'm wrong, I think that will help more people than just me. In
the end I'll propose 2 wordings for PMS.

I understand that the issue with requiring mtime preservation is that
after unpacking the tarball(s) some files can have absurd dates, like
January 1st 1970 or else. One easy solution to this would be to reset
mtimes at merge time which will take care of everything. However, I
know of a package which requires mtime preservation from src_compile
to the moment it's merged to ${ROOT}. And if there's a package like
this in my very small corner of Gentoo there must be more elsewhere,
and there probably will be more in the future.

So here are the 2 wordings I propose.

1 - All mtimes from the package's sources are preserved until files
are merged to ${ROOT}. In case some mtimes are absurd and/or
unsuitable, they're considered a bug and it's the maintainer's
responsibility to fix them and report back upstream.

2 - All mtimes from the package's sources are reset to current time
between the src_unpack phase and the next one. That is before
src_configure when EAPI<2 and before src_prepare when EAPI>=2. mtimes
are then preserved until files are merged to ${ROOT}.

How's that? Am I missing something?

Denis.



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 15:18           ` Denis Dupeyron
@ 2009-11-09 15:34             ` Ciaran McCreesh
  2009-11-09 15:42               ` Petteri Räty
                                 ` (2 more replies)
  2009-11-09 16:36             ` [gentoo-council] " Ulrich Mueller
  1 sibling, 3 replies; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-09 15:34 UTC (permalink / raw
  To: gentoo-council

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

On Mon, 9 Nov 2009 08:18:15 -0700
Denis Dupeyron <calchan@gentoo.org> wrote:
> So here are the 2 wordings I propose.
> 
> 1 - All mtimes from the package's sources are preserved until files
> are merged to ${ROOT}. In case some mtimes are absurd and/or
> unsuitable, they're considered a bug and it's the maintainer's
> responsibility to fix them and report back upstream.
> 
> 2 - All mtimes from the package's sources are reset to current time
> between the src_unpack phase and the next one. That is before
> src_configure when EAPI<2 and before src_prepare when EAPI>=2. mtimes
> are then preserved until files are merged to ${ROOT}.
> 
> How's that? Am I missing something?

Neither of those are what Portage currently does. It is my
understanding that the Council doesn't want to require any changes to
Portage behaviour for this.

What Portage currently does is, more or less, to preserve mtimes (but
not necessarily sub-second mtimes, even where supported) from every
part of the build and merge processes, except for an arbitrary set of
files that it modifies outside of the ebuild's control. Examples of
such files include, but are not limited to, executables and shared
objects.

The problem lies in the exceptions. Either we word PMS so vaguely that
it's legal for the package manager to clobber any mtime (thus defeating
the point of guaranteeing preservation at all), or we include long,
convoluted wording describing exactly the files Portage currently
alters (thus preventing reasonable-looking future changes), or we make
the mtime preservation guarantee only cover a small portion of time
such as between pkg_preinst and the merge phase (which disallows some
of the things people want to be able to do with mtime preservation).

None of these strike me as reasonable solutions, and I am still of the
opinion that this isn't something that should have been rushed into
EAPI 3 without people having spent time taking a good look at what all
mtime preservation would be needed to do, what Portage currently does
(since it does not, as some people have claimed, preserve mtimes) and
what should be done about packages that end up installing files with
absurd mtimes. If guaranteed mtime preservation is a desired feature, we
should be designing it around what developers need, not around what
Portage currently does.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 15:34             ` Ciaran McCreesh
@ 2009-11-09 15:42               ` Petteri Räty
  2009-11-09 16:37               ` Ulrich Mueller
  2009-11-10  7:07               ` [gentoo-council] " Ulrich Mueller
  2 siblings, 0 replies; 34+ messages in thread
From: Petteri Räty @ 2009-11-09 15:42 UTC (permalink / raw
  To: gentoo-council

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

Ciaran McCreesh wrote:

> 
> Neither of those are what Portage currently does. It is my
> understanding that the Council doesn't want to require any changes to
> Portage behaviour for this.
> 

Ideally we would get by without changes to Portage but the goal isn't
avoiding to change Portage but to make sure the packages that require
certain behavior for mtimes work if it requires changes to Portage in
order to work then so be it. They are not likely to be huge so they can
be done for EAPI 3 or if they are just postpone this to EAPI 4 like I
suggested in the first place.

Regards,
Petteri


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 15:18           ` Denis Dupeyron
  2009-11-09 15:34             ` Ciaran McCreesh
@ 2009-11-09 16:36             ` Ulrich Mueller
  2009-11-09 17:58               ` Denis Dupeyron
  1 sibling, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-09 16:36 UTC (permalink / raw
  To: Denis Dupeyron; +Cc: gentoo-council

>>>>> On Mon, 9 Nov 2009, Denis Dupeyron wrote:

> Let the clueless dev that I am summarize the situation. Please
> correct me if I'm wrong, I think that will help more people than
> just me. In the end I'll propose 2 wordings for PMS.

> I understand that the issue with requiring mtime preservation is
> that after unpacking the tarball(s) some files can have absurd
> dates, like January 1st 1970 or else. One easy solution to this
> would be to reset mtimes at merge time which will take care of
> everything. However, I know of a package which requires mtime
> preservation from src_compile to the moment it's merged to ${ROOT}.

Which package? sci-electronics/ghdl?

> And if there's a package like this in my very small corner of Gentoo
> there must be more elsewhere, and there probably will be more in the
> future.

The "absurd dates" issue would have been addressed by option B in
<http://bugs.gentoo.org/264130#c26>. This was up for vote at the last
council meeting, but wasn't chosen.

> So here are the 2 wordings I propose.

> 1 - All mtimes from the package's sources are preserved until files
> are merged to ${ROOT}. In case some mtimes are absurd and/or
> unsuitable, they're considered a bug and it's the maintainer's
> responsibility to fix them and report back upstream.

> 2 - All mtimes from the package's sources are reset to current time
> between the src_unpack phase and the next one. That is before
> src_configure when EAPI<2 and before src_prepare when EAPI>=2.
> mtimes are then preserved until files are merged to ${ROOT}.

> How's that? Am I missing something?

Hm, the idea was something like wording 1, but more details should be
added since there are also files that are modified by Portage (e.g.
binaries being stripped).

Ulrich



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 15:34             ` Ciaran McCreesh
  2009-11-09 15:42               ` Petteri Räty
@ 2009-11-09 16:37               ` Ulrich Mueller
  2009-11-09 16:53                 ` Ciaran McCreesh
  2009-11-10  7:07               ` [gentoo-council] " Ulrich Mueller
  2 siblings, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-09 16:37 UTC (permalink / raw
  To: gentoo-council

>>>>> On Mon, 9 Nov 2009, Ciaran McCreesh wrote:

> What Portage currently does is, more or less, to preserve mtimes
> [...] from every part of the build and merge processes, except for
> an arbitrary set of files that it modifies outside of the ebuild's
> control.

And exactly this should be the guideline: A modified file may have its
mtime updated, an unmodified file has its mtime preserved. But for
some reason this is not wanted and was countered with arguments such
as "the PM could do two passes of rot-13 encryption".

> None of these strike me as reasonable solutions, and I am still of
> the opinion that this isn't something that should have been rushed
> into EAPI 3

The respective bug was opened in March, more than 7 months ago. That's
not what I would call "rush".

> without people having spent time taking a good look at what all
> mtime preservation would be needed to do, what Portage currently
> does (since it does not, as some people have claimed, preserve
> mtimes) and what should be done about packages that end up
> installing files with absurd mtimes.

> If guaranteed mtime preservation is a desired feature, we should be
> designing it around what developers need, not around what Portage
> currently does.

What if the two coincide?

Ulrich



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 16:37               ` Ulrich Mueller
@ 2009-11-09 16:53                 ` Ciaran McCreesh
  0 siblings, 0 replies; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-09 16:53 UTC (permalink / raw
  To: gentoo-council

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

On Mon, 9 Nov 2009 17:37:26 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:
> > What Portage currently does is, more or less, to preserve mtimes
> > [...] from every part of the build and merge processes, except for
> > an arbitrary set of files that it modifies outside of the ebuild's
> > control.
> 
> And exactly this should be the guideline: A modified file may have its
> mtime updated, an unmodified file has its mtime preserved. But for
> some reason this is not wanted and was countered with arguments such
> as "the PM could do two passes of rot-13 encryption".

It's not wanted because it's utterly useless as a specification. It
means ebuilds can't rely upon any file having its mtime preserved,
because a package manager can decide, reasonably or otherwise, to
modify any file it likes.

The double-rot-13 argument is merely a compact illustration of why
leaving it open is unworkable. If you prefer a more subtle argument,
consider "the package manager might want to rewrite #!/usr/bin/python
lines automatically in Prefix environments", but be aware that any
example of that nature is prone to being sidetracked into arguments
about "but Prefix won't do it that way", entirely missing the wider
point.

Now, you could claim, as you do, that the proposal should only matter
for pkg_preinst to merge mtime preservation, and so rewriting of this
kind is fine if it's done straight after src_install. But we have yet
to establish whether every ebuild mtime-related operation is best done
exclusively in pkg_preinst (and this is far from a straight-forward
question, when you have to start thinking about binaries and about
cleanup), and it's not safe to jump to the conclusion that allowing the
package manager to modify things straight after src_install is safe and
in line with what best suits developers.

> > None of these strike me as reasonable solutions, and I am still of
> > the opinion that this isn't something that should have been rushed
> > into EAPI 3
> 
> The respective bug was opened in March, more than 7 months ago. That's
> not what I would call "rush".

And it was left out of EAPI 3 originally because no appropriate solution
had been found. As you're aware, there's a finite amount of time that
can be spent working on these things, and thus-far not enough of that
time has been devoted to turning this into a solvable problem.

> > without people having spent time taking a good look at what all
> > mtime preservation would be needed to do, what Portage currently
> > does (since it does not, as some people have claimed, preserve
> > mtimes) and what should be done about packages that end up
> > installing files with absurd mtimes.
> 
> > If guaranteed mtime preservation is a desired feature, we should be
> > designing it around what developers need, not around what Portage
> > currently does.
> 
> What if the two coincide?

They don't. I have yet to see any argument in favour of random and
inconsistent clobbering of sub-second mtimes, and I have yet to see any
argument in favour of files with a timestamp of 1 Jan 1970 being merged
to /, other than that Portage currently does both of those things.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 16:36             ` [gentoo-council] " Ulrich Mueller
@ 2009-11-09 17:58               ` Denis Dupeyron
  2009-11-09 18:14                 ` Ciaran McCreesh
  0 siblings, 1 reply; 34+ messages in thread
From: Denis Dupeyron @ 2009-11-09 17:58 UTC (permalink / raw
  To: gentoo-council

On Mon, Nov 9, 2009 at 8:34 AM, Ciaran McCreesh
<ciaran.mccreesh@googlemail.com> wrote:
> If guaranteed mtime preservation is a desired feature, we
> should be designing it around what developers need, not around what
> Portage currently does.

I totally agree with you here. Let's focus on what we need and we'll
see about the implementation later. The idea of not doing something
because it requires changes to Portage's code is silly. Manpower can
and will always be an issue, but it's not a reason for freezing
development or not fixing what we think is broken.

On Mon, Nov 9, 2009 at 9:36 AM, Ulrich Mueller <ulm@gentoo.org> wrote:
> Which package? sci-electronics/ghdl?

Yes, but it doesn't really matter.

> Hm, the idea was something like wording 1, but more details should be
> added since there are also files that are modified by Portage (e.g.
> binaries being stripped).

If we decide we want to preserve mtimes I'm in favor of something
simple such as: *all* mtimes are being preserved, period, whether the
package manager modifies them or not. If the binaries are being
stripped their original mtimes can certainly be restored, can't they?
This would make for a much more reliable and manageable behavior.

On Mon, Nov 9, 2009 at 9:53 AM, Ciaran McCreesh
<ciaran.mccreesh@googlemail.com> wrote:
> And it was left out of EAPI 3 originally because no appropriate solution
> had been found.

Any chance you can tell us what you would propose disregarding what
the council would think of it or want to do and whether Portage would
have the feature or not already? It doesn't have to be fully fleshed
out and there can be blanks where you don't have the right answers.
And don't bother about implementation but just about the need. I would
encourage anybody who's interested to do the same.

If it were me only I'd do what I proposed in my previous email with
the precision above about all mtimes being preserved. This gives:

All mtimes from the package's sources are reset to current time
between the src_unpack phase and the next one. That is before
src_configure when EAPI<2 and before src_prepare when EAPI>=2. mtimes
are then preserved until files are merged to ${ROOT}. If the package
manager modifies a file on its own then the original mtime needs to be
restored.

About nanosecond resolution I think we should enforce it where
possible and progressively deprecate those versions of package
managers and their supporting libraries which do not allow for
nanosecond resolution. I have no idea how technically feasible that is
though. My fear is that in case we want to preserve mtimes and that a
given package relies on nanosecond resolution then not supporting the
latter is like not preserving mtimes.

Denis.



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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 17:58               ` Denis Dupeyron
@ 2009-11-09 18:14                 ` Ciaran McCreesh
  2009-11-09 18:48                   ` Denis Dupeyron
  0 siblings, 1 reply; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-09 18:14 UTC (permalink / raw
  To: gentoo-council

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

On Mon, 9 Nov 2009 10:58:43 -0700
Denis Dupeyron <calchan@gentoo.org> wrote:
> > Hm, the idea was something like wording 1, but more details should
> > be added since there are also files that are modified by Portage
> > (e.g. binaries being stripped).
> 
> If we decide we want to preserve mtimes I'm in favor of something
> simple such as: *all* mtimes are being preserved, period, whether the
> package manager modifies them or not. If the binaries are being
> stripped their original mtimes can certainly be restored, can't they?
> This would make for a much more reliable and manageable behavior.

It's doable. It's just that all mtimes being preserved is clearly wrong
for the 1 Jan 1970 cases.

> > And it was left out of EAPI 3 originally because no appropriate
> > solution had been found.
> 
> Any chance you can tell us what you would propose disregarding what
> the council would think of it or want to do and whether Portage would
> have the feature or not already? It doesn't have to be fully fleshed
> out and there can be blanks where you don't have the right answers.
> And don't bother about implementation but just about the need. I would
> encourage anybody who's interested to do the same.

My understanding is that:

* Most ebuilds don't care what happens, but a small number want to be
  able to guarantee mtime preservation for a subset of what they
  install. Those that care may prefer to handle preservation in various
  different functions.

* Changing mtimes on source trees is likely problematic with autotooled
  packages.

* Preserving mtimes unconditionally leads to silly mtimes being
  preserved.

Thus, I would let EAPI 4 ebuilds call dopreservemtimes (with an API
similar to docompress) in both src_install and pkg_preinst. Doing so
would instruct the package manager that it must preserve mtimes
(including subsecond, if supported on the filesystem) for a particular
set of paths, even if doing so means no stripping etc. All other mtimes
may be rewritten as the package manager sees fit, and from EAPI 4
onwards must be rewritten at merge time for anything predating the
start of the build.

> All mtimes from the package's sources are reset to current time
> between the src_unpack phase and the next one. That is before
> src_configure when EAPI<2 and before src_prepare when EAPI>=2. mtimes
> are then preserved until files are merged to ${ROOT}. If the package
> manager modifies a file on its own then the original mtime needs to be
> restored.

I have a sneaking suspicion that this will cause horrible complications
for generated Makefiles and the like...

> About nanosecond resolution I think we should enforce it where
> possible and progressively deprecate those versions of package
> managers and their supporting libraries which do not allow for
> nanosecond resolution. I have no idea how technically feasible that is
> though. My fear is that in case we want to preserve mtimes and that a
> given package relies on nanosecond resolution then not supporting the
> latter is like not preserving mtimes.

My understanding of the Python documentation is that they've royally
buggered the whole thing up by overloading stat.st_mtime and utimes on
floating point values for nanosecond-resolution timestamps, which
doesn't work because a float isn't precise enough to hold ten decimal
digits to the left of the decimal point and nine to the right...

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] Re: mtime preservation
  2009-11-09 18:14                 ` Ciaran McCreesh
@ 2009-11-09 18:48                   ` Denis Dupeyron
  0 siblings, 0 replies; 34+ messages in thread
From: Denis Dupeyron @ 2009-11-09 18:48 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-council

On Mon, Nov 9, 2009 at 11:14 AM, Ciaran McCreesh
<ciaran.mccreesh@googlemail.com> wrote:
> It's doable. It's just that all mtimes being preserved is clearly wrong
> for the 1 Jan 1970 cases.

Not if you reset mtimes at unpacking, but:

> * Changing mtimes on source trees is likely problematic with autotooled
>  packages.

Good point, I wasn't thinking of that.

> Thus, I would let EAPI 4 ebuilds call dopreservemtimes (with an API
> similar to docompress) in both src_install and pkg_preinst. Doing so
> would instruct the package manager that it must preserve mtimes
> (including subsecond, if supported on the filesystem) for a particular
> set of paths, even if doing so means no stripping etc. All other mtimes
> may be rewritten as the package manager sees fit, and from EAPI 4
> onwards must be rewritten at merge time for anything predating the
> start of the build.

Thanks for your input. That would work for me although I would prefer
if the stripping and such things were kept automatic in order to try
and maintain QA at a reasonable level.

Denis.



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

* Re: [gentoo-council] mtime preservation
  2009-11-09 15:34             ` Ciaran McCreesh
  2009-11-09 15:42               ` Petteri Räty
  2009-11-09 16:37               ` Ulrich Mueller
@ 2009-11-10  7:07               ` Ulrich Mueller
  2009-11-19 22:12                 ` Ciaran McCreesh
  2 siblings, 1 reply; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-10  7:07 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-council

Coming back again to your previous posting.

>>>>> On Mon, 9 Nov 2009, Ciaran McCreesh wrote:

> The problem lies in the exceptions. Either we word PMS so vaguely
> that it's legal for the package manager to clobber any mtime (thus
> defeating the point of guaranteeing preservation at all),

Agreed. This is not what is wanted.

> or we include long, convoluted wording describing exactly the files
> Portage currently alters

Hm, maybe this isn't as bad as it seems:

,----
| The package manager must preserve modification times of regular files.
| This includes files being compressed before merging. Exceptions to
| this are:
`----

Now we need to enumerate the exceptions:

,----
| * files newly created by the package manager,
`----

This will cover splitdebug, for example. (And please don't tell me
that the wording is flawed because the PM could save a file's contents
in some buffer, then delete the file and create it newly. This would
be as unreasonable as the rot-13 example.)

,----
| * binary object files being stripped of symbols.
`----

Anything else missing from above list?

> (thus preventing reasonable-looking future changes), [...]

I don't get the point here. For any future change not covered by the
list of exceptions, the PM would have to preserve mtime, in spite of
modifying the file. Why would this prevent doing the change?

Ulrich



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

* Re: [gentoo-council] mtime preservation
  2009-11-10  7:07               ` [gentoo-council] " Ulrich Mueller
@ 2009-11-19 22:12                 ` Ciaran McCreesh
  2009-11-20  0:14                   ` Denis Dupeyron
  2009-11-23 19:16                   ` Ulrich Mueller
  0 siblings, 2 replies; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-19 22:12 UTC (permalink / raw
  To: Ulrich Mueller; +Cc: gentoo-council

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

On Tue, 10 Nov 2009 08:07:17 +0100
Ulrich Mueller <ulm@gentoo.org> wrote:
> ,----
> | The package manager must preserve modification times of regular
> files. | This includes files being compressed before merging.
> Exceptions to | this are:
> `----
> 
> Now we need to enumerate the exceptions:
> 
> ,----
> | * files newly created by the package manager,
> `----
> 
> This will cover splitdebug, for example. (And please don't tell me
> that the wording is flawed because the PM could save a file's contents
> in some buffer, then delete the file and create it newly. This would
> be as unreasonable as the rot-13 example.)

Funnily enough... objcopy does its own fancy things with utimes. Last
time I looked it wasn't sub-second aware, though.

> ,----
> | * binary object files being stripped of symbols.
> `----
>
> Anything else missing from above list?

man pages, info pages, things covered by ecompress, arbitrary
documentation, any source code file, probably some others.

> > (thus preventing reasonable-looking future changes), [...]
> 
> I don't get the point here. For any future change not covered by the
> list of exceptions, the PM would have to preserve mtime, in spite of
> modifying the file. Why would this prevent doing the change?

Preserving mtime isn't always the right thing to do, though. If the
package manager does something that would invalidate caches, you don't
want it to do so in a way that won't be noticed.

Also, back on the subject of sub-second resolution mtimes... Python
doesn't support them properly thanks to some utter brain damage from
its designers [1]. Files will end up with corrupted sub-second mtimes if
Python is used to set those times, which can again lead to broken
caches. But since not everything Portage merges does use Python to set
sub-second mtimes, this will result in any cache that starts looking at
sub-second resolution mtimes (which will happen -- POSIX considers the
non-sub-second functions deprecated) seeing a mix of valid and subtly
corrupted timestamps.

I honestly don't think we should be going anywhere with this until
Portage is using a mechanism that guarantees correct sub-second
resolution preservation in all cases.

[1]: http://ciaranm.wordpress.com/2009/11/15/this-week-in-python-stupidity-os-stat-os-utime-and-sub-second-timestamps/

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] mtime preservation
  2009-11-19 22:12                 ` Ciaran McCreesh
@ 2009-11-20  0:14                   ` Denis Dupeyron
  2009-11-20  0:18                     ` Ciaran McCreesh
  2009-11-23 19:16                   ` Ulrich Mueller
  1 sibling, 1 reply; 34+ messages in thread
From: Denis Dupeyron @ 2009-11-20  0:14 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: Ulrich Mueller, gentoo-council

On Thu, Nov 19, 2009 at 3:12 PM, Ciaran McCreesh
<ciaran.mccreesh@googlemail.com> wrote:
> I honestly don't think we should be going anywhere with this until
> Portage is using a mechanism that guarantees correct sub-second
> resolution preservation in all cases.

Any idea, or even the beginning of one, of how to make that happen?

Denis.



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

* Re: [gentoo-council] mtime preservation
  2009-11-20  0:14                   ` Denis Dupeyron
@ 2009-11-20  0:18                     ` Ciaran McCreesh
  2009-11-21  0:37                       ` Zac Medico
  0 siblings, 1 reply; 34+ messages in thread
From: Ciaran McCreesh @ 2009-11-20  0:18 UTC (permalink / raw
  To: Denis Dupeyron; +Cc: Ulrich Mueller, gentoo-council

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

On Thu, 19 Nov 2009 17:14:20 -0700
Denis Dupeyron <calchan@gentoo.org> wrote:
> On Thu, Nov 19, 2009 at 3:12 PM, Ciaran McCreesh
> <ciaran.mccreesh@googlemail.com> wrote:
> > I honestly don't think we should be going anywhere with this until
> > Portage is using a mechanism that guarantees correct sub-second
> > resolution preservation in all cases.
> 
> Any idea, or even the beginning of one, of how to make that happen?

My understanding is that someone with Python knowledge would have to
write an external C library that provides a replacement for stat and a
wrapper for either utimensat or futimens.

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [gentoo-council] mtime preservation
  2009-11-20  0:18                     ` Ciaran McCreesh
@ 2009-11-21  0:37                       ` Zac Medico
  0 siblings, 0 replies; 34+ messages in thread
From: Zac Medico @ 2009-11-21  0:37 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: Denis Dupeyron, Ulrich Mueller, gentoo-council

Ciaran McCreesh wrote:
> On Thu, 19 Nov 2009 17:14:20 -0700
> Denis Dupeyron <calchan@gentoo.org> wrote:
>> On Thu, Nov 19, 2009 at 3:12 PM, Ciaran McCreesh
>> <ciaran.mccreesh@googlemail.com> wrote:
>>> I honestly don't think we should be going anywhere with this until
>>> Portage is using a mechanism that guarantees correct sub-second
>>> resolution preservation in all cases.
>> Any idea, or even the beginning of one, of how to make that happen?
> 
> My understanding is that someone with Python knowledge would have to
> write an external C library that provides a replacement for stat and a
> wrapper for either utimensat or futimens.

Alternatively, we could simply make portage spawn the mv binary
whenever rename fails (it fails when the source and destination are
on different devices). Although it's relatively slow, it should
solve the problem.
-- 
Thanks,
Zac



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

* Re: [gentoo-council] mtime preservation
  2009-11-19 22:12                 ` Ciaran McCreesh
  2009-11-20  0:14                   ` Denis Dupeyron
@ 2009-11-23 19:16                   ` Ulrich Mueller
  1 sibling, 0 replies; 34+ messages in thread
From: Ulrich Mueller @ 2009-11-23 19:16 UTC (permalink / raw
  To: Ciaran McCreesh; +Cc: gentoo-council

>>>>> On Thu, 19 Nov 2009, Ciaran McCreesh wrote:

>> Now we need to enumerate the exceptions:
>> 
>> ,----
>> | * files newly created by the package manager,
>> `----

>> ,----
>> | * binary object files being stripped of symbols.
>> `----
>> 
>> Anything else missing from above list?

> man pages, info pages, things covered by ecompress, arbitrary
> documentation,

Last time I checked, mtimes of all of these were preserved.

> any source code file,

Do you mean sources installed with FEATURES="installsources"?

> I honestly don't think we should be going anywhere with this until
> Portage is using a mechanism that guarantees correct sub-second
> resolution preservation in all cases.

I disagree. Sub-second resolution is currently a non-issue, and I'm
not aware of any problems caused by it (or its absence). And it's not
even supported by all filesystems. (Is it supported by tar? That might
also be an interesting question with respect to binpkgs.)

It's much better to have a spec that requires second resolution *now*,
instead of not preserving mtimes at all (as Paludis current does).
There's always the possibility to refine the spec later, in case any
issues with missing sub-second resolution should arise.

Ulrich



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

end of thread, other threads:[~2009-11-23 20:00 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-03 17:03 [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Ulrich Mueller
2009-11-03 18:06 ` Ciaran McCreesh
2009-11-04 15:07   ` [gentoo-council] mtime preservation (was: Agenda (draft) for November meeting 2009-11-09) Ulrich Mueller
2009-11-04 15:28     ` [gentoo-council] " Ciaran McCreesh
2009-11-04 21:12       ` [gentoo-council] Re: mtime preservation Zac Medico
2009-11-04 21:29         ` Ciaran McCreesh
2009-11-05  5:54           ` Zac Medico
2009-11-05  6:11             ` Ulrich Mueller
2009-11-05  6:18               ` Zac Medico
2009-11-05  9:11                 ` Ulrich Mueller
2009-11-05 10:24       ` Ulrich Mueller
2009-11-08 19:14         ` Ciaran McCreesh
2009-11-09 15:18           ` Denis Dupeyron
2009-11-09 15:34             ` Ciaran McCreesh
2009-11-09 15:42               ` Petteri Räty
2009-11-09 16:37               ` Ulrich Mueller
2009-11-09 16:53                 ` Ciaran McCreesh
2009-11-10  7:07               ` [gentoo-council] " Ulrich Mueller
2009-11-19 22:12                 ` Ciaran McCreesh
2009-11-20  0:14                   ` Denis Dupeyron
2009-11-20  0:18                     ` Ciaran McCreesh
2009-11-21  0:37                       ` Zac Medico
2009-11-23 19:16                   ` Ulrich Mueller
2009-11-09 16:36             ` [gentoo-council] " Ulrich Mueller
2009-11-09 17:58               ` Denis Dupeyron
2009-11-09 18:14                 ` Ciaran McCreesh
2009-11-09 18:48                   ` Denis Dupeyron
2009-11-03 20:17 ` [gentoo-council] Agenda (draft) for November meeting 2009-11-09 Patrick Lauer
2009-11-03 22:56   ` Denis Dupeyron
2009-11-03 23:10     ` Ciaran McCreesh
2009-11-03 23:14     ` Patrick Lauer
2009-11-04 15:19 ` Ulrich Mueller
2009-11-04 15:22   ` Denis Dupeyron
2009-11-05 20:44 ` Ulrich Mueller

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