xmake.lua 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package("python")
  2. set_kind("binary")
  3. set_homepage("https://www.python.org/")
  4. set_description("The python programming language.")
  5. if is_host("windows") then
  6. if os.arch() == "x64" then
  7. add_urls("https://gitlab.com/xmake-mirror/python-releases/raw/master/python-$(version).amd64.zip", {alias = "py2"})
  8. add_versions("py2:2.7.15", "b9d8157fe2ca58f84d29a814bedf1d304d2277ad02f0930acd22e2ce7367b77e")
  9. else
  10. add_urls("https://gitlab.com/xmake-mirror/python-releases/raw/master/python-$(version).win32.zip", {alias = "py2"})
  11. add_versions("py2:2.7.15", "f34e2555c4fde5d7d746e6a0bbfc9151435f3f5c3eaddfc046ec0993b7cc9660")
  12. end
  13. if winos.version():gt("winxp") then
  14. if os.arch() == "x64" then
  15. add_urls("https://www.python.org/ftp/python/$(version)/python-$(version)-embed-amd64.zip", {alias = "py3"})
  16. add_versions("py3:3.7.0", "0cc08f3c74c0112abc2adafd16a534cde12fe7c7aafb42e936d59fd3ab08fcdb")
  17. else
  18. add_urls("https://www.python.org/ftp/python/$(version)/python-$(version)-embed-win32.zip", {alias = "py3"})
  19. add_versions("py3:3.7.0", "9596b23a8db1f945c2e26fe0dc1743e33f3700b4b708c68ea202cf2ac761a736")
  20. end
  21. else
  22. if os.arch() == "x64" then
  23. add_urls("https://gitlab.com/xmake-mirror/python-releases/raw/master/python-$(version).amd64.zip", {alias = "py3"})
  24. add_versions("py3:3.3.4", "a83bf90b28f8b44b99c3524a34ab18f21a59999e07c107da19b031869fb42af1")
  25. else
  26. add_urls("https://gitlab.com/xmake-mirror/python-releases/raw/master/python-$(version).win32.zip", {alias = "py3"})
  27. add_versions("py3:3.3.4", "c9843d585e30da1c7c85663543b2f6a1f68621e02d288abc5b5e54361d93ccd6")
  28. end
  29. end
  30. else
  31. set_urls("https://www.python.org/ftp/python/$(version)/Python-$(version).tgz")
  32. add_versions("2.7.15", "18617d1f15a380a919d517630a9cd85ce17ea602f9bbdc58ddc672df4b0239db")
  33. add_versions("3.7.0", "85bb9feb6863e04fb1700b018d9d42d1caac178559ffa453d7e6a436e259fd0d")
  34. end
  35. if is_host("macosx", "linux") then
  36. add_deps("openssl")
  37. end
  38. on_load(function (package)
  39. if is_host("windows") then
  40. package:addenv("PATH", path.join("share", package:name(), package:version_str()))
  41. else
  42. package:addenv("PATH", path.join("share", package:name(), package:version_str(), "bin"))
  43. end
  44. end)
  45. on_install("windows", function (package)
  46. local installdir = package:installdir("share", package:name(), package:version_str())
  47. os.cp("*", installdir)
  48. if package:version_str():startswith("2.") then
  49. os.cp("python.exe", path.join(installdir, "python2.exe"))
  50. else
  51. os.cp("python.exe", path.join(installdir, "python3.exe"))
  52. end
  53. end)
  54. on_install("macosx", "linux", function (package)
  55. -- unset these so that installing pip and setuptools puts them where we want
  56. -- and not into some other Python the user has installed.
  57. local PYTHONHOME = os.getenv("PYTHONHOME")
  58. local PYTHONPATH = os.getenv("PYTHONPATH")
  59. os.setenv("PYTHONHOME", "")
  60. os.setenv("PYTHONPATH", "")
  61. -- init configs
  62. local configs = {"--enable-ipv6", "--without-ensurepip"}
  63. table.insert(configs, "--datadir=" .. package:installdir("share"))
  64. table.insert(configs, "--datarootdir=" .. package:installdir("share"))
  65. -- add openssl libs path for detecting
  66. local openssl_dir = package:dep("openssl"):installdir()
  67. if package:version_str():startswith("3") then
  68. table.insert(configs, "--with-openssl=" .. openssl_dir)
  69. else
  70. io.gsub("setup.py", "/usr/local/ssl", openssl_dir)
  71. end
  72. -- do install
  73. import("package.tools.autoconf").install(package, configs)
  74. os.setenv("PYTHONHOME", PYTHONHOME)
  75. os.setenv("PYTHONPATH", PYTHONPATH)
  76. end)
  77. on_test(function (package)
  78. os.vrun("python --version")
  79. end)