diff options
| author | root <root@alpha.trunkmasters.com> | 2026-09-18 16:08:52 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-09-18 16:08:52 -0500 |
| commit | dd19904e7eb865a9bcd54c4fda141681b551c2b2 (patch) | |
| tree | 41253f768be5eae82a5e631b83a023ab1c74d72d /app-misc/artisan | |
| parent | 201b1a5f202628742bb2b602acc1147303f503ab (diff) | |
| download | baldeagleos-repo-dd19904e7eb865a9bcd54c4fda141681b551c2b2.tar.gz baldeagleos-repo-dd19904e7eb865a9bcd54c4fda141681b551c2b2.tar.xz baldeagleos-repo-dd19904e7eb865a9bcd54c4fda141681b551c2b2.zip | |
Adding metadata
Diffstat (limited to 'app-misc/artisan')
| -rw-r--r-- | app-misc/artisan/Manifest | 1 | ||||
| -rw-r--r-- | app-misc/artisan/artisan-4.0.2.ebuild | 8 | ||||
| -rw-r--r-- | app-misc/artisan/artisan-4.2.0.ebuild | 167 |
3 files changed, 176 insertions, 0 deletions
diff --git a/app-misc/artisan/Manifest b/app-misc/artisan/Manifest index aa4652ce00c9..af08ffdf8dc7 100644 --- a/app-misc/artisan/Manifest +++ b/app-misc/artisan/Manifest @@ -1 +1,2 @@ DIST artisan-4.0.2.tar.gz 66069749 BLAKE2B 195e5b073c86d17e7f111406e7998eb3e21e6282227604f8f391af0826c3db8fd5f90ec4751def9c6848a74560223d005611f14060769d0877df988d06410191 SHA512 7d75b02976d099a9db544a39d35acc272300e616ffd238cd0d256a8f9e2dd4e1ffe9e3e01c0e5dd459a5c27b85d1feb20260c002310173b71b8a81a7595271f2 +DIST artisan-4.2.0.tar.gz 61384983 BLAKE2B 8b8fdec6d81ef043d727bdeb69f26a5ae785d03890d9277ec31d9fdb710d8483ea13b808208e12162a04273d4f8c37df8e9a9e47594fc8615c6aa14201621dc8 SHA512 dabc9bac82a404b1fdfb19b049d591f6b51acb79eb81f990daa2a73b388c2a34998616f6c5412d30ba7d21a557cf57176e108bb0215b688ca02be6495dde9d44 diff --git a/app-misc/artisan/artisan-4.0.2.ebuild b/app-misc/artisan/artisan-4.0.2.ebuild index 9e1d5dc7b167..de4b7c7f27c4 100644 --- a/app-misc/artisan/artisan-4.0.2.ebuild +++ b/app-misc/artisan/artisan-4.0.2.ebuild @@ -56,6 +56,14 @@ BDEPEND=" S="${WORKDIR}/${P}" +src_prepare() { + default + + # Suppress the recurring donation dialog at startup. + sed -i -e '/QTimer\.singleShot.*self\.donate/d' \ + src/artisanlib/main.py || die "failed to disable donation popup" +} + src_compile() { # Build a venv and install all Python deps via pip local venv="${S}/.venv" diff --git a/app-misc/artisan/artisan-4.2.0.ebuild b/app-misc/artisan/artisan-4.2.0.ebuild new file mode 100644 index 000000000000..de4b7c7f27c4 --- /dev/null +++ b/app-misc/artisan/artisan-4.2.0.ebuild @@ -0,0 +1,167 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v3 + +EAPI=8 + +PYTHON_COMPAT=( python3_{13..14} ) + +inherit python-single-r1 desktop xdg-utils udev + +DESCRIPTION="Visual scope for coffee roasters — record, analyze, and control roast profiles" +HOMEPAGE="https://github.com/artisan-roaster-scope/artisan https://artisan-scope.org/" + +SRC_URI="https://github.com/artisan-roaster-scope/artisan/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64" + +# pip needs network for deps not in portage +RESTRICT="network-sandbox test" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +# System-level dependencies (C libs, Qt6). +# Subslot operators (:=) on Qt6/xcb force artisan rebuild on subslot bumps, +# so the bundled PyQt6 venv is regenerated and doesn't strand preserved-libs. +RDEPEND=" + ${PYTHON_DEPS} + dev-libs/libusb:1 + $(python_gen_cond_dep ' + dev-python/contourpy[${PYTHON_USEDEP}] + dev-python/cycler[${PYTHON_USEDEP}] + dev-python/fonttools[${PYTHON_USEDEP}] + dev-python/kiwisolver[${PYTHON_USEDEP}] + ') + dev-qt/qtbase:6=[gui,network,widgets] + dev-qt/qtdeclarative:6= + dev-qt/qtsvg:6= + dev-qt/qtwayland:6= + dev-qt/qtwebengine:6= + gnome-base/gnome-keyring + x11-libs/xcb-util:= + x11-libs/xcb-util-image:= + x11-libs/xcb-util-keysyms:= + x11-libs/xcb-util-renderutil:= + x11-libs/xcb-util-wm:= + x11-libs/xcb-util-cursor:= +" + +DEPEND="${RDEPEND}" + +BDEPEND=" + ${PYTHON_DEPS} + $(python_gen_cond_dep 'dev-python/pip[${PYTHON_USEDEP}]') +" + +S="${WORKDIR}/${P}" + +src_prepare() { + default + + # Suppress the recurring donation dialog at startup. + sed -i -e '/QTimer\.singleShot.*self\.donate/d' \ + src/artisanlib/main.py || die "failed to disable donation popup" +} + +src_compile() { + # Build a venv and install all Python deps via pip + local venv="${S}/.venv" + "${PYTHON}" -m venv --system-site-packages "${venv}" || die "venv creation failed" + + # Activate venv for pip installs + local pip="${venv}/bin/pip" + + # Install Python dependencies from upstream requirements + # Filter out platform-specific markers for non-Linux and build-only tools + sed -e '/platform_system.*Windows/d' \ + -e '/platform_system.*Darwin/d' \ + -e "/sys_platform.*darwin/d" \ + -e '/pyinstaller/d' \ + -e '/^#/d' \ + -e '/^$/d' \ + src/requirements.txt > "${T}/requirements-linux.txt" || die + + "${pip}" install -r "${T}/requirements-linux.txt" || die "pip install failed" + + # Compile .qm translations if .ts files are newer (upstream ships .qm so this is optional) + if type -P lrelease >/dev/null 2>&1; then + local ts + for ts in src/translations/*.ts; do + local qm="${ts%.ts}.qm" + [[ "${ts}" -nt "${qm}" ]] && lrelease "${ts}" -qm "${qm}" + done + fi +} + +src_install() { + local inst_dir="/usr/lib/${PN}" + + # Install venv + insinto "${inst_dir}" + doins -r .venv + + # Fix venv shebangs and permissions + fperms -R +x "${inst_dir}/.venv/bin/" + + # Install application source — all Python packages needed at runtime + insinto "${inst_dir}/src" + doins -r src/artisanlib src/plus src/help src/proto src/uic + doins src/artisan.py src/conftest.py + fperms +x "${inst_dir}/src/artisan.py" + + # Translations + insinto "${inst_dir}/src/translations" + doins src/translations/*.qm + + # Data files: includes (fonts, templates, icons, machines, themes, wheels) + insinto "${inst_dir}/src" + doins -r src/includes src/icons src/Wheels + + # MIME type XML files + local xml + for xml in src/artisan-*.xml; do + [[ -f "${xml}" ]] && doins "${xml}" + done + + # Logging config + [[ -f src/includes/logging.yaml ]] && doins src/includes/logging.yaml + + # Launcher script + dobin "${FILESDIR}/artisan" + + # Desktop entry + domenu "${FILESDIR}/org.artisan_scope.artisan.desktop" + + # Icon + doicon -s scalable src/artisan.svg + newicon -s 256 src/debian/usr/share/pixmaps/artisan.png artisan.png + + # Udev rules for USB hardware (Aillio, Yoctopuce, Phidgets) + udev_dorules "${FILESDIR}/99-artisan.rules" + + # Man page (from debian packaging) + doman src/debian/usr/share/man/man1/artisan.1 + + # License + dodoc LICENSE +} + +pkg_postinst() { + xdg_desktop_database_update + xdg_icon_cache_update + udev_reload + + elog "Artisan installed to /usr/lib/artisan/" + elog "" + elog "Run 'artisan' to start." + elog "" + elog "For USB device access (Aillio, Phidgets, Yoctopuce), ensure your user" + elog "is in the 'usb' group, or udev rules have been reloaded:" + elog " udevadm control --reload-rules && udevadm trigger" +} + +pkg_postrm() { + xdg_desktop_database_update + xdg_icon_cache_update +} |
