diff options
author | B Stack <bgstack15@gmail.com> | 2020-06-26 20:05:53 +0000 |
---|---|---|
committer | B Stack <bgstack15@gmail.com> | 2020-06-26 20:05:53 +0000 |
commit | adedcec62e0bb184930af3d812e78cfd279abcf3 (patch) | |
tree | 3dd5641a2a1b473d26e16f19eaefcc3144984fba | |
parent | Merge branch 'irfanview-bump' into 'master' (diff) | |
parent | ffs dpkg gtk2 build (diff) | |
download | stackrpms-adedcec62e0bb184930af3d812e78cfd279abcf3.tar.gz stackrpms-adedcec62e0bb184930af3d812e78cfd279abcf3.tar.bz2 stackrpms-adedcec62e0bb184930af3d812e78cfd279abcf3.zip |
Merge branch 'freefilesync-bump' into 'master'
Freefilesync 10.25
See merge request bgstack15/stackrpms!164
-rw-r--r-- | freefilesync/debian/README.Debian | 4 | ||||
-rw-r--r-- | freefilesync/debian/changelog | 31 | ||||
-rw-r--r-- | freefilesync/debian/control | 1 | ||||
-rw-r--r-- | freefilesync/debian/freefilesync+devuan.dsc | 4 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_gcc.patch | 46 | ||||
-rw-r--r-- | freefilesync/debian/patches/ffs_no_wx311.patch | 18 | ||||
-rw-r--r-- | freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch | 181 | ||||
-rw-r--r-- | freefilesync/debian/patches/series | 1 | ||||
-rw-r--r-- | freefilesync/ffs_no_eraseif.patch | 52 | ||||
-rw-r--r-- | freefilesync/ffs_no_wx311.patch | 18 | ||||
-rw-r--r-- | freefilesync/freefilesync.spec | 2 | ||||
-rw-r--r-- | freefilesync/revert_zenju_aggressive_upstreamisms.patch | 167 |
12 files changed, 142 insertions, 383 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..2bd53b5 100644 --- a/freefilesync/debian/changelog +++ b/freefilesync/debian/changelog @@ -1,3 +1,34 @@ +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..92c55ca 100644 --- a/freefilesync/debian/control +++ b/freefilesync/debian/control @@ -4,6 +4,7 @@ Priority: optional Maintainer: B Stack <bgstack15@gmail.com> Build-Depends: debhelper (>=12~), imagemagick, + g++-10, libcurl4-openssl-dev (>=7.68.0), libssh2-1-dev, libssl-dev, 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_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_wx311.patch b/freefilesync/debian/patches/ffs_no_wx311.patch index 932800d..926f7b8 100644 --- a/freefilesync/debian/patches/ffs_no_wx311.patch +++ b/freefilesync/debian/patches/ffs_no_wx311.patch @@ -1,8 +1,18 @@ 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 ++++ 10.25-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-06-20 14:23:47.488836409 -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)) +@@ -1663,7 +1664,7 @@ //setMainInstructionFont(*m_staticTextMain); m_bitmapActivation->SetBitmap(getResourceImage("internet")); 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..ba71e47 100644 --- a/freefilesync/debian/patches/series +++ b/freefilesync/debian/patches/series @@ -8,3 +8,4 @@ ffs_sftp.patch ffs_libssh2.patch ffs_curl.patch revert_zenju_aggressive_upstreamisms.patch +ffs_gcc.patch 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..926f7b8 100644 --- a/freefilesync/ffs_no_wx311.patch +++ b/freefilesync/ffs_no_wx311.patch @@ -1,8 +1,18 @@ 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 ++++ 10.25-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-06-20 14:23:47.488836409 -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)) +@@ -1663,7 +1664,7 @@ //setMainInstructionFont(*m_staticTextMain); m_bitmapActivation->SetBitmap(getResourceImage("internet")); diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec index 914c333..afc6c5f 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: 10.25 Release: 1%{?dist} Summary: A file synchronization utility 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 |