From be3350179f8343e93ebdfdcbe5fe23e45e0bbfc5 Mon Sep 17 00:00:00 2001 From: chris Date: Fri, 24 Nov 2023 17:52:27 -0600 Subject: [PATCH] pyside2@5.15.11 setup new pyside2 formula --- Formula/pyside2@5.15.11.rb | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Formula/pyside2@5.15.11.rb diff --git a/Formula/pyside2@5.15.11.rb b/Formula/pyside2@5.15.11.rb new file mode 100644 index 00000000..31607e7f --- /dev/null +++ b/Formula/pyside2@5.15.11.rb @@ -0,0 +1,87 @@ +class Pyside2AT51511 < Formula + desc "Python bindings for Qt5 and greater" + homepage "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/README.pyside2.md?h=5.15.2" + url "https://download.qt.io/official_releases/QtForPython/pyside2/PySide2-5.15.11-src/pyside-setup-opensource-src-5.15.11.tar.xz" + sha256 "da567cd3b7854d27a0b4afe3e89de8b2f98b7a6d57393be56f1fc13f770faf29" + license all_of: ["GFDL-1.3-only", "GPL-2.0-only", "GPL-3.0-only", "LGPL-2.1-only", "LGPL-3.0-only"] + + livecheck do + url "https://download.qt.io/official_releases/QtForPython/pyside2/" + regex(%r{href=.*?PySide2[._-]v?(\d+(?:\.\d+)+)-src/}i) + end + + keg_only :versioned_formula + + depends_on "cmake" => :build + depends_on "freecad/freecad/shiboken2@5.15.5" + depends_on "llvm@15" # Upstream issue ref: https://bugreports.qt.io/browse/PYSIDE-2268 + depends_on "python@3.10" + depends_on "qt@5" + depends_on "sphinx-doc" + + uses_from_macos "libxml2" + uses_from_macos "libxslt" + + on_linux do + depends_on "libxcb" + depends_on "mesa" + end + + fails_with gcc: "5" + + # Don't copy qt@5 tools. + patch do + url "https://src.fedoraproject.org/rpms/python-pyside2/raw/009100c67a63972e4c5252576af1894fec2e8855/f/pyside2-tools-obsolete.patch" + sha256 "ede69549176b7b083f2825f328ca68bd99ebf8f42d245908abd320093bac60c9" + end + + def python3 + "python3.10" + end + + # NOTE: ipatch >= qt@5.15.3 tarballs require a c++17 compiler + def install + rpaths = if OS.mac? + pyside2_module = prefix/Language::Python.site_packages(python3)/"PySide2" + [rpath, rpath(source: pyside2_module)] + else + # Add missing include dirs on Linux. + # upstream issue: https://bugreports.qt.io/browse/PYSIDE-1684 + extra_include_dirs = [Formula["mesa"].opt_include, Formula["libxcb"].opt_include] + inreplace "sources/pyside2/cmake/Macros/PySideModules.cmake", + "--include-paths=${shiboken_include_dirs}", + "--include-paths=${shiboken_include_dirs}:#{extra_include_dirs.join(":")}" + + # Add rpath to qt@5 because it is keg-only. + [lib, Formula["qt@5"].opt_lib] + end + + # Avoid shim reference. + inreplace "sources/shiboken2/ApiExtractor/CMakeLists.txt", "${CMAKE_CXX_COMPILER}", ENV.cxx + + # This is a workaround for current problems with Shiboken2 + # ENV["HOMEBREW_INCLUDE_PATHS"] = ENV["HOMEBREW_INCLUDE_PATHS"].sub(Formula["qt@5"].include, "") + + ENV.append_path "CMAKE_PREFIX_PATH", Formula["qt@5"].opt_lib + system "cmake", "-S", ".", "-B", "build", + "-DPYTHON_EXECUTABLE=#{which(python3)}", + "-DCMAKE_INSTALL_RPATH=#{rpaths.join(";")}", + "-DFORCE_LIMITED_API=yes", + *std_cmake_args + system "cmake", "--build", "build" + system "cmake", "--install", "build" + end + + def caveats + <<-EOS + if qt6, qt@6 is linked then this formula will fail to build from source + this formula requires manually linking after install + EOS + end + + test do + Language::Python.each_python(build) do |python, _version| + system python, "-c", "from PySide2 import QtCore" + end + end +end