classification
Title: Got warning when compiling sqlite3 module on Mac OS X
Type: Stage:
Components: macOS Versions: Python 3.6, Python 3.4, Python 3.5
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: ned.deily, ronaldoussoren, vajrasky
Priority: low Keywords: patch

Created on 2015-06-18 11:31 by vajrasky, last changed 2015-06-21 19:08 by ned.deily.

Files
File name Uploaded Description Edit
remove_warning_compile__sqlite.patch vajrasky, 2015-06-18 11:31 review
Messages (3)
msg245463 - (view) Author: Vajrasky Kok (vajrasky) * Date: 2015-06-18 11:31
I got this warning when compiling sqlite3 module.

gcc -Wno-unused-result -Wsign-compare -g -O0 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -IInclude -I/usr/local/include -I/Users/sky/Code/python/cpython/Include -I/Users/sky/Code/python/cpython -c /Users/sky/Code/python/cpython/Modules/_sqlite/module.c -o build/temp.macosx-10.10-x86_64-3.6-pydebug/Users/sky/Code/python/cpython/Modules/_sqlite/module.o
/Users/sky/Code/python/cpython/Modules/_sqlite/module.c:136:10: warning: 'sqlite3_enable_shared_cache' is
      deprecated: first deprecated in OS X 10.7 [-Wdeprecated-declarations]
    rc = sqlite3_enable_shared_cache(do_enable);
         ^
/usr/include/sqlite3.h:5006:16: note: 'sqlite3_enable_shared_cache' has been explicitly marked deprecated here
SQLITE_API int sqlite3_enable_shared_cache(int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __I...
               ^
1 warning generated.

The enable_shared_cache method will fail if it is used afterwards.
"Changing the shared_cache flag failed"

Here is the patch to remove the warning.
msg245592 - (view) Author: Ronald Oussoren (ronaldoussoren) * (Python committer) Date: 2015-06-21 12:19
<https://www.sqlite.org/c3ref/enable_shared_cache.html> appears to indicate that the function is deprecated on OSX 10.7 and iOS 5.0, but looking at the latest sources on sqlite.org that's not the case, the warning in the documentation appears to be for the version of SQLite that Apple ships with their systems.

Because of this I'm against merging this patch as is because it also affects anyone building using the upstream version of SQLite instead of the version shipped with OSX.

I'm -0 on suppressing the warning other ways, either by detecting that the build uses Apple's build of SQLite or by using pragma's to disable deprecation warnings for this functions.
msg245608 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2015-06-21 19:08
I agree with Ronald that the proposed patch should not be applied as is.  For example, the Pythons installed by the current python.org OS X installers build and link with a newer version of libsqlite3.  This is one of several examples of third-party libraries for which the Apple-supplied version in OS X is old and users are better served by providing a newer version for use with Python.  I think a better approach would be to make it easier for people building from source on OS X to also build and include these newer versions, like the installer build does.
History
Date User Action Args
2015-06-21 19:08:56ned.deilysetpriority: normal -> low

title: Got warning when compiling sqlite3 module on Mac OSX -> Got warning when compiling sqlite3 module on Mac OS X
messages: + msg245608
versions: + Python 3.6
2015-06-21 12:19:56ronaldoussorensetmessages: + msg245592
2015-06-18 11:31:43vajraskycreate