external/python3/ExternalPackage_python3.mk        |    2 +
 external/python3/ExternalProject_python3.mk        |    4 ++
 external/python3/UnpackedTarball_python3.mk        |    1 
 external/python3/lzma.patch.1                      |   40 +++++++++++++++++++++
 external/python3/python-3.5.4-msvc-disable.patch.1 |   17 --------
 pyuno/qa/pytests/testimports.py                    |    7 +++
 6 files changed, 55 insertions(+), 16 deletions(-)

New commits:
commit 6408a49ac5e4c9236b2f9fe88534b6bc9c8e58b9
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Nov 10 12:18:23 2025 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Tue Nov 11 21:40:00 2025 +0100

    tdf#168513: python3: bundle lzma
    
    Change-Id: I7b9729cd293aea781b204888236c3aa5aa858eaa
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193739
    Reviewed-by: Xisco Fauli <[email protected]>
    Tested-by: Jenkins

diff --git a/external/python3/ExternalPackage_python3.mk 
b/external/python3/ExternalPackage_python3.mk
index 088bf96a0d4d..8c436f8b5916 100644
--- a/external/python3/ExternalPackage_python3.mk
+++ b/external/python3/ExternalPackage_python3.mk
@@ -35,6 +35,7 @@ python3_EXTENSION_MODULES= \
        PCbuild/$(python_arch_subdir)_decimal$(if 
$(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
        PCbuild/$(python_arch_subdir)_elementtree$(if 
$(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
        PCbuild/$(python_arch_subdir)_hashlib$(if 
$(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
+       PCbuild/$(python_arch_subdir)_lzma$(if 
$(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
        PCbuild/$(python_arch_subdir)_msi$(if $(MSVC_USE_DEBUG_RUNTIME),_d).pyd 
\
        PCbuild/$(python_arch_subdir)_multiprocessing$(if 
$(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
        PCbuild/$(python_arch_subdir)_overlapped$(if 
$(MSVC_USE_DEBUG_RUNTIME),_d).pyd \
@@ -103,6 +104,7 @@ python3_EXTENSION_MODULES= \
        Modules/_heapq.$(python3_EXTENSION_MODULE_SUFFIX).so \
        Modules/_json.$(python3_EXTENSION_MODULE_SUFFIX).so \
        Modules/_lsprof.$(python3_EXTENSION_MODULE_SUFFIX).so \
+       Modules/_lzma.$(python3_EXTENSION_MODULE_SUFFIX).so \
        Modules/math.$(python3_EXTENSION_MODULE_SUFFIX).so \
        Modules/_md5.$(python3_EXTENSION_MODULE_SUFFIX).so \
        Modules/mmap.$(python3_EXTENSION_MODULE_SUFFIX).so \
diff --git a/external/python3/ExternalProject_python3.mk 
b/external/python3/ExternalProject_python3.mk
index 20754553b443..fec57e264307 100644
--- a/external/python3/ExternalProject_python3.mk
+++ b/external/python3/ExternalProject_python3.mk
@@ -12,6 +12,7 @@ $(eval $(call gb_ExternalProject_ExternalProject,python3))
 $(eval $(call gb_ExternalProject_use_externals,python3,\
        bzip2 \
        expat \
+       $(if $(filter-out WNT,$(OS)),$(call gb_Helper_optional,LZMA,lzma)) \
        $(if $(filter WNT LINUX,$(OS)),libffi) \
        openssl \
        $(if $(filter LINUX,$(OS)),$(call gb_Helper_optional,SQLITE3,sqlite3)) \
@@ -44,6 +45,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
                        /p:opensslOutDir=$(gb_UnpackedTarball_workdir)/openssl \
                        /p:zlibDir=$(gb_UnpackedTarball_workdir)/zlib \
                        /p:sqlite3Dir=$(gb_UnpackedTarball_workdir)/sqlite3 \
+                       /p:lzmaDir=$(gb_UnpackedTarball_workdir)/lzma/ \
                        
/p:libffiOutDir=$(gb_UnpackedTarball_workdir)/libffi/$(HOST_PLATFORM)/.libs \
                        
/p:libffiIncludeDir=$(gb_UnpackedTarball_workdir)/libffi/$(HOST_PLATFORM)/include
 \
                        /maxcpucount \
@@ -115,6 +117,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
                        $(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 
$(SYSTEM_LZMA),,-I$(gb_UnpackedTarball_workdir)/lzma/src/liblzma/api) \
                        $(if $(SYSBASE), -I$(SYSBASE)/usr/include) \
                        )" \
                $(if $(python3_cflags),CFLAGS='$(python3_cflags)') \
@@ -125,6 +128,7 @@ $(call gb_ExternalProject_get_state_target,python3,build) :
                        $(if $(SYSTEM_EXPAT),,-L$(gb_StaticLibrary_WORKDIR)) \
                        $(if $(SYSTEM_ZLIB),,-L$(gb_StaticLibrary_WORKDIR)) \
                        $(if $(SYSTEM_SQLITE3),,-L$(gb_StaticLibrary_WORKDIR)) \
+                       $(if $(SYSTEM_LZMA),,-L$(gb_StaticLibrary_WORKDIR)) \
                        $(if $(SYSBASE), -L$(SYSBASE)/usr/lib) \
                        $(gb_LTOFLAGS) \
                        )" \
diff --git a/external/python3/UnpackedTarball_python3.mk 
b/external/python3/UnpackedTarball_python3.mk
index e47088eb256b..3f69563d1604 100644
--- a/external/python3/UnpackedTarball_python3.mk
+++ b/external/python3/UnpackedTarball_python3.mk
@@ -43,6 +43,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\
        external/python3/init-sys-streams-cant-initialize-stdin.patch.0 \
        external/python3/setuptools.patch.1 \
        external/python3/sqlite3.patch.1 \
+       external/python3/lzma.patch.1 \
 ))
 
 ifneq ($(filter DRAGONFLY FREEBSD LINUX NETBSD OPENBSD SOLARIS,$(OS)),)
diff --git a/external/python3/lzma.patch.1 b/external/python3/lzma.patch.1
new file mode 100644
index 000000000000..87ab1d706855
--- /dev/null
+++ b/external/python3/lzma.patch.1
@@ -0,0 +1,40 @@
+--- python3/PCbuild/liblzma.vcxproj    2025-11-11 15:48:28.599417380 +0100
++++ python3/PCbuild/liblzma.vcxproj    2025-11-11 15:56:54.184573039 +0100
+@@ -91,8 +91,8 @@
+   </PropertyGroup>
+   <ItemDefinitionGroup>
+     <ClCompile>
+-      
<PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      
<AdditionalIncludeDirectories>$(lzmaDir)windows/vs2019;$(lzmaDir)src/liblzma/common;$(lzmaDir)src/common;$(lzmaDir)src/liblzma/api;$(lzmaDir)src/liblzma/check;$(lzmaDir)src/liblzma/delta;$(lzmaDir)src/liblzma/lz;$(lzmaDir)src/liblzma/lzma;$(lzmaDir)src/liblzma/rangecoder;$(lzmaDir)src/liblzma/simple;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      
<PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;MYTHREAD_VISTA;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      
<AdditionalIncludeDirectories>$(lzmaDir)dos;$(lzmaDir)src/liblzma/common;$(lzmaDir)src/common;$(lzmaDir)src/liblzma/api;$(lzmaDir)src/liblzma/check;$(lzmaDir)src/liblzma/delta;$(lzmaDir)src/liblzma/lz;$(lzmaDir)src/liblzma/lzma;$(lzmaDir)src/liblzma/rangecoder;$(lzmaDir)src/liblzma/simple;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+       
<DisableSpecificWarnings>4028;4113;4133;4244;4267;4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+     </ClCompile>
+   </ItemDefinitionGroup>
+@@ -101,9 +101,7 @@
+     <ClCompile Include="$(lzmaDir)src+     <ClCompile 
Include="$(lzmaDir)src\liblzma+     <ClCompile Include="$(lzmaDir)src\liblzma+- 
   <ClCompile Include="$(lzmaDir)src\liblzma+     <ClCompile 
Include="$(lzmaDir)src\liblzma+-    <ClCompile Include="$(lzmaDir)src\liblzma+  
   <ClCompile Include="$(lzmaDir)src\liblzma+     <ClCompile 
Include="$(lzmaDir)src\liblzma+     <ClCompile 
Include="$(lzmaDir)src\liblzma+@@ -162,6 +161,7 @@
+     <ClCompile Include="$(lzmaDir)src\liblzma\lz\lz_encoder_mf.c" />
+     <ClCompile Include="$(lzmaDir)src\liblzma angecoder\price_table.c" />
+     <ClCompile Include="$(lzmaDir)src\liblzma\simplerm.c" />
++    <ClCompile Include="$(lzmaDir)src\liblzma\simplerm64.c" />
+     <ClCompile Include="$(lzmaDir)src\liblzma\simplermthumb.c" />
+     <ClCompile Include="$(lzmaDir)src\liblzma\simple\ia64.c" />
+     <ClCompile Include="$(lzmaDir)src\liblzma\simple\powerpc.c" />
+@@ -238,7 +238,7 @@
+     <ClInclude Include="$(lzmaDir)src\liblzma\simple\simple_decoder.h" />
+     <ClInclude Include="$(lzmaDir)src\liblzma\simple\simple_encoder.h" />
+     <ClInclude Include="$(lzmaDir)src\liblzma\simple\simple_private.h" />
+-    <ClInclude Include="$(lzmaDir)windowss2019++    <ClInclude 
Include="$(lzmaDir)dos+   </ItemGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
diff --git a/external/python3/python-3.5.4-msvc-disable.patch.1 
b/external/python3/python-3.5.4-msvc-disable.patch.1
index 4807706a5a07..1f906f35fcdf 100644
--- a/external/python3/python-3.5.4-msvc-disable.patch.1
+++ b/external/python3/python-3.5.4-msvc-disable.patch.1
@@ -24,7 +24,7 @@ diff -ru python3.orig/PCbuild/pcbuild.sln 
python3/PCbuild/pcbuild.sln
                {FDB84CBB-2FB6-47C8-A2D6-091E0833239D} = 
{FDB84CBB-2FB6-47C8-A2D6-091E0833239D}
                {73FCD2BD-F133-46B7-8EC1-144CD82A59D5} = 
{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}
                {2097F1C1-597C-4167-93E3-656A7D6339B2} = 
{2097F1C1-597C-4167-93E3-656A7D6339B2}
-@@ -85,14 +80,10 @@
+@@ -85,8 +80,6 @@
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testimportmultiple", 
"_testimportmultiple.vcxproj", "{36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}"
  EndProject
@@ -33,21 +33,6 @@ diff -ru python3.orig/PCbuild/pcbuild.sln 
python3/PCbuild/pcbuild.sln
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bz2", "_bz2.vcxproj", 
"{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"
  EndProject
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", 
"select.vcxproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}"
- EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_lzma", "_lzma.vcxproj", 
"{F9D71780-F393-11E0-BE50-0800200C9A66}"
--EndProject
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", 
"unicodedata.vcxproj", "{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}"
- EndProject
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", 
"pyexpat.vcxproj", "{D06B6426-4762-44CC-8BAD-D79052507F2F}"
-@@ -139,8 +119,6 @@
- EndProject
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_queue", 
"_queue.vcxproj", "{78D80A15-BD8C-44E2-B49E-1F05B0A0A687}"
- EndProject
--Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", 
"liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}"
--EndProject
- Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python_uwp", 
"python_uwp.vcxproj", "{9DE9E23D-C8D4-4817-92A9-920A8B1FE5FF}"
-       ProjectSection(ProjectDependencies) = postProject
-               {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = 
{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}
 @@ -151,9 +129,6 @@
  Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "venvwlauncher", 
"venvwlauncher.vcxproj", "{FDB84CBB-2FB6-47C8-A2D6-091E0833239D}"
  EndProject
diff --git a/pyuno/qa/pytests/testimports.py b/pyuno/qa/pytests/testimports.py
index 05e709aa7c9c..29b147364ff1 100644
--- a/pyuno/qa/pytests/testimports.py
+++ b/pyuno/qa/pytests/testimports.py
@@ -61,5 +61,12 @@ class ImportsTest(unittest.TestCase):
         with open(os.devnull, "w") as devnull:
             print(str(_hashlib), file=devnull)
 
+    def test_lzma_import(self):
+        import lzma
+
+        # use imported lzma module for pyflakes
+        with open(os.devnull, "w") as devnull:
+            print(str(lzma), file=devnull)
+
 if __name__ == '__main__':
     unittest.main()

Reply via email to