From acf7cca2519e8339cf99adad3eb6188eaa65b6bf518503152dd798d8e20c1b59 Mon Sep 17 00:00:00 2001 From: Eric Schirra Date: Thu, 6 Aug 2020 11:13:05 +0000 Subject: [PATCH] Accepting request 824675 from home:seil0:branches:network - Update to 11.0 - 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) OBS-URL: https://build.opensuse.org/request/show/824675 OBS-URL: https://build.opensuse.org/package/show/network/FreeFileSync?expand=0&rev=34 --- FreeFileSync-Build.patch | 79 +++++++++++++++++++++ FreeFileSync-Resources.patch | 12 ++++ FreeFileSync.changes | 25 +++++++ FreeFileSync.spec | 128 ++++++++++++++--------------------- FreeFileSync_10.7_Source.zip | 3 - FreeFileSync_11.0_Source.zip | 3 + freefilesync-build.patch | 52 -------------- 7 files changed, 169 insertions(+), 133 deletions(-) create mode 100644 FreeFileSync-Build.patch create mode 100644 FreeFileSync-Resources.patch delete mode 100644 FreeFileSync_10.7_Source.zip create mode 100644 FreeFileSync_11.0_Source.zip delete mode 100644 freefilesync-build.patch diff --git a/FreeFileSync-Build.patch b/FreeFileSync-Build.patch new file mode 100644 index 0000000..3c0cc87 --- /dev/null +++ b/FreeFileSync-Build.patch @@ -0,0 +1,79 @@ +diff -ruN FreeFileSync_11.0_Source_orig/FreeFileSync/Source/Makefile FreeFileSync_11.0_Source/FreeFileSync/Source/Makefile +--- FreeFileSync_11.0_Source_orig/FreeFileSync/Source/Makefile 2020-07-22 13:22:18.000000000 +0200 ++++ FreeFileSync_11.0_Source/FreeFileSync/Source/Makefile 2020-08-05 12:22:18.001794429 +0200 +@@ -2,9 +2,9 @@ + + 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 ++ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread -fpie + +-linkFlags = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++linkFlags = -s `wx-config --libs std, aui --debug=no` -pthread -lz -pie + + + cxxFlags += `pkg-config --cflags openssl` +@@ -17,6 +17,7 @@ + linkFlags += `pkg-config --libs libssh2` + + 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 -ruN FreeFileSync_11.0_Source_orig/FreeFileSync/Source/RealTimeSync/Makefile FreeFileSync_11.0_Source/FreeFileSync/Source/RealTimeSync/Makefile +--- FreeFileSync_11.0_Source_orig/FreeFileSync/Source/RealTimeSync/Makefile 2020-07-22 13:22:18.000000000 +0200 ++++ FreeFileSync_11.0_Source/FreeFileSync/Source/RealTimeSync/Makefile 2020-08-05 12:22:00.473864076 +0200 +@@ -2,12 +2,13 @@ + + 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 ++ -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread -fpie + +-linkFlags = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++linkFlags = -s `wx-config --libs std, aui --debug=no` -pthread -lz -pie + + #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 -ruN FreeFileSync_11.0_Source_orig/libssh2/libssh2_wrap.h FreeFileSync_11.0_Source/libssh2/libssh2_wrap.h +--- FreeFileSync_11.0_Source_orig/libssh2/libssh2_wrap.h 2020-07-22 13:22:20.000000000 +0200 ++++ FreeFileSync_11.0_Source/libssh2/libssh2_wrap.h 2020-08-04 11:35:17.919354168 +0200 +@@ -20,6 +20,22 @@ + #error libssh2_sftp.h header guard changed + #endif + ++// fix some build errors ++/* MAX_SFTP_READ_SIZE is how much data is asked for at max in each FXP_READ ++ * packets. ++ */ ++#ifndef MAX_SFTP_READ_SIZE ++#define MAX_SFTP_READ_SIZE 30000 ++#endif ++ ++/* ++ * MAX_SFTP_OUTGOING_SIZE MUST not be larger than 32500 or so. This is the ++ * amount of data sent in each FXP_WRITE packet ++ */ ++#ifndef MAX_SFTP_OUTGOING_SIZE ++#define MAX_SFTP_OUTGOING_SIZE 30000 ++#endif ++ + //fix libssh2 64-bit warning mess: https://github.com/libssh2/libssh2/pull/96 + #undef libssh2_userauth_password + inline int libssh2_userauth_password(LIBSSH2_SESSION* session, const std::string& username, const std::string& password) +diff -ruN FreeFileSync_11.0_Source_orig/zen/ring_buffer.h FreeFileSync_11.0_Source/zen/ring_buffer.h +--- FreeFileSync_11.0_Source_orig/zen/ring_buffer.h 2020-07-22 13:22:20.000000000 +0200 ++++ FreeFileSync_11.0_Source/zen/ring_buffer.h 2020-08-04 11:35:36.075289535 +0200 +@@ -8,6 +8,7 @@ + #define RING_BUFFER_H_01238467085684139453534 + + #include ++#include + #include "scope_guard.h" + + diff --git a/FreeFileSync-Resources.patch b/FreeFileSync-Resources.patch new file mode 100644 index 0000000..0af23aa --- /dev/null +++ b/FreeFileSync-Resources.patch @@ -0,0 +1,12 @@ +--- FreeFileSync_11.0_Source_orig/FreeFileSync/Source/ffs_paths.cpp 2020-07-22 13:22:20.000000000 +0200 ++++ FreeFileSync_11.0_Source/FreeFileSync/Source/ffs_paths.cpp 2020-08-04 15:21:24.667813874 +0200 +@@ -64,7 +64,8 @@ + + Zstring fff::getResourceDirPf() + { +- return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR; ++ // for opensuse install to /usr/share/FreeFileSync specificly ++ return Zstr("/usr/share/FreeFileSync/"); + } + + diff --git a/FreeFileSync.changes b/FreeFileSync.changes index 45bdfbf..8d68e04 100644 --- a/FreeFileSync.changes +++ b/FreeFileSync.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Wed Aug 5 10:00:02 UTC 2020 - Jannik Seiler + +- Update to 11.0 + - 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) + ------------------------------------------------------------------- Mon Dec 31 14:15:04 UTC 2018 - thomasglatt@gmx.de diff --git a/FreeFileSync.spec b/FreeFileSync.spec index 5fdf4bb..803b222 100644 --- a/FreeFileSync.spec +++ b/FreeFileSync.spec @@ -1,7 +1,7 @@ # # spec file for package FreeFileSync # -# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,33 +12,33 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # + Name: FreeFileSync +Version: 11.0 +Release: 0 Summary: Free backup software to synchronize files and folders -Version: 10.7 -Release: 1 -License: GPL-3.0+ +License: GPL-3.0-or-later Group: Productivity/Networking/System -Url: http://www.freefilesync.org/ -Source0: http://sourceforge.net/projects/freefilesync/files/%{name}/%{version}/%{name}_%{version}_Source.zip +URL: https://www.freefilesync.org/ +Source0: https://freefilesync.org/download/%{name}_%{version}_Source.zip Source1: %{name}.desktop Source2: %{name}.png Source3: RealTimeSync.desktop Source4: RealTimeSync.png -Patch: freefilesync-build.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: unzip +Patch0: FreeFileSync-Build.patch +Patch1: FreeFileSync-Resources.patch BuildRequires: boost-devel >= 1.54 -BuildRequires: wxWidgets-3_2-devel -BuildRequires: update-desktop-files -#%if 0%{?suse_version} <= 1500 -# FreeFileSync requires C++17 support. -#BuildRequires: gcc8-c++ -#%else BuildRequires: gcc-c++ -#%endif +BuildRequires: libstdc++6 >= 10.0.0 +BuildRequires: libcurl-devel +BuildRequires: libopenssl-devel +BuildRequires: libssh2-devel +BuildRequires: unzip +BuildRequires: update-desktop-files +BuildRequires: wxWidgets-3_2-devel %description FreeFileSync is a free Open Source software that helps you synchronize files @@ -48,7 +48,7 @@ your time setting up and running backup jobs while having nice visual feedback a %package -n RealtimeSync Summary: Free backup software to synchronize files and folders Group: Productivity/Networking/System -Requires: %{name} = %{version}-%{release} +Requires: %{name} = %{version}-%{release} %description -n RealtimeSync The primary purpose of RealtimeSync is to execute a command line each time it detects changes @@ -56,71 +56,45 @@ in one of the monitored directories or when a directory becomes available (e. g. Usually this command line will trigger a FreeFileSync batch job. %prep -%setup -c %{name}-%{version} +%setup -q -c %{name}-%{version} sed -i 's/\r$//' License.txt -chmod -x License.txt -# Fix for false Makefile -# mv Changelog.txt FreeFileSync/Build/ +#chmod -x License.txt mkdir FreeFileSync/Build/Bin -%patch -p1 +%patch0 -p1 +%patch1 -p1 %build -# -#%if 0%{?suse_version} <= 1500 -#export CC="gcc-8" -#export CXX="g++-8" -# Default ABI through G++4.9, thus the one wxWidgets uses. +export TMPDIR=/tmp # necessary since 11.0 export CXXFLAGS="%{optflags} -fabi-version=2 -fabi-compat-version=2" -#%else export CC="gcc" export CXX="g++" -#%endif -# -pushd %{name}/Source -# Add -lz to LINKFLAGS for proper compilation -#sed -i -e 's:CPP_FILES=:LINKFLAGS += -lz\n\n CPP_FILES=:g' Makefile - -#%if 0%{?suse_version} <= 1500 -#sed -i -e 's:g++:g++-8:g' Makefile -#sed -i -e 's:CXXFLAGS =:CXXFLAGS +=:g' Makefile -#%else -#sed -i -e 's:g++:g++:g' Makefile -#%endif - -make %{?_smp_mflags} BUILD=FreeFileSync -popd -pushd %{name}/Source/RealTimeSync -#%if 0%{?suse_version} <= 1500 -#sed -i -e 's:g++:g++-8:g' Makefile -#sed -i -e 's:CXXFLAGS =:CXXFLAGS +=:g' Makefile -#%else -#sed -i -e 's:g++:g++:g' Makefile -#%endif -make %{?_smp_mflags} BUILD=RealTimeSync -popd +%make_build -C %{name}/Source exeName=FreeFileSync +%make_build -C %{name}/Source/RealTimeSync exeName=RealTimeSync %install -pushd %{name}/Source -%make_install +# FreeFileSync +pushd %{name}/Build +mkdir -p %{buildroot}%{_bindir} +install -t %{buildroot}%{_bindir} Bin/%{name} + +mkdir -p %{buildroot}%{_datadir}/%{name} +cp -rT Resources %{buildroot}%{_datadir}/%{name} + +find "%{buildroot}%{_datadir}/%{name}" -type f -print0 | xargs -0 chmod 644 +#%%make_install + +# RealTimeSync +mkdir -p %{buildroot}%{_bindir} +install -t %{buildroot}%{_bindir} Bin/RealTimeSync +#%%make_install popd -pushd %{name}/Source/RealTimeSync -%make_install -popd -# del unneeded changelog.gz -rm -r ${RPM_BUILD_ROOT}%{_datadir}/doc/%{name} -chmod -x ${RPM_BUILD_ROOT}%{_datadir}/%{name}/Languages/*.lng -sed -i 's/\r$//' ${RPM_BUILD_ROOT}%{_datadir}/%{name}/Languages/*.lng -#chmod -x ${RPM_BUILD_ROOT}%{_datadir}/%{name}/Help/html/*.html -#chmod -x ${RPM_BUILD_ROOT}%{_datadir}/%{name}/Help/html/*.css -#chmod -x ${RPM_BUILD_ROOT}%{_datadir}/%{name}/Help/FreeFileSync.hh* -chmod -x ${RPM_BUILD_ROOT}%{_datadir}/%{name}/Resources.zip # desktop -mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/pixmaps -install -p %{SOURCE2} ${RPM_BUILD_ROOT}%{_datadir}/pixmaps/ -install -p %{SOURCE4} ${RPM_BUILD_ROOT}%{_datadir}/pixmaps/ -%suse_update_desktop_file -i %name +mkdir -p %{buildroot}%{_datadir}/pixmaps +install -p %{SOURCE2} %{buildroot}%{_datadir}/pixmaps/ +install -p %{SOURCE4} %{buildroot}%{_datadir}/pixmaps/ +%suse_update_desktop_file -i %{name} %suse_update_desktop_file -i RealTimeSync %post @@ -129,20 +103,18 @@ install -p %{SOURCE4} ${RPM_BUILD_ROOT}%{_datadir}/pixmaps/ %postun %desktop_database_postun -%clean -rm -rf %{buildroot} - %files -%defattr(-,root,root,-) -%doc License.txt +%license %attr(444, -, -) License.txt +%doc %attr(444, -, -) Changelog.txt %{_bindir}/%{name} -%{_datadir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/pixmaps/%{name}.png +%{_datadir}/%{name}/* +%dir %{_datadir}/%{name} %files -n RealtimeSync -%defattr(-,root,root,-) -%doc License.txt +%license %attr(444, -, -) License.txt +%doc %attr(444, -, -) Changelog.txt %{_bindir}/RealTimeSync %{_datadir}/applications/RealTimeSync.desktop %{_datadir}/pixmaps/RealTimeSync.png diff --git a/FreeFileSync_10.7_Source.zip b/FreeFileSync_10.7_Source.zip deleted file mode 100644 index b481dc5..0000000 --- a/FreeFileSync_10.7_Source.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9291121b00e6dfab7836ada9bb5d92c38b4200d9577dc4a5c336899ebcc06488 -size 2204542 diff --git a/FreeFileSync_11.0_Source.zip b/FreeFileSync_11.0_Source.zip new file mode 100644 index 0000000..9c88544 --- /dev/null +++ b/FreeFileSync_11.0_Source.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:361bab0798811764701cfda297c2031b9decb04bb2e434ec8fe80ba8cc01e56a +size 2508996 diff --git a/freefilesync-build.patch b/freefilesync-build.patch deleted file mode 100644 index c58636c..0000000 --- a/freefilesync-build.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff -Naur FreeFileSync_10.7_Source_orig/FreeFileSync/Source/base/ffs_paths.cpp FreeFileSync_10.7_Source/FreeFileSync/Source/base/ffs_paths.cpp ---- FreeFileSync_10.7_Source_orig/FreeFileSync/Source/base/ffs_paths.cpp 2018-12-12 15:02:09.000000000 +0100 -+++ FreeFileSync_10.7_Source/FreeFileSync/Source/base/ffs_paths.cpp 2018-12-20 12:13:14.605211463 +0100 -@@ -65,10 +65,10 @@ - wxTheApp->SetAppName(L"FreeFileSync"); - ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); - -- //if (isPortableVersion()) -- return appendSeparator(getExeFolderParentPath()); -- //else //use OS' standard paths -- // return appendSeparator(utfTo(wxStandardPathsBase::Get().GetResourcesDir())); -+ if (isPortableVersion()) -+ return appendSeparator(getExeFolderParentPath()); -+ else //use OS' standard paths -+ return appendSeparator(utfTo(wxStandardPathsBase::Get().GetResourcesDir())); - } - - -diff -Naur FreeFileSync_10.7_Source_orig/FreeFileSync/Source/Makefile FreeFileSync_10.7_Source/FreeFileSync/Source/Makefile ---- FreeFileSync_10.7_Source_orig/FreeFileSync/Source/Makefile 2018-12-12 15:02:08.000000000 +0100 -+++ FreeFileSync_10.7_Source/FreeFileSync/Source/Makefile 2018-12-20 12:10:16.308972137 +0100 -@@ -9,7 +9,7 @@ - -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` -pthread -lz - - #Gtk - support recycler/icon loading/no button border/grid scrolling - CXXFLAGS += `pkg-config --cflags gtk+-2.0` -diff -Naur FreeFileSync_10.7_Source_orig/zen/ring_buffer.h FreeFileSync_10.7_Source/zen/ring_buffer.h ---- FreeFileSync_10.7_Source_orig/zen/ring_buffer.h 2018-12-12 15:02:08.000000000 +0100 -+++ FreeFileSync_10.7_Source/zen/ring_buffer.h 2018-12-20 12:08:37.499068156 +0100 -@@ -8,6 +8,7 @@ - #define RING_BUFFER_H_01238467085684139453534 - - #include -+#include - #include "scope_guard.h" - - -diff -Naur FreeFileSync_10.7_Source_orig/zen/serialize.h FreeFileSync_10.7_Source/zen/serialize.h ---- FreeFileSync_10.7_Source_orig/zen/serialize.h 2018-12-12 15:02:08.000000000 +0100 -+++ FreeFileSync_10.7_Source/zen/serialize.h 2018-12-20 12:08:48.938825488 +0100 -@@ -9,6 +9,7 @@ - - #include - #include -+#include - #include "string_base.h" - //keep header clean from specific stream implementations! (e.g.file_io.h)! used by abstract.h! -