diff --git a/.gitignore b/.gitignore index 8907d15..15db666 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ -/cairo-dock-fedora-*.tar.gz +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 diff --git a/0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch b/0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch new file mode 100644 index 0000000..36dfff3 --- /dev/null +++ b/0001-LP1943052-wayland-manager-allocate-new-wl_output-inf.patch @@ -0,0 +1,327 @@ +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 686e659..9fe70da 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.5.0} +VERSION=${VERSION:-3.4.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 -1 | sed -n -e 's|^Date:[ \t]*||p' | sed -e 's| \([+-][0-9][0-9]*\)$| UTC\1|') + GITDATE=$(git log | 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 -1 | sed -n -e 's|^commit[ \t]||p')" + GITHASH="$(git log | 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@s@^.*$@@' src/gldit/gldi-config.h.in +sed -i -e '\@AVOID_PATENT_CRAP@d' src/gldit/gldi-config.h.in grep -rIl AVOID_PATENT_CRAP src/ | while read f do count=$((count + 1)) @@ -69,19 +69,17 @@ do do if ( echo "$line" | grep -q "#ifndef.*AVOID_PATENT_CRAP" ) ; then flag=10 - line="" + continue fi if [[ ( $flag == 10 ) && ( $(echo "$line" | grep -q "#else" ; echo $? ) == 0 ) ]] ; then flag=5 - line="" + continue fi if [[ ( $flag == 5 ) && ( $(echo "$line" | grep -q "#endif" ; echo $? ) == 0 ) ]] ; then flag=1 - line="" - fi - if [ $flag == 10 ] ; then - line="" + continue 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 deleted file mode 100644 index 0ddaf33..0000000 --- a/cairo-dock-pr157-disabled-zoom-feature.patch +++ /dev/null @@ -1,78 +0,0 @@ -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 bcc369d..da85102 100644 --- a/cairo-dock.spec +++ b/cairo-dock.spec @@ -1,17 +1,16 @@ -%global urlver 3.6 -%global mainver 3.6.2 +%global urlver 3.4 +%global mainver 3.4.1 -%global plugin_least_ver 3.6.0 +%global plugin_least_ver 3.4.1 -%dnl %global use_git 1 -%global gitdate 20250922 -%global githash bbdf30b67241dbf61dea651b636a07da5cc39049 +%global use_git 1 +%global gitdate 20210327 +%global githash 6c569e67a2a366e7634224a0133ede51755629cb %global shorthash %(c=%{githash} ; echo ${c:0:7}) %global tarballver %{mainver}%{?use_git:-%{gitdate}git%{shorthash}} +%global baserelease 20 -%global baserelease 1 -%dnl %global alphatag .rcb %undefine _ld_strict_symbol_defs %undefine __brp_mangle_shebangs @@ -26,15 +25,11 @@ ########################################## Name: cairo-dock -Version: %{mainver}%{?use_git:^%{gitdate}git%{shorthash}} -Release: %{baserelease}%{?alphatag}%{?dist}%{flagrel} +Version: 3.4.1 +Release: %{baserelease}%{?use_git:.D%{gitdate}git%{shorthash}}%{?dist}%{flagrel} Summary: Light eye-candy fully themable animated dock -# 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 +License: GPLv3+ 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 @@ -43,14 +38,14 @@ Source0: cairo-dock-fedora-%{tarballver}.tar.gz Source1: cairo-dock-create-fedora-tarball.sh # And some legal explanation Source2: LEGAL.fedora.cairo-dock -# https://github.com/Cairo-Dock/cairo-dock-core/pull/157 -Patch0: cairo-dock-pr157-disabled-zoom-feature.patch +# 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 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 @@ -68,14 +63,10 @@ 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) @@ -128,7 +119,7 @@ The %{name}-devel package contains libraries, build data, and header files for developing applications that use %{name}. %prep -%autosetup -n %{name}-%{mainver}%{?use_git:-%{gitdate}git%{shorthash}} -p1 +%autosetup -n %{name}-%{version}%{?use_git:-%{gitdate}git%{shorthash}} -p1 ## permission # %%_fixperms cannot fix permissions completely here @@ -148,15 +139,7 @@ sed -i.stat \ po/CMakeLists.txt # Modify version forcely -%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|' +sed -i CMakeLists.txt -e '\@set (VERSION @s|VERSION.*|VERSION "%{version}")|' %build %set_build_flags @@ -173,9 +156,6 @@ 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 \ @@ -260,8 +240,6 @@ popd %{_libdir}/%{name}/libcd-Help.so %{_datadir}/%{name}/plug-ins/Help/ -%{_userunitdir}/%{name}.service - %{_mandir}/man1/%{name}.1* %files devel @@ -270,133 +248,6 @@ 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 diff --git a/sources b/sources index 93b0134..516b2f0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cairo-dock-fedora-3.6.2.tar.gz) = dd941127605cd771813c1349fcaf8c1ba16673a9e95a6124e3b3e6a30fab97816c14291ac2a76e191b411f025a6f4b03f9b3d9ef356ee580b208a3fa8b6e4f34 +SHA512 (cairo-dock-fedora-3.4.1-20210327git6c569e6.tar.gz) = 605c0c8bcf0ef0725c6ab1458856e70d6148f1aad351aae6d74bcc9d4beba7ae2da1d53cc743d4d2e587c68d14896981e4cbe7281c9fcc75ed2b3777e698df47