mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-24 08:58:59 +08:00
[python3] x64-linux-dynamic fixes (#25995)
* [python3] x64-linux-dynamic fixes * Fix custom post-build checks * Clarify comment. Co-authored-by: Osyotr <8740768+Osyotr@users.noreply.github.com> Co-authored-by: Billy O'Neal <bion@microsoft.com>
This commit is contained in:
parent
97f26935db
commit
e2213266cd
@ -1,11 +0,0 @@
|
||||
--- a/Lib/ensurepip/__init__.py 2021-10-05 00:40:46.000000000 +0700
|
||||
+++ b/Lib/ensurepip/__init__.py 2022-01-11 15:22:54.001498300 +0700
|
||||
@@ -86,6 +86,8 @@
|
||||
code = f"""
|
||||
import runpy
|
||||
import sys
|
||||
+import os
|
||||
+sys.executable = os.path.dirname(os.path.realpath(__file__))
|
||||
sys.path = {additional_paths or []} + sys.path
|
||||
sys.argv[1:] = {args}
|
||||
runpy.run_module("pip", run_name="__main__", alter_sys=True)
|
158
ports/python3/0011-dont-skip-rpath.patch
Normal file
158
ports/python3/0011-dont-skip-rpath.patch
Normal file
@ -0,0 +1,158 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 61b3266..4c2cfb4 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -1153,6 +1153,7 @@ def detect_readline_curses(self):
|
||||
self.add(Extension('readline', ['readline.c'],
|
||||
library_dirs=['/usr/lib/termcap'],
|
||||
extra_link_args=readline_extra_link_args,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=readline_libs))
|
||||
else:
|
||||
self.missing.append('readline')
|
||||
@@ -1189,6 +1190,7 @@ def detect_readline_curses(self):
|
||||
extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
|
||||
include_dirs=curses_includes,
|
||||
define_macros=curses_defines,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=curses_libs))
|
||||
elif curses_library == 'curses' and not MACOS:
|
||||
# OSX has an old Berkeley curses, not good enough for
|
||||
@@ -1203,6 +1205,7 @@ def detect_readline_curses(self):
|
||||
self.add(Extension('_curses', ['_cursesmodule.c'],
|
||||
extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
|
||||
define_macros=curses_defines,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=curses_libs))
|
||||
else:
|
||||
curses_enabled = False
|
||||
@@ -1216,6 +1219,7 @@ def detect_readline_curses(self):
|
||||
self.add(Extension('_curses_panel', ['_curses_panel.c'],
|
||||
include_dirs=curses_includes,
|
||||
define_macros=curses_defines,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=[panel_library, *curses_libs]))
|
||||
elif not skip_curses_panel:
|
||||
self.missing.append('_curses_panel')
|
||||
@@ -1234,7 +1238,7 @@ def detect_crypt(self):
|
||||
else:
|
||||
libs = []
|
||||
|
||||
- self.add(Extension('_crypt', ['_cryptmodule.c'], libraries=libs))
|
||||
+ self.add(Extension('_crypt', ['_cryptmodule.c'], runtime_library_dirs=self.lib_dirs, libraries=libs))
|
||||
|
||||
def detect_socket(self):
|
||||
# socket(2)
|
||||
@@ -1525,6 +1529,7 @@ class db_found(Exception): pass
|
||||
libraries=dblibs)
|
||||
break
|
||||
if dbmext is not None:
|
||||
+ dbmext.runtime_library_dirs = self.lib_dirs
|
||||
self.add(dbmext)
|
||||
else:
|
||||
self.missing.append('_dbm')
|
||||
@@ -1533,6 +1538,7 @@ class db_found(Exception): pass
|
||||
if ('gdbm' in dbm_order and
|
||||
self.compiler.find_library_file(self.lib_dirs, 'gdbm')):
|
||||
self.add(Extension('_gdbm', ['_gdbmmodule.c'],
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=['gdbm']))
|
||||
else:
|
||||
self.missing.append('_gdbm')
|
||||
@@ -1645,6 +1651,7 @@ def detect_sqlite(self):
|
||||
define_macros=sqlite_defines,
|
||||
include_dirs=include_dirs,
|
||||
library_dirs=sqlite_libdir,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
extra_link_args=sqlite_extra_link_args,
|
||||
libraries=["sqlite3",]))
|
||||
else:
|
||||
@@ -1710,6 +1717,7 @@ def detect_compress_exts(self):
|
||||
zlib_extra_link_args = ()
|
||||
self.add(Extension('zlib', ['zlibmodule.c'],
|
||||
libraries=['z'],
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
extra_link_args=zlib_extra_link_args))
|
||||
have_zlib = True
|
||||
else:
|
||||
@@ -1732,6 +1740,7 @@ def detect_compress_exts(self):
|
||||
self.add(Extension('binascii', ['binascii.c'],
|
||||
extra_compile_args=extra_compile_args,
|
||||
libraries=libraries,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
extra_link_args=extra_link_args))
|
||||
|
||||
# Gustavo Niemeyer's bz2 module.
|
||||
@@ -1742,6 +1751,7 @@ def detect_compress_exts(self):
|
||||
bz2_extra_link_args = ()
|
||||
self.add(Extension('_bz2', ['_bz2module.c'],
|
||||
libraries=['bz2'],
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
extra_link_args=bz2_extra_link_args))
|
||||
elif (self.compiler.find_library_file(self.lib_dirs, 'bz2d')):
|
||||
if MACOS:
|
||||
@@ -1750,6 +1760,7 @@ def detect_compress_exts(self):
|
||||
bz2_extra_link_args = ()
|
||||
self.add(Extension('_bz2', ['_bz2module.c'],
|
||||
libraries=['bz2d'],
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
extra_link_args=bz2_extra_link_args))
|
||||
else:
|
||||
self.missing.append('_bz2')
|
||||
@@ -1757,6 +1768,7 @@ def detect_compress_exts(self):
|
||||
# LZMA compression support.
|
||||
if self.compiler.find_library_file(self.lib_dirs, 'lzma'):
|
||||
self.add(Extension('_lzma', ['_lzmamodule.c'],
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=['lzma']))
|
||||
else:
|
||||
self.missing.append('_lzma')
|
||||
@@ -1819,6 +1831,7 @@ def detect_expat_elementtree(self):
|
||||
extra_compile_args=extra_compile_args,
|
||||
include_dirs=expat_inc,
|
||||
libraries=expat_lib,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
sources=['pyexpat.c'] + expat_sources,
|
||||
depends=expat_depends))
|
||||
|
||||
@@ -1831,6 +1844,7 @@ def detect_expat_elementtree(self):
|
||||
define_macros=define_macros,
|
||||
include_dirs=expat_inc,
|
||||
libraries=expat_lib,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
sources=['_elementtree.c'],
|
||||
depends=['pyexpat.c', *expat_sources,
|
||||
*expat_depends]))
|
||||
@@ -1883,6 +1897,7 @@ def detect_uuid(self):
|
||||
else:
|
||||
uuid_libs = []
|
||||
self.add(Extension('_uuid', ['_uuidmodule.c'],
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
libraries=uuid_libs))
|
||||
else:
|
||||
self.missing.append('_uuid')
|
||||
@@ -2319,6 +2334,7 @@ def detect_ctypes(self):
|
||||
ext.extra_compile_args.append("-DHAVE_FFI_CLOSURE_ALLOC=1")
|
||||
|
||||
ext.include_dirs.append(ffi_inc)
|
||||
+ ext.runtime_library_dirs = self.lib_dirs
|
||||
ext.libraries.append(ffi_lib)
|
||||
self.use_system_libffi = True
|
||||
|
||||
@@ -2485,7 +2501,7 @@ def split_var(name, sep):
|
||||
include_dirs=openssl_includes,
|
||||
library_dirs=openssl_libdirs,
|
||||
libraries=openssl_libs,
|
||||
- runtime_library_dirs=runtime_library_dirs,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
)
|
||||
|
||||
# This static linking is NOT OFFICIALLY SUPPORTED.
|
||||
@@ -2639,6 +2655,7 @@ def detect_nis(self):
|
||||
self.add(Extension('nis', ['nismodule.c'],
|
||||
libraries=libs,
|
||||
library_dirs=library_dirs,
|
||||
+ runtime_library_dirs=self.lib_dirs,
|
||||
include_dirs=includes_dirs))
|
||||
|
||||
|
@ -15,6 +15,7 @@ set(PATCHES
|
||||
0005-only-build-required-projects.patch
|
||||
0009-python.pc.patch
|
||||
0010-bz2d.patch
|
||||
0011-dont-skip-rpath.patch
|
||||
)
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
||||
list(PREPEND PATCHES 0001-static-library.patch)
|
||||
@ -189,7 +190,7 @@ if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP)
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
vcpkg_clean_msbuild()
|
||||
|
||||
|
||||
# Remove static library belonging to executable
|
||||
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
|
||||
if (EXISTS "${CURRENT_PACKAGES_DIR}/lib/python.lib")
|
||||
@ -204,6 +205,11 @@ if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_UWP)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
# The Python Stable ABI, `libpython3.so` is not produced by the upstream build system with --with-pydebug option
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic" AND NOT VCPKG_BUILD_TYPE)
|
||||
set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled)
|
||||
endif()
|
||||
|
||||
set(OPTIONS
|
||||
"--with-openssl=${CURRENT_INSTALLED_DIR}"
|
||||
"--without-ensurepip"
|
||||
@ -244,6 +250,26 @@ else()
|
||||
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME "copyright")
|
||||
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
# Perform some post-build checks on modules
|
||||
file(GLOB python_libs_dynload_debug LIST_DIRECTORIES false "${CURRENT_PACKAGES_DIR}/debug/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/lib-dynload/*.so*")
|
||||
file(GLOB python_libs_dynload_release LIST_DIRECTORIES false "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/lib-dynload/*.so*")
|
||||
set(python_libs_dynload_failed_debug ${python_libs_dynload_debug})
|
||||
set(python_libs_dynload_failed_release ${python_libs_dynload_release})
|
||||
list(FILTER python_libs_dynload_failed_debug INCLUDE REGEX ".*_failed\.so.*")
|
||||
list(FILTER python_libs_dynload_failed_release INCLUDE REGEX ".*_failed\.so.*")
|
||||
if(python_libs_dynload_failed_debug OR python_libs_dynload_failed_release)
|
||||
list(JOIN python_libs_dynload_failed_debug "\n" python_libs_dynload_failed_debug_str)
|
||||
list(JOIN python_libs_dynload_failed_release "\n" python_libs_dynload_failed_release_str)
|
||||
message(FATAL_ERROR "There should be no modules with \"_failed\" suffix:\n${python_libs_dynload_failed_debug_str}\n${python_libs_dynload_failed_release_str}")
|
||||
endif()
|
||||
if(NOT VCPKG_BUILD_TYPE)
|
||||
list(LENGTH python_libs_dynload_release python_libs_dynload_release_length)
|
||||
list(LENGTH python_libs_dynload_debug python_libs_dynload_debug_length)
|
||||
if(NOT python_libs_dynload_release_length STREQUAL python_libs_dynload_debug_length)
|
||||
message(FATAL_ERROR "Mismatched number of modules: ${python_libs_dynload_debug_length} in debug, ${python_libs_dynload_release_length} in release")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(READ "${CMAKE_CURRENT_LIST_DIR}/usage" usage)
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "python3",
|
||||
"version": "3.10.5",
|
||||
"port-version": 1,
|
||||
"port-version": 2,
|
||||
"description": "The Python programming language",
|
||||
"homepage": "https://github.com/python/cpython",
|
||||
"license": "Python-2.0",
|
||||
@ -28,6 +28,10 @@
|
||||
"name": "liblzma",
|
||||
"platform": "!(windows & static)"
|
||||
},
|
||||
{
|
||||
"name": "libuuid",
|
||||
"platform": "!osx & !windows"
|
||||
},
|
||||
{
|
||||
"name": "openssl",
|
||||
"platform": "!(windows & static)"
|
||||
|
@ -5742,7 +5742,7 @@
|
||||
},
|
||||
"python3": {
|
||||
"baseline": "3.10.5",
|
||||
"port-version": 1
|
||||
"port-version": 2
|
||||
},
|
||||
"qca": {
|
||||
"baseline": "2.3.4",
|
||||
|
@ -1,5 +1,10 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "6e7ddcd01a8341a906d5dde6b3d221c955571684",
|
||||
"version": "3.10.5",
|
||||
"port-version": 2
|
||||
},
|
||||
{
|
||||
"git-tree": "c345c4a8ad91847522188517c68e8f83637f4440",
|
||||
"version": "3.10.5",
|
||||
|
Loading…
Reference in New Issue
Block a user