# Copyright 1999-2024 Eugeniusz Gienek # Distributed under the terms of the GNU General Public License v3 EAPI="8" PYTHON_COMPAT=( python3_{10..11} ) PYTHON_REQ_USE="" DISTUTILS_EXT=1 DISTUTILS_USE_PEP517=setuptools PYPI_NO_NORMALIZE=1 PYPI_PN="ultimaker-cura" inherit distutils-r1 pypi readme.gentoo-r1 MY_PN="ultimaker-cura" CONAN_VER="1.64.0" CONAN_INSTALLER_CONFIG_URL="https://github.com/ultimaker/conan-config.git" PROPERTIES="live test_network" SRC_URI="" INSTALL_DIR="/opt/${MY_PN}/${PV}" S="${WORKDIR}" if [[ ${PV} == *9999* ]]; then EGIT_REPO_URI="https://github.com/Ultimaker/Cura.git" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${INSTALL_DIR}/" inherit git-r3 else SRC_URI="$(pypi_sdist_url --no-normalize) https://github.com/Ultimaker/Cura/archive/refs/tags/${PV}.tar.gz -> ${PV}.gh.tar.gz" fi DESCRIPTION="Ultimaker Cura - slicer for 3D printing" HOMEPAGE="https://github.com/Eugeniusz-Gienek/gentoo-ultimaker-cura.git" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64" IUSE="python_targets_python3_10 +python_targets_python3_11" #REQUIRED_USE"^^ ( python_targets_python3_10 python_targets_python3_11 )" RESTRICT="" RDEPEND="${PYTHON_DEPS} sys-apps/util-linux sys-apps/coreutils dev-lang/python:3.10 || ( dev-lang/python:3.10 dev-lang/python:3.11 ) dev-python/virtualenv dev-vcs/git =dev-python/node-semver-0.6.1 =dev-util/conan-1.64.0" DEPEND="${RDEPEND}" BDEPEND=">=sys-devel/gcc-11" RUN_SBIN_COMMAND="run_ultimaker_cura_${PV}" DISABLE_AUTOFORMATTING=1 DOC_CONTENTS=" Cura is installed here: ${INSTALL_DIR} In order to run using nvidia card - pass the parameter \"--nvidia\" to the executable. " src_compile() { true } src_unpack() { PY_UC="3.11" PY_UC_D="3_11" if use python_targets_python3_10 ; then PY_UC="3.10" PY_UC_D="3_10" elif use python_targets_python3_11 ; then PY_UC="3.11" PY_UC_D="3_11" else eerror "Error: supported Python version is NOT specified." fi conan config install $CONAN_INSTALLER_CONFIG_URL conan profile new default --detect --force conan profile update settings.compiler.libcxx=libstdc++11 default EGIT_CHECKOUT_DIR="${S}${INSTALL_DIR}" if [[ ${PV} == *9999* ]] ; then git-r3_checkout else unpack ${PV}.gh.tar.gz fi if [ ! -d "${EGIT_CHECKOUT_DIR}" ]; then die "Cannot get to the git checkout directory: ${EGIT_CHECKOUT_DIR}" fi cd "${EGIT_CHECKOUT_DIR}" conan install ./ --build=missing --update -o cura:devtools=True -g VirtualPythonEnv cd "${S}" find "${S}" -name '*.pth' -delete } python_install() { dodir "${INSTALL_DIR}" dodir "${INSTALL_DIR}/venv" dodir "${INSTALL_DIR}/venv/bin" cd ${S}${INSTALL_DIR}/venv/bin CP3_10_INTERPRETER_ABS="$(realpath ./python3.10)" CP3_10_INTERPRETER=`realpath -s --relative-to=${PORTAGE_BUILDDIR} ${CP3_10_INTERPRETER_ABS}` cd ${D} cp -Rpf "${S}/opt" "${D}/" cd ${D} cp -Rpf "${HOME}/.conan" "${D}${INSTALL_DIR}/venv" cd "${S}/${INSTALL_DIR}/" rm -f ${D}${INSTALL_DIR}/venv/bin/python3.10 dosym ${CP3_10_INTERPRETER} ${INSTALL_DIR}/venv/bin/python3.10 # Now, we have to update the paths in the created virtual environment cd ${T} TDIR=`$(pwd)` cd ${S} SDIR=`$(pwd)` cd ${HOME} HDIR=`$(pwd)` SYS_TMPDIR = `$(dirname $(mktemp -u))` cd ${D}${INSTALL_DIR}/venv find . -type f -exec sed 's~'${HDIR}'~'${INSTALL_DIR}/venv/'~g' {} + cd bin find . -type f -exec sed -i 's~'${SDIR}'~''~g' {} + cd ../.conan find . -type f -exec sed 's~'${HDIR}'~'${INSTALL_DIR}/venv/'~g' {} + find . -type f -exec sed 's~'${INSTALL_DIR}/venv/bin/deactivate_activate'~'${SYS_TMPDIR}'/deactivate_activate~g' {} + cd ${D}${INSTALL_DIR} find . -type f -exec sed -i 's~'${SDIR}'~''~g' {} + # We'll NOT update pyc-files, they will auto-generate anyways. find ${D}${INSTALL_DIR} -name '*.pyc' -delete } python_install_all() { elog "Creating Cura launcher..." mkdir -p "${ED}/tmp" cp -f "${FILESDIR}/run_ultimaker_cura.sh" "${ED}/tmp/" fperms 0755 /tmp/run_ultimaker_cura.sh fperms a+X /tmp/run_ultimaker_cura.sh sed 's~CURA_INSTALL_DIR~'${INSTALL_DIR}'~g' -i "${ED}/tmp/run_ultimaker_cura.sh" newsbin "${ED}/tmp/run_ultimaker_cura.sh" ${RUN_SBIN_COMMAND} rm -f "${ED}/tmp/run_ultimaker_cura.sh" rm -rf "${ED}/tmp" readme.gentoo_create_doc } pkg_postinst() { #elog "Ultimaker Cura requires python 3.10 or 3.11 to run. 3.12 and later are NOT YET supported." #elog "Besides, in order to run it with python3.11 You still need.... 3.10 python executable." elog "Ultimate Cura was installed into a virtualenv built info ${INSTALL_DIR}" elog "" elog "In order to run it, please use the command \"${RUN_SBIN_COMMAND}\"" elog "" elog "Hope it works. Enjoy!" readme.gentoo_print_elog }