unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Felix Gruber <felgru@posteo.net>
To: help-guix@gnu.org
Subject: Re: python to support SQLite extensions
Date: Sun, 16 May 2021 17:56:49 +0000	[thread overview]
Message-ID: <21827a25-852c-967d-bd38-32dc819c22f2@posteo.net> (raw)
In-Reply-To: <86tunagtsa.fsf@fsfe.org>

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-------

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.


Hope that helps,
Felix


  reply	other threads:[~2021-05-16 19:19 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-10 21:31 python to support SQLite extensions Jelle Licht
2021-05-16 17:56 ` Felix Gruber [this message]
2021-05-31 19:22   ` Jelle Licht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=21827a25-852c-967d-bd38-32dc819c22f2@posteo.net \
    --to=felgru@posteo.net \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).