summaryrefslogtreecommitdiff
path: root/app-misc/artisan
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-09-18 16:08:52 -0500
committerroot <root@alpha.trunkmasters.com>2026-09-18 16:08:52 -0500
commitdd19904e7eb865a9bcd54c4fda141681b551c2b2 (patch)
tree41253f768be5eae82a5e631b83a023ab1c74d72d /app-misc/artisan
parent201b1a5f202628742bb2b602acc1147303f503ab (diff)
downloadbaldeagleos-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/Manifest1
-rw-r--r--app-misc/artisan/artisan-4.0.2.ebuild8
-rw-r--r--app-misc/artisan/artisan-4.2.0.ebuild167
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
+}