diff --git a/.gitignore b/.gitignore index 15db666..8907d15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1 @@ -cairo-dock-sources-svn1527_trunk.tar.bz2 -/cairo-dock-fedora-3.4.0.tar.gz -/cairo-dock-fedora-3.4.1.tar.gz -/cairo-dock-fedora-3.4.1-20201103git0836f5d.tar.gz -/cairo-dock-fedora-3.4.1-20210327git6c569e6.tar.gz +/cairo-dock-fedora-*.tar.gz diff --git a/0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch b/0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch deleted file mode 100644 index 36dfff3..0000000 --- a/0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch +++ /dev/null @@ -1,327 +0,0 @@ -From 275fa02a15ebdb75b07c100de9395392f9543300 Mon Sep 17 00:00:00 2001 -From: Mamoru TASAKA -Date: Mon, 20 Sep 2021 16:22:40 +0900 -Subject: [PATCH] [LP1943052] wayland-manager: allocate new wl_output - information by checking id - -With KDE Plasma Wayland session, after calling wl_output_add_listener() -and waiting for wl_output information with wl_display_roundtrip(), -wl_output::mode info is returned before wl_output::geometry info. - -Current cairo-dock-wayland-manager logic expects the opposite order, and -on KDE session this causes cairo-dock segfault. - -To avoid this, when collecting wl_output information, we should also check -"id" member of global registry object associated with that wl_output info, -check if the "id" is already the duplicates of the old infos. - -Then if the "id" is new one, then allocate the new buffer to register new -wl_output information beforehand, then call wl_display_roundtrip() to gain -wl_output::geometry or wl_output::output information. ---- - src/gldit/cairo-dock-desktop-manager.h | 13 +- - src/implementations/cairo-dock-X-utilities.c | 20 +-- - .../cairo-dock-wayland-manager.c | 134 +++++++++++++++--- - 3 files changed, 139 insertions(+), 28 deletions(-) - -diff --git a/src/gldit/cairo-dock-desktop-manager.h b/src/gldit/cairo-dock-desktop-manager.h -index b8ecb0d0..2774913b 100644 ---- a/src/gldit/cairo-dock-desktop-manager.h -+++ b/src/gldit/cairo-dock-desktop-manager.h -@@ -59,10 +59,21 @@ typedef enum { - NB_NOTIFICATIONS_DESKTOP - } CairoDesktopNotifications; - -+typedef struct GldiWlOutput { -+ struct wl_output *output; -+ uint32_t id, ver; -+} GldiWlOutput; -+ -+typedef struct GldiScreenInfo { -+ int x, y; -+ int width, height; -+ GldiWlOutput wloutput; // wl_registry object identifier (in wayland session) -+} GldiScreenInfo; -+ - // data - struct _GldiDesktopGeometry { - int iNbScreens; -- GtkAllocation *pScreens; // liste of all screen devices. -+ GldiScreenInfo *pScreens; // liste of all screen devices. - GtkAllocation Xscreen; // logical screen, possibly made of several screen devices. - int iNbDesktops; - int iNbViewportX, iNbViewportY; -diff --git a/src/implementations/cairo-dock-X-utilities.c b/src/implementations/cairo-dock-X-utilities.c -index 26217dab..9d39e017 100644 ---- a/src/implementations/cairo-dock-X-utilities.c -+++ b/src/implementations/cairo-dock-X-utilities.c -@@ -89,7 +89,7 @@ static Atom s_aUtf8String; - static Atom s_aString; - static unsigned char error_code = Success; - --static GtkAllocation *_get_screens_geometry (int *pNbScreens); -+static GldiScreenInfo *_get_screens_geometry (int *pNbScreens); - - static gboolean cairo_dock_support_X_extension (void); - -@@ -185,14 +185,14 @@ unsigned char cairo_dock_get_X_error_code (void) - return error_code; - } - --static GtkAllocation *_get_screens_geometry (int *pNbScreens) -+static GldiScreenInfo *_get_screens_geometry (int *pNbScreens) - { -- GtkAllocation *pScreens = NULL; -- GtkAllocation *pScreen; -+ GldiScreenInfo *pScreens = NULL; -+ GldiScreenInfo *pScreen; - int iNbScreens = 0; - /*Unit Tests - iNbScreens = 2; -- pScreens = g_new0 (GtkAllocation, iNbScreens); -+ pScreens = g_new0 (GldiScreenInfo, iNbScreens); - pScreens[0].x = 0; - pScreens[0].y = 0; - pScreens[0].width = 1000; -@@ -213,7 +213,7 @@ static GtkAllocation *_get_screens_geometry (int *pNbScreens) - { - int n = res->ncrtc; - cd_debug (" number of screen(s): %d", n); -- pScreens = g_new0 (GtkAllocation, n); -+ pScreens = g_new0 (GldiScreenInfo, n); - int i; - for (i = 0; i < n; i++) - { -@@ -256,7 +256,7 @@ static GtkAllocation *_get_screens_geometry (int *pNbScreens) - if (scr != NULL) - { - cd_debug (" number of screen(s): %d", n); -- pScreens = g_new0 (GtkAllocation, n); -+ pScreens = g_new0 (GldiScreenInfo, n); - int i; - for (i = 0; i < n; i++) - { -@@ -286,7 +286,7 @@ static GtkAllocation *_get_screens_geometry (int *pNbScreens) - #endif - - iNbScreens = 1; -- pScreens = g_new0 (GtkAllocation, iNbScreens); -+ pScreens = g_new0 (GldiScreenInfo, iNbScreens); - pScreen = &pScreens[0]; - pScreen->x = 0; - pScreen->y = 0; -@@ -335,7 +335,7 @@ gboolean cairo_dock_update_screen_geometry (void) - } - - // get the size and position of each screen (they could have changed even though the X screen has not changed, for instance if you swap 2 screens). -- GtkAllocation *pScreens = g_desktopGeometry.pScreens; -+ GldiScreenInfo *pScreens = g_desktopGeometry.pScreens; - int iNbScreens = g_desktopGeometry.iNbScreens; - g_desktopGeometry.pScreens = _get_screens_geometry (&g_desktopGeometry.iNbScreens); - -@@ -347,7 +347,7 @@ gboolean cairo_dock_update_screen_geometry (void) - int i; - for (i = 0; i < MIN (iNbScreens, g_desktopGeometry.iNbScreens); i ++) - { -- if (memcmp (&pScreens[i], &g_desktopGeometry.pScreens[i], sizeof (GtkAllocation)) != 0) -+ if (memcmp (&pScreens[i], &g_desktopGeometry.pScreens[i], sizeof (GldiScreenInfo)) != 0) - { - bNewSize = TRUE; - break; -diff --git a/src/implementations/cairo-dock-wayland-manager.c b/src/implementations/cairo-dock-wayland-manager.c -index 9ce8d505..f9732133 100644 ---- a/src/implementations/cairo-dock-wayland-manager.c -+++ b/src/implementations/cairo-dock-wayland-manager.c -@@ -73,31 +73,97 @@ struct desktop - }; - static gboolean s_bInitializing = TRUE; // each time a callback is called on startup, it will set this to TRUE, and we'll make a roundtrip to the server until no callback is called. - --static void _output_geometry_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_output *wl_output, -+static int get_position_gldi_screeninfo_by_id (GldiScreenInfo *array_screens, int iNbScreens, uint32_t obj_id) -+{ -+ int i_screen; -+ GldiScreenInfo *p_screen = array_screens; -+ for (i_screen = 0; i_screen < iNbScreens; i_screen++) -+ { -+ if (p_screen->wloutput.id == obj_id) -+ { -+ return i_screen; -+ } -+ p_screen++; -+ } -+ -+ return -1; -+} -+ -+static GldiScreenInfo *append_gldi_screeninfo(GldiScreenInfo **ref_array_screens, int *ref_iNbScreens) -+{ -+ int iNbScreens_old = *ref_iNbScreens; -+ int iNbScreens_new = iNbScreens_old + 1; -+ GldiScreenInfo *p_new_screeninfo; -+ -+ if (!*ref_array_screens) -+ *ref_array_screens = g_new(GldiScreenInfo, 1); -+ else -+ *ref_array_screens = g_realloc(*ref_array_screens, iNbScreens_new * sizeof (**ref_array_screens)); -+ if (!*ref_array_screens) abort(); -+ -+ p_new_screeninfo = *ref_array_screens + (iNbScreens_new - 1); -+ *ref_iNbScreens = iNbScreens_new; -+ -+ return p_new_screeninfo; -+} -+ -+static void remove_gldi_screeninfo_by_id(GldiScreenInfo **ref_array_screens, int *ref_iNbScreens, uint32_t obj_id) -+{ -+ int iNbScreens_old = *ref_iNbScreens; -+ int pos_screen; -+ GldiScreenInfo *p_screen; -+ -+ if (iNbScreens_old <= 1) return; // Keep at least one information for now -+ -+ pos_screen = get_position_gldi_screeninfo_by_id(*ref_array_screens, *ref_iNbScreens, obj_id); -+ if (pos_screen < 0) return; -+ -+ p_screen = *ref_array_screens + pos_screen; -+#ifdef WL_OUTPUT_RELEASE_SINCE_VERSION -+ if (p_screen->wloutput.id >= WL_OUTPUT_RELEASE_SINCE_VERSION) -+ { -+ wl_output_release(p_screen->wloutput.output); -+ } else -+#endif -+ { -+ wl_output_destroy(p_screen->wloutput.output); -+ } -+ -+ if (iNbScreens_old > pos_screen + 1) -+ { -+ memmove( -+ p_screen, p_screen + 1, -+ (iNbScreens_old - pos_screen - 1) * sizeof (**ref_array_screens) -+ ); -+ } -+ -+ (*ref_iNbScreens)--; -+} -+ -+static void _output_geometry_cb (void *data, G_GNUC_UNUSED struct wl_output *wl_output, - int32_t x, int32_t y, - G_GNUC_UNUSED int32_t physical_width, G_GNUC_UNUSED int32_t physical_height, - G_GNUC_UNUSED int32_t subpixel, G_GNUC_UNUSED const char *make, G_GNUC_UNUSED const char *model, G_GNUC_UNUSED int32_t output_transform) - { -+ GldiScreenInfo *p_screeninfo = (GldiScreenInfo *)data; - cd_debug ("Geometry: %d;%d", x, y); -- g_desktopGeometry.iNbScreens ++; -- if (!g_desktopGeometry.pScreens) -- g_desktopGeometry.pScreens = g_new0 (GtkAllocation, 1); -- else -- g_desktopGeometry.pScreens = g_realloc (g_desktopGeometry.pScreens, g_desktopGeometry.iNbScreens * sizeof(GtkAllocation)); -+ cd_debug ("id: %u", (unsigned int)p_screeninfo->wloutput.id); - -- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].x = x; -- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].y = y; -+ p_screeninfo->x = x; -+ p_screeninfo->y = y; - s_bInitializing = TRUE; - } - --static void _output_mode_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_output *wl_output, -+static void _output_mode_cb (void *data, G_GNUC_UNUSED struct wl_output *wl_output, - uint32_t flags, int32_t width, int32_t height, G_GNUC_UNUSED int32_t refresh) - { -+ GldiScreenInfo *p_screeninfo = (GldiScreenInfo *)data; - cd_debug ("Output mode: %dx%d, %d", width, height, flags); -+ cd_debug ("id: %u", (unsigned int)p_screeninfo->wloutput.id); - if (flags & WL_OUTPUT_MODE_CURRENT) // not the current one -> don't bother - { -- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].width = width; -- g_desktopGeometry.pScreens[g_desktopGeometry.iNbScreens-1].height = height; -+ p_screeninfo->width = width; -+ p_screeninfo->height = height; - g_desktopGeometry.Xscreen.width = width; - g_desktopGeometry.Xscreen.height = height; - } -@@ -124,14 +190,29 @@ static void _output_scale_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_ - - static const struct wl_output_listener output_listener = { - _output_geometry_cb, -- _output_mode_cb, -+ _output_mode_cb -+#ifdef WL_OUTPUT_SCALE_SINCE_VERSION -+ , - _output_done_cb, - _output_scale_cb -+#endif - }; - --static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *registry, uint32_t id, const char *interface, G_GNUC_UNUSED uint32_t version) -+static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version) - { -- cd_debug ("got a new global object, instance of %s, id=%d", interface, id); -+ cd_debug ("got a new global object, instance of %s, id=%d, version=%u", interface, id, version); -+ uint32_t wl_output_version = -+#if defined(WL_OUTPUT_RELEASE_SINCE_VERSION) -+ WL_OUTPUT_RELEASE_SINCE_VERSION; -+#elif defined(WL_OUTPUT_SCALE_SINCE_VERSION) -+ WL_OUTPUT_SCALE_SINCE_VERSION; -+#else -+ 1; -+#endif -+ // server side may not support newer version, in such case suppress the version to use -+ if (wl_output_version > version) -+ wl_output_version = version; -+ - if (!strcmp (interface, "wl_shell")) - { - // this is the global that should give us info and signals about the desktop, but currently it's pretty useless ... -@@ -142,10 +223,26 @@ static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *r - struct wl_output *output = wl_registry_bind (registry, - id, - &wl_output_interface, -- 1); -+ wl_output_version); -+ -+ GldiScreenInfo *p_screeninfo = NULL; -+ int screen_num = get_position_gldi_screeninfo_by_id(g_desktopGeometry.pScreens, g_desktopGeometry.iNbScreens, id); -+ if (screen_num >= 0) -+ p_screeninfo = g_desktopGeometry.pScreens + screen_num; -+ else -+ p_screeninfo = append_gldi_screeninfo(&g_desktopGeometry.pScreens, &g_desktopGeometry.iNbScreens); -+ -+ { -+ // register new wl_output -+ GldiWlOutput *p_wloutput = &p_screeninfo->wloutput; -+ p_wloutput->output = output; -+ p_wloutput->id = id; -+ p_wloutput->ver = wl_output_version; -+ } -+ - wl_output_add_listener (output, - &output_listener, -- NULL); -+ p_screeninfo); - } - s_bInitializing = TRUE; - } -@@ -153,7 +250,7 @@ static void _registry_global_cb (G_GNUC_UNUSED void *data, struct wl_registry *r - static void _registry_global_remove_cb (G_GNUC_UNUSED void *data, G_GNUC_UNUSED struct wl_registry *registry, uint32_t id) - { - cd_debug ("got a global object has disappeared: id=%d", id); -- /// TODO: find it and destroy it... -+ remove_gldi_screeninfo_by_id(&g_desktopGeometry.pScreens, &g_desktopGeometry.iNbScreens, id); - - /// TODO: and if it was a wl_output for instance, update the desktop geometry... - -@@ -171,6 +268,9 @@ static void init (void) - s_pDisplay = wl_display_connect (NULL); - - g_desktopGeometry.iNbDesktops = g_desktopGeometry.iNbViewportX = g_desktopGeometry.iNbViewportY = 1; -+ // Explicitly initialize below for readability -+ g_desktopGeometry.pScreens = NULL; -+ g_desktopGeometry.iNbScreens = 0; - - - struct wl_registry *registry = wl_display_get_registry (s_pDisplay); --- -2.31.1 - diff --git a/cairo-dock-create-fedora-tarball.sh b/cairo-dock-create-fedora-tarball.sh index 9fe70da..686e659 100644 --- a/cairo-dock-create-fedora-tarball.sh +++ b/cairo-dock-create-fedora-tarball.sh @@ -5,7 +5,7 @@ set -x umask 0022 -VERSION=${VERSION:-3.4.0} +VERSION=${VERSION:-3.5.0} VERSION_PARENT=${VERSION%.[0-9]} @@ -29,9 +29,9 @@ if [ "x${USE_GIT}" != "x" ] ; then git clone --depth 1 ${GIT_URL} cd ${REPONAME} - GITDATE=$(git log | sed -n -e 's|^Date:[ \t]*||p' | sed -e 's| \([+-][0-9][0-9]*\)$| UTC\1|') + GITDATE=$(git log -1 | sed -n -e 's|^Date:[ \t]*||p' | sed -e 's| \([+-][0-9][0-9]*\)$| UTC\1|') GITDAME_B="$(date -d "${GITDATE}" '+%Y%m%d')" - GITHASH="$(git log | sed -n -e 's|^commit[ \t]||p')" + GITHASH="$(git log -1 | sed -n -e 's|^commit[ \t]||p')" SHORTHASH=$(echo ${GITHASH:0:7}) cd .. cd .. @@ -59,7 +59,7 @@ set +x echo -n -e "Modifying source \t" count=0 -sed -i -e '\@AVOID_PATENT_CRAP@d' src/gldit/gldi-config.h.in +sed -i -e '\@AVOID_PATENT_CRAP@s@^.*$@@' src/gldit/gldi-config.h.in grep -rIl AVOID_PATENT_CRAP src/ | while read f do count=$((count + 1)) @@ -69,17 +69,19 @@ do do if ( echo "$line" | grep -q "#ifndef.*AVOID_PATENT_CRAP" ) ; then flag=10 - continue + line="" fi if [[ ( $flag == 10 ) && ( $(echo "$line" | grep -q "#else" ; echo $? ) == 0 ) ]] ; then flag=5 - continue + line="" fi if [[ ( $flag == 5 ) && ( $(echo "$line" | grep -q "#endif" ; echo $? ) == 0 ) ]] ; then flag=1 - continue + line="" + fi + if [ $flag == 10 ] ; then + line="" fi - [ $flag == 10 ] && continue echo "$line" >> $f done rm -f $f.orig diff --git a/cairo-dock-pr157-disabled-zoom-feature.patch b/cairo-dock-pr157-disabled-zoom-feature.patch new file mode 100644 index 0000000..0ddaf33 --- /dev/null +++ b/cairo-dock-pr157-disabled-zoom-feature.patch @@ -0,0 +1,78 @@ +From 4d2034db650a64315e9663f5ee89cad84692c693 Mon Sep 17 00:00:00 2001 +From: Daniel Kondor +Date: Wed, 15 Oct 2025 18:13:22 +0200 +Subject: [PATCH] gui-factory: add a warning about disabled zoom feature + +If Cairo-Dock is compiled with `-DAVOID_PATENT_CRAP`, the Zoom feature will be disabled. Adjust the settings GUI to disable the relevant settings and display a warning. +--- + src/gldit/cairo-dock-gui-factory.c | 33 ++++++++++++++++++++++++++++-- + 1 file changed, 31 insertions(+), 2 deletions(-) + +diff --git a/src/gldit/cairo-dock-gui-factory.c b/src/gldit/cairo-dock-gui-factory.c +index fcd639bc..7e846e2e 100644 +--- a/src/gldit/cairo-dock-gui-factory.c ++++ b/src/gldit/cairo-dock-gui-factory.c +@@ -51,6 +51,7 @@ + #include "cairo-dock-desktop-manager.h" + #include "cairo-dock-separator-manager.h" // GLDI_OBJECT_IS_SEPARATOR_ICON + #include "cairo-dock-menu.h" // gldi_menu_item_new_full2 ++#include "cairo-dock-file-manager.h" // cairo_dock_fm_launch_uri + #include "cairo-dock-gui-factory.h" + + #define CAIRO_DOCK_ICON_MARGIN 6 +@@ -1838,6 +1839,11 @@ const gchar *cairo_dock_parse_key_comment (gchar *cKeyComment, char *iElementTyp + return cUsefulComment; + } + ++static gboolean _open_btn_url (GtkLinkButton *pURL, G_GNUC_UNUSED gpointer data) ++{ ++ return cairo_dock_fm_launch_uri (gtk_link_button_get_uri (pURL)); ++} ++ + GtkWidget *cairo_dock_build_group_widget (GKeyFile *pKeyFile, const gchar *cGroupName, const gchar *cGettextDomain, GtkWidget *pMainWindow, GSList **pWidgetList, GPtrArray *pDataGarbage, const gchar *cOriginalConfFilePath) + { + g_return_val_if_fail (pKeyFile != NULL && cGroupName != NULL, NULL); +@@ -3087,9 +3093,15 @@ GtkWidget *cairo_dock_build_group_widget (GKeyFile *pKeyFile, const gchar *cGrou + } + + GtkWidget *pExternFrame; ++ gboolean bDisabled = FALSE; + if (iElementType == CAIRO_DOCK_WIDGET_FRAME) + { + pExternFrame = gtk_frame_new (NULL); ++#ifndef AVOID_PATENT_CRAP ++ // do nothing, bDisabled already set to FALSE ++#else ++ bDisabled = !g_strcmp0 (cValue, "Zoom effect"); ++#endif + gtk_container_set_border_width (GTK_CONTAINER (pExternFrame), CAIRO_DOCK_GUI_MARGIN); + gtk_frame_set_shadow_type (GTK_FRAME (pExternFrame), GTK_SHADOW_OUT); + gtk_frame_set_label_widget (GTK_FRAME (pExternFrame), (pLabelContainer != NULL ? pLabelContainer : pLabel)); +@@ -3116,8 +3128,25 @@ GtkWidget *cairo_dock_build_group_widget (GKeyFile *pKeyFile, const gchar *cGrou + 0); + + pFrameVBox = gtk_box_new (GTK_ORIENTATION_VERTICAL, CAIRO_DOCK_GUI_MARGIN); +- gtk_container_add (GTK_CONTAINER (pFrame), +- pFrameVBox); ++ if (bDisabled) { ++ gtk_widget_set_sensitive (pFrameVBox, FALSE); ++ ++ GtkWidget *pBoxV = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); ++ GtkWidget *pBoxH = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); ++ GtkWidget *pImg = gtk_image_new_from_icon_name ("dialog-warning", GTK_ICON_SIZE_MENU); ++ GtkWidget *pLbl = gtk_label_new (_("Cairo-Dock has been built with the icon zoom effect disabled. See here for more info: ")); ++ GtkWidget *pURL = gtk_link_button_new ("https://github.com/Cairo-Dock/cairo-dock-core/issues/156"); ++ // note: we use our own handler to open URLs so that we can use systemd to launch the browser if needed ++ g_signal_connect (G_OBJECT (pURL), "activate-link", G_CALLBACK (_open_btn_url), NULL); ++ ++ gtk_box_pack_start (GTK_BOX (pBoxH), pImg, FALSE, FALSE, 20); ++ gtk_box_pack_start (GTK_BOX (pBoxH), pLbl, FALSE, FALSE, 0); ++ gtk_box_pack_start (GTK_BOX (pBoxH), pURL, FALSE, FALSE, 0); ++ gtk_box_pack_start (GTK_BOX (pBoxV), pBoxH, FALSE, FALSE, 5); ++ gtk_box_pack_start (GTK_BOX (pBoxV), pFrameVBox, FALSE, FALSE, 0); ++ gtk_container_add (GTK_CONTAINER (pFrame), pBoxV); ++ } ++ else gtk_container_add (GTK_CONTAINER (pFrame), pFrameVBox); + + if (pAuthorizedValuesList[0] == NULL || *pAuthorizedValuesList[0] == '\0') + g_free (cValue); diff --git a/cairo-dock.spec b/cairo-dock.spec index 63c3e2b..bcc369d 100644 --- a/cairo-dock.spec +++ b/cairo-dock.spec @@ -1,16 +1,17 @@ -%global urlver 3.4 -%global mainver 3.4.1 +%global urlver 3.6 +%global mainver 3.6.2 -%global plugin_least_ver 3.4.1 +%global plugin_least_ver 3.6.0 -%global use_git 1 -%global gitdate 20210327 -%global githash 6c569e67a2a366e7634224a0133ede51755629cb +%dnl %global use_git 1 +%global gitdate 20250922 +%global githash bbdf30b67241dbf61dea651b636a07da5cc39049 %global shorthash %(c=%{githash} ; echo ${c:0:7}) %global tarballver %{mainver}%{?use_git:-%{gitdate}git%{shorthash}} -%global mainrel 18 +%global baserelease 1 +%dnl %global alphatag .rcb %undefine _ld_strict_symbol_defs %undefine __brp_mangle_shebangs @@ -25,11 +26,15 @@ ########################################## Name: cairo-dock -Version: 3.4.1 -Release: %{mainrel}%{?use_git:.D%{gitdate}git%{shorthash}}%{?dist}%{flagrel}.3 +Version: %{mainver}%{?use_git:^%{gitdate}git%{shorthash}} +Release: %{baserelease}%{?alphatag}%{?dist}%{flagrel} Summary: Light eye-candy fully themable animated dock -License: GPLv3+ +# Overall: GPL-3.0-or-later +# data/scripts/cairo-dock-package-theme.sh GPL-2.0-or-later +# src/gldit/gtk3imagemenuitem.c LGPL-3.0-or-later +# SPDX confirmed +License: GPL-3.0-or-later AND GPL-2.0-or-later AND LGPL-3.0-or-later URL: http://glx-dock.org/ # Source0: http://launchpad.net/cairo-dock-core/%%{urlver}/%%{mainver}/+download/cairo-dock-%%{mainver}.tar.gz # Modified due to some may-be-patent-infringement issue @@ -38,14 +43,14 @@ Source0: cairo-dock-fedora-%{tarballver}.tar.gz Source1: cairo-dock-create-fedora-tarball.sh # And some legal explanation Source2: LEGAL.fedora.cairo-dock -# wayland-manager: allocate new wl_output information by checking id -# https://bugzilla.redhat.com/show_bug.cgi?id=2000812 -# https://github.com/Cairo-Dock/cairo-dock-core/pull/12 -Patch1: 0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch +# https://github.com/Cairo-Dock/cairo-dock-core/pull/157 +Patch0: cairo-dock-pr157-disabled-zoom-feature.patch BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: cmake +BuildRequires: extra-cmake-modules +BuildRequires: systemd-rpm-macros %if 0%{?use_gcc_strict_sanitize} BuildRequires: libasan BuildRequires: libubsan @@ -63,10 +68,14 @@ BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(glu) BuildRequires: pkgconfig(gthread-2.0) +BuildRequires: pkgconfig(gtk-layer-shell-0) BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(json-c) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(librsvg-2.0) BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(wayland-egl) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcomposite) @@ -119,13 +128,13 @@ The %{name}-devel package contains libraries, build data, and header files for developing applications that use %{name}. %prep -%autosetup -n %{name}-%{version}%{?use_git:-%{gitdate}git%{shorthash}} -p1 +%autosetup -n %{name}-%{mainver}%{?use_git:-%{gitdate}git%{shorthash}} -p1 ## permission # %%_fixperms cannot fix permissions completely here for dir in */ do - find $dir -type f | xargs chmod 0644 + find $dir -type f | xargs -r chmod 0644 done chmod 0644 [A-Z]* chmod 0755 */ @@ -139,7 +148,15 @@ sed -i.stat \ po/CMakeLists.txt # Modify version forcely -sed -i CMakeLists.txt -e '\@set (VERSION @s|VERSION.*|VERSION "%{version}")|' +%if 0%{?use_git} +sed -i CMakeLists.txt -e '\@set (VERSION @s|VERSION.*|VERSION "%{mainver}")|' +%endif + +# Don't set rpath +sed -i CMakeLists.txt -e '\@APPEND.*CMAKE_INSTALL_RPATH@d' + +# Don't check / try systemd-notify on buildroot +sed -i CMakeLists.txt -e '\@SYSTEMD_COMMAND@s|systemd-notify|true|' %build %set_build_flags @@ -156,6 +173,9 @@ export CXXFLAGS="$(echo $CXXFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t] export LDFLAGS="$(echo $LDFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')" %endif +# PATCH157 needs this: remove this when patch is included in tarball +export CFLAGS="$CFLAGS -DAVOID_PATENT_CRAP=1" + rm -f CMakeCache.txt %cmake \ -DCMAKE_SKIP_RPATH:BOOL=ON \ @@ -240,6 +260,8 @@ popd %{_libdir}/%{name}/libcd-Help.so %{_datadir}/%{name}/plug-ins/Help/ +%{_userunitdir}/%{name}.service + %{_mandir}/man1/%{name}.1* %files devel @@ -248,6 +270,139 @@ popd %{_libdir}/pkgconfig/gldi.pc %changelog +* Tue Dec 23 2025 Mamoru TASAKA - 3.6.2-1 +- 3.6.2 + +* Tue Nov 04 2025 Mamoru TASAKA - 3.6.1-1 +- 3.6.1 + +* Fri Oct 17 2025 Mamoru TASAKA - 3.6.0-2 +- Upstream patch for warning for disabling zoom effect + +* Wed Oct 01 2025 Mamoru TASAKA - 3.6.0-1 +- 3.6.0 + +* Wed Sep 24 2025 Mamoru TASAKA - 3.5.99^20250922gitbbdf30b-1.rcb +- Update to the latest git (20250922gitbbdf30b) + +* Mon Sep 08 2025 Mamoru TASAKA - 3.5.99^20250907git2cd4d36-1.rcb +- Update to the latest git (20250907git2cd4d36) + +* Mon Sep 01 2025 Mamoru TASAKA - 3.5.99^20250901git8460fe2-1.rc9 +- Update to the latest git (20250901git8460fe2) + +* Sun Aug 24 2025 Mamoru TASAKA - 3.5.99^20250822gitf3de00e-1.rc9 +- Update to the latest git (20250822gitf3de00e) + +* Tue Aug 12 2025 Mamoru TASAKA - 3.5.99^20250812gitba992c4-1.rc8 +- Update to the latest git (20250812gitba992c4) + +* Tue Jul 29 2025 Mamoru TASAKA - 3.5.99^20250729gitc86686d-1.rc7 +- Update to the latest git (20250729gitc86686d) + +* Wed Jul 23 2025 Fedora Release Engineering - 3.5.99^20250714gite852048-2.rc6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jul 23 2025 Mamoru TASAKA - 3.5.99^20250716git033945c-1.rc6 +- Update to the latest git (20250716git033945c) + +* Mon Jul 14 2025 Mamoru TASAKA - 3.5.99^20250714gite852048-1.rc6 +- Update to the latest git (20250714gite852048) + +* Mon Jun 30 2025 Mamoru TASAKA - 3.5.99^20250623git6b5d476-1.rc3 +- Update to the latest git (20250623git6b5d476) + +* Thu Jun 19 2025 Mamoru TASAKA - 3.5.99^20250618git89864a0-1.rc2 +- Update to the latest git (20250618git89864a0) + +* Thu Mar 13 2025 Mamoru TASAKA - 3.5.99^20250309gita77d61b-1.rc2 +- Update to the latest git (20250309gita77d61b) + +* Sun Mar 02 2025 Mamoru TASAKA - 3.5.99^20250223gite2c28d1-1.rc2 +- Update to the latest git (20250223gite2c28d1) + +* Tue Feb 18 2025 Mamoru TASAKA - 3.5.99^20250218git77bc388-1.rc2 +- Update to the latest git (20250218git77bc388) + +* Fri Feb 14 2025 Mamoru TASAKA - 3.5.99^20250214gitddcff9e-1.rc2 +- Update to the latest git (20250214gitddcff9e) + +* Thu Feb 13 2025 Mamoru TASAKA - 3.5.99^20250211git443d8da-1.rc1 +- Update to the latest git (20250211git443d8da) + +* Thu Jan 30 2025 Mamoru TASAKA - 3.5.99^20250120gitd2fd789-1.rc1 +- Update to the latest git (20250120gitd2fd789) + +* Sun Jan 19 2025 Mamoru TASAKA - 3.5.99^20250118gitb0f5d5c-1.beta6 +- Update to the latest git (20250118gitb0f5d5c) + +* Thu Jan 16 2025 Fedora Release Engineering - 3.5.99^20241218gitf852640-2.beta6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sun Dec 29 2024 Mamoru TASAKA - 3.5.99^20241218gitf852640-1.beta6 +- Update to the latest git (20241218gitf852640) + +* Mon Dec 16 2024 Mamoru TASAKA - 3.5.99^20241216git4f36d13-1.beta6 +- Update to the latest git (20241216git4f36d13) + +* Sun Dec 08 2024 Mamoru TASAKA - 3.5.99^20241207gitea4bd97-1.beta5 +- Update to the latest git (20241207gitea4bd97) + +* Tue Nov 19 2024 Mamoru TASAKA - 3.5.99^20241118git575a251-1 +- Update to the latest git (20241118git575a251) + +* Thu Oct 24 2024 Mamoru TASAKA - 3.5.99^20241024git9f9421e-1 +- Update to the latest git (20241024git9f9421e) + +* Sun Oct 20 2024 Mamoru TASAKA - 3.5.99^20241016gitea5d37e-1 +- Update to the latest git (20241016gitea5d37e) + +* Mon Oct 14 2024 Mamoru TASAKA - 3.5.99^20241013git0324720-1 +- Update to the latest git (20241013git0324720) + +* Sun Oct 06 2024 Mamoru TASAKA - 3.5.99^20241007.1git2149e52-1 +- Update to the latest git (20241007git2149e52) + +* Thu Sep 26 2024 Mamoru TASAKA - 3.5.99^20240926git7b3ac7f-1 +- Update to the latest git (20240926git7b3ac7f) + +* Wed Sep 18 2024 Mamoru TASAKA - 3.5.99^20240915git1458bc8-1 +- Update to the latest git (20240915git1458bc8) + +* Thu Aug 22 2024 Mamoru TASAKA - 3.5.99^20240822gitb196136-1 +- Update to the latest git (20240822gitb196136) + +* Wed Aug 07 2024 Mamoru TASAKA - 3.5.99^20240805git23c0be5-1 +- Update to the latest git (20240805git23c0be5) + +* Wed Jul 17 2024 Fedora Release Engineering - 3.5.99^20240505git13fb151-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sun May 05 2024 Mamoru TASAKA - 3.5.99^20240505git13fb151-1 +- Update to the latest git (20240505git13fb151) +- Enable Wayfire IPC support + +* Sat May 04 2024 Mamoru TASAKA - 3.5.99^20240501git1f31686-1 +- Update to latest git (20240501git1f31686) + +* Fri Mar 01 2024 Mamoru TASAKA - 3.5.0-2 +- SPDX confirmation + +* Mon Feb 26 2024 Mamoru TASAKA - 3.5.0-1 +- Update to 3.5.0 + +* Tue Jan 23 2024 Fedora Release Engineering - 3.4.1-22.D20210327git6c569e6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 3.4.1-21.D20210327git6c569e6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 3.4.1-20.D20210327git6c569e6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon May 29 2023 Mamoru TASAKA - 3.4.1-19.D20210327git6c569e6 +- Pass -r option to xargs because new rpm creates empty directory + * Wed Jan 18 2023 Fedora Release Engineering - 3.4.1-18.D20210327git6c569e6.3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild diff --git a/sources b/sources index 516b2f0..93b0134 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cairo-dock-fedora-3.4.1-20210327git6c569e6.tar.gz) = 605c0c8bcf0ef0725c6ab1458856e70d6148f1aad351aae6d74bcc9d4beba7ae2da1d53cc743d4d2e587c68d14896981e4cbe7281c9fcc75ed2b3777e698df47 +SHA512 (cairo-dock-fedora-3.6.2.tar.gz) = dd941127605cd771813c1349fcaf8c1ba16673a9e95a6124e3b3e6a30fab97816c14291ac2a76e191b411f025a6f4b03f9b3d9ef356ee580b208a3fa8b6e4f34