diff options
author | 2022-06-16 21:25:59 +0000 | |
---|---|---|
committer | 2022-06-20 11:46:52 +0200 | |
commit | e06dadfa55e402076f18efe83eaf5f6bdb40cbc5 (patch) | |
tree | 8eba313ef863ffd4e607925978915996e1babcc4 | |
parent | net-misc/cernbox-client: add 2.10.1.7389, drop 2.9.2.6206 (diff) | |
download | sci-e06dadfa55e402076f18efe83eaf5f6bdb40cbc5.tar.gz sci-e06dadfa55e402076f18efe83eaf5f6bdb40cbc5.tar.bz2 sci-e06dadfa55e402076f18efe83eaf5f6bdb40cbc5.zip |
dev-python/cadquery-{ocp,pywrap}: bump to opencascade-7.5.3
Official releases are not available, using latest `master` as of today.
Signed-off-by: Vladimir Shapranov <equidamoid@gmail.com>
Closes: https://github.com/gentoo/sci/pull/1151
Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
-rw-r--r-- | dev-python/cadquery-ocp/Manifest | 1 | ||||
-rw-r--r-- | dev-python/cadquery-ocp/cadquery-ocp-7.5.3.0.ebuild | 195 | ||||
-rw-r--r-- | dev-python/cadquery-pywrap/Manifest | 1 | ||||
-rw-r--r-- | dev-python/cadquery-pywrap/cadquery-pywrap-7.5.3_rc20220113.ebuild | 63 |
4 files changed, 260 insertions, 0 deletions
diff --git a/dev-python/cadquery-ocp/Manifest b/dev-python/cadquery-ocp/Manifest index 2fdce96f0..4818fac84 100644 --- a/dev-python/cadquery-ocp/Manifest +++ b/dev-python/cadquery-ocp/Manifest @@ -1 +1,2 @@ DIST cadquery-ocp-7.5.2_beta.tar.gz 5571554 BLAKE2B 552e44b301b69f1b1b4f6c26c46638bcf94a5f753d4d35e2cbbd6e1d963a23c685d6c05ead56c970c6532a3adbbf7b1f2bd572e72fb482ccd2dac04585764910 SHA512 041d12632678b96f23528f289516e31457a4e0d3251db6f01e3fc2bb2ccc41d2df8b825c94db0cebd7419cf82070c75d20852f25d91f05377502d75adf493fd8 +DIST cadquery-ocp-7.5.3.0.tar.gz 5571719 BLAKE2B ba31d7ae2f54e2f4c17f0914cab1299b91254a3fab7d07f18b2d698ce6e47e9ea174e449e18971197b39f08fa755c4d16d8cba24f894372f5bd515ec6686935e SHA512 b89dc91f224ee87e288bd7e3a10cb3b2c6559e2b36c24aac2f675fb05ecda755b723721122a7e58d87ba4253024892795369b1e747fb77684c739d01d516d1a2 diff --git a/dev-python/cadquery-ocp/cadquery-ocp-7.5.3.0.ebuild b/dev-python/cadquery-ocp/cadquery-ocp-7.5.3.0.ebuild new file mode 100644 index 000000000..064952018 --- /dev/null +++ b/dev-python/cadquery-ocp/cadquery-ocp-7.5.3.0.ebuild @@ -0,0 +1,195 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{8..10} ) + +# OCP uses "python-single-r1" only because VTK uses "python-single-r1". +inherit check-reqs cmake llvm multiprocessing python-single-r1 toolchain-funcs + +MY_PN=OCP +MY_PV="${PV//_/-}" +MY_P="${MY_PN}-${MY_PV}" +OCCT_PV=$(ver_cut 1-3) + +DESCRIPTION="Python wrapper for OCCT generated using pywrap" +HOMEPAGE="https://github.com/CadQuery/OCP" +SRC_URI="https://github.com/CadQuery/OCP/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +KEYWORDS="~amd64 ~x86" +SLOT="0" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +# CMake and VTK requirements derive from the "OCP/CMakeLists.txt" file +# generated by the src_prepare() phase. OCP currently requires opencascade +# (OCCT) to be built with "-DUSE_GLES2=OFF" and thus "-gles2". See also: +# https://github.com/CadQuery/OCP/issues/46#issuecomment-808920994 +BDEPEND=" + >=dev-libs/lief-0.11.5[python,${PYTHON_SINGLE_USEDEP}] + >=dev-util/cmake-3.16 +" +RDEPEND=" + ${PYTHON_DEPS} + sci-libs/opencascade:0/7.5[json,tbb,vtk] + >=sci-libs/vtk-9.0.0[python,${PYTHON_SINGLE_USEDEP}] +" +DEPEND="${RDEPEND} + $(python_gen_cond_dep ' + >=dev-python/cadquery-pywrap-'${OCCT_PV}'_rc0[${PYTHON_USEDEP}]') +" + +S="${WORKDIR}/${MY_P}" + +# The source "OCP/CMakeLists.txt" file is output by "bindgen" in src_prepare(). +CMAKE_IN_SOURCE_BUILD=True + +# Ensure the path returned by get_llvm_prefix() contains clang. +llvm_check_deps() { + has_version -r "sys-devel/clang:${LLVM_SLOT}" +} + +cadquery-ocp_check_reqs() { + CHECKREQS_DISK_BUILD=1300M check-reqs_pkg_${EBUILD_PHASE} +} + +pkg_pretend() { + cadquery-ocp_check_reqs +} + +pkg_setup() { + cadquery-ocp_check_reqs + llvm_pkg_setup + python-single-r1_pkg_setup +} + +# OCP currently requires manual configuration, compilation, and installation +# loosely inspired by the conda-specific "build-bindings-job.yml" file. +# +# Note that the cmake_src_prepare() function called below handles user patches. +src_prepare() { + # Most recently installed version of Clang. + local _CLANG_VERSION="$(CPP=clang clang-fullversion)" + + # Most recently installed version (excluding trailing patch) of VTK. + local _VTK_VERSION="$(best_version -r sci-libs/vtk)" + _VTK_VERSION="$(ver_cut 1-2 "${_VTK_VERSION##sci-libs/vtk}")" + + # Absolute dirname of the most recently installed Clang include directory, + # mimicing similar logic in the "dev-python/shiboken2" ebuild. See also: + # https://bugs.gentoo.org/619490 + local _CLANG_INCLUDE_DIR="${EPREFIX}/usr/lib/clang/${_CLANG_VERSION}/include" + + # Absolute filename of the most recently installed Clang shared library. + local _CLANG_LIB_FILE="$(get_llvm_prefix)/lib64/libclang.so" + + # Absolute dirname of OCCT's include and shared library directories. + local _OCCT_INCLUDE_DIR="${EPREFIX}/usr/include/opencascade" + local _OCCT_LIB_DIR="${EPREFIX}/usr/lib64/opencascade" + + # Absolute dirname of a temporary directory to store symbol tables for this + # OCCT version dumped below by the "dump_symbols.py" script. + local _OCCT_DUMP_SYMBOLS_ROOT_DIR="${T}/dump_symbols" + local _OCCT_DUMP_SYMBOLS_DIR="${_OCCT_DUMP_SYMBOLS_ROOT_DIR}/lib_linux" + + # Absolute dirname of VTK's include directory, + local _VTK_INCLUDE_DIR="${EPREFIX}/usr/include/vtk-${_VTK_VERSION}" + + # Ensure the above paths exist as a crude sanity test. + test -d "${_CLANG_INCLUDE_DIR}" || die "${_CLANG_INCLUDE_DIR} not found." + test -f "${_CLANG_LIB_FILE}" || die "${_CLANG_LIB_FILE} not found." + test -d "${_OCCT_INCLUDE_DIR}" || die "${_OCCT_INCLUDE_DIR} not found." + test -d "${_OCCT_LIB_DIR}" || die "${_OCCT_LIB_DIR} not found." + test -d "${_VTK_INCLUDE_DIR}" || die "${_VTK_INCLUDE_DIR} not found." + + # "dev-python/clang-python" atom targeting this Clang version. + local _CLANG_PYTHON_ATOM="dev-python/clang-python-${_CLANG_VERSION}" + + # Ensure "dev-python/clang-python" targets this Clang version. + has_version -r "=${_CLANG_PYTHON_ATOM}" || + die "${_CLANG_PYTHON_ATOM} not installed." + + # Remove all vendored paths. + rm -r conda opencascade pywrap *.dat || die + + # Inject a symlink to OCCT's include directory. + ln -s "${_OCCT_INCLUDE_DIR}" opencascade || die + + # Inject a symlink from OCCT's shared library directory into this temporary + # directory as required by the "dump_symbols.py" script. + mkdir -p "${_OCCT_DUMP_SYMBOLS_DIR}" || die + ln -s "${_OCCT_LIB_DIR}" "${_OCCT_DUMP_SYMBOLS_DIR}"/. || die + + # Update all hardcoded OCCT shared library versions in "dump_symbols.py". + sed -i -e 's~\(\.so\.\)[0-9]\+.[0-9]\+.[0-9]\+~\1'${OCCT_PV}'~' \ + dump_symbols.py || die + + # Dump (i.e., generate) symbol tables for this OCCT version. + einfo 'Dumping OCCT symbol tables...' + ${EPYTHON} dump_symbols.py "${_OCCT_DUMP_SYMBOLS_ROOT_DIR}" || die + + # Generate OCCT bindings in the "OCP/" subdirectory. + einfo 'Building OCP CMake binary tree...' + ${EPYTHON} -m bindgen \ + --verbose \ + --njobs $(makeopts_jobs) \ + --libclang "${_CLANG_LIB_FILE}" \ + --include "${_CLANG_INCLUDE_DIR}" \ + --include "${_VTK_INCLUDE_DIR}" \ + all ocp.toml || die + + # Remove the source "FindOpenCascade.cmake" after generating bindings, + # which copied that file to the target "OCP/FindOpenCascade.cmake". + rm FindOpenCascade.cmake || die + + #FIXME: Submit an issue recommending upstream replace their + #non-working "OCP/FindOpenCascade.cmake" file with a standard top-level + #"CMakeLists.txt" file that finds dependency paths: e.g., via @waebbl + # find_package(vtk 9 CONFIG REQUIRED) + # if(TARGET VTK::VTK) + # get_target_property(VTK_INCLUDE_DIRS VTK::VTK INTERFACE_INCLUDE_DIRECTORIES) + # endif() + + # Replace all hardcoded paths in "OCP/FindOpenCascade.cmake" with + # standard OCCT paths derived above. That file is both fundamentally + # broken and useless, as the ${CASROOT} environment variable and + # "/usr/lib64/cmake/opencascade-${PV}/OpenCASCADEConfig.cmake" file + # already reliably identify all requisite OpenCASCADE paths. Failure to + # patch this file results in src_configure() failures resembling: + # -- Could NOT find OPENCASCADE (missing: OPENCASCADE_LIBRARIES) + sed -i \ + -e 's~$ENV{CONDA_PREFIX}/include/opencascade\b~'${_OCCT_INCLUDE_DIR}'~' \ + -e 's~$ENV{CONDA_PREFIX}/lib\b~'${_OCCT_LIB_DIR}'~' \ + -e 's~$ENV{CONDA_PREFIX}/Library/\(lib\|include/opencascade\)~~' \ + OCP/FindOpenCascade.cmake || die + + # Patch the "OCP/CMakeLists.txt" file generated by "bindgen" above, passed + # as an absolute path both here and below to minimize eclass issues. + CMAKE_USE_DIR="${S}/OCP" cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -B "${S}/OCP.build" + -DPYTHON_EXECUTABLE="${PYTHON}" + -Wno-dev + ) + + CMAKE_USE_DIR="${S}/OCP" cmake_src_configure +} + +src_compile() { + CMAKE_USE_DIR="${S}/OCP.build" cmake_src_compile +} + +# OCP currently ships no test suite, so we synthesize a crude import unit test. +src_test() { + PYTHONPATH="${S}/OCP.build" ${EPYTHON} -c \ + 'from OCP.gp import gp_Vec, gp_Ax1, gp_Ax3, gp_Pnt, gp_Dir, gp_Trsf, gp_GTrsf, gp, gp_XYZ' +} + +src_install() { + python_moduleinto . + python_domodule "${S}/OCP.build/"OCP*.so +} diff --git a/dev-python/cadquery-pywrap/Manifest b/dev-python/cadquery-pywrap/Manifest index a203693d6..e5aef7ccf 100644 --- a/dev-python/cadquery-pywrap/Manifest +++ b/dev-python/cadquery-pywrap/Manifest @@ -1 +1,2 @@ DIST cadquery-pywrap-7.5.2_rc20210526.tar.gz 5584220 BLAKE2B b26fd4092f94e3d3eec191c0791faf29d90da2d85f9aa9a2f1cdf128975564db9f6b6002661eed8bbecddb31988ad2076a3a00ea601a43e38ffaa47e545911ca SHA512 40aa61e0774228c70c8ae41a6078a280d63697d297234dbff51ec84982b4a9f0a09db41c74a834ae91d01881a4d5660b1ebbb701d24141307a5fedcdfb075872 +DIST cadquery-pywrap-7.5.3_rc20220113.tar.gz 5584755 BLAKE2B d6585d33eddc34c719f9694322d209969698d6e5c67288a95ad841efbc2347d2cb162d8f3443a4e3373d70b97423485d1535c60713e4cb8ace413d114b852083 SHA512 f0d984b6fa6df3151d9cb612560a5266f98d286b9ab283c4647095dda3da1c54fb102babee4d2db574b695604332bc7576740406907995940eb60635afb614b8 diff --git a/dev-python/cadquery-pywrap/cadquery-pywrap-7.5.3_rc20220113.ebuild b/dev-python/cadquery-pywrap/cadquery-pywrap-7.5.3_rc20220113.ebuild new file mode 100644 index 000000000..b2213cef7 --- /dev/null +++ b/dev-python/cadquery-pywrap/cadquery-pywrap-7.5.3_rc20220113.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{8..10} ) + +inherit llvm distutils-r1 + +DESCRIPTION="C++ binding generator based on libclang and pybind11" +HOMEPAGE="https://github.com/CadQuery/pywrap" + +#FIXME: Uncomment on bumping to the next stable release. +# MY_PN=occt +# MY_PV=$(ver_cut 1-2) +# MY_P="${MY_PN}${MY_PV}" +# SRC_URI="https://github.com/CadQuery/pywrap/archive/refs/tags/${MY_P}.tar.gz" + +# The official pywrap 7.4.0 tarball is broken, but pywrap 7.5.3 has yet to be +# officially released. We instead package a commit known to work as expected. +MY_COMMIT="66e7376d3a27444393fc99acbdbef40bbc7031ae" +SRC_URI="https://github.com/CadQuery/pywrap/archive/${MY_COMMIT}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +KEYWORDS="~amd64 ~x86" +SLOT="0" + +# Dependencies are intentionally listed in "setup.py" order. +RDEPEND=" + dev-python/click[${PYTHON_USEDEP}] + dev-python/logzero[${PYTHON_USEDEP}] + dev-python/path-py[${PYTHON_USEDEP}] + dev-python/clang-python[${PYTHON_USEDEP}] + dev-python/cymbal[${PYTHON_USEDEP}] + dev-python/toml[${PYTHON_USEDEP}] + dev-python/pandas[${PYTHON_USEDEP}] + >=dev-python/joblib-1.0.0[${PYTHON_USEDEP}] + dev-python/tqdm[${PYTHON_USEDEP}] + dev-python/jinja[${PYTHON_USEDEP}] + dev-python/toposort[${PYTHON_USEDEP}] + dev-python/pyparsing[${PYTHON_USEDEP}] + dev-python/pybind11[${PYTHON_USEDEP}] + dev-python/schema[${PYTHON_USEDEP}] + sci-libs/vtk +" +DEPEND="${RDEPEND}" + +S="${WORKDIR}/pywrap-${MY_COMMIT}" + +src_prepare() { + #FIXME: Submit an upstream issue. This violates PEP 440 standards. + # Sanitize the "bindgen" version to avoid Gentoo QA notices. + sed -i -e 's~\(version=\)"0.1dev"~\1"'$(ver_rs 3 '')'"~' setup.py || die + + # Replace conda- with Gentoo-specific prefix dirnames. + sed -i -e "s~\\bgetenv('CONDA_PREFIX')~'${EPREFIX}/usr'~" bindgen/*.py || + die + + # Reduce all hardcoded header includes to noops. + sed -i -e 's~rv\.append(Path(prefix).*~True~' bindgen/utils.py || die + + distutils-r1_src_prepare +} |