On 2016/01/10 19:13, Alexandr Shadchin wrote:
> On Sun, Jan 10, 2016 at 01:26:47PM +0000, Stuart Henderson wrote:
> > I don't think PKG_ARCH=* is a good idea - .pyc files aren't identical 
> > between arches.
> > 
> 
> My little research:
> Python bytecode is portable across platforms, but not really across Python 
> versions.
> 
> .pyc files contain a timestamp, this explains the difference.
> 
> Structure pyc (py2):
> 4 byte - magic
> 4 byte - timestamp
> other - bytecode (marshal)
> 
> Structure pyc (py3):
> 4 byte - magic
> 4 byte - timestamp
> 4 byte - size
> other - bytecode (marshal)
> 
> I check amd64 and i386, the files are identical.
> 
> Can anyone have more information?

I can't find it now but I'm pretty sure when we looked into this before
we found that there were differences depending on the arch creating the
file, though the generated files could be used on either arch. I'm not
sure if it was due to word length or endianness or something else.

But given that we already have problems with pyc files with pkg_add -u
I don't want to add any more opportunities for problems. And in any
event doing this on a per-port basis doesn't really make sense..

(Specific known problem with pkg_add: some pyc files are generated
with one timestamp, but the py file is actually installed with a
*different* timestamp. This is the cause of the "email/mime" update
problem that people see from time to time.)

AFAIK the last time anyone used PKG_ARCH=* as an optimization when
building packages was when I last built packages for an arm release.
They're not useful in typical snapshot builds (only if a fast arch
build is done from the same source tree as a slower arch build),
and even for a normal release build they're problematic (there
have been some things marked with PKG_ARCH=* that shouldn't
have been), so at this point I'd lean towards removing PKG_ARCH
support completely.. (If we do that, packages using it, e.g.
much of p5-*, will need bumps).

Reply via email to