diff --git a/.gitignore b/.gitignore index 86fe057..99ee0ca 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,9 @@ workrave-1.9.1.tar.gz /workrave-v1_10_50.tar.gz /workrave-v1_10_51_1.tar.gz /workrave-v1_10_52.tar.gz +/workrave-v1_11_0_beta_12.tar.gz +/workrave-v1_11_0_beta_13.tar.gz +/workrave-v1_11_0_rc_1.tar.gz +/workrave-v1_11_0_rc_3.tar.gz +/workrave-v1_11_0_rc_4.tar.gz +/workrave-v1_11_1.tar.gz diff --git a/710.patch b/710.patch new file mode 100644 index 0000000..a31c450 --- /dev/null +++ b/710.patch @@ -0,0 +1,22 @@ +From 7bcdae9a7d5b2dd11decdb3adf23736622b5aab8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C5=81ukasz=20Wojni=C5=82owicz?= + +Date: Sat, 25 Jul 2026 20:51:49 +0200 +Subject: [PATCH] Fix appstream id case + +--- + ui/app/workrave.metainfo.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ui/app/workrave.metainfo.xml b/ui/app/workrave.metainfo.xml +index 794541993..866aaa332 100644 +--- a/ui/app/workrave.metainfo.xml ++++ b/ui/app/workrave.metainfo.xml +@@ -1,6 +1,6 @@ + + +- org.workrave.workrave ++ org.workrave.Workrave + Workrave + Workrave assists in the recovery and prevention of Repetitive Strain Injury (RSI) + CC-BY-3.0 diff --git a/sources b/sources index 3527af4..12d954c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (workrave-v1_10_52.tar.gz) = 4e64e4ef3bbf11e397af6c8086265ab4a628d05648e3662651d25079299e3016bd97c186fc069621121ab889ee22a1c58793fe81fc7fe4b6e4e1ebc7575993e8 +SHA512 (workrave-v1_11_1.tar.gz) = 45b7e7f84cd5d29945006da524676486c1b87627f6d1ff6e9106e9dd0f4034c26052f23649f312cc1513b17470197b4acea4974744d2a8e1093b31523290f82f diff --git a/workrave.spec b/workrave.spec index b40ddd5..22b21ad 100644 --- a/workrave.spec +++ b/workrave.spec @@ -1,58 +1,60 @@ -%if 0%{?fedora} || 0%{?rhel} >= 9 -%bcond gnome 1 -%bcond gnome40 1 -%bcond gnome45 %[0%{?fedora} >= 39 || 0%{?rhel} >= 10] -%bcond gnome_flashback 1 -%bcond mate 1 -%bcond xfce 1 -%else -%bcond_without gnome -%bcond_with gnome40 -%bcond_with gnome45 -%bcond_with gnome_flashback -%bcond_without mate -%bcond_without xfce -%endif +%bcond gnome %[0%{?fedora} || 0%{?rhel} <= 9] +%bcond gnome40 %[0%{?fedora} || 0%{?rhel} <= 9] +%bcond gnome45 %[0%{?fedora} || 0%{?rhel} <= 9] +# Disabled due to missing dependencies. +%bcond cinnamon %[0%{?fedora} || 0%{?rhel} <= 9] +%bcond gnome_flashback %[0%{?fedora} || 0%{?rhel} <= 9] +%bcond mate %[0%{?fedora} || 0%{?rhel} <= 9] +%bcond xfce %[0%{?fedora} || 0%{?rhel} <= 9] + +%global app_id org.workrave.Workrave Name: workrave -Version: 1.10.52 +Version: 1.11.1 Release: %autorelease Summary: Program that assists in the recovery and prevention of RSI # Based on older packages by Dag Wieers and Steve Ratcliffe -License: GPL-3.0-or-later AND LGPL-2.0-or-later +# The workrave is released under the GPL-3.0-or-later license. Other licenses: +# libs/config/include/config/IConfiguratorListener.hh: GPL-2.0-or-later +# ui/app/toolkits/gtkmm/platforms/unix/gtktrayicon.{c,h}: LGPL-2.1-or-later +# ui/app/toolkits/gtkmm/platforms/unix/protocols/wlr-layer-shell-unstable-v1.xml: HPND +License: GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-2.1-or-later AND HPND URL: https://workrave.org/ -%global tag %(echo %{version} | sed -e 's/\\./_/g') -Source0: https://github.com/rcaelers/workrave/archive/v%{tag}/%{name}-v%{tag}.tar.gz +%global tag %(echo %{version} | sed -e 's/[\\.~]/_/g') +Source: https://github.com/rcaelers/workrave/archive/v%{tag}/%{name}-v%{tag}.tar.gz +Patch: https://github.com/rcaelers/workrave/pull/710.patch -Obsoletes: %{name}-gtk2 < 1.10.37-1 -Provides: %{name}-gtk2 = %{?epoch:%{epoch}:}%{version}-%{release} - -BuildRequires: make +BuildRequires: cmake +BuildRequires: desktop-file-utils +BuildRequires: gettext BuildRequires: gcc-c++ -BuildRequires: libX11-devel -BuildRequires: libXScrnSaver-devel -BuildRequires: pkgconfig(ice) -BuildRequires: pkgconfig(sm) -BuildRequires: pkgconfig(xtst) -BuildRequires: pkgconfig(glib-2.0) >= 2.28.0 -BuildRequires: pkgconfig(gio-2.0) >= 2.26.0 -BuildRequires: pkgconfig(gtk+-3.0) >= 3.0.0 -BuildRequires: pkgconfig(sigc++-2.0) >= 2.2.4.2 -BuildRequires: pkgconfig(glibmm-2.4) >= 2.28.0 -BuildRequires: pkgconfig(gtkmm-3.0) >= 3.0.0 -BuildRequires: gobject-introspection-devel >= 0.6.7 +BuildRequires: libappstream-glib +# Base dependencies BuildRequires: boost-devel -BuildRequires: python3 BuildRequires: python3-devel -BuildRequires: python3-cheetah BuildRequires: python3-jinja2 +# Gtk+3 interface +BuildRequires: pkgconfig(glib-2.0) >= 2.56.0 +BuildRequires: pkgconfig(gio-2.0) >= 2.56.0 +BuildRequires: pkgconfig(gtk+-3.0) >= 3.22.0 +BuildRequires: pkgconfig(glibmm-2.4) >= 2.28.0 +BuildRequires: pkgconfig(gtkmm-3.0) >= 3.22.0 +# Sound support BuildRequires: pkgconfig(gstreamer-1.0) BuildRequires: pkgconfig(libpulse) >= 0.9.15 BuildRequires: pkgconfig(libpulse-mainloop-glib) >= 0.9.15 -BuildRequires: gettext -BuildRequires: intltool -BuildRequires: autoconf, automake, libtool, autoconf-archive -BuildRequires: desktop-file-utils +# Wayland support +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(wayland-scanner) +# X11 support +BuildRequires: libX11-devel +BuildRequires: libXScrnSaver-devel +BuildRequires: libXtst-devel +# Desktop applets +BuildRequires: pkgconfig(ayatana-appindicator3-0.1) +BuildRequires: pkgconfig(dbusmenu-glib-0.4) +BuildRequires: pkgconfig(dbusmenu-gtk3-0.4) +BuildRequires: pkgconfig(gobject-introspection-1.0) %if %{with gnome_flashback} BuildRequires: pkgconfig(libgnome-panel) %endif @@ -63,10 +65,17 @@ BuildRequires: pkgconfig(gtk4) BuildRequires: pkgconfig(libxfce4panel-2.0) >= 4.12 %endif %if %{with mate} -BuildRequires: pkgconfig(libmatepanelapplet-4.0) +BuildRequires: pkgconfig(libmatepanelapplet-4.0) >= 1.20.0 %endif +# Logging +BuildRequires: cmake(fmt) +BuildRequires: cmake(spdlog) +BuildRequires: fdupes + +Requires: %{name}-common = %{version}-%{release} Requires: dbus-common +Requires: hicolor-icon-theme Recommends: (%{name}-cinnamon if cinnamon) Recommends: (%{name}-gnome if gnome-shell) Recommends: (%{name}-gnome-flashback if gnome-panel) @@ -74,7 +83,6 @@ Recommends: (%{name}-mate if mate-panel) Recommends: (%{name}-xfce if xfce4-panel) Recommends: gstreamer1-plugins-base Recommends: gstreamer1-plugins-good -Obsoletes: %{name}-devel < %{version}-%{release} # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} @@ -86,7 +94,16 @@ take micro-pauses, rest breaks and restricts you to your daily limit. %description %{_description} +%package common +Summary: Common data (sounds, icons, etc.) for Workrave +BuildArch: noarch + +%description common +%{_description} + +# cannot be marked noarch because it depends on the arched main package %package cinnamon +Requires: cinnamon Requires: %{name} = %{version}-%{release} Summary: Workrave applet for Cinnamon desktop @@ -96,7 +113,8 @@ Summary: Workrave applet for Cinnamon desktop This package provides an applet for the Cinnamon desktop. %package gnome -Requires: %{name} = %{version}-%{release} +Requires: gnome-shell +Requires: %{name}%{?_isa} = %{version}-%{release} Summary: Workrave applet for GNOME desktop %description gnome @@ -105,7 +123,8 @@ Summary: Workrave applet for GNOME desktop This package provides an applet for the GNOME desktop. %package gnome-flashback -Requires: %{name} = %{version}-%{release} +Requires: gnome-panel +Requires: %{name}%{?_isa} = %{version}-%{release} Summary: Workrave applet for GNOME Flashback %description gnome-flashback @@ -114,7 +133,9 @@ Summary: Workrave applet for GNOME Flashback This package provides an applet for the GNOME Flashback panel. %package mate -Requires: %{name} = %{version}-%{release} +Requires: mate-panel +Requires: mate-applets +Requires: %{name}%{?_isa} = %{version}-%{release} Summary: Workrave applet for MATE %description mate @@ -123,7 +144,8 @@ Summary: Workrave applet for MATE This package provides an applet for the MATE panel. %package xfce -Requires: %{name} = %{version}-%{release} +Requires: xfce4-panel +Requires: %{name}%{?_isa} = %{version}-%{release} Summary: Workrave applet for Xfce %description xfce @@ -134,85 +156,90 @@ This package provides an applet for the Xfce panel. %prep %autosetup -n workrave-%{tag} -p1 -touch ChangeLog -# https://bugzilla.redhat.com/show_bug.cgi?id=304121 -sed -i -e '/^DISTRIBUTION_HOME/s/\/$//' frontend/gtkmm/src/Makefile.* - # use versioned python command %py3_shebang_fix libs/dbus/bin/dbusgen.py -sed -i 's/AC_CHECK_PROG(PYTHON, python, python)/AC_CHECK_PROG(PYTHON, python3, python3)/' configure.ac + %build -if [ ! -x configure ]; then - ### Needed for snapshot releases. - NOCONFIGURE=1 ./autogen.sh -fi +# without CMAKE_INSTALL_SYSCONFDIR set to /etc the autostart file +# gets installed in /usr/etc +%cmake \ + -DWITH_GNOME_CLASSIC_PANEL:BOOL=%{?with_gnome_flashback:ON}%{!?with_gnome_flashback:OFF} \ + -DWITH_GNOME45:BOOL=%{?with_gnome45:ON}%{!?with_gnome45:OFF} \ + -DWITH_MATE:BOOL=%{?with_mate:ON}%{!?with_mate:OFF} \ + -DWITH_XFCE4:BOOL=%{?with_xfce:ON}%{!?with_xfce:OFF} \ + -DWITH_DBUS:BOOL=ON \ + -DWITH_GSTREAMER:BOOL=ON \ + -DWITH_PULSE:BOOL=ON \ + -DWITH_DBUSMENU:BOOL=ON \ + -DWITH_INDICATOR:BOOL=ON \ + -DWITH_APPINDICATOR:BOOL=ON \ + -DWITH_WAYLAND:BOOL=ON \ + -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \ + %{nil} -# gnome3 is flashback panel applet, not gnome-shell -%configure \ -%if %{with gnome_flashback} - --enable-gnome3 \ -%else - --disable-gnome3 \ -%endif -%if %{with gnome45} - --enable-gnome45 \ -%endif -%if %{with mate} - --enable-mate \ -%else - --disable-mate \ -%endif -%if %{with xfce} - --enable-xfce \ -%else - --disable-xfce \ -%endif - --disable-indicator \ - --disable-static --disable-xml +%cmake_build -%make_build %install -%make_install +%cmake_install -find %{buildroot} -name '*.la' -delete # workrave does not provide a public API rm -f %{buildroot}%{_datadir}/gir-1.0/*.gir rm -f %{buildroot}%{_libdir}/*.so +# indicators need to be enabled to build GIR but are not needed otherwise +rm -f %{buildroot}%{_libdir}/*indicators3/7/libworkrave.so* + +# remove zero-length to silence rpmlint +rm -f %{buildroot}%{_datadir}/gnome-shell/extensions/workrave@workrave.org/stylesheet.css %find_lang %{name} +# avoid cross-directory-hard-link +ln -sf %{_datadir}/workrave/images/workrave-icon-medium.png %{buildroot}%{_datadir}/icons/hicolor/24x24/apps/workrave.png +%fdupes %{buildroot}%{_datadir} -desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop +%if %{without cinnamon} +# avoid Installed (but unpackaged) file(s) found: +rm -rf %{buildroot}%{_datadir}/cinnamon +%endif + +%if %{without gnome} +# avoid Installed (but unpackaged) file(s) found: +rm -rf %{buildroot}%{_datadir}/gnome-shell +%endif + +%check +desktop-file-validate %{buildroot}%{_datadir}/applications/%{app_id}.desktop +desktop-file-validate %{buildroot}%{_sysconfdir}/xdg/autostart/%{app_id}.desktop +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{app_id}.metainfo.xml %files -f %{name}.lang -%doc AUTHORS COPYING NEWS README.md -%{_bindir}/workrave -%{_datadir}/workrave/ -%{_datadir}/sounds/workrave/ -%{_datadir}/icons/hicolor/16x16/apps/workrave.png -%{_datadir}/icons/hicolor/24x24/apps/workrave.png -%{_datadir}/icons/hicolor/32x32/apps/workrave.png -%{_datadir}/icons/hicolor/48x48/apps/workrave.png -%{_datadir}/icons/hicolor/64x64/apps/workrave.png -%{_datadir}/icons/hicolor/96x96/apps/workrave.png -%{_datadir}/icons/hicolor/128x128/apps/workrave.png -%{_datadir}/icons/hicolor/scalable/workrave-sheep.svg -%{_datadir}/icons/hicolor/scalable/apps/workrave.svg -%{_datadir}/metainfo/workrave.appdata.xml -%{_datadir}/applications/workrave.desktop -%{_datadir}/dbus-1/services/org.workrave.Workrave.service -%{_datadir}/glib-2.0/schemas/org.workrave.*.xml +%doc AUTHORS NEWS README.md +%license COPYING +%{_bindir}/%{name} # support library for gtk3 applets %{_libdir}/girepository-1.0/Workrave-1.0.typelib %{_libdir}/libworkrave-private-1.0.so.* +%files common +%license COPYING +%{_datadir}/applications/%{app_id}.desktop +%{_datadir}/dbus-1/services/%{app_id}.service +%{_datadir}/glib-2.0/schemas/org.workrave.*.xml +%{_datadir}/icons/hicolor/*/apps/%{name}.* +%{_datadir}/%{name}/ +%{_datadir}/sounds/%{name}/ +# it isn't a conf file, so non-conffile-in-etc from rpmlint is a false positive here +%{_sysconfdir}/xdg/autostart/%{app_id}.desktop +%{_metainfodir}/%{app_id}.metainfo.xml + +%if %{with cinnamon} %files cinnamon -%dir %{_datadir}/cinnamon/ -%dir %{_datadir}/cinnamon/applets/ %{_datadir}/cinnamon/applets/workrave@workrave.org/ +%else +%endif %if %{with gnome} %files gnome @@ -220,8 +247,6 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop %{_libdir}/girepository-1.0/Workrave-2.0.typelib %{_libdir}/libworkrave-gtk4-private-1.0.so.* %endif -%dir %{_datadir}/gnome-shell/ -%dir %{_datadir}/gnome-shell/extensions/ %{_datadir}/gnome-shell/extensions/workrave@workrave.org/ %endif @@ -241,7 +266,7 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop %{_libdir}/mate-applets/workrave-applet %{_datadir}/dbus-1/services/org.mate.panel.applet.WorkraveAppletFactory.service %{_datadir}/mate-panel/applets/org.workrave.WorkraveApplet.mate-panel-applet -%{_datadir}/mate-panel/ui/workrave-menu.xml +%{_datadir}/mate-panel/ui %endif %changelog