summaryrefslogtreecommitdiff
path: root/freefilesync/debian/patches/ffs_devuan_gtk3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync/debian/patches/ffs_devuan_gtk3.patch')
-rw-r--r--freefilesync/debian/patches/ffs_devuan_gtk3.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/freefilesync/debian/patches/ffs_devuan_gtk3.patch b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
new file mode 100644
index 0000000..705d84d
--- /dev/null
+++ b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
@@ -0,0 +1,107 @@
+Author: B Stack
+Source: Original research
+Date: 2019-11-21
+Message: Main patch to compile on Devuan.
+This reintroduces the gtk-3 usage, because Debian/Devuan stopped packaging libwxgtk3.0-dev (which used gtk2) and only does libwxgtk3.0-gtk3-dev. However, by reintroducing the gtk3, it brings back the old gtk3 instability from my previous packaging effort: https://freefilesync.org/forum/viewtopic.php?t=4918. /mnt/public/packages/old/freefilesync/freefilesync-9.7-1.master.tgz. Upstream never replied, but did note in the source that gtk3 is inherently unstable.
+diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/base/ffs_paths.cpp 10.18-1/FreeFileSync/Source/base/ffs_paths.cpp
+--- 10.13-0/FreeFileSync/Source/base/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400
++++ 10.18-1/FreeFileSync/Source/base/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500
+@@ -64,7 +64,8 @@
+
+ Zstring fff::getResourceDirPf()
+ {
+- return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR;
++ // For Fedora, EL and Devuan, install to /usr/share/freefilesync specificly
++ return Zstr("/usr/share/freefilesync/");
+ }
+
+
+diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/Makefile 10.18-1/FreeFileSync/Source/Makefile
+--- 10.11-0/FreeFileSync/Source/Makefile 2019-04-12 08:05:57.000000000 -0400
++++ 10.18-1/FreeFileSync/Source/Makefile 2019-11-21 09:42:57.408243242 -0500
+@@ -1,10 +1,10 @@
+-EXENAME = FreeFileSync_$(shell arch)
++EXENAME = FreeFileSync
+
+ CXXFLAGS = -std=c++2a -pipe -DWXINTL_NO_GETTEXT_MACRO -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
+ -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \
+ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
+
+-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread
++LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -lz -pthread
+
+
+ CXXFLAGS += `pkg-config --cflags openssl`
+@@ -16,9 +16,10 @@
+ CXXFLAGS += `pkg-config --cflags libssh2`
+ LINKFLAGS += `pkg-config --libs libssh2`
+
+-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
++CXXFLAGS += `pkg-config --cflags gtk+-3.0`
++LINKFLAGS += `pkg-config --libs gtk+-3.0`
+ #treat as system headers so that warnings are hidden:
+-CXXFLAGS += -isystem/usr/include/gtk-2.0
++CXXFLAGS += -isystem/usr/include/gtk-3.0
+
+ #support for SELinux (optional)
+ SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES)
+diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/RealTimeSync/Makefile 10.18-1/FreeFileSync/Source/RealTimeSync/Makefile
+--- 10.11-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-04-12 08:05:57.000000000 -0400
++++ 10.18-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-11-21 09:46:11.378240094 -0500
+@@ -1,15 +1,16 @@
+-EXENAME = RealTimeSync_$(shell arch)
++EXENAME = RealTimeSync
+
+ CXXFLAGS = -std=c++2a -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \
+ -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \
+ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
+
+-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread
++LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -lz -pthread
+
+ #Gtk - support "no button border"
+-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
++CXXFLAGS += `pkg-config --cflags gtk+-3.0`
++LINKFLAGS += `pkg-config --libs gtk+-3.0`
+ #treat as system headers so that warnings are hidden:
+-CXXFLAGS += -isystem/usr/include/gtk-2.0
++CXXFLAGS += -isystem/usr/include/gtk-3.0
+
+ CPP_FILES=
+ CPP_FILES+=application.cpp
+diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.18-1/FreeFileSync/Source/ui/small_dlgs.cpp
+--- 10.11-0/FreeFileSync/Source/ui/small_dlgs.cpp 2019-04-12 08:05:57.000000000 -0400
++++ 10.11-1/FreeFileSync/Source/ui/small_dlgs.cpp 2019-04-12 13:58:55.050550183 -0400
+@@ -117,6 +117,8 @@
+ L" x64";
+ #endif
+
++ build +=
++ L" for Devuan";
+
+ GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize()
+
+diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/wx+/dc.h 10.18-1/wx+/dc.h
+--- 10.18-0/wx+/dc.h 2019-11-21 08:24:23.967769384 -0500
++++ 10.18-1/wx+/dc.h 2019-11-21 09:42:12.779786504 -0500
+@@ -54,7 +54,7 @@
+ #ifdef wxHAVE_DPI_INDEPENDENT_PIXELS //pulled from wx/window.h: https://github.com/wxWidgets/wxWidgets/blob/master/include/wx/window.h#L2029
+ return d; //e.g. macOS, GTK3
+ #else //https://github.com/wxWidgets/wxWidgets/blob/master/src/common/wincmn.cpp#L2865
+- static_assert(GTK_MAJOR_VERSION == 2);
++ static_assert(GTK_MAJOR_VERSION == 3);
+ //GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114
+ //=> requires general fix at wxWidgets-level
+ assert(wxTheApp); //only call after wxWidgets was initalized!
+diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/base/icon_loader.cpp 10.18-1/FreeFileSync/Source/base/icon_loader.cpp
+--- 10.18-0/FreeFileSync/Source/base/icon_loader.cpp 2019-11-21 08:24:23.955769262 -0500
++++ 10.18-1/FreeFileSync/Source/base/icon_loader.cpp 2019-11-21 09:42:15.439813730 -0500
+@@ -18,7 +18,7 @@
+
+ namespace
+ {
+-static_assert(GTK_MAJOR_VERSION == 2, "FreeFileSync does NOT (currently) support GTK3! The GTK calls below will lead to crashes due to not being thread-safe on GTK3.");
++static_assert(GTK_MAJOR_VERSION == 3, "FreeFileSync does NOT (currently) support GTK3! The GTK calls below will lead to crashes due to not being thread-safe on GTK3.");
+ //gdk_threads_enter(); + ZEN_ON_SCOPE_EXIT(::gdk_threads_leave); is NOT enough; e.g. GTK3 + openSuse still crashes with:
+ // Gtk:ERROR:gtkicontheme.c:4026:proxy_pixbuf_destroy: assertion failed: (icon_info->proxy_pixbuf != NULL)
+ //GTK icon theme internals: https://github.com/GNOME/gtk/blob/master/gtk/gtkicontheme.c
bgstack15