Hey Felix, Felix Gruber <fel...@posteo.net> writes:
> Hi Jelle, > > On 5/10/21 11:31 PM, Jelle Licht wrote: >> Does anybody perhaps know why my python is correctly receiving (and >> subsequently ignoring) this configure flag? It seems that *something* >> happens between the 'configure' script receiving the flag, and the file >> in `Modules/_sqlite/connection.c' being built, it seems >> SQLITE_OMIT_LOAD_EXTENSION is set to "1". >> >> This (seemingly) happens in setup.py, lines 1432 and on: >> --8<---------------cut here---------------start------------->8--- >> if '--enable-loadable-sqlite-extensions' not in >> sysconfig.get_config_var("CONFIG_ARGS"): >> sqlite_defines.append(("SQLITE_OMIT_LOAD_EXTENSION", "1")) >> --8<---------------cut here---------------end--------------->8--- >> >> Indeed, in *any* python3 I can find on my Guix System, I see: >> >> --8<---------------cut here---------------start------------->8--- >> #> import sysconfig >> #> sysconfig.get_config_var("CONFIG_ARGS") >> '--with-system-ffi' >> --8<---------------cut here---------------end--------------->8--- >> >> Something weird is going on! >> >> I have no clue how to continue finding why this happens, but for my >> personal problem I can just patch python's setup.py file. > > You're onto something with `sysconfig.get_config_var("CONFIG_ARGS")`: > In the definition of the python-2.7 package from which the python > package eventually derives from, a phase > `'do-not-record-configure-flags` is added before `'configure`. This > phase removes everything but '--with-system-ffi' from `CONFIG_ARGS`. > > I've successfully enabled loadable sqlite extensions with the following > package definition. > -------8<----------------8<----------------8<----------------8<------- > (define python-with-loadable-sqlite-modules > (package (inherit python) > (arguments > (substitute-keyword-arguments (package-arguments python) > ((#:configure-flags cf) > `(cons* "--enable-loadable-sqlite-extensions" ,cf)) > ((#:phases phases) > `(modify-phases ,phases > (delete 'do-not-record-configure-flags))))))) > ------->8---------------->8---------------->8---------------->8------- This works well-enough for me atm, thanks for getting me to understand the missing part here :). > While this works, it might be better to modify the > `'do-not-record-configure-flags` phase to keep the > `--enable-loadable-sqlite-extensions` option instead of completely > removing this phase. > > I think it might be a good idea to enable loadable sqlite extensions by > default in the python package. As you've already pointed out, other > distros have this option enabled which leads to surprises when trying to > load sqlite extensions in guix's python. Makes sense, but I am no python guru. I'll open a separate ticket for this discussion, because there might be more flags that have similar issues that we might want to support. Thanks again, Jelle