summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2021-11-06 09:30:37 (GMT)
committerGitHub <noreply@github.com>2021-11-06 09:30:37 (GMT)
commite9594f6747eaaaa848c26e2bf67d467aabfd62b3 (patch)
tree6e0cc5e3aa0a4fb9f924537842dc9b4987d46544
parenta4774f42e35861c4bb16928cffb011c2d8a285ac (diff)
downloadcpython-e9594f6747eaaaa848c26e2bf67d467aabfd62b3.zip
cpython-e9594f6747eaaaa848c26e2bf67d467aabfd62b3.tar.gz
cpython-e9594f6747eaaaa848c26e2bf67d467aabfd62b3.tar.bz2
bpo-45731: Handle --enable-loadable-sqlite-extensions in configure (GH-29434)
-rw-r--r--Misc/NEWS.d/next/Build/2021-11-05-20-56-29.bpo-45731.9SDnDf.rst1
-rw-r--r--Modules/_sqlite/clinic/connection.c.h10
-rw-r--r--Modules/_sqlite/connection.c2
-rwxr-xr-xconfigure11
-rw-r--r--configure.ac8
-rw-r--r--pyconfig.h.in3
-rw-r--r--setup.py8
7 files changed, 30 insertions, 13 deletions
diff --git a/Misc/NEWS.d/next/Build/2021-11-05-20-56-29.bpo-45731.9SDnDf.rst b/Misc/NEWS.d/next/Build/2021-11-05-20-56-29.bpo-45731.9SDnDf.rst
new file mode 100644
index 0000000..1e490fa
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2021-11-05-20-56-29.bpo-45731.9SDnDf.rst
@@ -0,0 +1 @@
+``configure --enable-loadable-sqlite-extensions`` is now handled by new ``PY_SQLITE_ENABLE_LOAD_EXTENSION`` macro instead of logic in setup.py.
diff --git a/Modules/_sqlite/clinic/connection.c.h b/Modules/_sqlite/clinic/connection.c.h
index f9323eb..4e5ee50 100644
--- a/Modules/_sqlite/clinic/connection.c.h
+++ b/Modules/_sqlite/clinic/connection.c.h
@@ -367,7 +367,7 @@ exit:
return return_value;
}
-#if !defined(SQLITE_OMIT_LOAD_EXTENSION)
+#if defined(PY_SQLITE_ENABLE_LOAD_EXTENSION)
PyDoc_STRVAR(pysqlite_connection_enable_load_extension__doc__,
"enable_load_extension($self, enable, /)\n"
@@ -398,9 +398,9 @@ exit:
return return_value;
}
-#endif /* !defined(SQLITE_OMIT_LOAD_EXTENSION) */
+#endif /* defined(PY_SQLITE_ENABLE_LOAD_EXTENSION) */
-#if !defined(SQLITE_OMIT_LOAD_EXTENSION)
+#if defined(PY_SQLITE_ENABLE_LOAD_EXTENSION)
PyDoc_STRVAR(pysqlite_connection_load_extension__doc__,
"load_extension($self, name, /)\n"
@@ -440,7 +440,7 @@ exit:
return return_value;
}
-#endif /* !defined(SQLITE_OMIT_LOAD_EXTENSION) */
+#endif /* defined(PY_SQLITE_ENABLE_LOAD_EXTENSION) */
PyDoc_STRVAR(pysqlite_connection_execute__doc__,
"execute($self, sql, parameters=<unrepresentable>, /)\n"
@@ -834,4 +834,4 @@ exit:
#ifndef PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF
#define PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF
#endif /* !defined(PYSQLITE_CONNECTION_LOAD_EXTENSION_METHODDEF) */
-/*[clinic end generated code: output=0c3901153a3837a5 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=d71bf16bef67878f input=a9049054013a1b77]*/
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index f913267..964673a 100644
--- a/Modules/_sqlite/connection.c
+++ b/Modules/_sqlite/connection.c
@@ -1225,7 +1225,7 @@ pysqlite_connection_set_trace_callback_impl(pysqlite_Connection *self,
Py_RETURN_NONE;
}
-#ifndef SQLITE_OMIT_LOAD_EXTENSION
+#ifdef PY_SQLITE_ENABLE_LOAD_EXTENSION
/*[clinic input]
_sqlite3.Connection.enable_load_extension as pysqlite_connection_enable_load_extension
diff --git a/configure b/configure
index 00bea71..1eea2d1 100755
--- a/configure
+++ b/configure
@@ -10913,13 +10913,20 @@ $as_echo_n "checking for --enable-loadable-sqlite-extensions... " >&6; }
if test "${enable_loadable_sqlite_extensions+set}" = set; then :
enableval=$enable_loadable_sqlite_extensions;
else
- enable_loadable_sqlite_extensions="no"
+ enable_loadable_sqlite_extensions=no
fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_loadable_sqlite_extensions" >&5
$as_echo "$enable_loadable_sqlite_extensions" >&6; }
+if test "x$enable_loadable_sqlite_extensions" = xyes; then :
+
+
+$as_echo "#define PY_SQLITE_ENABLE_LOAD_EXTENSION 1" >>confdefs.h
+
+
+fi
+
# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
diff --git a/configure.ac b/configure.ac
index ea11908..8895818 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3199,10 +3199,14 @@ AC_ARG_ENABLE(loadable-sqlite-extensions,
AS_HELP_STRING([--enable-loadable-sqlite-extensions],
[support loadable extensions in _sqlite module, see Doc/library/sqlite3.rst (default is no)]),
[],
- [enable_loadable_sqlite_extensions="no"])
-
+ [enable_loadable_sqlite_extensions=no])
AC_MSG_RESULT($enable_loadable_sqlite_extensions)
+AS_VAR_IF([enable_loadable_sqlite_extensions], [yes], [
+ AC_DEFINE(PY_SQLITE_ENABLE_LOAD_EXTENSION, 1,
+ [Define to 1 to build the sqlite module with loadable extensions support.])
+])
+
# Check for --with-tcltk-includes=path and --with-tcltk-libs=path
AC_SUBST(TCLTK_INCLUDES)
AC_SUBST(TCLTK_LIBS)
diff --git a/pyconfig.h.in b/pyconfig.h.in
index b89377d..0c149e2 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -1395,6 +1395,9 @@
/* Define to printf format modifier for Py_ssize_t */
#undef PY_FORMAT_SIZE_T
+/* Define to 1 to build the sqlite module with loadable extensions support. */
+#undef PY_SQLITE_ENABLE_LOAD_EXTENSION
+
/* Default cipher suites list for ssl module. 1: Python's preferred selection,
2: leave OpenSSL defaults untouched, 0: custom string */
#undef PY_SSL_DEFAULT_CIPHERS
diff --git a/setup.py b/setup.py
index 22c5ccf..b6bf8e1 100644
--- a/setup.py
+++ b/setup.py
@@ -1602,9 +1602,11 @@ class PyBuildExt(build_ext):
# Enable support for loadable extensions in the sqlite3 module
# if --enable-loadable-sqlite-extensions configure option is used.
- if '--enable-loadable-sqlite-extensions' not in sysconfig.get_config_var("CONFIG_ARGS"):
- sqlite_defines.append(("SQLITE_OMIT_LOAD_EXTENSION", "1"))
- elif MACOS and sqlite_incdir == os.path.join(MACOS_SDK_ROOT, "usr/include"):
+ if (
+ MACOS and
+ sqlite_incdir == os.path.join(MACOS_SDK_ROOT, "usr/include") and
+ sysconfig.get_config_var("PY_SQLITE_ENABLE_LOAD_EXTENSION")
+ ):
raise DistutilsError("System version of SQLite does not support loadable extensions")
if MACOS: