Преглед изворни кода

pybind11: relocate macOS workaround for `pybind11` from `rule("python.library")` to package (#7040)

* pybind11: resolve `Could NOT find Python` CMake error on Arm64 Windows

* python: avoid propagating `openssl` dependency when used as a header-only library

* pybind11: relocate macOS workaround from `rule("python.library")` to package
Doekin пре 3 месеци
родитељ
комит
78aa1ff4fe
2 измењених фајлова са 17 додато и 6 уклоњено
  1. 15 4
      packages/p/pybind11/xmake.lua
  2. 2 2
      packages/p/python/xmake.lua

+ 15 - 4
packages/p/pybind11/xmake.lua

@@ -19,15 +19,26 @@ package("pybind11")
     add_versions("v2.12.0", "411f77380c43798506b39ec594fc7f2b532a13c4db674fcf2b1ca344efaefb68")
     add_versions("v2.13.1", "a3c9ea1225cb731b257f2759a0c12164db8409c207ea5cf851d4b95679dda072")
 
-    add_deps("cmake", "python 3.x")
+    add_deps("cmake")
+    if is_plat("macosx") then
+        add_deps("python 3.x", {configs = {headeronly = true}})
+    else
+        add_deps("python 3.x")
+    end
+
+    on_load("macosx", function (package)
+        -- fix segmentation fault for macosx
+        -- @see https://github.com/xmake-io/xmake/issues/2177#issuecomment-1209398292
+        package:add("shflags", "-undefined dynamic_lookup", {force = true})
+    end)
+
     on_install("windows|native", "macosx", "linux", function (package)
         import("detect.tools.find_python3")
 
         local configs = {"-DPYBIND11_TEST=OFF"}
         local python = find_python3()
-        local pythondir = path.directory(python)
-        if pythondir and path.is_absolute(pythondir) then
-            table.insert(configs, "-DPython_ROOT_DIR=" .. pythondir)
+        if python and path.is_absolute(python) then
+            table.insert(configs, "-DPython_EXECUTABLE=" .. python)
         end
         import("package.tools.cmake").install(package, configs)
     end)

+ 2 - 2
packages/p/python/xmake.lua

@@ -94,9 +94,9 @@ package("python")
         if version:ge("3.10") then
             -- starting with Python 3.10, Python requires OpenSSL 1.1.1 or newer
             -- see https://peps.python.org/pep-0644/
-            package:add("deps", "openssl >=1.1.1-a", "ca-certificates", {host = true})
+            package:add("deps", "openssl >=1.1.1-a", "ca-certificates", {host = true, private = package:config("headeronly")})
         else
-            package:add("deps", "openssl", "ca-certificates", {host = true})
+            package:add("deps", "openssl", "ca-certificates", {host = true, private = package:config("headeronly")})
         end
 
         -- set includedirs