Name: paint-new Version: 1.1 Release: 2%{?dist} Summary: Paint NEW - raster image editor inspired by Paint.NET License: Proprietary URL: https://lycurg.com BuildArch: x86_64 AutoReqProv: no %define debug_package %{nil} %define _build_id_links none %define __os_install_post %{nil} # Готовый образ (jpackage app-image + модели ИИ), собранный Gradle. # COPR скачивает его при сборке — в SRPM кладётся только этот spec. %define payload_url https://lycurg.com/PROJ/projPaintNEW/data/paint-new-1.1-linux.tar.gz # AppStream-описание (карточка в GNOME Software / Discover) Source1: com.lycurg.paintnew.metainfo.xml %description Paint NEW is a cross-platform raster image editor inspired by Paint.NET. It provides layers, selections, brushes, shapes, text, image adjustments, AI-assisted selection and upscaling, and common image export formats (PNG, JPEG, WebP, BMP, ICO, TIFF, PDF) as well as its own multi-layer project format (.pnx) and Paint.NET .pdn import. The package is self-contained: it bundles its own Java runtime and the local AI models, so no Java installation is required. %prep %setup -q -c -T curl -L --fail --retry 3 --retry-delay 5 -o payload.tar.gz "%{payload_url}" tar -xzf payload.tar.gz test -x "Paint NEW/Paint NEW/bin/Paint NEW" || { echo "payload: app image not found"; exit 1; } %install rm -rf %{buildroot} # Приложение mkdir -p %{buildroot}/opt/paint-new cp -a "Paint NEW/Paint NEW/." %{buildroot}/opt/paint-new/ # Модели ИИ (лежат рядом с app, ModelLocator находит их от jar) if [ -d "Paint NEW/models" ]; then mkdir -p %{buildroot}/opt/paint-new/models cp -a "Paint NEW/models/." %{buildroot}/opt/paint-new/models/ fi # Лаунчер без пробела в имени install -d %{buildroot}%{_bindir} printf '#!/bin/sh\nexec "/opt/paint-new/bin/Paint NEW" "$@"\n' > %{buildroot}%{_bindir}/paintnew chmod 0755 %{buildroot}%{_bindir}/paintnew # Ярлык install -d %{buildroot}%{_datadir}/applications cat > %{buildroot}%{_datadir}/applications/paint-new.desktop <<'EOF' [Desktop Entry] Type=Application Version=1.0 Name=Paint NEW GenericName=Image Editor Comment=Raster image editor inspired by Paint.NET Exec=paintnew %F Icon=paint-new Terminal=false Categories=Graphics;2DGraphics;RasterGraphics; MimeType=application/x-paintnew-pnx;application/x-paintnet-pdn;image/png;image/jpeg;image/webp;image/bmp;image/tiff; StartupNotify=true StartupWMClass=com.lycurg.paintnew.Application_Paint_new EOF # Иконки и MIME install -d %{buildroot}%{_datadir}/icons/hicolor/256x256/apps install -m 0644 "Paint NEW/icons/256.png" %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/paint-new.png install -d %{buildroot}%{_datadir}/mime/packages install -m 0644 "Paint NEW/paintnew-mime.xml" %{buildroot}%{_datadir}/mime/packages/paintnew.xml # AppStream install -d %{buildroot}%{_datadir}/metainfo install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/metainfo/com.lycurg.paintnew.metainfo.xml %post if command -v update-mime-database >/dev/null 2>&1; then update-mime-database /usr/share/mime || :; fi if command -v update-desktop-database >/dev/null 2>&1; then update-desktop-database /usr/share/applications || :; fi if command -v gtk-update-icon-cache >/dev/null 2>&1; then gtk-update-icon-cache -f -t /usr/share/icons/hicolor || :; fi %postun if command -v update-mime-database >/dev/null 2>&1; then update-mime-database /usr/share/mime || :; fi if command -v update-desktop-database >/dev/null 2>&1; then update-desktop-database /usr/share/applications || :; fi if command -v gtk-update-icon-cache >/dev/null 2>&1; then gtk-update-icon-cache -f -t /usr/share/icons/hicolor || :; fi %files /opt/paint-new %{_bindir}/paintnew %{_datadir}/applications/paint-new.desktop %{_datadir}/icons/hicolor/256x256/apps/paint-new.png %{_datadir}/mime/packages/paintnew.xml %{_datadir}/metainfo/com.lycurg.paintnew.metainfo.xml