summaryrefslogtreecommitdiff
path: root/freefilesync/revert_zenju_aggressive_upstreamisms.patch
diff options
context:
space:
mode:
authorB Stack <bgstack15@gmail.com>2020-05-21 03:11:11 +0000
committerB Stack <bgstack15@gmail.com>2020-05-21 03:11:11 +0000
commit3ecfbfaf641478dc1b84099f417cff764671a209 (patch)
tree7cacb13c6a30f2513ff55dc5743f7f1ccb50388a /freefilesync/revert_zenju_aggressive_upstreamisms.patch
parentMerge branch 'palemoon-bump' into 'master' (diff)
parentfix whitespace for no_eraseif patch (diff)
downloadstackrpms-3ecfbfaf641478dc1b84099f417cff764671a209.tar.gz
stackrpms-3ecfbfaf641478dc1b84099f417cff764671a209.tar.bz2
stackrpms-3ecfbfaf641478dc1b84099f417cff764671a209.zip
Merge branch 'freefilesync-bump' into 'master'
Freefilesync 10.24 See merge request bgstack15/stackrpms!158
Diffstat (limited to 'freefilesync/revert_zenju_aggressive_upstreamisms.patch')
-rw-r--r--freefilesync/revert_zenju_aggressive_upstreamisms.patch275
1 files changed, 275 insertions, 0 deletions
diff --git a/freefilesync/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/revert_zenju_aggressive_upstreamisms.patch
new file mode 100644
index 0000000..0da4e06
--- /dev/null
+++ b/freefilesync/revert_zenju_aggressive_upstreamisms.patch
@@ -0,0 +1,275 @@
+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
+@@ -7,7 +7,6 @@
+ #ifndef CHOICE_ENUM_H_132413545345687
+ #define CHOICE_ENUM_H_132413545345687
+
+-#include <unordered_map>
+ #include <vector>
+ #include <wx/choice.h>
+
+@@ -44,11 +43,8 @@
+ descrList.push_back({ value, { text, tooltip } });
+ return *this;
+ }
+-
+ using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>;
+ DescrList descrList;
+-
+- std::unordered_map<const wxChoice*, std::vector<wxString>> itemsSetLast;
+ };
+ template <class Enum> void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value);
+ template <class Enum> Enum getEnumVal(const EnumDescrList<Enum>& mapping, const wxChoice& ctrl);
+@@ -69,34 +65,26 @@
+
+ //--------------- impelementation -------------------------------------------
+ template <class Enum>
+-void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
++void setEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
+ {
+- auto& itemsSetLast = mapping.itemsSetLast[&ctrl];
++ ctrl.Clear();
+
+- std::vector<wxString> items;
++ int selectedPos = 0;
+ for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it)
+- items.push_back(it->second.first);
+-
+- if (items != itemsSetLast)
+ {
+- ctrl.Set(items); //expensive as fuck! => only call when absolutely needed!
+- itemsSetLast = std::move(items);
++ ctrl.Append(it->second.first);
++ if (it->first == value)
++ {
++ selectedPos = it - mapping.descrList.begin();
++
++ if (it->second.second.empty())
++ ctrl.UnsetToolTip();
++ else
++ ctrl.SetToolTip(it->second.second);
++ }
+ }
+- //-----------------------------------------------------------------
+-
+- const auto it = std::find_if(mapping.descrList.begin(), mapping.descrList.end(), [&](const auto& mapItem) { return mapItem.first == value; });
+- if (it != mapping.descrList.end())
+- {
+- if (const wxString& tooltip = it->second.second;
+- !tooltip.empty())
+- ctrl.SetToolTip(tooltip);
+- else
+- ctrl.UnsetToolTip();
+
+- const int selectedPos = it - mapping.descrList.begin();
+- ctrl.SetSelection(selectedPos);
+- }
+- else assert(false);
++ ctrl.SetSelection(selectedPos);
+ }
+
+ template <class Enum>
+@@ -115,17 +103,11 @@
+
+ template <class Enum> void updateTooltipEnumVal(const EnumDescrList<Enum>& mapping, wxChoice& ctrl)
+ {
+- const int selectedPos = ctrl.GetSelection();
++ const Enum currentValue = getEnumVal(mapping, ctrl);
+
+- if (0 <= selectedPos && selectedPos < static_cast<int>(mapping.descrList.size()))
+- {
+- if (const auto& [text, tooltip] = mapping.descrList[selectedPos].second;
+- !tooltip.empty())
+- ctrl.SetToolTip(tooltip);
+- else
+- ctrl.UnsetToolTip();
+- }
+- else assert(false);
++ for (const auto& [enumValue, textAndTooltip] : mapping.descrList)
++ if (currentValue == enumValue)
++ ctrl.SetToolTip(textAndTooltip.second);
+ }
+ }
+
bgstack15