WIP: experimental support for diskcache-style (sqlite backed) sconsign #4619
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a low-touch conversion to use an sqlite backend instead of a flat "dblite" file for the sconsign database, without really changing SCons logic - but includes some hacks where rather than full detection, things are just commented out.
New
SCons/sdiskcache.py
module supports diskcache usage.Definitely not ready to merge.
diskcache: https://pypi.org/project/diskcache/ and https://grantjenks.com/docs/diskcache/
Experimental: with a
--convert
flag, sconsign utility will read an existing sconsign file and set up a sqlite-backed Diskcache in.sconsign.sqlite
.=========================
TODO on the testing front:
test/Repository
: fiddling the "writable" attribute in the framework doesn't help, sqlite db opened unwritable is always unwritable, Get:OperationalError : attempt to write a readonly database
. Affects:test/Configure/VariantDir-SConscript.py
: hardcodes.dblite
as the DB suffix.test/Configure/implicit-cache.py
: hardcodes.dblite
as the DB suffix.test/SConsignFile/default.py
: hardcodes.dblite
as the DB suffixtest/SConsignFile/explicit-file.py
: hardcodes.dblite
as the DB suffixtest/option/hash-format.py
: why does this do an assert, anyway? e.g.Missing files: /tmp/scons/testcmd.305909.0g2s8ny7/.sconsign.dblite
test/sconsign/corrupt.py
: hardcodes.dblite
. Since it's not a flat file, corrupt is different. ExposeCache.check()
?test/sconsign/script/Configure.py
: currently hitting unpickled datatest/sconsign/script/dblite.py
: possibly should just not run, but maybe add parallel one for sdiskcachetest/option/option-n.py
: see FWtesting/framework/TestSCons.py
:get_sconsignname
,unlink_sconsignfile
don't work for sqlite dbunlink_sconsignfile
(possibly renamed) that don't. From a grep:Contributor Checklist:
CHANGES.txt
andRELEASE.txt
(and read theREADME.rst
).