SCons 3.0, sconsign files and Py2 vs Py3.. how to handle sconsign imcompatabilities
Bill Deegan <bill-cJFiu+DHMVC5azolltMz9laTQe2KTcn/@public.gmane.org>
| Newsgroups | gmane.comp.programming.tools.scons.devel |
|---|---|
| Message-ID | <CAEyG4CHgn1RrGV4tObyBdrG9Fhn8w3qLphcZJKcAkyLW817Fcw__11110.4529737078$1505009639$gmane$org@mail.gmail.com> |
Greetings, This is (I hope) the last issue gating 3.0 release. *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)* 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) 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 *If we set the default pickle version to HIGHEST_AVAILABLE, which means 4 for py3.5+ and 2 for py2.7* Here's the options I see to deal with this: 1. Always append .py3 to PY3 scons runs' sconsign files 2. Always append .py# to sconsign files based on what version of python was used, ignore pre-existing .sconsigns from older versions 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. ? Thoughts? -Bill _______________________________________________ Scons-dev mailing list [email protected] https://pairlist2.pair.net/mailman/listinfo/scons-dev