summaryrefslogtreecommitdiff
path: root/freefilesync
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync')
-rw-r--r--freefilesync/debian/README.Debian4
-rw-r--r--freefilesync/debian/changelog56
-rw-r--r--freefilesync/debian/control10
-rw-r--r--freefilesync/debian/freefilesync+devuan.dsc4
-rw-r--r--freefilesync/debian/patches/ffs_devuan_gtk2.patch31
-rw-r--r--freefilesync/debian/patches/ffs_devuan_gtk3.patch12
-rw-r--r--freefilesync/debian/patches/ffs_gcc.patch46
-rw-r--r--freefilesync/debian/patches/ffs_no_check_updates.patch31
-rw-r--r--freefilesync/debian/patches/ffs_no_wx311.patch20
-rw-r--r--freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch181
-rw-r--r--freefilesync/debian/patches/series4
-rwxr-xr-xfreefilesync/debian/rules2
-rw-r--r--freefilesync/ffs_el.patch1
-rw-r--r--freefilesync/ffs_fedora.patch56
-rw-r--r--freefilesync/ffs_no_check_updates.patch31
-rw-r--r--freefilesync/ffs_no_eraseif.patch52
-rw-r--r--freefilesync/ffs_no_wx311.patch20
-rw-r--r--freefilesync/freefilesync.spec18
-rw-r--r--freefilesync/revert_zenju_aggressive_upstreamisms.patch167
19 files changed, 260 insertions, 486 deletions
diff --git a/freefilesync/debian/README.Debian b/freefilesync/debian/README.Debian
index 588db96..a5a1f01 100644
--- a/freefilesync/debian/README.Debian
+++ b/freefilesync/debian/README.Debian
@@ -1,3 +1,7 @@
+freefilesync (10.25-1+devuan)
+
+Now requires g++-10. Previously, the maintainer was reverting the logic only available to gcc-10, but this is becoming unmaintainable.
+
freefilesync (10.21-2+devuan)
* gtk2 build for albion
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 0b9f910..4b1a593 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,59 @@
+freefilesync (11.0-1+devuan) obs; urgency=medium
+
+ * Revised file layout on main grid
+ * Skip download/upload when copying Google Drive files inside account
+ * Support moving Google Drive files between shared drives and My Drive
+ * Support copying Google Drive shortcuts between accounts
+ * Support copying Google Docs, Sheets, Slides, etc. within account
+ * Fixed parsing uninitialized Google Drive modification time
+ * Fixed Google Drive file already existing check running too late
+ * Ignore slash/backslash differences during manual search
+ * Avoid creating orphan database entry if one DB file fails to load
+ * Limit modification time error count for log file warning message
+ * Support copying WSL symlinks
+ * Avoid duplicate MTP/Google Drive item creation from multiple threads
+ * Fixed TMPDIR not found during startup (macOS)
+ * Added sync variant icons
+ * Avoid redundant icon format conversions
+ * Buffer high-DPI image scaling results
+ * Improved MTP thumbnail scaling performance
+ * Avoid race condition during parallel file icon rendering (Linux)
+ * Allow creating folder name with leading/trailing spaces
+ * Start supporting GTK3 (Linux)
+
+ -- Ben Stack <bgstack15@gmail.com> Wed, 22 Jul 2020 12:55:46 -0400
+
+freefilesync (10.25-2+devuan) obs; urgency=medium
+
+ * gtk2 build (stable)
+
+ -- Ben Stack <bgstack15@gmail.com> Sat, 20 Jun 2020 16:46:22 -0400
+
+freefilesync (10.25-1+devuan) obs; urgency=medium
+
+ * gtk3 build (unstable)
+ * New file tree layout for main grid
+ * Support Google Drive Shared Drives
+ * Support Google Drive Shortcuts
+ * Prioritize item name rendering if lacking horizontal space
+ * Report "out of memory" during startup instead of crashing
+ * Fixed excess memory consumption when loading variable-size data blocks
+ * Fixed VERSION_ID missing on Arch Linux
+ * Fixed IWbemServices::ConnectServer error during auto-update
+ * Fixed row being skipped during main grid page up/down
+ * Fixed MSSearch files not found when using Volume Shadow Copy
+ * Allow creating folder names with trailing dot
+ * Improved sort by full path speed and folder ordering
+ * Report detailed error when failing to parse FTP MLSD
+ * Sort by path component names instead of relative path
+ * Support access to MEGAcmd FTP server
+ * Fixed Google Drive error when removing last parent of shared item
+ * Fixed Google Drive owned+shared files being unlinked instead of deleted
+ * Fixed Google Drive change notificaton evaluation for item without parents
+ * Support double-click/"Browse directory" for (S)FTP/Google Drive (Linux)
+
+ -- Ben Stack <bgstack15@gmail.com> Fri, 19 Jun 2020 16:21:17 -0400
+
freefilesync (10.24-2+devuan) albion; urgency=medium
* gtk2 build (stable)
diff --git a/freefilesync/debian/control b/freefilesync/debian/control
index 00da1a0..17ed18d 100644
--- a/freefilesync/debian/control
+++ b/freefilesync/debian/control
@@ -4,20 +4,18 @@ Priority: optional
Maintainer: B Stack <bgstack15@gmail.com>
Build-Depends: debhelper (>=12~),
imagemagick,
+ g++-10,
+ libbrotli-dev,
libcurl4-openssl-dev (>=7.68.0),
libssh2-1-dev,
libssl-dev,
wx3.0-headers,
unzip,
-# gtk2 version, now possible only with local devuan-archive, and these must be removed for gtk3 build
-# install with sudo apt-get install libwxbase3.0-0v5=3.0.4+dfsg-14 libwxbase3.0-dev=3.0.4+dfsg-14 libwxgtk3.0-0v5=3.0.4+dfsg-14 libwxgtk3.0-dev=3.0.4+dfsg-14 wx3.0-headers=3.0.4+dfsg-14 libgtk2.0-dev
- libgtk2.0-dev,
- libwxgtk3.0-dev (=3.0.4+dfsg-14),
# gtk3 version, and these must be removed for gtk2 build
# install with sudo apt-get install libwxbase3.0-dev=3.0.4+dfsg-15 libwxbase3.0-0v5=3.0.4+dfsg-15 wx3.0-headers=3.0.4+dfsg-15 libgtk-3-dev libwxgtk3.0-gtk3-dev
# which will remove libwxbase3.0-dev=3.0.4+dfsg-14
-# libgtk-3-dev,
-# libwxgtk3.0-gtk3-dev,
+ libgtk-3-dev,
+ libwxgtk3.0-gtk3-dev,
Standards-Version: 4.1.4
Homepage: https://freefilesync.org/
diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc
index eb4e5b1..2da40e8 100644
--- a/freefilesync/debian/freefilesync+devuan.dsc
+++ b/freefilesync/debian/freefilesync+devuan.dsc
@@ -2,11 +2,11 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 10.24-1+devuan
+Version: 10.25-1+devuan
Maintainer: B Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
-Build-Depends: debhelper (>= 12~), imagemagick, libcurl4-openssl-dev, libssh2-1-dev, libssl-dev, wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
+Build-Depends: debhelper (>= 12~), g++-10, imagemagick, libcurl4-openssl-dev, libssh2-1-dev, libssl-dev, wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev
Package-List:
freefilesync deb utils optional arch=any
Files:
diff --git a/freefilesync/debian/patches/ffs_devuan_gtk2.patch b/freefilesync/debian/patches/ffs_devuan_gtk2.patch
deleted file mode 100644
index 49a7c24..0000000
--- a/freefilesync/debian/patches/ffs_devuan_gtk2.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Author: B Stack
-Source: Original research
-Date: 2019-11-21
-Message: Patches to use gtk2. Depends on ffs_devuan.patch
-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-2/FreeFileSync/Source/Makefile 2019-11-21 09:42:57.408243242 -0500
-@@ -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+-2.0`
-+linkFlags += `pkg-config --libs gtk+-2.0`
- #treat as system headers so that warnings are hidden:
--cxxFlags += -isystem/usr/include/gtk-2.0
-+cxxFlags += -isystem/usr/include/gtk-2.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.20-0/FreeFileSync/Source/RealTimeSync/Makefile 2020-02-15 11:45:58.241515736 -0500
-+++ 10.20-1/FreeFileSync/Source/RealTimeSync/Makefile 2020-02-15 15:43:32.852203730 -0500
-@@ -8,6 +8,7 @@
-
- #Gtk - support "no button border"
- cxxFlags += `pkg-config --cflags gtk+-2.0`
-+linkFlags += `pkg-config --libs gtk+-2.0`
- #treat as system headers so that warnings are hidden:
- cxxFlags += -isystem/usr/include/gtk-2.0
-
diff --git a/freefilesync/debian/patches/ffs_devuan_gtk3.patch b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
index 3559261..16268d1 100644
--- a/freefilesync/debian/patches/ffs_devuan_gtk3.patch
+++ b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
@@ -47,15 +47,3 @@ diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/wx+/dc.h 10.18-1
//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
diff --git a/freefilesync/debian/patches/ffs_gcc.patch b/freefilesync/debian/patches/ffs_gcc.patch
new file mode 100644
index 0000000..ed007b5
--- /dev/null
+++ b/freefilesync/debian/patches/ffs_gcc.patch
@@ -0,0 +1,46 @@
+diff -Naur 10.25-1/FreeFileSync/Source/Makefile 10.25-2/FreeFileSync/Source/Makefile
+--- 10.25-1/FreeFileSync/Source/Makefile 2020-06-20 13:36:08.495867672 -0400
++++ 10.25-2/FreeFileSync/Source/Makefile 2020-06-20 13:31:36.180419862 -0400
+@@ -1,4 +1,5 @@
+ exeName = FreeFileSync
++CXX=g++-10
+
+ 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 \
+@@ -114,11 +115,11 @@
+
+ ../Build/Bin/$(exeName): $(objFiles)
+ mkdir -p $(dir $@)
+- g++ -o $@ $^ $(linkFlags)
++ $(CXX) -o $@ $^ $(linkFlags)
+
+ $(tmpPath)/ffs/src/%.o : %
+ mkdir -p $(dir $@)
+- g++ $(cxxFlags) -c $< -o $@
++ $(CXX) $(cxxFlags) -c $< -o $@
+
+ clean:
+ rm -rf $(tmpPath)
+diff -Naur 10.25-1/FreeFileSync/Source/RealTimeSync/Makefile 10.25-2/FreeFileSync/Source/RealTimeSync/Makefile
+--- 10.25-1/FreeFileSync/Source/RealTimeSync/Makefile 2020-06-20 13:36:08.499867723 -0400
++++ 10.25-2/FreeFileSync/Source/RealTimeSync/Makefile 2020-06-20 13:31:48.844580205 -0400
+@@ -1,4 +1,5 @@
+ exeName = RealTimeSync
++CXX=g++-10
+
+ 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 \
+@@ -52,11 +53,11 @@
+
+ ../../Build/Bin/$(exeName): $(objFiles)
+ mkdir -p $(dir $@)
+- g++ -o $@ $^ $(linkFlags)
++ $(CXX) -o $@ $^ $(linkFlags)
+
+ $(tmpPath)/ffs/src/rts/%.o : %
+ mkdir -p $(dir $@)
+- g++ $(cxxFlags) -c $< -o $@
++ $(CXX) $(cxxFlags) -c $< -o $@
+
+ clean:
+ rm -rf $(tmpPath)
diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch
index 1ef4148..62f4e7e 100644
--- a/freefilesync/debian/patches/ffs_no_check_updates.patch
+++ b/freefilesync/debian/patches/ffs_no_check_updates.patch
@@ -1,7 +1,7 @@
diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-1/FreeFileSync/Source/ui/main_dlg.cpp
--- 10.9-0/FreeFileSync/Source/ui/main_dlg.cpp 2019-02-10 22:01:42.029158919 -0500
-+++ 10.14-1/FreeFileSync/Source/ui/main_dlg.cpp 2019-07-16 10:56:40.213575535 -0400
-@@ -5298,7 +5298,7 @@
++++ 11.0-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-07-22 11:49:13.747407290 -0400
+@@ -5538,7 +5538,7 @@
globalCfg_.gui.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value!
m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.gui.lastUpdateCheck));
@@ -10,15 +10,15 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-
if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck))
{
flashStatusInformation(_("Searching for program updates..."));
-@@ -5306,6 +5306,7 @@
+@@ -5546,6 +5546,7 @@
automaticUpdateCheckEval(this, globalCfg_.gui.lastUpdateCheck, globalCfg_.gui.lastOnlineVersion,
- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare().get()).get());
+ automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
}
+ */
}
-@@ -5313,7 +5314,7 @@
+@@ -5553,7 +5554,7 @@
{
//execute just once per startup!
Disconnect(wxEVT_IDLE, wxIdleEventHandler(MainDialog::OnRegularUpdateCheck), nullptr, this);
@@ -27,7 +27,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-
if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck))
{
flashStatusInformation(_("Searching for program updates..."));
-@@ -5327,6 +5328,7 @@
+@@ -5567,6 +5568,7 @@
resultAsync.get()); //run on main thread:
});
}
@@ -37,7 +37,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-
diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 10.14-1/FreeFileSync/Source/ui/version_check.cpp
--- 10.9-0/FreeFileSync/Source/ui/version_check.cpp 2019-02-10 22:01:42.126160041 -0500
-+++ 10.18-1/FreeFileSync/Source/ui/version_check.cpp 2019-11-20 09:19:50.936975067 -0500
++++ 11.0-1/FreeFileSync/Source/ui/version_check.cpp 2020-07-22 11:43:36.895201090 -0400
@@ -69,6 +69,8 @@
bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck)
@@ -47,7 +47,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 1
if (lastUpdateCheck == getVersionCheckInactiveId())
return false;
-@@ -156,8 +158,7 @@
+@@ -159,8 +161,7 @@
{
try
{
@@ -57,7 +57,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 1
updateDetailsMsg = utfTo<std::wstring>(buf);
}
catch (const zen::SysError& e) { throw FileError(_("Failed to retrieve update information."), e.toString()); }
-@@ -182,8 +183,7 @@
+@@ -189,8 +190,7 @@
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
@@ -67,21 +67,22 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 1
return trimCpy(response);
}
-@@ -235,13 +235,13 @@
- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters()); //throw SysError
+@@ -237,13 +237,13 @@
+ const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError
lastOnlineVersion = onlineVersion;
- if (haveNewerVersionOnline(onlineVersion))
-- showUpdateAvailableDialog(parent, onlineVersion);
+- showUpdateAvailableDialog(&parent, onlineVersion);
- else
+ //if (haveNewerVersionOnline(onlineVersion))
-+ // showUpdateAvailableDialog(parent, onlineVersion);
++ // showUpdateAvailableDialog(&parent, onlineVersion);
+ //else
- showNotificationDialog(parent, DialogInfoType::info, PopupDialogCfg().
- setIcon(getResourceImage("update_check")).
+ showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg().
+ setIcon(loadImage("update_check")).
setTitle(_("Check for Program Updates")).
- setMainInstructions(_("FreeFileSync is up to date.")));
+ setMainInstructions(_("Use your package manager for any updates to FreeFileSync.")));
}
catch (const zen::SysError& e)
{
+
diff --git a/freefilesync/debian/patches/ffs_no_wx311.patch b/freefilesync/debian/patches/ffs_no_wx311.patch
index 932800d..22d8260 100644
--- a/freefilesync/debian/patches/ffs_no_wx311.patch
+++ b/freefilesync/debian/patches/ffs_no_wx311.patch
@@ -1,11 +1,21 @@
2019-08-15 just compile.
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.24-1/FreeFileSync/Source/ui/small_dlgs.cpp
---- 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 2019-12-27 07:56:06.714625467 -0500
-+++ 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp 2019-12-27 08:41:43.498308243 -0500
-@@ -1594,7 +1594,7 @@
+diff -Naur 10.25-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.25-1/FreeFileSync/Source/ui/small_dlgs.cpp
+--- 10.25-0/FreeFileSync/Source/ui/small_dlgs.cpp 2020-06-19 16:17:15.000000000 -0400
++++ 11.0-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-07-22 11:39:25.820068366 -0400
+@@ -293,7 +293,8 @@
+ {
+ showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString()));
+ }
+- m_listBoxGdriveUsers->Append(gdriveAccounts);
++ for (const wxString& item : gdriveAccounts) // reverted to pre-wx 3.1.1 logic
++ m_listBoxGdriveUsers->Append(item);
+
+ //set default values for Google Drive: use first item of m_listBoxGdriveUsers
+ if (!gdriveAccounts.empty() && !acceptsItemPathPhraseGdrive(folderPathPhrase))
+@@ -1682,7 +1683,7 @@
//setMainInstructionFont(*m_staticTextMain);
- m_bitmapActivation->SetBitmap(getResourceImage("internet"));
+ m_bitmapActivation->SetBitmap(loadImage("internet"));
- m_textCtrlOfflineActivationKey->ForceUpper();
+ //m_textCtrlOfflineActivationKey->ForceUpper();
diff --git a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
index 0da4e06..8ca60c2 100644
--- a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
@@ -1,184 +1,3 @@
-Author: Ben Stack <bgstack15@gmail.com>
-Date: 2020-05-17 14:11 -0400
-Message: Use the following command to get this old contents. Zenju must be using some newer definition of -std=c++2a than what Devuan Ceres provides as of 2020-05-17, and probably wxwidgets. This is the 10.23 code for these files.
-
- git checkout b4ecf755 zen/legacy_compiler.h zen/string_base.h wx+/choice_enum.h
-
-Unfortunately with the removal of the wxWidgets-gtk2 code from Debian, we are stuck using all available at approximately November 1, 2019 snapshot of Debian: https://snapshot.debian.org/archive/debian/20191101T211023Z/pool/main/w/wxwidgets3.0/
-libwxbase3.0-0v5_3.0.4+dfsg-14_amd64.deb
-libwxbase3.0-0v5_3.0.4+dfsg-14_i386.deb
-libwxbase3.0-dev_3.0.4+dfsg-14_amd64.deb
-libwxbase3.0-dev_3.0.4+dfsg-14_i386.deb
-libwxgtk3.0-0v5_3.0.4+dfsg-14_amd64.deb
-libwxgtk3.0-0v5_3.0.4+dfsg-14_i386.deb
-libwxgtk3.0-dev_3.0.4+dfsg-14_amd64.deb
-libwxgtk3.0-dev_3.0.4+dfsg-14_i386.deb
-wx3.0-headers_3.0.4+dfsg-14_all.deb
-wx-common_3.0.4+dfsg-14_amd64.deb
-wx-common_3.0.4+dfsg-14_i386.deb
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/zen/legacy_compiler.h 10.24-1/zen/legacy_compiler.h
---- 10.24-0/zen/legacy_compiler.h 2020-05-17 13:44:27.542140458 -0400
-+++ 10.24-1/zen/legacy_compiler.h 2020-05-17 14:07:49.115166339 -0400
-@@ -7,9 +7,6 @@
- #ifndef LEGACY_COMPILER_H_839567308565656789
- #define LEGACY_COMPILER_H_839567308565656789
-
-- #include <numbers> //C++20
--
-- #include <span> //requires C++20
-
-
-
-@@ -21,8 +18,53 @@
-
- //---------------------------------------------------------------------------------
-
-+#if __cpp_lib_span
-+ #error get rid of workaround:
-+#endif
-+
-+template <class T>
-+class span
-+{
-+public:
-+ template <class Iterator>
-+ span(Iterator first, Iterator last) : size_(last - first), data_(first != last ? &*first : nullptr) {}
-+
-+ template <class Container>
-+ span(Container& cont) : span(cont.begin(), cont.end()) {}
-+
-+ using iterator = T*;
-+ using const_iterator = const T*;
-+
-+ iterator begin() { return data_; }
-+ iterator end () { return data_ + size_; }
-+
-+ const_iterator begin() const { return data_; }
-+ const_iterator end () const { return data_ + size_; }
-
-+ const_iterator cbegin() const { return begin(); }
-+ const_iterator cend () const { return end (); }
-
-+ T* data() const { return data_; }
-+ size_t size() const { return size_; }
-+ bool empty() const { return size_ == 0; }
-+
-+private:
-+ const size_t size_;
-+ T* const data_;
-+};
-+
-+
-+#if __cpp_lib_math_constants
-+ #error get rid of workaround:
-+#endif
-+
-+namespace numbers
-+{
-+const double pi = 3.14159265358979323846;
-+const double e = 2.71828182845904523536;
-+const double sqrt2 = 1.41421356237309504880;
-+const double ln2 = 0.693147180559945309417;
-+}
- }
-
-
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/zen/string_base.h 10.24-1/zen/string_base.h
---- 10.24-0/zen/string_base.h 2020-05-17 13:44:27.554140569 -0400
-+++ 10.24-1/zen/string_base.h 2020-05-17 14:09:44.164244361 -0400
-@@ -12,7 +12,9 @@
- #include <cstdint>
- #include <atomic>
- #include "string_tools.h"
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
- #include <compare>
-+#endif
-
-
- //Zbase - a policy based string class optimizing performance and flexibility
-@@ -293,15 +295,29 @@
- };
-
-
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
-+ #error implement!
-+#endif
-+
-
- template <class Char, template <class> class SP> bool operator==(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs);
- template <class Char, template <class> class SP> bool operator==(const Zbase<Char, SP>& lhs, const Char* rhs);
- template <class Char, template <class> class SP> inline bool operator==(const Char* lhs, const Zbase<Char, SP>& rhs) { return operator==(rhs, lhs); }
-
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
- template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs);
- template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Char* rhs);
- template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Char* lhs, const Zbase<Char, SP>& rhs);
-
-+#else
-+template <class Char, template <class> class SP> inline bool operator!=(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) { return !operator==(lhs, rhs); }
-+template <class Char, template <class> class SP> inline bool operator!=(const Zbase<Char, SP>& lhs, const Char* rhs) { return !operator==(lhs, rhs); }
-+template <class Char, template <class> class SP> inline bool operator!=(const Char* lhs, const Zbase<Char, SP>& rhs) { return !operator==(lhs, rhs); }
-+
-+template <class Char, template <class> class SP> bool operator<(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs);
-+template <class Char, template <class> class SP> bool operator<(const Zbase<Char, SP>& lhs, const Char* rhs);
-+template <class Char, template <class> class SP> bool operator<(const Char* lhs, const Zbase<Char, SP>& rhs);
-+#endif
-
- template <class Char, template <class> class SP> inline Zbase<Char, SP> operator+(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) { return Zbase<Char, SP>(lhs) += rhs; }
- template <class Char, template <class> class SP> inline Zbase<Char, SP> operator+(const Zbase<Char, SP>& lhs, const Char* rhs) { return Zbase<Char, SP>(lhs) += rhs; }
-@@ -482,11 +498,12 @@
- }
-
-
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
- template <class Char, template <class> class SP> inline
- std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs)
- {
-- return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0
-- rhs.begin(), rhs.end()); //
-+ return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0
-+ rhs.begin(), rhs.end());
- }
-
-
-@@ -501,11 +518,35 @@
- template <class Char, template <class> class SP> inline
- std::strong_ordering operator<=>(const Char* lhs, const Zbase<Char, SP>& rhs)
- {
-- return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs),
-- rhs.begin(), rhs.end()); //respect embedded 0
-+ return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs), //respect embedded 0
-+ rhs.begin(), rhs.end());
-+}
-+
-+#else
-+template <class Char, template <class> class SP> inline
-+bool operator<(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs)
-+{
-+ return std::lexicographical_compare(lhs.begin(), lhs.end(), //respect embedded 0
-+ rhs.begin(), rhs.end());
- }
-
-
-+template <class Char, template <class> class SP> inline
-+bool operator<(const Zbase<Char, SP>& lhs, const Char* rhs)
-+{
-+ return std::lexicographical_compare(lhs.begin(), lhs.end(), //respect embedded 0
-+ rhs, rhs + strLength(rhs));
-+}
-+
-+
-+template <class Char, template <class> class SP> inline
-+bool operator<(const Char* lhs, const Zbase<Char, SP>& rhs)
-+{
-+ return std::lexicographical_compare(lhs, lhs + strLength(lhs), //respect embedded 0
-+ rhs.begin(), rhs.end());
-+}
-+#endif
-+
-
- template <class Char, template <class> class SP> inline
- size_t Zbase<Char, SP>::length() const
diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
--- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
+++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index bd039a4..7ce7a97 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -1,10 +1,10 @@
ffs_allow_parallel_ops.patch
ffs_devuan.patch
-# gtk3 for obs, gtk2 for albion
-ffs_devuan_gtk2.patch
+ffs_devuan_gtk3.patch
ffs_no_check_updates.patch
ffs_no_wx311.patch
ffs_sftp.patch
ffs_libssh2.patch
ffs_curl.patch
revert_zenju_aggressive_upstreamisms.patch
+ffs_gcc.patch
diff --git a/freefilesync/debian/rules b/freefilesync/debian/rules
index 405ffd3..a359bd9 100755
--- a/freefilesync/debian/rules
+++ b/freefilesync/debian/rules
@@ -15,6 +15,8 @@ export buildroot="${debuilddir}/${appname}"
export _datadir="/usr/share"
export _bindir="/usr/bin"
+export TMPDIR=/tmp
+
%:
dh $@
diff --git a/freefilesync/ffs_el.patch b/freefilesync/ffs_el.patch
index 4611e5e..c8b0fcc 100644
--- a/freefilesync/ffs_el.patch
+++ b/freefilesync/ffs_el.patch
@@ -1,3 +1,4 @@
+# 2020-07-22 starting at FreeFileSync 10.25 in 2020-06, we need g++-10 to compile but all EL targets (6, 7, and 8) do not have gcc 10 so this patch is not usable as is. But it should get the gtk3 fix if any CentOS targets get gcc-10.
The cstddef discovery is from https://stackoverflow.com/questions/52567517/freefilesync-c-error-byte-is-not-a-member-of-std
Some changes just make the application work better in an installed setting (e.g., the hard-coded resouce path).
Tricking the wxWidgets ABI version comes from https://stackoverflow.com/questions/45123664/wxwidgets-runtime-error-mismatch-version/47822976#47822976
diff --git a/freefilesync/ffs_fedora.patch b/freefilesync/ffs_fedora.patch
index 82787ea..f804660 100644
--- a/freefilesync/ffs_fedora.patch
+++ b/freefilesync/ffs_fedora.patch
@@ -1,3 +1,4 @@
+ffs_fedora 2020-07-22 now uses gtk3
diff -Naur 10.13-0/FreeFileSync/Source/ffs_paths.cpp 10.13-1/FreeFileSync/Source/ffs_paths.cpp
--- 10.13-0/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400
+++ 10.13-1/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:36:28.178274292 -0400
@@ -11,9 +12,9 @@ diff -Naur 10.13-0/FreeFileSync/Source/ffs_paths.cpp 10.13-1/FreeFileSync/Source
}
-diff -Naur 10.11-0/FreeFileSync/Source/Makefile 10.11-1/FreeFileSync/Source/Makefile
---- 10.11-0/FreeFileSync/Source/Makefile 2019-04-12 07:59:45.042147902 -0400
-+++ 10.11-1/FreeFileSync/Source/Makefile 2019-04-12 08:27:42.062542410 -0400
+diff -x '*.orig' -x '*.git' -x '*.rej' -x '*.swp' -Naur 11.0-0/FreeFileSync/Source/Makefile 11.0-1/FreeFileSync/Source/Makefile
+--- 11.0-0/FreeFileSync/Source/Makefile 2020-07-22 11:36:55.000000000 -0400
++++ 11.0-1/FreeFileSync/Source/Makefile 2020-07-22 13:36:27.193345688 -0400
@@ -1,10 +1,10 @@
-exeName = FreeFileSync_$(shell arch)
+exeName = FreeFileSync
@@ -27,18 +28,23 @@ diff -Naur 10.11-0/FreeFileSync/Source/Makefile 10.11-1/FreeFileSync/Source/Make
cxxFlags += `pkg-config --cflags openssl`
-@@ -17,6 +17,7 @@ cxxFlags += `pkg-config --cflags libssh2`
+@@ -16,9 +16,10 @@
+ cxxFlags += `pkg-config --cflags libssh2`
linkFlags += `pkg-config --libs libssh2`
-
- cxxFlags += `pkg-config --cflags gtk+-2.0`
-+linkFlags += `pkg-config --libs gtk+-2.0`
+
+-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
-
-diff -Naur 10.11-0/FreeFileSync/Source/RealTimeSync/Makefile 10.11-1/FreeFileSync/Source/RealTimeSync/Makefile
---- 10.11-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-04-12 07:59:45.008146336 -0400
-+++ 10.15-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-08-15 13:59:53.934551753 -0400
-@@ -1,13 +1,14 @@
+-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 '*.orig' -x '*.git' -x '*.rej' -x '*.swp' -Naur 11.0-0/FreeFileSync/Source/RealTimeSync/Makefile 11.0-1/FreeFileSync/Source/RealTimeSync/Makefile
+--- 11.0-0/FreeFileSync/Source/RealTimeSync/Makefile 2020-07-22 11:36:55.000000000 -0400
++++ 11.0-1/FreeFileSync/Source/RealTimeSync/Makefile 2020-07-22 13:36:32.262394424 -0400
+@@ -1,15 +1,16 @@
-exeName = RealTimeSync_$(shell arch)
+exeName = RealTimeSync
@@ -50,12 +56,16 @@ diff -Naur 10.11-0/FreeFileSync/Source/RealTimeSync/Makefile 10.11-1/FreeFileSyn
+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`
-+linkFlags += `pkg-config --libs gtk+-2.0`
+-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-2.0
++cxxFlags += -isystem/usr/include/gtk-3.0
-diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp
+ cppFiles=
+ cppFiles+=application.cpp
+iff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp
--- 10.22-0/FreeFileSync/Source/ui/small_dlgs.cpp 2020-03-18 15:49:57.837901137 -0400
+++ 10.22-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-03-18 15:51:50.381251257 -0400
@@ -97,6 +97,8 @@
@@ -67,3 +77,15 @@ diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Sou
build += SPACED_BULLET;
build += utfTo<wxString>(formatTime(formatDateTag, getCompileTime()));
+diff -x '*.orig' -x '*.git' -x '*.rej' -x '*.swp' -Naur 11.0-0/wx+/dc.h 11.0-1/wx+/dc.h
+--- 11.0-0/wx+/dc.h 2020-07-22 11:36:55.000000000 -0400
++++ 11.0-1/wx+/dc.h 2020-07-22 13:37:49.535137357 -0400
+@@ -55,7 +55,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 --git a/freefilesync/ffs_no_check_updates.patch b/freefilesync/ffs_no_check_updates.patch
index 1ef4148..62f4e7e 100644
--- a/freefilesync/ffs_no_check_updates.patch
+++ b/freefilesync/ffs_no_check_updates.patch
@@ -1,7 +1,7 @@
diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-1/FreeFileSync/Source/ui/main_dlg.cpp
--- 10.9-0/FreeFileSync/Source/ui/main_dlg.cpp 2019-02-10 22:01:42.029158919 -0500
-+++ 10.14-1/FreeFileSync/Source/ui/main_dlg.cpp 2019-07-16 10:56:40.213575535 -0400
-@@ -5298,7 +5298,7 @@
++++ 11.0-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-07-22 11:49:13.747407290 -0400
+@@ -5538,7 +5538,7 @@
globalCfg_.gui.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value!
m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.gui.lastUpdateCheck));
@@ -10,15 +10,15 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-
if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck))
{
flashStatusInformation(_("Searching for program updates..."));
-@@ -5306,6 +5306,7 @@
+@@ -5546,6 +5546,7 @@
automaticUpdateCheckEval(this, globalCfg_.gui.lastUpdateCheck, globalCfg_.gui.lastOnlineVersion,
- automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare().get()).get());
+ automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get());
}
+ */
}
-@@ -5313,7 +5314,7 @@
+@@ -5553,7 +5554,7 @@
{
//execute just once per startup!
Disconnect(wxEVT_IDLE, wxIdleEventHandler(MainDialog::OnRegularUpdateCheck), nullptr, this);
@@ -27,7 +27,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-
if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck))
{
flashStatusInformation(_("Searching for program updates..."));
-@@ -5327,6 +5328,7 @@
+@@ -5567,6 +5568,7 @@
resultAsync.get()); //run on main thread:
});
}
@@ -37,7 +37,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/main_dlg.cpp 10.14-
diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 10.14-1/FreeFileSync/Source/ui/version_check.cpp
--- 10.9-0/FreeFileSync/Source/ui/version_check.cpp 2019-02-10 22:01:42.126160041 -0500
-+++ 10.18-1/FreeFileSync/Source/ui/version_check.cpp 2019-11-20 09:19:50.936975067 -0500
++++ 11.0-1/FreeFileSync/Source/ui/version_check.cpp 2020-07-22 11:43:36.895201090 -0400
@@ -69,6 +69,8 @@
bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck)
@@ -47,7 +47,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 1
if (lastUpdateCheck == getVersionCheckInactiveId())
return false;
-@@ -156,8 +158,7 @@
+@@ -159,8 +161,7 @@
{
try
{
@@ -57,7 +57,7 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 1
updateDetailsMsg = utfTo<std::wstring>(buf);
}
catch (const zen::SysError& e) { throw FileError(_("Failed to retrieve update information."), e.toString()); }
-@@ -182,8 +183,7 @@
+@@ -189,8 +190,7 @@
std::string getOnlineVersion(const std::vector<std::pair<std::string, std::string>>& postParams) //throw SysError
{
@@ -67,21 +67,22 @@ diff --exclude '*.orig' -Naur 10.14-0/FreeFileSync/Source/ui/version_check.cpp 1
return trimCpy(response);
}
-@@ -235,13 +235,13 @@
- const std::string onlineVersion = getOnlineVersion(geHttpPostParameters()); //throw SysError
+@@ -237,13 +237,13 @@
+ const std::string onlineVersion = getOnlineVersion(geHttpPostParameters(parent)); //throw SysError
lastOnlineVersion = onlineVersion;
- if (haveNewerVersionOnline(onlineVersion))
-- showUpdateAvailableDialog(parent, onlineVersion);
+- showUpdateAvailableDialog(&parent, onlineVersion);
- else
+ //if (haveNewerVersionOnline(onlineVersion))
-+ // showUpdateAvailableDialog(parent, onlineVersion);
++ // showUpdateAvailableDialog(&parent, onlineVersion);
+ //else
- showNotificationDialog(parent, DialogInfoType::info, PopupDialogCfg().
- setIcon(getResourceImage("update_check")).
+ showNotificationDialog(&parent, DialogInfoType::info, PopupDialogCfg().
+ setIcon(loadImage("update_check")).
setTitle(_("Check for Program Updates")).
- setMainInstructions(_("FreeFileSync is up to date.")));
+ setMainInstructions(_("Use your package manager for any updates to FreeFileSync.")));
}
catch (const zen::SysError& e)
{
+
diff --git a/freefilesync/ffs_no_eraseif.patch b/freefilesync/ffs_no_eraseif.patch
index f4a7b46..71239e4 100644
--- a/freefilesync/ffs_no_eraseif.patch
+++ b/freefilesync/ffs_no_eraseif.patch
@@ -11,28 +11,28 @@ diff -x '*.swp' -x .git -x '*.orig' -x '*.rej' -Naur 10.18-1/FreeFileSync/Source
//get or create mutex
std::weak_ptr<std::mutex>& weakPtr = pathLocks[nativePath];
-diff -x '*.swp' -x '*.git*' -x '*.orig' -x '*.rej' -Naur 10.24-0/FreeFileSync/Source/afs/gdrive.cpp 10.24-1/FreeFileSync/Source/afs/gdrive.cpp
---- 10.18-0/FreeFileSync/Source/afs/gdrive.cpp 2019-11-20 16:15:55.828668123 -0500
-+++ 10.24-1/FreeFileSync/Source/afs/gdrive.cpp 2020-05-18 10:30:32.420537123 -0400
-@@ -1578,7 +1578,7 @@
+diff -Naur 10.25-0/FreeFileSync/Source/afs/gdrive.cpp 10.25-1/FreeFileSync/Source/afs/gdrive.cpp
+--- 10.25-0/FreeFileSync/Source/afs/gdrive.cpp 2020-06-19 16:17:15.000000000 -0400
++++ 10.25-1/FreeFileSync/Source/afs/gdrive.cpp 2020-06-20 20:54:52.438669026 -0400
+@@ -1930,7 +1930,7 @@
if (auto it = itemDetails_.find(itemId); it != itemDetails_.end())
{
- GoogleItemDetails detailsNew = it->second;
+ GdriveItemDetails detailsNew = it->second;
- std::erase_if(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdOld; });
+ eraseIf(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdOld; });
- notifyItemUpdate(stateDelta, itemId, detailsNew);
+ notifyItemUpdated(stateDelta, itemId, &detailsNew);
}
else //conflict!!!
-@@ -1592,7 +1592,7 @@
- GoogleItemDetails detailsNew = it->second;
- detailsNew.itemName = utfTo<std::string>(newName);
+@@ -1944,7 +1944,7 @@
+ GdriveItemDetails detailsNew = it->second;
+ detailsNew.itemName = newName;
- std::erase_if(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdFrom || id == parentIdTo; }); //
+ eraseIf(detailsNew.parentIds, [&](const std::string& id) { return id == parentIdFrom || id == parentIdTo; }); //
detailsNew.parentIds.push_back(parentIdTo); //not a duplicate
- notifyItemUpdate(stateDelta, itemId, detailsNew);
-@@ -1701,7 +1701,7 @@
+ notifyItemUpdated(stateDelta, itemId, &detailsNew);
+@@ -2095,7 +2095,7 @@
return; //=> avoid misleading changeLog_ entries after Google Drive sync!!!
//update change logs (and clean up obsolete entries)
@@ -41,7 +41,7 @@ diff -x '*.swp' -x '*.git*' -x '*.orig' -x '*.rej' -Naur 10.24-0/FreeFileSync/So
{
if (std::shared_ptr<ItemIdDelta> iid = weakPtr.lock())
{
-@@ -1722,15 +1722,15 @@
+@@ -2116,15 +2116,15 @@
std::vector<std::string> parentIdsNew = details->parentIds;
std::vector<std::string> parentIdsRemoved = it->second.parentIds;
@@ -58,9 +58,9 @@ diff -x '*.swp' -x '*.git*' -x '*.orig' -x '*.rej' -Naur 10.24-0/FreeFileSync/So
- std::erase_if(itP->second.childItems, [&](auto itChild) { return itChild == it; });
+ eraseIf(itP->second.childItems, [&](auto itChild) { return itChild == it; });
//if all parents are removed, Google Drive will (recursively) delete the item => don't prematurely do this now: wait for change notifications!
+ //OR: item without parents located in "Shared with me", but referenced via Shortcut => don't remove!!!
- it->second = *details;
-@@ -1749,7 +1749,7 @@
+@@ -2144,7 +2144,7 @@
{
for (const std::string& parentId : it->second.parentIds) //1. delete from parent folders
if (auto itP = folderContents_.find(parentId); itP != folderContents_.end())
@@ -69,8 +69,8 @@ diff -x '*.swp' -x '*.git*' -x '*.orig' -x '*.rej' -Naur 10.24-0/FreeFileSync/So
itemDetails_.erase(it);
}
-@@ -1757,7 +1757,7 @@
- if (auto itP = folderContents_.find(itemId); itP != folderContents_.end())
+@@ -2153,7 +2153,7 @@
+ itP != folderContents_.end())
{
for (auto itChild : itP->second.childItems) //2. delete as parent from child items (don't wait for change notifications of children)
- std::erase_if(itChild->second.parentIds, [&](const std::string& id) { return id == itemId; });
@@ -242,18 +242,18 @@ diff -x '*.swp' -x .git -x '*.orig' -x '*.rej' -Naur 10.18-1/FreeFileSync/Source
SetString(pos, wxString()); //in contrast to Delete(), this one does not kill the drop-down list and gives a nice visual feedback!
//Delete(pos);
-diff -x '*.swp' -x .git -x '*.orig' -x '*.rej' -Naur 10.18-1/FreeFileSync/Source/ui/file_view.cpp 10.18-2/FreeFileSync/Source/ui/file_view.cpp
---- 10.18-1/FreeFileSync/Source/ui/file_view.cpp 2019-11-20 16:15:55.849668360 -0500
-+++ 10.18-2/FreeFileSync/Source/ui/file_view.cpp 2019-11-20 17:57:30.562558429 -0500
-@@ -253,7 +253,7 @@
- rowPositionsFirstChild_.clear();
-
+diff -Naur 10.25-0/FreeFileSync/Source/ui/file_view.cpp 10.25-1/FreeFileSync/Source/ui/file_view.cpp
+--- 10.25-0/FreeFileSync/Source/ui/file_view.cpp 2020-06-19 16:17:15.000000000 -0400
++++ 10.25-1/FreeFileSync/Source/ui/file_view.cpp 2020-06-20 20:55:25.978009894 -0400
+@@ -321,7 +321,7 @@
+ void FileView::removeInvalidRows()
+ {
//remove rows that have been deleted meanwhile
-- std::erase_if(sortedRef_, [&](const RefIndex& refIdx) { return !FileSystemObject::retrieve(refIdx.objId); });
-+ eraseIf(sortedRef_, [&](const RefIndex& refIdx) { return !FileSystemObject::retrieve(refIdx.objId); });
- }
-
+- std::erase_if(sortedRef_, [&](const FileSystemObject::ObjectId& objId) { return !FileSystemObject::retrieve(objId); });
++ eraseIf(sortedRef_, [&](const FileSystemObject::ObjectId& objId) { return !FileSystemObject::retrieve(objId); });
+ viewRef_ .clear();
+ rowPositions_ .clear();
diff -x '*.swp' -x .git -x '*.orig' -x '*.rej' -Naur 10.18-1/FreeFileSync/Source/ui/folder_history_box.h 10.18-2/FreeFileSync/Source/ui/folder_history_box.h
--- 10.18-1/FreeFileSync/Source/ui/folder_history_box.h 2019-11-20 16:15:55.849668360 -0500
+++ 10.18-2/FreeFileSync/Source/ui/folder_history_box.h 2019-11-20 17:57:30.562558429 -0500
diff --git a/freefilesync/ffs_no_wx311.patch b/freefilesync/ffs_no_wx311.patch
index f617122..22d8260 100644
--- a/freefilesync/ffs_no_wx311.patch
+++ b/freefilesync/ffs_no_wx311.patch
@@ -1,11 +1,21 @@
2019-08-15 just compile.
-diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp
---- 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 2019-12-27 07:56:06.714625467 -0500
-+++ 10.19-1/FreeFileSync/Source/ui/small_dlgs.cpp 2019-12-27 08:41:43.498308243 -0500
-@@ -1546,7 +1546,7 @@
+diff -Naur 10.25-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.25-1/FreeFileSync/Source/ui/small_dlgs.cpp
+--- 10.25-0/FreeFileSync/Source/ui/small_dlgs.cpp 2020-06-19 16:17:15.000000000 -0400
++++ 11.0-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-07-22 11:39:25.820068366 -0400
+@@ -293,7 +293,8 @@
+ {
+ showNotificationDialog(this, DialogInfoType::error, PopupDialogCfg().setDetailInstructions(e.toString()));
+ }
+- m_listBoxGdriveUsers->Append(gdriveAccounts);
++ for (const wxString& item : gdriveAccounts) // reverted to pre-wx 3.1.1 logic
++ m_listBoxGdriveUsers->Append(item);
+
+ //set default values for Google Drive: use first item of m_listBoxGdriveUsers
+ if (!gdriveAccounts.empty() && !acceptsItemPathPhraseGdrive(folderPathPhrase))
+@@ -1682,7 +1683,7 @@
//setMainInstructionFont(*m_staticTextMain);
- m_bitmapActivation->SetBitmap(getResourceImage("internet"));
+ m_bitmapActivation->SetBitmap(loadImage("internet"));
- m_textCtrlOfflineActivationKey->ForceUpper();
+ //m_textCtrlOfflineActivationKey->ForceUpper();
diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec
index 914c333..030b863 100644
--- a/freefilesync/freefilesync.spec
+++ b/freefilesync/freefilesync.spec
@@ -19,7 +19,7 @@
%define libssh2_name libssh2-%{name}
%endif
Name: freefilesync
-Version: 10.24
+Version: 11.0
Release: 1%{?dist}
Summary: A file synchronization utility
@@ -45,8 +45,8 @@ Patch9: ffs_no_eraseif.patch
Patch10: revert_zenju_aggressive_upstreamisms.patch
Packager: B Stack <bgstack15@gmail.com>
-# WARNING: the build will FAIL if you have wxGTK3-devel installed. Only wxGTK2-devel should be on the build system.
-BuildRequires: compat-wxGTK3-gtk2-devel
+BuildRequires: brotli-devel
+BuildRequires: wxGTK3-devel
BuildRequires: desktop-file-utils
BuildRequires: gcc-c++
BuildRequires: ImageMagick
@@ -57,7 +57,6 @@ BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: pkgconfig(libselinux)
BuildRequires: pkgconfig(zlib)
%if 0%{?el6}%{?el7}
-BuildRequires: wxGTK-devel
BuildRequires: %{scl_buildreq}
BuildRequires: openssl-%{name}-devel %{min_openssl}
Requires: libcurl %{min_libcurl}
@@ -112,6 +111,7 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \
-i %{pkgname}/Source/Makefile %{pkgname}/Source/%{prog2name}/Makefile
%build
+export TMPDIR=/tmp # necessary since 11.0
%if !%{dummy_package}
%if "%{?scl_env}" != ""
scl enable %{scl_env} /bin/bash << 'EOFSCL'
@@ -124,6 +124,7 @@ EOFSCL
%endif
%install
+export TMPDIR=/tmp # necessary since 11.0
%if !%{dummy_package}
# removed by upstream!
#%%make_install -C %%{pkgname}/Source
@@ -205,6 +206,15 @@ update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & :
%ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml
%changelog
+* Wed Jul 22 2020 B Stack <bgstack15@gmail.com> - 11.0-1
+- version bump
+- use gtk3
+- el6,7,8 and fc31 packages are becoming stale
+
+* Sun Jun 21 2020 B Stack <bgstack15@gmail.com> - 10.25-1
+- version bump
+- el6,7,8 and fc31 packages not built because upstream requires g++-10
+
* Mon May 18 2020 B Stack <bgstack15@gmail.com> - 10.24-1
- version bump
- add revert_zenju_aggressive_upstreamisms.patch
diff --git a/freefilesync/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/revert_zenju_aggressive_upstreamisms.patch
index 0da4e06..522080d 100644
--- a/freefilesync/revert_zenju_aggressive_upstreamisms.patch
+++ b/freefilesync/revert_zenju_aggressive_upstreamisms.patch
@@ -1,8 +1,8 @@
Author: Ben Stack <bgstack15@gmail.com>
-Date: 2020-05-17 14:11 -0400
+Date: 2020-06-21 16:45 -0400
Message: Use the following command to get this old contents. Zenju must be using some newer definition of -std=c++2a than what Devuan Ceres provides as of 2020-05-17, and probably wxwidgets. This is the 10.23 code for these files.
- git checkout b4ecf755 zen/legacy_compiler.h zen/string_base.h wx+/choice_enum.h
+ git checkout b4ecf755 wx+/choice_enum.h
Unfortunately with the removal of the wxWidgets-gtk2 code from Debian, we are stuck using all available at approximately November 1, 2019 snapshot of Debian: https://snapshot.debian.org/archive/debian/20191101T211023Z/pool/main/w/wxwidgets3.0/
libwxbase3.0-0v5_3.0.4+dfsg-14_amd64.deb
@@ -16,169 +16,6 @@ libwxgtk3.0-dev_3.0.4+dfsg-14_i386.deb
wx3.0-headers_3.0.4+dfsg-14_all.deb
wx-common_3.0.4+dfsg-14_amd64.deb
wx-common_3.0.4+dfsg-14_i386.deb
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/zen/legacy_compiler.h 10.24-1/zen/legacy_compiler.h
---- 10.24-0/zen/legacy_compiler.h 2020-05-17 13:44:27.542140458 -0400
-+++ 10.24-1/zen/legacy_compiler.h 2020-05-17 14:07:49.115166339 -0400
-@@ -7,9 +7,6 @@
- #ifndef LEGACY_COMPILER_H_839567308565656789
- #define LEGACY_COMPILER_H_839567308565656789
-
-- #include <numbers> //C++20
--
-- #include <span> //requires C++20
-
-
-
-@@ -21,8 +18,53 @@
-
- //---------------------------------------------------------------------------------
-
-+#if __cpp_lib_span
-+ #error get rid of workaround:
-+#endif
-+
-+template <class T>
-+class span
-+{
-+public:
-+ template <class Iterator>
-+ span(Iterator first, Iterator last) : size_(last - first), data_(first != last ? &*first : nullptr) {}
-+
-+ template <class Container>
-+ span(Container& cont) : span(cont.begin(), cont.end()) {}
-+
-+ using iterator = T*;
-+ using const_iterator = const T*;
-+
-+ iterator begin() { return data_; }
-+ iterator end () { return data_ + size_; }
-+
-+ const_iterator begin() const { return data_; }
-+ const_iterator end () const { return data_ + size_; }
-
-+ const_iterator cbegin() const { return begin(); }
-+ const_iterator cend () const { return end (); }
-
-+ T* data() const { return data_; }
-+ size_t size() const { return size_; }
-+ bool empty() const { return size_ == 0; }
-+
-+private:
-+ const size_t size_;
-+ T* const data_;
-+};
-+
-+
-+#if __cpp_lib_math_constants
-+ #error get rid of workaround:
-+#endif
-+
-+namespace numbers
-+{
-+const double pi = 3.14159265358979323846;
-+const double e = 2.71828182845904523536;
-+const double sqrt2 = 1.41421356237309504880;
-+const double ln2 = 0.693147180559945309417;
-+}
- }
-
-
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/zen/string_base.h 10.24-1/zen/string_base.h
---- 10.24-0/zen/string_base.h 2020-05-17 13:44:27.554140569 -0400
-+++ 10.24-1/zen/string_base.h 2020-05-17 14:09:44.164244361 -0400
-@@ -12,7 +12,9 @@
- #include <cstdint>
- #include <atomic>
- #include "string_tools.h"
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
- #include <compare>
-+#endif
-
-
- //Zbase - a policy based string class optimizing performance and flexibility
-@@ -293,15 +295,29 @@
- };
-
-
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
-+ #error implement!
-+#endif
-+
-
- template <class Char, template <class> class SP> bool operator==(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs);
- template <class Char, template <class> class SP> bool operator==(const Zbase<Char, SP>& lhs, const Char* rhs);
- template <class Char, template <class> class SP> inline bool operator==(const Char* lhs, const Zbase<Char, SP>& rhs) { return operator==(rhs, lhs); }
-
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
- template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs);
- template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Char* rhs);
- template <class Char, template <class> class SP> std::strong_ordering operator<=>(const Char* lhs, const Zbase<Char, SP>& rhs);
-
-+#else
-+template <class Char, template <class> class SP> inline bool operator!=(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) { return !operator==(lhs, rhs); }
-+template <class Char, template <class> class SP> inline bool operator!=(const Zbase<Char, SP>& lhs, const Char* rhs) { return !operator==(lhs, rhs); }
-+template <class Char, template <class> class SP> inline bool operator!=(const Char* lhs, const Zbase<Char, SP>& rhs) { return !operator==(lhs, rhs); }
-+
-+template <class Char, template <class> class SP> bool operator<(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs);
-+template <class Char, template <class> class SP> bool operator<(const Zbase<Char, SP>& lhs, const Char* rhs);
-+template <class Char, template <class> class SP> bool operator<(const Char* lhs, const Zbase<Char, SP>& rhs);
-+#endif
-
- template <class Char, template <class> class SP> inline Zbase<Char, SP> operator+(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs) { return Zbase<Char, SP>(lhs) += rhs; }
- template <class Char, template <class> class SP> inline Zbase<Char, SP> operator+(const Zbase<Char, SP>& lhs, const Char* rhs) { return Zbase<Char, SP>(lhs) += rhs; }
-@@ -482,11 +498,12 @@
- }
-
-
-+#if __cpp_impl_three_way_comparison && __cpp_lib_three_way_comparison
- template <class Char, template <class> class SP> inline
- std::strong_ordering operator<=>(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs)
- {
-- return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0
-- rhs.begin(), rhs.end()); //
-+ return std::lexicographical_compare_three_way(lhs.begin(), lhs.end(), //respect embedded 0
-+ rhs.begin(), rhs.end());
- }
-
-
-@@ -501,11 +518,35 @@
- template <class Char, template <class> class SP> inline
- std::strong_ordering operator<=>(const Char* lhs, const Zbase<Char, SP>& rhs)
- {
-- return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs),
-- rhs.begin(), rhs.end()); //respect embedded 0
-+ return std::lexicographical_compare_three_way(lhs, lhs + strLength(lhs), //respect embedded 0
-+ rhs.begin(), rhs.end());
-+}
-+
-+#else
-+template <class Char, template <class> class SP> inline
-+bool operator<(const Zbase<Char, SP>& lhs, const Zbase<Char, SP>& rhs)
-+{
-+ return std::lexicographical_compare(lhs.begin(), lhs.end(), //respect embedded 0
-+ rhs.begin(), rhs.end());
- }
-
-
-+template <class Char, template <class> class SP> inline
-+bool operator<(const Zbase<Char, SP>& lhs, const Char* rhs)
-+{
-+ return std::lexicographical_compare(lhs.begin(), lhs.end(), //respect embedded 0
-+ rhs, rhs + strLength(rhs));
-+}
-+
-+
-+template <class Char, template <class> class SP> inline
-+bool operator<(const Char* lhs, const Zbase<Char, SP>& rhs)
-+{
-+ return std::lexicographical_compare(lhs, lhs + strLength(lhs), //respect embedded 0
-+ rhs.begin(), rhs.end());
-+}
-+#endif
-+
-
- template <class Char, template <class> class SP> inline
- size_t Zbase<Char, SP>::length() const
diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/wx+/choice_enum.h 10.24-1/wx+/choice_enum.h
--- 10.24-0/wx+/choice_enum.h 2020-05-17 18:30:59.441499418 -0400
+++ 10.24-1/wx+/choice_enum.h 2020-05-17 18:53:59.893685507 -0400
bgstack15