summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--freefilesync/debian/changelog16
-rw-r--r--freefilesync/debian/freefilesync+devuan.dsc2
-rw-r--r--freefilesync/debian/patches/ffs_icon_loader.patch20
-rw-r--r--freefilesync/debian/patches/ffs_openssl.patch103
-rw-r--r--freefilesync/debian/patches/series2
-rw-r--r--freefilesync/ffs_icon_loader.patch20
-rw-r--r--freefilesync/ffs_openssl.patch103
-rw-r--r--freefilesync/freefilesync.spec10
8 files changed, 273 insertions, 3 deletions
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 377f3c7..69b66e1 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,17 @@
+freefilesync (11.14-1+devuan) obs; urgency=medium
+
+ * Upstream updates
+ - Authenticate (S)FTP connections using OpenSSL 3.0
+ - Fixed E_NOINTERFACE error after synchronization
+ - Preempt crashes due to Nahimic Sonic Studio 3
+ - Hide main window when minimizing progress window (macOS)
+ - Avoid second dock icon when minimizing progress window (macOS)
+ * [bgstack15]
+ - add ffs_openssl.patch to revert to openssl 1.1.1l dependency
+ - add ffs_icon_loader.patch for libglib2.0-0 issue
+
+ -- B. Stack <bgstack15@gmail.com> Wed, 22 Sep 2021 07:45:04 -0400
+
freefilesync (11.13-1+devuan) obs; urgency=medium
* Upstream updates
@@ -9,7 +23,7 @@ freefilesync (11.13-1+devuan) obs; urgency=medium
- Always enable external command if independent of file items
- Support installation without Rosetta2 on ARM64 (macOS)
- -- B. Stack <bgstack15@gmail.com> Tu, 17 Aug 2021 19:25:55 -0400
+ -- B. Stack <bgstack15@gmail.com> Tue, 17 Aug 2021 19:25:55 -0400
freefilesync (11.12-1+devuan) obs; urgency=medium
diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc
index 75054f6..7ad515c 100644
--- a/freefilesync/debian/freefilesync+devuan.dsc
+++ b/freefilesync/debian/freefilesync+devuan.dsc
@@ -2,7 +2,7 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 11.13-1+devuan
+Version: 11.14-1+devuan
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
diff --git a/freefilesync/debian/patches/ffs_icon_loader.patch b/freefilesync/debian/patches/ffs_icon_loader.patch
new file mode 100644
index 0000000..2575ec5
--- /dev/null
+++ b/freefilesync/debian/patches/ffs_icon_loader.patch
@@ -0,0 +1,20 @@
+Summary: Solve libglib2.0 problem in sketchy manner
+Date: 2021-09-22
+Version: 11.14
+Author: bgstack15
+Message:
+Warning! I have absolutely no idea what I am doing. Check https://freefilesync.org/forum/viewtopic.php?t=8780 for future developments.
+In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
+Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
+$ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
+--- 11.13-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 07:35:40.991208133 -0400
++++ 11.14-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 14:40:10.981215352 -0400
+@@ -216,7 +216,7 @@
+ //the remaining icon types won't block!
+ assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
+
+- return FileIconHolder(static_cast<GIcon*>(::g_object_ref(gicon)) /*pass ownership*/, maxSize);
++ return FileIconHolder(gicon /*pass ownership*/, maxSize);
+
+ }
+
diff --git a/freefilesync/debian/patches/ffs_openssl.patch b/freefilesync/debian/patches/ffs_openssl.patch
new file mode 100644
index 0000000..47fd5cc
--- /dev/null
+++ b/freefilesync/debian/patches/ffs_openssl.patch
@@ -0,0 +1,103 @@
+Summary: Revert 11.14 openssl 3.0.0 usage
+Author: bgstack15
+Date: 2021-09-22
+Version: 11.14
+Message: Zenju updated FreeFileSync 11.14 to use openssl 3.0.0 but my distros are not ready for that. By reverting to the 11.13 logic, the application can compile against openssl 1.1.1l as before.
+diff -aur 11.13/zen/open_ssl.cpp 11.14/zen/open_ssl.cpp
+--- 11.13/zen/open_ssl.cpp
++++ 11.14/zen/open_ssl.cpp
+@@ -179,9 +179,9 @@ std::shared_ptr<EVP_PKEY> streamToKey(const std::string& keyStream, RsaStreamTyp
+
+ //================================================================================
+
+-using EvpToBioFunc = int (*)(BIO* bio, const EVP_PKEY* evp);
++using EvpToBioFunc = int (*)(BIO* bio, EVP_PKEY* evp);
+
+-std::string evpKeyToStream(const EVP_PKEY* evp, EvpToBioFunc evpToBio, const char* functionName) //throw SysError
++std::string evpKeyToStream(EVP_PKEY* evp, EvpToBioFunc evpToBio, const char* functionName) //throw SysError
+ {
+ BIO* bio = ::BIO_new(BIO_s_mem());
+ if (!bio)
+@@ -205,16 +205,16 @@ std::string evpKeyToStream(const EVP_PKEY* evp, EvpToBioFunc evpToBio, const cha
+ }
+
+
+-using RsaToBioFunc = int (*)(BIO* bp, const RSA* x);
++using RsaToBioFunc = int (*)(BIO* bp, RSA* x);
+
+-std::string evpKeyToStream(const EVP_PKEY* evp, RsaToBioFunc rsaToBio, const char* functionName) //throw SysError
++std::string evpKeyToStream(EVP_PKEY* evp, RsaToBioFunc rsaToBio, const char* functionName) //throw SysError
+ {
+ BIO* bio = ::BIO_new(BIO_s_mem());
+ if (!bio)
+ throw SysError(formatLastOpenSSLError("BIO_new"));
+ ZEN_ON_SCOPE_EXIT(::BIO_free_all(bio));
+
+- const RSA* rsa = ::EVP_PKEY_get0_RSA(evp); //unowned reference!
++ RSA* rsa = ::EVP_PKEY_get0_RSA(evp); //unowned reference!
+ if (!rsa)
+ throw SysError(formatLastOpenSSLError("EVP_PKEY_get0_RSA"));
+
+@@ -236,33 +236,33 @@ std::string evpKeyToStream(const EVP_PKEY* evp, RsaToBioFunc rsaToBio, const cha
+
+
+ //fix OpenSSL API inconsistencies:
+-int PEM_write_bio_PrivateKey2(BIO* bio, const EVP_PKEY* key)
++int PEM_write_bio_PrivateKey2(BIO* bio, EVP_PKEY* key)
+ {
+ return ::PEM_write_bio_PrivateKey(bio, //BIO* bp
+- key, //const EVP_PKEY* x
++ key, //EVP_PKEY* x
+ nullptr, //const EVP_CIPHER* enc
+- nullptr, //const unsigned char* kstr
++ nullptr, //unsigned char* kstr
+ 0, //int klen
+ nullptr, //pem_password_cb* cb
+ nullptr); //void* u
+ }
+
+-int PEM_write_bio_RSAPrivateKey2(BIO* bio, const RSA* rsa)
++int PEM_write_bio_RSAPrivateKey2(BIO* bio, RSA* rsa)
+ {
+ return ::PEM_write_bio_RSAPrivateKey(bio, //BIO* bp
+- rsa, //const RSA* x
++ rsa, //RSA* x
+ nullptr, //const EVP_CIPHER* enc
+- nullptr, //const unsigned char* kstr
++ nullptr, //unsigned char* kstr
+ 0, //int klen
+ nullptr, //pem_password_cb* cb
+ nullptr); //void* u
+ }
+
+-int PEM_write_bio_RSAPublicKey2(BIO* bio, const RSA* rsa) { return ::PEM_write_bio_RSAPublicKey(bio, rsa); }
++int PEM_write_bio_RSAPublicKey2(BIO* bio, RSA* rsa) { return ::PEM_write_bio_RSAPublicKey(bio, rsa); }
+
+ //--------------------------------------------------------------------------------
+
+-std::string keyToStream(const EVP_PKEY* evp, RsaStreamType streamType, bool publicKey) //throw SysError
++std::string keyToStream(EVP_PKEY* evp, RsaStreamType streamType, bool publicKey) //throw SysError
+ {
+ switch (streamType)
+ {
+@@ -571,15 +571,15 @@ public:
+ if (sslError == SSL_ERROR_ZERO_RETURN)
+ return 0; //EOF + close_notify alert
+
+-#if OPENSSL_VERSION_NUMBER >= 0x30000000L /*OpenSSL 3.0.0*/ || \
+- OPENSSL_VERSION_NUMBER == 0x1010105fL /*OpenSSL 1.1.1e*/
++#if OPENSSL_VERSION_NUMBER == 0x1010105fL //OpenSSL 1.1.1e
+ const auto ec = ::ERR_peek_last_error();
+ if (sslError == SSL_ERROR_SSL && ERR_GET_REASON(ec) == SSL_R_UNEXPECTED_EOF_WHILE_READING) //EOF: only expected for HTTP/1.0
+-#else //obsolete handling: https://github.com/openssl/openssl/issues/10880#issuecomment-575746226
++ return 0;
++#else //obsolete handling, at least in OpenSSL 1.1.1e (but valid again with OpenSSL 1.1.1f!)
++ //https://github.com/openssl/openssl/issues/10880#issuecomment-575746226
+ if ((sslError == SSL_ERROR_SYSCALL && ::ERR_peek_last_error() == 0)) //EOF: only expected for HTTP/1.0
+-#endif
+ return 0;
+-
++#endif
+ throw SysError(formatLastOpenSSLError("SSL_read_ex") + L' ' + getSslErrorLiteral(sslError));
+ }
+ assert(bytesReceived > 0); //SSL_read_ex() considers EOF an error!
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index 7a709ef..92dd680 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -10,3 +10,5 @@ revert_zenju_aggressive_upstreamisms.patch
ffs_gcc.patch
ffs_traditional_view.patch
ffs_desktop_notifications.patch
+ffs_openssl.patch
+ffs_icon_loader.patch
diff --git a/freefilesync/ffs_icon_loader.patch b/freefilesync/ffs_icon_loader.patch
new file mode 100644
index 0000000..2575ec5
--- /dev/null
+++ b/freefilesync/ffs_icon_loader.patch
@@ -0,0 +1,20 @@
+Summary: Solve libglib2.0 problem in sketchy manner
+Date: 2021-09-22
+Version: 11.14
+Author: bgstack15
+Message:
+Warning! I have absolutely no idea what I am doing. Check https://freefilesync.org/forum/viewtopic.php?t=8780 for future developments.
+In Devuan Ceres, starting in 2021-08 with libglib2.0-0=2.68.3-2 the file icon_loader.cpp fails to compile. By removing the static_cast, this file can compile. The built application throws all sorts of GLib-GObject-CRITICIAL messages but the application operates.
+Downgrade to "deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20210801T144205Z/ unstable main non-free contrib" in /etc/apt/sources.list and install the exact libglib version necessary to compile without this patch.
+$ sudo apt-get -V install libglib2.0-0=2.66.8-1 libglib2.0-bin=2.66.8-1 libglib2.0-data=2.66.8-1 libglib2.0-dev=2.66.8-1 libglib2.0-dev-bin=2.66.8-1 libglib2.0-0:i386=2.66.8-1
+--- 11.13-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 07:35:40.991208133 -0400
++++ 11.14-0/FreeFileSync/Source/base/icon_loader.cpp 2021-09-22 14:40:10.981215352 -0400
+@@ -216,7 +216,7 @@
+ //the remaining icon types won't block!
+ assert(GDK_IS_PIXBUF(gicon) || G_IS_THEMED_ICON(gicon) || G_IS_EMBLEMED_ICON(gicon));
+
+- return FileIconHolder(static_cast<GIcon*>(::g_object_ref(gicon)) /*pass ownership*/, maxSize);
++ return FileIconHolder(gicon /*pass ownership*/, maxSize);
+
+ }
+
diff --git a/freefilesync/ffs_openssl.patch b/freefilesync/ffs_openssl.patch
new file mode 100644
index 0000000..47fd5cc
--- /dev/null
+++ b/freefilesync/ffs_openssl.patch
@@ -0,0 +1,103 @@
+Summary: Revert 11.14 openssl 3.0.0 usage
+Author: bgstack15
+Date: 2021-09-22
+Version: 11.14
+Message: Zenju updated FreeFileSync 11.14 to use openssl 3.0.0 but my distros are not ready for that. By reverting to the 11.13 logic, the application can compile against openssl 1.1.1l as before.
+diff -aur 11.13/zen/open_ssl.cpp 11.14/zen/open_ssl.cpp
+--- 11.13/zen/open_ssl.cpp
++++ 11.14/zen/open_ssl.cpp
+@@ -179,9 +179,9 @@ std::shared_ptr<EVP_PKEY> streamToKey(const std::string& keyStream, RsaStreamTyp
+
+ //================================================================================
+
+-using EvpToBioFunc = int (*)(BIO* bio, const EVP_PKEY* evp);
++using EvpToBioFunc = int (*)(BIO* bio, EVP_PKEY* evp);
+
+-std::string evpKeyToStream(const EVP_PKEY* evp, EvpToBioFunc evpToBio, const char* functionName) //throw SysError
++std::string evpKeyToStream(EVP_PKEY* evp, EvpToBioFunc evpToBio, const char* functionName) //throw SysError
+ {
+ BIO* bio = ::BIO_new(BIO_s_mem());
+ if (!bio)
+@@ -205,16 +205,16 @@ std::string evpKeyToStream(const EVP_PKEY* evp, EvpToBioFunc evpToBio, const cha
+ }
+
+
+-using RsaToBioFunc = int (*)(BIO* bp, const RSA* x);
++using RsaToBioFunc = int (*)(BIO* bp, RSA* x);
+
+-std::string evpKeyToStream(const EVP_PKEY* evp, RsaToBioFunc rsaToBio, const char* functionName) //throw SysError
++std::string evpKeyToStream(EVP_PKEY* evp, RsaToBioFunc rsaToBio, const char* functionName) //throw SysError
+ {
+ BIO* bio = ::BIO_new(BIO_s_mem());
+ if (!bio)
+ throw SysError(formatLastOpenSSLError("BIO_new"));
+ ZEN_ON_SCOPE_EXIT(::BIO_free_all(bio));
+
+- const RSA* rsa = ::EVP_PKEY_get0_RSA(evp); //unowned reference!
++ RSA* rsa = ::EVP_PKEY_get0_RSA(evp); //unowned reference!
+ if (!rsa)
+ throw SysError(formatLastOpenSSLError("EVP_PKEY_get0_RSA"));
+
+@@ -236,33 +236,33 @@ std::string evpKeyToStream(const EVP_PKEY* evp, RsaToBioFunc rsaToBio, const cha
+
+
+ //fix OpenSSL API inconsistencies:
+-int PEM_write_bio_PrivateKey2(BIO* bio, const EVP_PKEY* key)
++int PEM_write_bio_PrivateKey2(BIO* bio, EVP_PKEY* key)
+ {
+ return ::PEM_write_bio_PrivateKey(bio, //BIO* bp
+- key, //const EVP_PKEY* x
++ key, //EVP_PKEY* x
+ nullptr, //const EVP_CIPHER* enc
+- nullptr, //const unsigned char* kstr
++ nullptr, //unsigned char* kstr
+ 0, //int klen
+ nullptr, //pem_password_cb* cb
+ nullptr); //void* u
+ }
+
+-int PEM_write_bio_RSAPrivateKey2(BIO* bio, const RSA* rsa)
++int PEM_write_bio_RSAPrivateKey2(BIO* bio, RSA* rsa)
+ {
+ return ::PEM_write_bio_RSAPrivateKey(bio, //BIO* bp
+- rsa, //const RSA* x
++ rsa, //RSA* x
+ nullptr, //const EVP_CIPHER* enc
+- nullptr, //const unsigned char* kstr
++ nullptr, //unsigned char* kstr
+ 0, //int klen
+ nullptr, //pem_password_cb* cb
+ nullptr); //void* u
+ }
+
+-int PEM_write_bio_RSAPublicKey2(BIO* bio, const RSA* rsa) { return ::PEM_write_bio_RSAPublicKey(bio, rsa); }
++int PEM_write_bio_RSAPublicKey2(BIO* bio, RSA* rsa) { return ::PEM_write_bio_RSAPublicKey(bio, rsa); }
+
+ //--------------------------------------------------------------------------------
+
+-std::string keyToStream(const EVP_PKEY* evp, RsaStreamType streamType, bool publicKey) //throw SysError
++std::string keyToStream(EVP_PKEY* evp, RsaStreamType streamType, bool publicKey) //throw SysError
+ {
+ switch (streamType)
+ {
+@@ -571,15 +571,15 @@ public:
+ if (sslError == SSL_ERROR_ZERO_RETURN)
+ return 0; //EOF + close_notify alert
+
+-#if OPENSSL_VERSION_NUMBER >= 0x30000000L /*OpenSSL 3.0.0*/ || \
+- OPENSSL_VERSION_NUMBER == 0x1010105fL /*OpenSSL 1.1.1e*/
++#if OPENSSL_VERSION_NUMBER == 0x1010105fL //OpenSSL 1.1.1e
+ const auto ec = ::ERR_peek_last_error();
+ if (sslError == SSL_ERROR_SSL && ERR_GET_REASON(ec) == SSL_R_UNEXPECTED_EOF_WHILE_READING) //EOF: only expected for HTTP/1.0
+-#else //obsolete handling: https://github.com/openssl/openssl/issues/10880#issuecomment-575746226
++ return 0;
++#else //obsolete handling, at least in OpenSSL 1.1.1e (but valid again with OpenSSL 1.1.1f!)
++ //https://github.com/openssl/openssl/issues/10880#issuecomment-575746226
+ if ((sslError == SSL_ERROR_SYSCALL && ::ERR_peek_last_error() == 0)) //EOF: only expected for HTTP/1.0
+-#endif
+ return 0;
+-
++#endif
+ throw SysError(formatLastOpenSSLError("SSL_read_ex") + L' ' + getSslErrorLiteral(sslError));
+ }
+ assert(bytesReceived > 0); //SSL_read_ex() considers EOF an error!
diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec
index bd9d7bf..80a4d0b 100644
--- a/freefilesync/freefilesync.spec
+++ b/freefilesync/freefilesync.spec
@@ -19,7 +19,7 @@
%define libssh2_name libssh2-%{name}
%endif
Name: freefilesync
-Version: 11.13
+Version: 11.14
Release: 1%{?dist}
Summary: A file synchronization utility
@@ -45,6 +45,8 @@ Patch9: ffs_no_eraseif.patch
Patch10: revert_zenju_aggressive_upstreamisms.patch
Patch11: ffs_traditional_view.patch
Patch12: ffs_desktop_notifications.patch
+Patch13: ffs_openssl.patch
+Patch14: ffs_icon_loader.patch
Packager: B. Stack <bgstack15@gmail.com>
BuildRequires: brotli-devel
@@ -107,6 +109,8 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \
%patch10 -p1
%patch11 -p1
%patch12 -p1
+%patch13 -p1
+%patch14 -p1
# custom build parameters for packaging application in rpm
# fedora provides build_cxxflags, which is really just optflags
@@ -210,6 +214,10 @@ update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & :
%ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml
%changelog
+* Wed Sep 22 2021 B. Stack <bgstack15@gmail.com> - 11.14-1
+- version bump
+- add patches for openssl and icon_loader
+
* Tue Aug 17 2021 B. Stack <bgstack15@gmail.com> - 11.13-1
- version bump
bgstack15