diff options
Diffstat (limited to 'freefilesync')
28 files changed, 574 insertions, 224 deletions
diff --git a/freefilesync/.gitignore b/freefilesync/.gitignore new file mode 100644 index 0000000..10d00b5 --- /dev/null +++ b/freefilesync/.gitignore @@ -0,0 +1 @@ +*.gz diff --git a/freefilesync/FreeFileSync.desktop b/freefilesync/FreeFileSync.desktop index 534dd79..8e1163e 100644 --- a/freefilesync/FreeFileSync.desktop +++ b/freefilesync/FreeFileSync.desktop @@ -5,7 +5,8 @@ GenericName[pt_BR]=Sincronização de arquivos Comment=Backup software to synchronize files and folders Comment[pt_BR]=Aplicação de backup para sincronizar arquivos e diretórios Exec=FreeFileSync -Icon=freefilesync +Icon=FreeFileSync +Path=/usr/share/freefilesync Terminal=false Type=Application StartupNotify=true diff --git a/freefilesync/README-freefilesync.md b/freefilesync/README-freefilesync.md new file mode 100644 index 0000000..02d0505 --- /dev/null +++ b/freefilesync/README-freefilesync.md @@ -0,0 +1,25 @@ +# Summary for CentOS 7 compilation of freefilesync + +### Dependencies to build FreeFileSync on CentOS 7 +All of the packages in the next section, and also +* devtoolset-7 [Software Collections (SCL)][3] +* custom patches provided in this repo. + +### Sources of the bgstack15/FreeFileSync copr packages +Custom packages: +* openssl: [bgstack15][1] +* libssh2: [city-fan][2] +* curl: city-fan +* libmetalink: city-fan +* libpsl: city-fan + +# Credits +This package, freefilesync, is made possible by the concerted efforts of many people and groups +* Zenju, author of the upstream project [FreeFileSync](http://freefilesync.org) +* [PhantomX](https://github.com/PhantomX/)/chinforpms [freefilesync spec](https://github.com/PhantomX/chinforpms/tree/master/freefilesync) +* My [original freefilesync spec](https://gitlab.com/bgstack15/freefilesync-rpm/) + +# References +[1][https://bgstack15.wordpress.com] +[2][http://www.city-fan.org/ftp/contrib/yum-repo/] +[3][https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/] diff --git a/freefilesync/RealTimeSync.desktop b/freefilesync/RealTimeSync.desktop index dc1cfdf..0a94126 100644 --- a/freefilesync/RealTimeSync.desktop +++ b/freefilesync/RealTimeSync.desktop @@ -6,6 +6,7 @@ Comment=Real time synchronization Comment[pt_BR]=Sincronização em tempo real Exec=RealTimeSync Icon=RealTimeSync +Path=/usr/share/freefilesync Terminal=false Type=Application StartupNotify=true diff --git a/freefilesync/credits.md b/freefilesync/credits.md deleted file mode 100644 index 8a92965..0000000 --- a/freefilesync/credits.md +++ /dev/null @@ -1,4 +0,0 @@ -This package, freefilesync, is made possible by the concerted efforts of many people and groups -* Zenju, author of the upstream project [FreeFileSync](http://freefilesync.org) -* [PhantomX](https://github.com/PhantomX/)/chinforpms [freefilesync spec](https://github.com/PhantomX/chinforpms/tree/master/freefilesync) -* My [original freefilesync spec](https://gitlab.com/bgstack15/freefilesync-rpm/) diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog index 4c1d7e8..914b53d 100644 --- a/freefilesync/debian/changelog +++ b/freefilesync/debian/changelog @@ -1,5 +1,30 @@ +freefilesync (10.9-1devuan) manual; urgency=low + + * Added FTP, SFTP, Google Drive support for Linux + * FreeFileSync Donation Edition available for Linux + * Compress file stream during Google Drive upload + * Navigate beyond access-denied parents in SFTP folder picker + * Fixed unexpected stream size error during FTP upload + * Support native recursive deletion for Google Drive + * Support native recursive deletion for MTP + * Deterministically save Google Drive state during exit + * Work around missing TMPDIR variable (Linux) + * Support SFTP servers returning large package sizes during folder reading + * Start with home path when using SFTP folder picker + * Aggregate device authentication prompts during comparison + * Clean up temp file after unexpected stream size error + * Work around FTP servers not supporting HELP command + * Support parsing path by volume name when volume is missing + * Parse and streamline Google Drive error messages + * Load next item after deleting from config history + * Avoid redundant Google Drive syncs after file/folder creation + * Avoid duplicate MTP item creation by multiple threads + + -- B Stack <bgstack15@gmail.com> Thu, 14 Feb 2019 10:46:09 -0500 + freefilesync (10.8-1devuan) manual; urgency=low * Initial release. -- B Stack <bgstack15@gmail.com> Tue, 29 Jan 2019 09:20:41 -0500 + diff --git a/freefilesync/debian/control b/freefilesync/debian/control index 4af779c..1fb280c 100644 --- a/freefilesync/debian/control +++ b/freefilesync/debian/control @@ -4,12 +4,15 @@ Priority: optional Maintainer: B Stack <bgstack15@gmail.com> Build-Depends: debhelper (>=11~), autotools-dev, - libwxgtk3.0-dev, - wx3.0-headers, imagemagick, - libboost-thread-dev (>= 1.46), libboost-system-dev (>= 1.46), + libboost-thread-dev (>= 1.46), + libcurl4-openssl-dev, libgtk2.0-dev, + libssh2-1-dev, + libssl-dev, + libwxgtk3.0-dev, + wx3.0-headers, Standards-Version: 4.1.4 Homepage: https://freefilesync.org/ diff --git a/freefilesync/debian/files b/freefilesync/debian/files index ad90091..c26d041 100644 --- a/freefilesync/debian/files +++ b/freefilesync/debian/files @@ -1,2 +1,2 @@ -freefilesync_10.8-1devuan_amd64.buildinfo utils optional -freefilesync_10.8-1devuan_amd64.deb utils optional +freefilesync_10.9-1devuan_amd64.buildinfo utils optional +freefilesync_10.9-1devuan_amd64.deb utils optional diff --git a/freefilesync/debian/freefilesync.debhelper.log b/freefilesync/debian/freefilesync.debhelper.log deleted file mode 100644 index 278d5fc..0000000 --- a/freefilesync/debian/freefilesync.debhelper.log +++ /dev/null @@ -1,3 +0,0 @@ -override_dh_auto_install dh_auto_install -override_dh_auto_install dh_auto_install -override_dh_auto_install dh_auto_install diff --git a/freefilesync/debian/freefilesync.substvars b/freefilesync/debian/freefilesync.substvars index d4fe8de..fad364f 100644 --- a/freefilesync/debian/freefilesync.substvars +++ b/freefilesync/debian/freefilesync.substvars @@ -1,3 +1,3 @@ -shlibs:Depends=libatk1.0-0 (>= 1.12.4), libc6 (>= 2.28), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.14.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpangoft2-1.0-0 (>= 1.14.0), libselinux1 (>= 1.32), libstdc++6 (>= 7), libwxbase3.0-0v5 (>= 3.0.4+dfsg), libwxgtk3.0-0v5 (>= 3.0.4+dfsg), zlib1g (>= 1:1.2.0) +shlibs:Depends=libatk1.0-0 (>= 1.12.4), libc6 (>= 2.28), libcairo2 (>= 1.2.4), libcurl4 (>= 7.16.2), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.14.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpangoft2-1.0-0 (>= 1.14.0), libselinux1 (>= 1.32), libssh2-1 (>= 1.7.0), libssl1.1 (>= 1.1.0), libstdc++6 (>= 7), libwxbase3.0-0v5 (>= 3.0.4+dfsg), libwxgtk3.0-0v5 (>= 3.0.4+dfsg), zlib1g (>= 1:1.2.0) misc:Depends= misc:Pre-Depends= diff --git a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch new file mode 100644 index 0000000..e464662 --- /dev/null +++ b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch @@ -0,0 +1,25 @@ +This is still experimental. +diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/ui/folder_selector.cpp 10.9-1/FreeFileSync/Source/ui/folder_selector.cpp +--- 10.9-0/FreeFileSync/Source/ui/folder_selector.cpp 2019-02-10 16:42:28.960039117 -0500 ++++ 10.9-1/FreeFileSync/Source/ui/folder_selector.cpp 2019-02-10 20:20:11.981339625 -0500 +@@ -231,7 +231,7 @@ + + std::optional<std::wstring> parallelOpsDisabledReason; + +- parallelOpsDisabledReason = _("Requires FreeFileSync Donation Edition"); ++ // parallelOpsDisabledReason = _("Requires FreeFileSync Donation Edition"); + + if (showCloudSetupDialog(parent_, folderPathPhrase, parallelOps, get(parallelOpsDisabledReason)) != ReturnSmallDlg::BUTTON_OKAY) + return; +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/ui/sync_cfg.cpp 10.9-1/FreeFileSync/Source/ui/sync_cfg.cpp +--- 10.9-0/FreeFileSync/Source/ui/sync_cfg.cpp 2019-02-10 22:01:42.075159451 -0500 ++++ 10.9-1/FreeFileSync/Source/ui/sync_cfg.cpp 2019-02-11 21:25:11.685992654 -0500 +@@ -263,7 +263,7 @@ + globalPairCfg_(globalPairCfg), + localPairCfg_(localPairConfig), + showMultipleCfgs_(showMultipleCfgs), +-perfPanelActive_(false), ++perfPanelActive_(true), + commandHistItemsMax_(commandHistItemsMax) + { + setStandardButtonLayout(*bSizerStdButtons, StdButtons().setAffirmative(m_buttonOkay).setCancel(m_buttonCancel)); diff --git a/freefilesync/debian/patches/devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch index abe5389..ff840d7 100644 --- a/freefilesync/debian/patches/devuan.patch +++ b/freefilesync/debian/patches/ffs_devuan.patch @@ -18,7 +18,7 @@ diff -Naur 10.6-0/FreeFileSync/Source/base/ffs_paths.cpp 10.6-1/FreeFileSync/Sou //if (isPortableVersion()) - return appendSeparator(getExeFolderParentPath()); -+ return appendSeparator(getExeFolderParentPath()) + appendSeparator("share") + appendSeparator("FreeFileSync"); ++ return appendSeparator("/usr") + appendSeparator("share") + appendSeparator("freefilesync"); //else //use OS' standard paths // return appendSeparator(utfTo<Zstring>(wxStandardPathsBase::Get().GetResourcesDir())); } diff --git a/freefilesync/debian/patches/ffs_makefile.patch b/freefilesync/debian/patches/ffs_makefile.patch new file mode 100644 index 0000000..79a8233 --- /dev/null +++ b/freefilesync/debian/patches/ffs_makefile.patch @@ -0,0 +1,32 @@ +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/Makefile 10.9-1/FreeFileSync/Source/Makefile +--- 10.3-0/FreeFileSync/Source/Makefile 2019-02-10 22:01:42.138160180 -0500 ++++ 10.9-1/FreeFileSync/Source/Makefile 2019-02-11 21:48:19.729739859 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = FreeFileSync_$(shell arch) ++EXENAME = FreeFileSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -DLIBSSH2_OPENSSL -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` +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile +--- 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-10 22:01:42.141160214 -0500 ++++ 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-11 21:48:22.504771344 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = RealTimeSync_$(shell arch) ++EXENAME = RealTimeSync + + CXXFLAGS = -std=c++17 -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` diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch new file mode 100644 index 0000000..3582b1d --- /dev/null +++ b/freefilesync/debian/patches/ffs_no_check_updates.patch @@ -0,0 +1,67 @@ +diff -x '*.swp' -x '*.orig' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/ui/main_dlg.cpp 10.9-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.9-1/FreeFileSync/Source/ui/main_dlg.cpp 2019-02-10 22:01:57.435336536 -0500 +@@ -5023,7 +5023,7 @@ + globalCfg_.gui.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value! + + m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.gui.lastUpdateCheck)); +- ++ /* + if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck)) + { + flashStatusInformation(_("Searching for program updates...")); +@@ -5031,6 +5031,7 @@ + automaticUpdateCheckEval(this, globalCfg_.gui.lastUpdateCheck, globalCfg_.gui.lastOnlineVersion, + automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare().get()).get()); + } ++ */ + } + + +@@ -5038,7 +5039,7 @@ + { + //execute just once per startup! + Disconnect(wxEVT_IDLE, wxIdleEventHandler(MainDialog::OnRegularUpdateCheck), nullptr, this); +- ++ /* + if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck)) + { + flashStatusInformation(_("Searching for program updates...")); +@@ -5052,6 +5053,7 @@ + resultAsync.get()); //run on main thread: + }); + } ++ */ + } + + +diff -x '*.swp' -x '*.orig' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/ui/version_check.cpp 10.9-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.9-1/FreeFileSync/Source/ui/version_check.cpp 2019-02-10 22:17:56.183369507 -0500 +@@ -69,6 +69,8 @@ + + bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck) + { ++ // short-circuit ++ return false; + if (lastUpdateCheck == getVersionCheckInactiveId()) + return false; + +@@ -236,13 +238,13 @@ + const std::string onlineVersion = getOnlineVersion(geHttpPostParameters()); //throw SysError + lastOnlineVersion = onlineVersion; + +- if (haveNewerVersionOnline(onlineVersion)) +- showUpdateAvailableDialog(parent, onlineVersion); +- else ++ //if (haveNewerVersionOnline(onlineVersion)) ++ // showUpdateAvailableDialog(parent, onlineVersion); ++ //else + showNotificationDialog(parent, DialogInfoType::INFO, PopupDialogCfg(). + setIcon(getResourceImage(L"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/no_wx311.patch b/freefilesync/debian/patches/ffs_no_wx311.patch index 78ac2a5..78ac2a5 100644 --- a/freefilesync/debian/patches/no_wx311.patch +++ b/freefilesync/debian/patches/ffs_no_wx311.patch diff --git a/freefilesync/debian/patches/ffs_old_libcurl.patch b/freefilesync/debian/patches/ffs_old_libcurl.patch new file mode 100644 index 0000000..e13f1bb --- /dev/null +++ b/freefilesync/debian/patches/ffs_old_libcurl.patch @@ -0,0 +1,13 @@ +Upstream uses a libcurl more current than Fedora 29. +diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/fs/libcurl/curl_wrap.h 10.9-1/FreeFileSync/Source/fs/libcurl/curl_wrap.h +--- 10.9-0/FreeFileSync/Source/fs/libcurl/curl_wrap.h 2019-02-10 16:42:29.124040824 -0500 ++++ 10.9-1/FreeFileSync/Source/fs/libcurl/curl_wrap.h 2019-02-10 20:57:30.758315345 -0500 +@@ -75,7 +75,7 @@ + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNKNOWN_OPTION); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TELNET_OPTION_SYNTAX); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE50); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE51); ++ //ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE51); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PEER_FAILED_VERIFICATION); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_GOT_NOTHING); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); diff --git a/freefilesync/debian/patches/ffs_sftp.patch b/freefilesync/debian/patches/ffs_sftp.patch new file mode 100644 index 0000000..34dc9ad --- /dev/null +++ b/freefilesync/debian/patches/ffs_sftp.patch @@ -0,0 +1,17 @@ +diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/fs/sftp.cpp 10.9-1/FreeFileSync/Source/fs/sftp.cpp +--- 10.9-0/FreeFileSync/Source/fs/sftp.cpp 2019-02-10 16:42:29.139040980 -0500 ++++ 10.9-1/FreeFileSync/Source/fs/sftp.cpp 2019-02-10 21:28:00.030732089 -0500 +@@ -56,9 +56,10 @@ + + //attention: if operation fails due to time out, e.g. file copy, the cleanup code may hang, too => total delay = 2 x time out interval + +-const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 4 * MAX_SFTP_READ_SIZE; //https://github.com/libssh2/libssh2/issues/90 +-const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 4 * MAX_SFTP_OUTGOING_SIZE; // +-static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!"); ++// these values are all manually derived from https://github.com/libssh2/libssh2/blob/master/src/sftp.h which for some weak reason are not included in the libssh2-devel headers. ++const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 4 * 30000; //https://github.com/libssh2/libssh2/issues/90 ++const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 4 * 30000; // ++//static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!"); + /* + Perf Test, Sourceforge frs, SFTP upload, compressed 25 MB test file: + diff --git a/freefilesync/debian/patches/makefile.patch b/freefilesync/debian/patches/makefile.patch deleted file mode 100644 index b3ff7ff..0000000 --- a/freefilesync/debian/patches/makefile.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/Makefile 10.3-2/FreeFileSync/Source/Makefile ---- 10.3-0/FreeFileSync/Source/Makefile 2018-08-07 05:03:33.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/Makefile 2018-08-15 22:25:06.694355202 -0400 -@@ -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` -lz -pthread - - #Gtk - support recycler/icon loading/no button border/grid scrolling - CXXFLAGS += `pkg-config --cflags gtk+-2.0` -@@ -101,6 +101,7 @@ - all: ../Build/Bin/$(APPNAME) - - ../Build/Bin/$(APPNAME): $(OBJ_FILES) -+ mkdir -p ../Build/Bin - g++ -o $@ $^ $(LINKFLAGS) - - ../Obj/FFS_GCC_Make_Release/ffs/src/%.o : % -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 10.3-2/FreeFileSync/Source/RealTimeSync/Makefile ---- 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 2018-08-07 05:03:33.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/RealTimeSync/Makefile 2018-08-15 22:25:15.968461418 -0400 -@@ -6,7 +6,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` -lz -pthread - - #Gtk - support "no button border" - CXXFLAGS += `pkg-config --cflags gtk+-2.0` diff --git a/freefilesync/debian/patches/no_check_updates.patch b/freefilesync/debian/patches/no_check_updates.patch deleted file mode 100644 index 99f0c8f..0000000 --- a/freefilesync/debian/patches/no_check_updates.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 10.3-2/FreeFileSync/Source/ui/main_dlg.cpp ---- 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 2018-08-07 05:03:34.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/ui/main_dlg.cpp 2018-08-08 18:50:50.455078387 -0400 -@@ -5004,7 +5004,7 @@ - globalCfg_.gui.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value! - - m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.gui.lastUpdateCheck)); -- -+ /* - if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck)) - { - flashStatusInformation(_("Searching for program updates...")); -@@ -5012,6 +5012,7 @@ - automaticUpdateCheckEval(this, globalCfg_.gui.lastUpdateCheck, globalCfg_.gui.lastOnlineVersion, - automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare().get()).get()); - } -+ */ - } - - -@@ -5019,7 +5020,7 @@ - { - //execute just once per startup! - Disconnect(wxEVT_IDLE, wxIdleEventHandler(MainDialog::OnRegularUpdateCheck), nullptr, this); -- -+ /* - if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck)) - { - flashStatusInformation(_("Searching for program updates...")); -@@ -5033,6 +5034,7 @@ - resultAsync.get()); //run on main thread: - }); - } -+ */ - } - - -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/version_check_impl.h 10.3-2/FreeFileSync/Source/ui/version_check_impl.h ---- 10.3-0/FreeFileSync/Source/ui/version_check_impl.h 2018-08-07 05:03:34.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/ui/version_check_impl.h 2018-08-08 18:50:50.458078415 -0400 -@@ -14,7 +14,7 @@ - - namespace fff - { --inline -+ - time_t getVersionCheckInactiveId() - { - //use current version to calculate a changing number for the inactive state near UTC begin, in order to always check for updates after installing a new version -@@ -38,7 +38,6 @@ - } - - --inline - time_t getVersionCheckCurrentTime() - { - return std::time(nullptr); diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series index d430762..2dbed63 100644 --- a/freefilesync/debian/patches/series +++ b/freefilesync/debian/patches/series @@ -1,5 +1,7 @@ -# You must remove unused comment lines for the released package. -no_check_updates.patch -devuan.patch -no_wx311.patch -makefile.patch +ffs_allow_parallel_ops.patch +ffs_devuan.patch +ffs_makefile.patch +ffs_no_check_updates.patch +ffs_no_wx311.patch +ffs_old_libcurl.patch +ffs_sftp.patch diff --git a/freefilesync/debian/rules b/freefilesync/debian/rules index cc1a493..612e88e 100755 --- a/freefilesync/debian/rules +++ b/freefilesync/debian/rules @@ -9,7 +9,10 @@ export appname=freefilesync export pkgname=FreeFileSync export prog2name=RealTimeSync export debuilddir="debian" -export debuildappdir="${debuilddir}/${appname}" +export debuildappdir="${pkgname}" +export buildroot="${debuilddir}/${appname}" +export _datadir="/usr/share" +export _bindir="/usr/bin" %: dh $@ @@ -26,18 +29,23 @@ override_dh_auto_build: dh_auto_build --sourcedirectory=FreeFileSync/Source/RealTimeSync override_dh_auto_install: - dh_auto_install - dh_auto_install --sourcedirectory=FreeFileSync/Source - dh_auto_install --sourcedirectory=FreeFileSync/Source/RealTimeSync + # removed by upstream! + #dh_auto_install + #dh_auto_install --sourcedirectory=FreeFileSync/Source + #dh_auto_install --sourcedirectory=FreeFileSync/Source/RealTimeSync + install -d ${buildroot}${_bindir} ${buildroot}${_datadir}/${appname} + install -Dm 0755 -t ${buildroot}${_bindir} ${debuildappdir}/Build/Bin/${pkgname} ${debuildappdir}/Build/Bin/${prog2name} + cp -pr ${debuildappdir}/Build/Languages ${buildroot}${_datadir}/${appname} + install -Dm 0644 ${debuildappdir}/Build/ding.wav ${debuildappdir}/Build/gong.wav ${debuildappdir}/Build/harp.wav ${debuildappdir}/Build/Resources.zip ${debuildappdir}/Build/styles.gtk_rc ${buildroot}${_datadir}/${appname} # make extra sure the files are not marked with executable find ${debuildappdir}/share/${pkgname} -type f -exec chmod -x '{}' \; || : #find %{buildroot}%{_datadir}/%{pkgname} -type f -exec chmod -x '{}' \; || : # desktop files - mkdir -p ${debuildappdir}/usr/share/applications - desktop-file-install --dir ${debuildappdir}/usr/share/applications ${debuilddir}/freefilesync.desktop - desktop-file-install --dir ${debuildappdir}/usr/share/applications ${debuilddir}/realtimesync.desktop + mkdir -p ${buildroot}${_datadir}/applications + desktop-file-install --dir ${buildroot}${_datadir}/applications ${debuilddir}/freefilesync.desktop + desktop-file-install --dir ${buildroot}${_datadir}/applications ${debuilddir}/realtimesync.desktop # application start script # none @@ -50,39 +58,39 @@ override_dh_auto_install: # icons unzip ${pkgname}/Build/Resources.zip ${pkgname}.png ${prog2name}.png file_batch.png - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/16x16/apps - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/32x32/apps - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/48x48/apps - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/64x64/apps - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/128x128/apps - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/16x16/mimetypes - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/32x32/mimetypes - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/48x48/mimetypes - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/64x64/mimetypes - mkdir -p ${debuildappdir}/usr/share/icons/hicolor/128x128/mimetypes - convert ${pkgname}.png -filter Lanczos -resize 16x16 ${debuildappdir}/usr/share/icons/hicolor/16x16/apps/${pkgname}.png - convert ${pkgname}.png -filter Lanczos -resize 32x32 ${debuildappdir}/usr/share/icons/hicolor/32x32/apps/${pkgname}.png - convert ${pkgname}.png -filter Lanczos -resize 48x48 ${debuildappdir}/usr/share/icons/hicolor/48x48/apps/${pkgname}.png - convert ${pkgname}.png -filter Lanczos -resize 64x64 ${debuildappdir}/usr/share/icons/hicolor/64x64/apps/${pkgname}.png - convert ${pkgname}.png -filter Lanczos -resize 128x128 ${debuildappdir}/usr/share/icons/hicolor/128x128/apps/${pkgname}.png - convert ${pkgname}.png -filter Lanczos -resize 16x16 ${debuildappdir}/usr/share/icons/hicolor/16x16/mimetypes/application-x-freefilesync-ffs.png - convert ${pkgname}.png -filter Lanczos -resize 32x32 ${debuildappdir}/usr/share/icons/hicolor/32x32/mimetypes/application-x-freefilesync-ffs.png - convert ${pkgname}.png -filter Lanczos -resize 48x48 ${debuildappdir}/usr/share/icons/hicolor/48x48/mimetypes/application-x-freefilesync-ffs.png - convert ${pkgname}.png -filter Lanczos -resize 64x64 ${debuildappdir}/usr/share/icons/hicolor/64x64/mimetypes/application-x-freefilesync-ffs.png - convert ${pkgname}.png -filter Lanczos -resize 128x128 ${debuildappdir}/usr/share/icons/hicolor/128x128/mimetypes/application-x-freefilesync-ffs.png - convert ${prog2name}.png -filter Lanczos -resize 16x16 ${debuildappdir}/usr/share/icons/hicolor/16x16/apps/${prog2name}.png - convert ${prog2name}.png -filter Lanczos -resize 32x32 ${debuildappdir}/usr/share/icons/hicolor/32x32/apps/${prog2name}.png - convert ${prog2name}.png -filter Lanczos -resize 48x48 ${debuildappdir}/usr/share/icons/hicolor/48x48/apps/${prog2name}.png - convert ${prog2name}.png -filter Lanczos -resize 64x64 ${debuildappdir}/usr/share/icons/hicolor/64x64/apps/${prog2name}.png - convert ${prog2name}.png -filter Lanczos -resize 128x128 ${debuildappdir}/usr/share/icons/hicolor/128x128/apps/${prog2name}.png - convert ${prog2name}.png -filter Lanczos -resize 16x16 ${debuildappdir}/usr/share/icons/hicolor/16x16/mimetypes/application-x-freefilesync-real.png - convert ${prog2name}.png -filter Lanczos -resize 32x32 ${debuildappdir}/usr/share/icons/hicolor/32x32/mimetypes/application-x-freefilesync-real.png - convert ${prog2name}.png -filter Lanczos -resize 48x48 ${debuildappdir}/usr/share/icons/hicolor/48x48/mimetypes/application-x-freefilesync-real.png - convert ${prog2name}.png -filter Lanczos -resize 64x64 ${debuildappdir}/usr/share/icons/hicolor/64x64/mimetypes/application-x-freefilesync-real.png - convert ${prog2name}.png -filter Lanczos -resize 128x128 ${debuildappdir}/usr/share/icons/hicolor/128x128/mimetypes/application-x-freefilesync-real.png - convert file_batch.png -filter Lanczos -resize 16x16 ${debuildappdir}/usr/share/icons/hicolor/16x16/mimetypes/application-x-freefilesync-batch.png - convert file_batch.png -filter Lanczos -resize 32x32 ${debuildappdir}/usr/share/icons/hicolor/32x32/mimetypes/application-x-freefilesync-batch.png - convert file_batch.png -filter Lanczos -resize 48x48 ${debuildappdir}/usr/share/icons/hicolor/48x48/mimetypes/application-x-freefilesync-batch.png - convert file_batch.png -filter Lanczos -resize 64x64 ${debuildappdir}/usr/share/icons/hicolor/64x64/mimetypes/application-x-freefilesync-batch.png - convert file_batch.png -filter Lanczos -resize 128x128 ${debuildappdir}/usr/share/icons/hicolor/128x128/mimetypes/application-x-freefilesync-batch.png + mkdir -p ${buildroot}${_datadir}/icons/hicolor/16x16/apps + mkdir -p ${buildroot}${_datadir}/icons/hicolor/32x32/apps + mkdir -p ${buildroot}${_datadir}/icons/hicolor/48x48/apps + mkdir -p ${buildroot}${_datadir}/icons/hicolor/64x64/apps + mkdir -p ${buildroot}${_datadir}/icons/hicolor/128x128/apps + mkdir -p ${buildroot}${_datadir}/icons/hicolor/16x16/mimetypes + mkdir -p ${buildroot}${_datadir}/icons/hicolor/32x32/mimetypes + mkdir -p ${buildroot}${_datadir}/icons/hicolor/48x48/mimetypes + mkdir -p ${buildroot}${_datadir}/icons/hicolor/64x64/mimetypes + mkdir -p ${buildroot}${_datadir}/icons/hicolor/128x128/mimetypes + convert ${pkgname}.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/apps/${pkgname}.png + convert ${pkgname}.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/apps/${pkgname}.png + convert ${pkgname}.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/apps/${pkgname}.png + convert ${pkgname}.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/apps/${pkgname}.png + convert ${pkgname}.png -filter Lanczos -resize 128x128 ${buildroot}${_datadir}/icons/hicolor/128x128/apps/${pkgname}.png + convert ${pkgname}.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/mimetypes/application-x-freefilesync-ffs.png + convert ${pkgname}.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/mimetypes/application-x-freefilesync-ffs.png + convert ${pkgname}.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/mimetypes/application-x-freefilesync-ffs.png + convert ${pkgname}.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/mimetypes/application-x-freefilesync-ffs.png + convert ${pkgname}.png -filter Lanczos -resize 128x128 ${buildroot}${_datadir}/icons/hicolor/128x128/mimetypes/application-x-freefilesync-ffs.png + convert ${prog2name}.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/apps/${prog2name}.png + convert ${prog2name}.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/apps/${prog2name}.png + convert ${prog2name}.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/apps/${prog2name}.png + convert ${prog2name}.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/apps/${prog2name}.png + convert ${prog2name}.png -filter Lanczos -resize 128x128 ${buildroot}${_datadir}/icons/hicolor/128x128/apps/${prog2name}.png + convert ${prog2name}.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/mimetypes/application-x-freefilesync-real.png + convert ${prog2name}.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/mimetypes/application-x-freefilesync-real.png + convert ${prog2name}.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/mimetypes/application-x-freefilesync-real.png + convert ${prog2name}.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/mimetypes/application-x-freefilesync-real.png + convert ${prog2name}.png -filter Lanczos -resize 128x128 ${buildroot}${_datadir}/icons/hicolor/128x128/mimetypes/application-x-freefilesync-real.png + convert file_batch.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/mimetypes/application-x-freefilesync-batch.png + convert file_batch.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/mimetypes/application-x-freefilesync-batch.png + convert file_batch.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/mimetypes/application-x-freefilesync-batch.png + convert file_batch.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/mimetypes/application-x-freefilesync-batch.png + convert file_batch.png -filter Lanczos -resize 128x128 ${buildroot}${_datadir}/icons/hicolor/128x128/mimetypes/application-x-freefilesync-batch.png rm -f ${pkgname}.png ${prog2name}.png file_batch.png diff --git a/freefilesync/ffs_allow_parallel_ops.patch b/freefilesync/ffs_allow_parallel_ops.patch new file mode 100644 index 0000000..e464662 --- /dev/null +++ b/freefilesync/ffs_allow_parallel_ops.patch @@ -0,0 +1,25 @@ +This is still experimental. +diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/ui/folder_selector.cpp 10.9-1/FreeFileSync/Source/ui/folder_selector.cpp +--- 10.9-0/FreeFileSync/Source/ui/folder_selector.cpp 2019-02-10 16:42:28.960039117 -0500 ++++ 10.9-1/FreeFileSync/Source/ui/folder_selector.cpp 2019-02-10 20:20:11.981339625 -0500 +@@ -231,7 +231,7 @@ + + std::optional<std::wstring> parallelOpsDisabledReason; + +- parallelOpsDisabledReason = _("Requires FreeFileSync Donation Edition"); ++ // parallelOpsDisabledReason = _("Requires FreeFileSync Donation Edition"); + + if (showCloudSetupDialog(parent_, folderPathPhrase, parallelOps, get(parallelOpsDisabledReason)) != ReturnSmallDlg::BUTTON_OKAY) + return; +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/ui/sync_cfg.cpp 10.9-1/FreeFileSync/Source/ui/sync_cfg.cpp +--- 10.9-0/FreeFileSync/Source/ui/sync_cfg.cpp 2019-02-10 22:01:42.075159451 -0500 ++++ 10.9-1/FreeFileSync/Source/ui/sync_cfg.cpp 2019-02-11 21:25:11.685992654 -0500 +@@ -263,7 +263,7 @@ + globalPairCfg_(globalPairCfg), + localPairCfg_(localPairConfig), + showMultipleCfgs_(showMultipleCfgs), +-perfPanelActive_(false), ++perfPanelActive_(true), + commandHistItemsMax_(commandHistItemsMax) + { + setStandardButtonLayout(*bSizerStdButtons, StdButtons().setAffirmative(m_buttonOkay).setCancel(m_buttonCancel)); diff --git a/freefilesync/ffs_el.patch b/freefilesync/ffs_el.patch new file mode 100644 index 0000000..0763296 --- /dev/null +++ b/freefilesync/ffs_el.patch @@ -0,0 +1,107 @@ +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 -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/base/ffs_paths.cpp 10.9-1.el7/FreeFileSync/Source/base/ffs_paths.cpp +--- 10.9-0/FreeFileSync/Source/base/ffs_paths.cpp 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/base/ffs_paths.cpp 2019-02-17 10:43:22.286986341 -0500 +@@ -59,7 +59,7 @@ + ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); + + //if (isPortableVersion()) +- return appendSeparator(getExeFolderParentPath()); ++ return appendSeparator("/usr") + appendSeparator("share") + appendSeparator("freefilesync"); + //else //use OS' standard paths + // return appendSeparator(utfTo<Zstring>(wxStandardPathsBase::Get().GetResourcesDir())); + } +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/Makefile 10.9-1.el7/FreeFileSync/Source/Makefile +--- 10.9-0/FreeFileSync/Source/Makefile 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/Makefile 2019-02-17 10:50:27.282820639 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = FreeFileSync_$(shell arch) ++EXENAME = FreeFileSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -DLIBSSH2_OPENSSL -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 -fPIC `wx-config --version=3.0 --cxxflags --debug=no` -pthread + +-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++LINKFLAGS = -s -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-z,relro -no-pie `wx-config --version=3.0 --libs std, aui --debug=no | sed -r -e 's/-[^[:space:]]+web[^[:space:]]+//;'` -lz -pthread + + + CXXFLAGS += `pkg-config --cflags openssl` +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 10.9-1.el7/FreeFileSync/Source/RealTimeSync/Makefile +--- 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-17 10:50:43.699007372 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = RealTimeSync_$(shell arch) ++EXENAME = RealTimeSync + + CXXFLAGS = -std=c++17 -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 -fPIC `wx-config --version=3.0 --cxxflags --debug=no` -pthread + +-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++LINKFLAGS = -s -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -no-pie `wx-config --version=3.0 --cxxflags --libs std, aui --debug=no | sed -r -e 's/-[^[:space:]]+web[^[:space:]]+//;'` -lz -pthread + + #Gtk - support "no button border" + CXXFLAGS += `pkg-config --cflags gtk+-2.0` +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.9-1.el7/FreeFileSync/Source/ui/small_dlgs.cpp +--- 10.9-0/FreeFileSync/Source/ui/small_dlgs.cpp 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/ui/small_dlgs.cpp 2019-02-17 10:42:29.741388638 -0500 +@@ -115,6 +115,8 @@ + L" x64"; + #endif + ++ build += ++ L" for CentOS 7"; + + GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize() + +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/zen/ring_buffer.h 10.9-1.el7/zen/ring_buffer.h +--- 10.9-0/zen/ring_buffer.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/zen/ring_buffer.h 2019-02-17 09:53:10.907818287 -0500 +@@ -9,6 +9,7 @@ + + #include <cassert> + #include "scope_guard.h" ++#include <cstddef> + + + namespace zen +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/zen/serialize.h 10.9-1.el7/zen/serialize.h +--- 10.9-0/zen/serialize.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/zen/serialize.h 2019-02-17 09:53:06.701772057 -0500 +@@ -9,6 +9,7 @@ + + #include <functional> + #include <cstdint> ++#include <cstddef> + #include "string_base.h" + //keep header clean from specific stream implementations! (e.g.file_io.h)! used by abstract.h! + +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/wx+/app_main.h 10.9-1/wx+/app_main.h +--- 10.9-0/wx+/app_main.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1/wx+/app_main.h 2019-02-16 13:51:32.437266070 -0500 +@@ -7,6 +7,8 @@ + #ifndef APP_MAIN_H_08215601837818347575856 + #define APP_MAIN_H_08215601837818347575856 + ++#define __GXX_ABI_VERSION 1002 ++ + #include <wx/window.h> + #include <wx/app.h> + +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/RealTimeSync/application.h 10.9-1.el7/FreeFileSync/Source/RealTimeSync/application.h +--- 10.9-0/FreeFileSync/Source/RealTimeSync/application.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/RealTimeSync/application.h 2019-02-18 08:53:14.017850931 -0500 +@@ -7,6 +7,8 @@ + #ifndef APPLICATION_H_18506781708176342677 + #define APPLICATION_H_18506781708176342677 + ++#define __GXX_ABI_VERSION 1002 ++ + #include <wx/app.h> + + diff --git a/freefilesync/ffs_fedora.patch b/freefilesync/ffs_fedora.patch index eda1c16..02caceb 100644 --- a/freefilesync/ffs_fedora.patch +++ b/freefilesync/ffs_fedora.patch @@ -1,3 +1,4 @@ +Upstream uses a libcurl more current than Fedora 29. diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.3-2/FreeFileSync/Source/ui/small_dlgs.cpp --- 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 2018-08-07 05:03:34.000000000 -0400 +++ 10.3-2/FreeFileSync/Source/ui/small_dlgs.cpp 2018-08-29 22:13:40.240595334 -0400 @@ -18,7 +19,51 @@ diff -Naur 10.6-0/FreeFileSync/Source/base/ffs_paths.cpp 10.6-1/FreeFileSync/Sou //if (isPortableVersion()) - return appendSeparator(getExeFolderParentPath()); -+ return appendSeparator(getExeFolderParentPath()) + appendSeparator("share") + appendSeparator("FreeFileSync"); ++ return appendSeparator("/usr") + appendSeparator("share") + appendSeparator("freefilesync"); //else //use OS' standard paths // return appendSeparator(utfTo<Zstring>(wxStandardPathsBase::Get().GetResourcesDir())); } +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/Makefile 10.9-1/FreeFileSync/Source/Makefile +--- 10.3-0/FreeFileSync/Source/Makefile 2019-02-10 22:01:42.138160180 -0500 ++++ 10.9-1/FreeFileSync/Source/Makefile 2019-02-11 21:48:19.729739859 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = FreeFileSync_$(shell arch) ++EXENAME = FreeFileSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -DLIBSSH2_OPENSSL -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` +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile +--- 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-10 22:01:42.141160214 -0500 ++++ 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-11 21:48:22.504771344 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = RealTimeSync_$(shell arch) ++EXENAME = RealTimeSync + + CXXFLAGS = -std=c++17 -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` +diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/fs/libcurl/curl_wrap.h 10.9-1/FreeFileSync/Source/fs/libcurl/curl_wrap.h +--- 10.9-0/FreeFileSync/Source/fs/libcurl/curl_wrap.h 2019-02-10 16:42:29.124040824 -0500 ++++ 10.9-1/FreeFileSync/Source/fs/libcurl/curl_wrap.h 2019-02-10 20:57:30.758315345 -0500 +@@ -75,7 +75,7 @@ + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNKNOWN_OPTION); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TELNET_OPTION_SYNTAX); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE50); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE51); ++ //ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE51); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PEER_FAILED_VERIFICATION); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_GOT_NOTHING); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); diff --git a/freefilesync/ffs_makefile.patch b/freefilesync/ffs_makefile.patch deleted file mode 100644 index b3ff7ff..0000000 --- a/freefilesync/ffs_makefile.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/Makefile 10.3-2/FreeFileSync/Source/Makefile ---- 10.3-0/FreeFileSync/Source/Makefile 2018-08-07 05:03:33.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/Makefile 2018-08-15 22:25:06.694355202 -0400 -@@ -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` -lz -pthread - - #Gtk - support recycler/icon loading/no button border/grid scrolling - CXXFLAGS += `pkg-config --cflags gtk+-2.0` -@@ -101,6 +101,7 @@ - all: ../Build/Bin/$(APPNAME) - - ../Build/Bin/$(APPNAME): $(OBJ_FILES) -+ mkdir -p ../Build/Bin - g++ -o $@ $^ $(LINKFLAGS) - - ../Obj/FFS_GCC_Make_Release/ffs/src/%.o : % -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 10.3-2/FreeFileSync/Source/RealTimeSync/Makefile ---- 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 2018-08-07 05:03:33.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/RealTimeSync/Makefile 2018-08-15 22:25:15.968461418 -0400 -@@ -6,7 +6,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` -lz -pthread - - #Gtk - support "no button border" - CXXFLAGS += `pkg-config --cflags gtk+-2.0` diff --git a/freefilesync/ffs_no_check_updates.patch b/freefilesync/ffs_no_check_updates.patch index 99f0c8f..3582b1d 100644 --- a/freefilesync/ffs_no_check_updates.patch +++ b/freefilesync/ffs_no_check_updates.patch @@ -1,7 +1,7 @@ -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 10.3-2/FreeFileSync/Source/ui/main_dlg.cpp ---- 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 2018-08-07 05:03:34.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/ui/main_dlg.cpp 2018-08-08 18:50:50.455078387 -0400 -@@ -5004,7 +5004,7 @@ +diff -x '*.swp' -x '*.orig' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/ui/main_dlg.cpp 10.9-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.9-1/FreeFileSync/Source/ui/main_dlg.cpp 2019-02-10 22:01:57.435336536 -0500 +@@ -5023,7 +5023,7 @@ globalCfg_.gui.lastUpdateCheck = 0; //reset to GlobalSettings.xml default value! m_menuItemCheckVersionAuto->Check(updateCheckActive(globalCfg_.gui.lastUpdateCheck)); @@ -10,7 +10,7 @@ diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 10. if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck)) { flashStatusInformation(_("Searching for program updates...")); -@@ -5012,6 +5012,7 @@ +@@ -5031,6 +5031,7 @@ automaticUpdateCheckEval(this, globalCfg_.gui.lastUpdateCheck, globalCfg_.gui.lastOnlineVersion, automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare().get()).get()); } @@ -18,7 +18,7 @@ diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 10. } -@@ -5019,7 +5020,7 @@ +@@ -5038,7 +5039,7 @@ { //execute just once per startup! Disconnect(wxEVT_IDLE, wxIdleEventHandler(MainDialog::OnRegularUpdateCheck), nullptr, this); @@ -27,7 +27,7 @@ diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 10. if (shouldRunAutomaticUpdateCheck(globalCfg_.gui.lastUpdateCheck)) { flashStatusInformation(_("Searching for program updates...")); -@@ -5033,6 +5034,7 @@ +@@ -5052,6 +5053,7 @@ resultAsync.get()); //run on main thread: }); } @@ -35,23 +35,33 @@ diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/main_dlg.cpp 10. } -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/version_check_impl.h 10.3-2/FreeFileSync/Source/ui/version_check_impl.h ---- 10.3-0/FreeFileSync/Source/ui/version_check_impl.h 2018-08-07 05:03:34.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/ui/version_check_impl.h 2018-08-08 18:50:50.458078415 -0400 -@@ -14,7 +14,7 @@ +diff -x '*.swp' -x '*.orig' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/ui/version_check.cpp 10.9-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.9-1/FreeFileSync/Source/ui/version_check.cpp 2019-02-10 22:17:56.183369507 -0500 +@@ -69,6 +69,8 @@ - namespace fff + bool fff::shouldRunAutomaticUpdateCheck(time_t lastUpdateCheck) { --inline -+ - time_t getVersionCheckInactiveId() - { - //use current version to calculate a changing number for the inactive state near UTC begin, in order to always check for updates after installing a new version -@@ -38,7 +38,6 @@ - } ++ // short-circuit ++ return false; + if (lastUpdateCheck == getVersionCheckInactiveId()) + return false; +@@ -236,13 +238,13 @@ + const std::string onlineVersion = getOnlineVersion(geHttpPostParameters()); //throw SysError + lastOnlineVersion = onlineVersion; --inline - time_t getVersionCheckCurrentTime() - { - return std::time(nullptr); +- if (haveNewerVersionOnline(onlineVersion)) +- showUpdateAvailableDialog(parent, onlineVersion); +- else ++ //if (haveNewerVersionOnline(onlineVersion)) ++ // showUpdateAvailableDialog(parent, onlineVersion); ++ //else + showNotificationDialog(parent, DialogInfoType::INFO, PopupDialogCfg(). + setIcon(getResourceImage(L"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_sftp.patch b/freefilesync/ffs_sftp.patch new file mode 100644 index 0000000..056cf91 --- /dev/null +++ b/freefilesync/ffs_sftp.patch @@ -0,0 +1,19 @@ +The upstream author observed that some of the values he uses are not in the libssh2 public headers. I don't know where he uses them from, but I had to replace them here to get this to compile. +https://github.com/libssh2/libssh2/issues/90 +diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/fs/sftp.cpp 10.9-1/FreeFileSync/Source/fs/sftp.cpp +--- 10.9-0/FreeFileSync/Source/fs/sftp.cpp 2019-02-10 16:42:29.139040980 -0500 ++++ 10.9-1/FreeFileSync/Source/fs/sftp.cpp 2019-02-10 21:28:00.030732089 -0500 +@@ -56,9 +56,10 @@ + + //attention: if operation fails due to time out, e.g. file copy, the cleanup code may hang, too => total delay = 2 x time out interval + +-const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 4 * MAX_SFTP_READ_SIZE; //https://github.com/libssh2/libssh2/issues/90 +-const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 4 * MAX_SFTP_OUTGOING_SIZE; // +-static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!"); ++// these values are all manually derived from https://github.com/libssh2/libssh2/blob/master/src/sftp.h which for some weak reason are not included in the libssh2-devel headers. ++const size_t SFTP_OPTIMAL_BLOCK_SIZE_READ = 4 * 30000; //https://github.com/libssh2/libssh2/issues/90 ++const size_t SFTP_OPTIMAL_BLOCK_SIZE_WRITE = 4 * 30000; // ++//static_assert(MAX_SFTP_READ_SIZE == 30000 && MAX_SFTP_OUTGOING_SIZE == 30000, "reevaluate optimal block sizes if these constants change!"); + /* + Perf Test, Sourceforge frs, SFTP upload, compressed 25 MB test file: + diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec index 3ae7f2d..adb5949 100644 --- a/freefilesync/freefilesync.spec +++ b/freefilesync/freefilesync.spec @@ -1,35 +1,62 @@ %global pkgname FreeFileSync %global prog2name RealTimeSync %global dummy_package 0 +%define min_libcurl %{nil} +%define min_libssh2 %{nil} +%define min_openssl %{nil} +%define scl_env %{nil} +%define scl_buildreq coreutils +%if 0%{?el6}%{?el7} + %define scl_env devtoolset-7 + %define scl_buildreq devtoolset-7-toolchain + %define min_libcurl >= 7.64.0 + %define min_libssh2 >= 1.8.0 + %define min_openssl >= 1.1.0h +%endif Name: freefilesync -Version: 10.8 -Release: 1%{?dist} +Version: 10.9 +Release: 2%{?dist} Summary: A file synchronization utility Group: Applications/File License: GPLv3 URL: http://www.freefilesync.org/ # upstream does not provide easy automatic downloads of the source, so use the mirror -#Source0: http://www.freefilesync.org/download/%{pkgname}_%{version}_Source.zip +#Source0: http://www.freefilesync.org/download/%%{pkgname}_%%{version}_Source.zip Source0: https://gitlab.com/opensource-tracking/%{pkgname}/-/archive/%{version}/%{pkgname}-%{version}.tar.gz Source1: %{pkgname}.desktop Source2: %{prog2name}.desktop -Patch0: ffs_makefile.patch +Patch0: ffs_allow_parallel_ops.patch Patch1: ffs_no_check_updates.patch Patch2: ffs_no_wx311.patch -Patch3: ffs_fedora.patch +Patch3: ffs_sftp.patch +Patch4: ffs_fedora.patch +Patch5: ffs_el.patch Packager: B Stack <bgstack15@gmail.com> -BuildRequires: boost-devel # WARNING: the build will FAIL if you have wxGTK3-devel installed. Only wxGTK2-devel should be on the build system. +BuildRequires: boost-devel BuildRequires: compat-wxGTK3-gtk2-devel -BuildRequires: gcc-c++ BuildRequires: desktop-file-utils +BuildRequires: gcc-c++ BuildRequires: ImageMagick BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(libselinux) BuildRequires: pkgconfig(zlib) +BuildRequires: libcurl-devel %{min_libcurl} +BuildRequires: libssh2-devel %{min_libssh2} +%if 0%{?el6}%{?el7} +BuildRequires: wxGTK-devel +BuildRequires: %{scl_buildreq} +BuildRequires: openssl-%{name}-devel %{min_openssl} +Requires: libcurl %{min_libcurl} +Requires: libssh2 %{min_libssh2} +Requires: openssl-%{name}-libs %{min_openssl} +%else +BuildRequires: openssl-devel +%endif Requires: hicolor-icon-theme +Requires: xdg-utils %description FreeFileSync is a free Open Source software that helps you synchronize @@ -48,27 +75,48 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \ %patch1 -p1 %patch2 -p1 %patch3 -p1 +%if 0%{?el6}%{?el7} +# use the el patch +%patch5 -p1 +%else +# use the fedora patch +%patch4 -p1 +%endif # custom build parameters for packaging application in rpm +# fedora provides build_cxxflags, which is really just optflags %{__sed} \ - -e 's|-O3 -DNDEBUG|-DNDEBUG -D"warn_static(arg)= " -DZEN_LINUX %{build_cxxflags}|g' \ - -e '/LINKFLAGS/s|-s|%{__global_ldflags}|g' \ + -e 's|-O3 -DNDEBUG|-DNDEBUG -D"warn_static(arg)= " -DZEN_LINUX %{?build_cxxflags:%{build_cxxflags}}%{!?build_cxxflags:%{optflags}}|g' \ + -e '/LINKFLAGS/s|-s|%{__global_ldflags}|;' \ -i %{pkgname}/Source/Makefile %{pkgname}/Source/%{prog2name}/Makefile %build %if !%{dummy_package} -%make_build -C %{pkgname}/Source -%make_build -C %{pkgname}/Source/%{prog2name} + %if "%{?scl_env}" != "" + scl enable %{scl_env} /bin/bash << EOF + %endif + %make_build -C %{pkgname}/Source + %make_build -C %{pkgname}/Source/%{prog2name} + %if "%{?scl_env}" != "" +EOF + %endif %endif %install %if !%{dummy_package} -%make_install -C %{pkgname}/Source -%make_install -C %{pkgname}/Source/%{prog2name} +# removed by upstream! +#%%make_install -C %%{pkgname}/Source +#%%make_install -C %%{pkgname}/Source/%%{prog2name} +pushd %{pkgname}/Build +install -d %{buildroot}%{_bindir} %{buildroot}%{_datadir}/%{name} +install -Dm 0755 -t %{buildroot}%{_bindir} Bin/%{pkgname} Bin/%{prog2name} +cp -pr Languages %{buildroot}%{_datadir}/%{name} +install -Dm 0644 ding.wav gong.wav harp.wav Resources.zip styles.gtk_rc %{buildroot}%{_datadir}/%{name} +popd %endif # make extra sure the files are not marked with executable -find %{buildroot}%{_datadir}/%{pkgname} -type f -exec chmod -x '{}' \; || : +find %{buildroot}%{_datadir}/%{name} -type f -exec chmod -x '{}' \; || : # desktop files mkdir -p %{buildroot}%{_datadir}/applications @@ -127,11 +175,15 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_bindir}/%{prog2name} %{_datadir}/applications/*.desktop %{_datadir}/icons/hicolor/*x*/apps/*.png -%{_datadir}/%{pkgname} -%{_defaultdocdir}/%{pkgname} -%ghost %config %attr(666, -, -) %{_datadir}/%{pkgname}/GlobalSettings.xml +%{_datadir}/%{name} +%ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml %changelog +* Tue Feb 12 2019 B Stack <bgstack15@gmail.com> - 10.9-1 +- version bump +- add manual install that is now absent from upstream +- move datadir to lowercase name instead of camelcase + * Thu Jan 17 2019 B Stack <bgstack15@gmail.com> - 10.8-1 - version bump |