> On Sep 9, 2017, at 19:13, Bill Deegan <[email protected]> wrote: > > Greetings, > > This is (I hope) the last issue gating 3.0 release.
Fantastic. I guess the question is how many people are going to be switching their scons python versions regularly and whether the .sconsign file is part of a public interface outside of scons itself. > > If we set the default pickle version to 2. (Currently set to > HIGHEST_AVAILABLE, which means 4 for py3.5+ and 2 for py2.7) > This is the safest option for portability. > If you run scons with py2.7 and then run again with py3.x, you'll get the > following: > ... > scons: *** [$DISTDIR/scons-local-3.0.0.alpha.20170821.tar.gz] > UnicodeDecodeError : 'ascii' codec can't decode byte 0x80 in position 0: > ordinal not in range(128) > is this error from SCons or from pickle? If it’s from SCons, why is py2.7 writing non-ascii and why is py3 using ascii to read it? > If you run scons with py3 and then rerun with py2.7, you'll get the following: > * It will rebuild everything you just built with py3 > Not a complete disaster but a bit weird, it’s almost like it doesn’t really understand what it read from the file. > If we set the default pickle version to HIGHEST_AVAILABLE, which means 4 for > py3.5+ and 2 for py2.7 > what happens? > > Here's the options I see to deal with this: > 1. Always append .py3 to PY3 scons runs' sconsign files This is the safe option unless .sconsign is assumed to be a public interface. If people really are going to switch py2/py3 regularly then this sounds like it might get really confusing. > 2. Always append .py# to sconsign files based on what version of python was > used, ignore pre-existing .sconsigns from older versions This will lead to the same state confusion as for #1 if people are switching all the time. > 3. Do something complicated: > a. Leave pickle version as HIGHEST_AVAILABLE, detect version of pickle by > reading first two bytes. If incompatible version detected, change file name > to .py# and try reading that one. Always write to .sconsign? Or write to > file read. > b. ? > The best option is to work out why pickle version 2 is not compatible. Can you get text dumps of the contents from py2 and py3 to see what differs? It must be some unicode weirdness. — Tim Jenness
_______________________________________________ Scons-dev mailing list [email protected] https://pairlist2.pair.net/mailman/listinfo/scons-dev
