tdf#168512: python3: bundle sqlite3

Add sqlite3.patch.1 since sqlite3.vcxproj expects the
sqlite version in the path

Change-Id: Ieb262b5401447cc9cc8c8d68197b3ec492c6ed94
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191394
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Xisco Fauli
2025-10-29 14:21:29 +01:00
parent f98ce0f91b
commit 1dfb0c9936
9 changed files with 62 additions and 18 deletions
+11 -1
View File
@@ -22,6 +22,7 @@ endif
$(eval $(call gb_ExternalPackage_add_file,python3,$(LIBO_BIN_FOLDER)/python-core-$(PYTHON_VERSION)/bin/python.exe,PCbuild/$(python_arch_subdir)python$(if $(MSVC_USE_DEBUG_RUNTIME),_d).exe))
$(eval $(call gb_ExternalPackage_add_file,python3,$(LIBO_BIN_FOLDER)/python$(PYTHON_VERSION_MAJOR)$(PYTHON_VERSION_MINOR)$(if $(MSVC_USE_DEBUG_RUNTIME),_d).dll,PCbuild/$(python_arch_subdir)python$(PYTHON_VERSION_MAJOR)$(PYTHON_VERSION_MINOR)$(if $(MSVC_USE_DEBUG_RUNTIME),_d).dll))
$(eval $(call gb_ExternalPackage_add_files,python3,$(LIBO_BIN_FOLDER)/python-core-$(PYTHON_VERSION)/lib,PCbuild/$(python_arch_subdir)sqlite3$(if $(MSVC_USE_DEBUG_RUNTIME),_d).dll))
ifeq ($(MSVC_USE_DEBUG_RUNTIME),)
$(eval $(call gb_ExternalPackage_add_file,python3,$(LIBO_BIN_FOLDER)/python$(PYTHON_VERSION_MAJOR).dll,PCbuild/$(python_arch_subdir)python$(PYTHON_VERSION_MAJOR).dll))
endif
@@ -36,6 +37,7 @@ python3_EXTENSION_MODULES= \
PCbuild/$(python_arch_subdir)_overlapped$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
PCbuild/$(python_arch_subdir)_queue$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
PCbuild/$(python_arch_subdir)_socket$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
PCbuild/$(python_arch_subdir)_sqlite3$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
PCbuild/$(python_arch_subdir)_ssl$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
PCbuild/$(python_arch_subdir)_uuid$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
PCbuild/$(python_arch_subdir)_zoneinfo$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
@@ -117,6 +119,7 @@ python3_EXTENSION_MODULES= \
Modules/_sha2.$(python3_EXTENSION_MODULE_SUFFIX).so \
Modules/_sha3.$(python3_EXTENSION_MODULE_SUFFIX).so \
Modules/_socket.$(python3_EXTENSION_MODULE_SUFFIX).so \
Modules/_sqlite3.$(python3_EXTENSION_MODULE_SUFFIX).so \
Modules/spwd.$(python3_EXTENSION_MODULE_SUFFIX).so \
$(if $(ENABLE_OPENSSL), \
Modules/_ssl.$(python3_EXTENSION_MODULE_SUFFIX).so \
@@ -173,7 +176,7 @@ endif
# packages not shipped:
# dbm, sqlite3 - need some database stuff
# dbm - need some database stuff
# curses - need curses to build the C module
# idlelib, tkinter, turtledemo - need Tk to build the C module
# test - probably unnecessary? was explicitly removed #i116738#
@@ -1726,6 +1729,13 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,python3,$(LIBO_BIN_FOLDER)/p
Lib/site-packages/README.txt \
))
$(eval $(call gb_ExternalPackage_add_unpacked_files,python3,$(LIBO_BIN_FOLDER)/python-core-$(PYTHON_VERSION)/lib/sqlite3,\
Lib/sqlite3/__init__.py \
Lib/sqlite3/__main__.py \
Lib/sqlite3/dbapi2.py \
Lib/sqlite3/dump.py \
))
$(eval $(call gb_ExternalPackage_add_unpacked_files,python3,$(LIBO_BIN_FOLDER)/python-core-$(PYTHON_VERSION)/lib/tomllib,\
Lib/tomllib/__init__.py \
Lib/tomllib/_parser.py \
+4 -2
View File
@@ -14,6 +14,7 @@ $(eval $(call gb_ExternalProject_use_externals,python3,\
expat \
$(if $(filter WNT LINUX,$(OS)),libffi) \
openssl \
$(if $(ENABLE_SQLITE3),sqlite3) \
zlib \
))
@@ -42,6 +43,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
/p:opensslIncludeDir=$(gb_UnpackedTarball_workdir)/openssl/include \
/p:opensslOutDir=$(gb_UnpackedTarball_workdir)/openssl \
/p:zlibDir=$(gb_UnpackedTarball_workdir)/zlib \
/p:sqlite3Dir=$(gb_UnpackedTarball_workdir)/sqlite3 \
/p:libffiOutDir=$(gb_UnpackedTarball_workdir)/libffi/$(HOST_PLATFORM)/.libs \
/p:libffiIncludeDir=$(gb_UnpackedTarball_workdir)/libffi/$(HOST_PLATFORM)/include \
/maxcpucount \
@@ -112,6 +114,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
$(if $(filter -fsanitize=undefined,$(CC)),-fno-sanitize=function) \
$(if $(SYSTEM_BZIP2),,-I$(gb_UnpackedTarball_workdir)/bzip2) \
$(if $(SYSTEM_EXPAT),,-I$(gb_UnpackedTarball_workdir)/expat/lib) \
$(if $(SYSTEM_SQLITE3),,-I$(gb_UnpackedTarball_workdir)/sqlite3) \
$(if $(SYSBASE), -I$(SYSBASE)/usr/include) \
)" \
$(if $(python3_cflags),CFLAGS='$(python3_cflags)') \
@@ -121,6 +124,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
$(if $(SYSTEM_BZIP2),,-L$(gb_UnpackedTarball_workdir)/bzip2) \
$(if $(SYSTEM_EXPAT),,-L$(gb_StaticLibrary_WORKDIR)) \
$(if $(SYSTEM_ZLIB),,-L$(gb_StaticLibrary_WORKDIR)) \
$(if $(SYSTEM_SQLITE3),,-L$(gb_StaticLibrary_WORKDIR)) \
$(if $(SYSBASE), -L$(SYSBASE)/usr/lib) \
$(gb_LTOFLAGS) \
)" \
@@ -203,7 +207,6 @@ $(call gb_ExternalProject_get_state_target,python3,executables) : $(call gb_Exte
$(call gb_ExternalProject_get_state_target,python3,removeunnecessarystuff) : $(call gb_ExternalProject_get_state_target,python3,build)
$(call gb_Output_announce,python3 - remove the stuff we don't need to ship,build,CUS,5)
rm -r $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/dbm
rm -r $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/sqlite3
rm -r $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/curses
rm -r $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/idlelib
rm -r $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/tkinter
@@ -211,7 +214,6 @@ $(call gb_ExternalProject_get_state_target,python3,removeunnecessarystuff) : $(c
rm -r $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/test
# Then the binary libraries
rm $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/lib-dynload/_dbm.$(python3_EXTENSION_MODULE_SUFFIX).so
rm $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/lib-dynload/_sqlite3.$(python3_EXTENSION_MODULE_SUFFIX).so
rm $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/lib-dynload/_curses.$(python3_EXTENSION_MODULE_SUFFIX).so
rm $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/lib-dynload/_curses_panel.$(python3_EXTENSION_MODULE_SUFFIX).so
rm $(python3_fw_prefix)/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)/lib-dynload/_test*.$(python3_EXTENSION_MODULE_SUFFIX).so
+1
View File
@@ -42,6 +42,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\
external/python3/ubsan.patch.0 \
external/python3/init-sys-streams-cant-initialize-stdin.patch.0 \
external/python3/setuptools.patch.1 \
external/python3/sqlite3.patch.1 \
))
ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD SOLARIS,$(OS)),)
+1 -1
View File
@@ -10,7 +10,7 @@ from os import path, walk
if __name__ == '__main__':
ignoredPackages = ["dbm", "curses", "test", "tkinter", "turtledemo", "sqlite3", "idlelib"]
ignoredPackages = ["dbm", "curses", "test", "tkinter", "turtledemo", "idlelib"]
coreDir = path.dirname(path.dirname(path.dirname(path.abspath(__file__))))
pythonDir = path.join(coreDir, "workdir/UnpackedTarball/python3")
+3 -14
View File
@@ -36,16 +36,7 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcxproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_decimal", "_decimal.vcxproj", "{0E9791DB-593A-465F-98BC-681011311617}"
@@ -73,8 +63,6 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcxproj", "{86937F53-C189-40EF-8CE8-8759D8E7D480}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcxproj", "{13CECB97-4119-4316-9D42-8534019A5A44}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcxproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcxproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"
@@ -85,22 +73,14 @@
@@ -75,20 +75,14 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testimportmultiple", "_testimportmultiple.vcxproj", "{36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}"
EndProject
@@ -63,11 +54,9 @@ diff -ru python3.orig/PCbuild/pcbuild.sln python3/PCbuild/pcbuild.sln
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcxproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcxproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcxproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"
@@ -139,8 +119,6 @@
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_queue", "_queue.vcxproj", "{78D80A15-BD8C-44E2-B49E-1F05B0A0A687}"
+11
View File
@@ -0,0 +1,11 @@
--- python3/PCbuild/sqlite3.vcxproj 2025-10-28 12:15:59.386769096 +0100
+++ python3/PCbuild/sqlite3.vcxproj 2025-10-28 12:21:58.905090639 +0100
@@ -88,7 +88,7 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <_SqliteVersion>$([System.Text.RegularExpressions.Regex]::Match(`$(sqlite3Dir)`, `((\d+)\.(\d+)\.(\d+)\.(\d+))\\?$`).Groups)</_SqliteVersion>
+ <_SqliteVersion>$([System.Text.RegularExpressions.Regex]::Match(`0.0.0.0`, `((\d+)\.(\d+)\.(\d+)\.(\d+))\\?$`).Groups)</_SqliteVersion>
<SqliteVersion>$(_SqliteVersion.Split(`;`)[1])</SqliteVersion>
<SqliteMajorVersion>$(_SqliteVersion.Split(`;`)[2])</SqliteMajorVersion>
<SqliteMinorVersion>$(_SqliteVersion.Split(`;`)[3])</SqliteMinorVersion>
+1
View File
@@ -49,6 +49,7 @@ $(eval $(call gb_Module_add_check_targets,pyuno, \
PythonTest_pyuno_pytests_testbz2 \
PythonTest_pyuno_pytests_testpip \
PythonTest_pyuno_pytests_testsetuptools \
PythonTest_pyuno_pytests_testsqlite3 \
PythonTest_pyuno_pytests_testvenv \
))
@@ -0,0 +1,16 @@
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_PythonTest_PythonTest,pyuno_pytests_testsqlite3))
$(eval $(call gb_PythonTest_add_modules,pyuno_pytests_testsqlite3,$(SRCDIR)/pyuno/qa/pytests,\
testsqlite3 \
))
# vim: set noet sw=4 ts=4:
+14
View File
@@ -0,0 +1,14 @@
import os
import unittest
# I want to ensure that import sqlite3 works on all platforms
class SQLITE3Test(unittest.TestCase):
def test_sqlite3_import(self):
import sqlite3
# use imported sqlite3 module for pyflakes
with open(os.devnull, "w") as devnull:
print(str(sqlite3), file=devnull)
if __name__ == '__main__':
unittest.main()