summaryrefslogtreecommitdiff
path: root/freefilesync
diff options
context:
space:
mode:
authorB. Stack <bgstack15@gmail.com>2024-02-09 21:09:54 -0500
committerB. Stack <bgstack15@gmail.com>2024-02-09 21:09:54 -0500
commitd339c145870a86c37509debe5d8fa145e192f390 (patch)
tree8cd5fe55989a1164da266840644782e3632afd38 /freefilesync
parentnm: remove 2 obsolete patches (diff)
downloadstackrpms-d339c145870a86c37509debe5d8fa145e192f390.tar.gz
stackrpms-d339c145870a86c37509debe5d8fa145e192f390.tar.bz2
stackrpms-d339c145870a86c37509debe5d8fa145e192f390.zip
ffs: major refresh on top of bastif dpkg
Diffstat (limited to 'freefilesync')
-rw-r--r--freefilesync/debian/FreeFileSync.desktop15
-rw-r--r--freefilesync/debian/RealTimeSync.desktop14
-rw-r--r--freefilesync/debian/changelog9
-rw-r--r--freefilesync/debian/clean6
-rw-r--r--freefilesync/debian/control19
-rw-r--r--freefilesync/debian/desktop/FreeFileSync-edit-with.desktop43
-rw-r--r--freefilesync/debian/desktop/FreeFileSync.desktop45
-rw-r--r--freefilesync/debian/desktop/RealTimeSync.desktop44
-rw-r--r--freefilesync/debian/docs1
-rw-r--r--freefilesync/debian/freefilesync+stackrpms.dsc4
-rw-r--r--freefilesync/debian/freefilesync.install2
-rw-r--r--freefilesync/debian/freefilesync.manpages1
-rw-r--r--freefilesync/debian/install6
-rw-r--r--freefilesync/debian/links1
-rw-r--r--freefilesync/debian/man/FreeFileSync.1 (renamed from freefilesync/debian/manpages/FreeFileSync.1)0
-rw-r--r--freefilesync/debian/man/RealTimeSync.1 (renamed from freefilesync/debian/manpages/RealTimeSync.1)8
-rw-r--r--freefilesync/debian/manpages1
-rw-r--r--freefilesync/debian/patches/ffs_curl.patch44
-rw-r--r--freefilesync/debian/patches/ffs_devuan.patch49
-rw-r--r--freefilesync/debian/patches/ffs_devuan_gtk3.patch4
-rw-r--r--freefilesync/debian/patches/ffs_libssh2.patch22
-rw-r--r--freefilesync/debian/patches/ffs_no_wx311.patch138
-rw-r--r--freefilesync/debian/patches/ffs_openssl.patch52
-rw-r--r--freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch116
-rw-r--r--freefilesync/debian/patches/libssh2_relax_dep.patch27
-rw-r--r--freefilesync/debian/patches/makefile-improvements.patch110
-rw-r--r--freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch399
-rw-r--r--freefilesync/debian/patches/series10
-rwxr-xr-xfreefilesync/debian/rules116
-rw-r--r--freefilesync/debian/sharedmimeinfo (renamed from freefilesync/debian/freefilesync.sharedmimeinfo)0
30 files changed, 506 insertions, 800 deletions
diff --git a/freefilesync/debian/FreeFileSync.desktop b/freefilesync/debian/FreeFileSync.desktop
deleted file mode 100644
index 6bb4d24..0000000
--- a/freefilesync/debian/FreeFileSync.desktop
+++ /dev/null
@@ -1,15 +0,0 @@
-[Desktop Entry]
-Categories=GTK;Utility;FileTools;
-Comment=Backup software to synchronize files and folders
-Comment[pt_BR]=Aplicação de backup para sincronizar arquivos e diretórios
-Exec=FreeFileSync %f
-GenericName=File synchronization
-GenericName[pt_BR]=Sincronização de arquivos
-Icon=FreeFileSync
-MimeType=application/x-freefilesync-ffs;application/x-freefilesync-batch
-Name=FreeFileSync
-Path=/usr/share/freefilesync
-StartupNotify=true
-StartupWMClass=FreeFileSync
-Terminal=false
-Type=Application
diff --git a/freefilesync/debian/RealTimeSync.desktop b/freefilesync/debian/RealTimeSync.desktop
deleted file mode 100644
index d7d2670..0000000
--- a/freefilesync/debian/RealTimeSync.desktop
+++ /dev/null
@@ -1,14 +0,0 @@
-[Desktop Entry]
-Categories=GTK;Utility;FileTools;
-Comment=Real time synchronization
-Comment[pt_BR]=Sincronização em tempo real
-Exec=RealTimeSync %f
-GenericName=Automated Synchronization
-GenericName[pt_BR]=Sincronização Automatizada
-Icon=RealTimeSync
-MimeType=application/x-freefilesync-real
-Name=RealTimeSync
-Path=/usr/share/freefilesync
-StartupNotify=true
-Terminal=false
-Type=Application
diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog
index 01b66f8..00ecc30 100644
--- a/freefilesync/debian/changelog
+++ b/freefilesync/debian/changelog
@@ -1,3 +1,10 @@
+freefilesync (13.3-101+stackrpms) obs; urgency=low
+
+ * Add dependencies on libselinux1-dev, zlib1g-dev
+ * Update some patches from bastif
+
+ -- B. Stack <bgstack15@gmail.com> Fri, 09 Feb 2024 20:09:21 -0500
+
freefilesync (13.3-100+stackrpms) obs; urgency=low
* Upstream updates
@@ -9,7 +16,7 @@ freefilesync (13.3-100+stackrpms) obs; urgency=low
* Updated code signing certificates (Windows)
-- B. Stack <bgstack15@gmail.com> Sun, 07 Jan 2024 19:39:08 -0500
-
+
freefilesync (13.2-100+stackrpms) obs; urgency=low
* Upstream updates
diff --git a/freefilesync/debian/clean b/freefilesync/debian/clean
new file mode 100644
index 0000000..8fd01b5
--- /dev/null
+++ b/freefilesync/debian/clean
@@ -0,0 +1,6 @@
+FreeFileSync/Build/Bin/
+cfg_batch.png
+database.png
+start_sync.png
+FreeFileSync.png
+RealTimeSync.png
diff --git a/freefilesync/debian/control b/freefilesync/debian/control
index 207b6b2..8056c3f 100644
--- a/freefilesync/debian/control
+++ b/freefilesync/debian/control
@@ -2,19 +2,20 @@ Source: freefilesync
Section: utils
Priority: optional
Maintainer: B. Stack <bgstack15@gmail.com>
-Build-Depends: debhelper (>=12~),
- imagemagick,
+Build-Depends: debhelper (>=13~),
g++-12,
- libbrotli-dev,
- libcurl4-openssl-dev (>=8.4.0-2),
+ imagemagick,
+ libcurl4-openssl-dev (>= 7.84),
libglibmm-2.4-dev | glibmm24-devel,
- libssh2-1-dev (>=1.10.0-3+b1),
- libssl-dev (>=3.0.3-5),
- wx3.2-headers (>=3.2.3+dfsg-2),
- unzip,
libgtk-3-dev,
+ libselinux1-dev,
+ libssh2-1-dev (>= 1.10),
+ libssl-dev (>= 3.0~),
libwxgtk3.2-dev,
-Standards-Version: 4.1.4
+ pkgconf,
+ unzip,
+ zlib1g-dev,
+Standards-Version: 4.6.2
Homepage: https://freefilesync.org/
Package: freefilesync
diff --git a/freefilesync/debian/desktop/FreeFileSync-edit-with.desktop b/freefilesync/debian/desktop/FreeFileSync-edit-with.desktop
new file mode 100644
index 0000000..5a909c0
--- /dev/null
+++ b/freefilesync/debian/desktop/FreeFileSync-edit-with.desktop
@@ -0,0 +1,43 @@
+[Desktop Entry]
+Type=Service
+X-KDE-ServiceTypes=KonqPopupMenu/Plugin
+Actions=editWithFreeFileSync
+MimeType=application/x-freefilesync-gui;application/x-freefilesync-batch;
+X-KDE-Priority=TopLevel
+
+[Desktop Action editWithFreeFileSync]
+Exec=FreeFileSync -edit %f
+Icon=FreeFileSync
+Name=Edit with FreeFileSync
+Name[ar]=تعديل بواسطة FreeFileSync
+Name[bg]=Редактиране с FreeFileSync
+Name[cs]=Upravit v FreeFileSync
+Name[da]=Rediger med FreeFileSync
+Name[de]=Mit FreeFileSync editieren
+Name[el]=Επεξεργασία με FreeFileSync
+Name[en_GB]=Edit with FreeFileSync
+Name[es]=Modificar con FreeFileSync
+Name[fi]=Muokkaa FreeFileSync:llä
+Name[fr]=Modification avec FreeFileSync
+Name[he]=ערוך עם FreeFileSync
+Name[hi]=FreeFileSync के साथ संपादित करें
+Name[hr]=Uredi pomoću FreeFileSynca
+Name[hu]=Szerkesztés FreeFileSync-kel
+Name[it]=Modifica con FreeFileSync
+Name[ja]=FreeFileSync で編集
+Name[ko]=FreeFileSync로 편집
+Name[lt]=Koreguoti su FreeFileSync
+Name[nl]=Bewerken met FreeFileSync
+Name[no]=Rediger med FreeFileSync
+Name[pl]=Edytuj przy użyciu FreeFileSync
+Name[pt]=Editar com FreeFileSync
+Name[pt_BR]=Editar com FreeFileSync
+Name[ro]=Editați cu FreeFileSync
+Name[ru]=Редактировать с помощью FreeFileSync
+Name[sk]=Upraviť vo FreeFileSync
+Name[sl]=Uredi z FreeFileSync
+Name[sv]=Redigera med FreeFileSync
+Name[tr]=FreeFileSync ile düzenlensin
+Name[vi]=Chỉnh sửa bằng FreeFileSync
+Name[zh]=使用 FreeFileSync 编辑
+Name[zh_TW]=使用FreeFileSync編輯
diff --git a/freefilesync/debian/desktop/FreeFileSync.desktop b/freefilesync/debian/desktop/FreeFileSync.desktop
new file mode 100644
index 0000000..4f707f5
--- /dev/null
+++ b/freefilesync/debian/desktop/FreeFileSync.desktop
@@ -0,0 +1,45 @@
+[Desktop Entry]
+Type=Application
+Name=FreeFileSync
+Exec=FreeFileSync %F
+Icon=FreeFileSync
+Terminal=false
+Categories=Utility;FileTools;Archiving;
+StartupNotify=true
+MimeType=application/x-freefilesync-gui;application/x-freefilesync-batch;
+Comment=Folder Comparison and Synchronization
+Comment[ar]=مقارنة ومزامنة المجلدات
+Comment[bg]=Сравняване и синхронизация на папки
+Comment[cs]=porovnání a synchronizace složek
+Comment[da]=Mappeanalyse og synkronisering
+Comment[de]=Ordnervergleich und Synchronisation
+Comment[el]=Σύγκριση Φακέλων και Συγχρονισμός
+Comment[en_GB]=Folder Comparison and Synchronisation
+Comment[es]=Comparación y sincronización de carpetas
+Comment[fi]=Hakemistojen vertailu ja synkronointi
+Comment[fr]=Comparaison de dossiers et Synchronisation
+Comment[he]=סנכרון קבצים ותיקיות
+Comment[hi]=निर्देशिका तुलना और सिंक्रनाइज़ेशन
+Comment[hr]=Usporedba i sinkronizacija mapa
+Comment[hu]=Mappa összehasonlítás és szinkronizálás
+Comment[it]=Comparazione delle Cartelle e Sincronizzazione
+Comment[ja]=フォルダの比較と同期
+Comment[ko]=폴더 비교 및 동기화
+Comment[lt]=Aplankų Palyginimas ir Suvienodinimas
+Comment[nl]=Map vergelijken en synchroniseren
+Comment[no]=Mappe-sammenligning og synkronisering
+Comment[pl]=Porównywanie i Synchronizacja folderów
+Comment[pt]=Comparação e Sincronização de Pastas
+Comment[pt_BR]=Comparação e Sincronização de Pastas
+Comment[ro]=Comparație și sincronizare a directoarelor
+Comment[ru]=Сравнение и синхронизация
+Comment[sk]=Porovnanie a synchronizácia priečinkov
+Comment[sl]=Primerjava in sinhronizacija mape
+Comment[sv]=Mappjämförelse och synkronisering
+Comment[tr]=Klasör karşılaştırma ve eşitleme
+Comment[vi]=So sánh và đồng bộ hóa thư mục
+Comment[zh]=文件夹比较与同步
+Comment[zh_TW]=資料夾比對和同步
+Keywords=Backup Copy
+Path=/usr/share/freefilesync
+StartupWMClass=FreeFileSync
diff --git a/freefilesync/debian/desktop/RealTimeSync.desktop b/freefilesync/debian/desktop/RealTimeSync.desktop
new file mode 100644
index 0000000..0815dbd
--- /dev/null
+++ b/freefilesync/debian/desktop/RealTimeSync.desktop
@@ -0,0 +1,44 @@
+[Desktop Entry]
+Type=Application
+Name=RealTimeSync
+Exec=RealTimeSync %f
+Icon=RealTimeSync
+Terminal=false
+Categories=Utility;FileTools;Archiving;
+StartupNotify=true
+MimeType=application/x-freefilesync-real;
+Comment=Automated Synchronization
+Comment[ar]=المزامنة التلقائية
+Comment[bg]=Автоматична синхронизация
+Comment[cs]=Automatická synchronizace
+Comment[da]=Automatisk synkronisering
+Comment[de]=Automatisierte Synchronisation
+Comment[el]=Αυτοματοποιημένος Συγχρονισμός
+Comment[en_GB]=Automated Synchronisation
+Comment[es]=Sincronización Automática
+Comment[fi]=Automaattinen synkronointi
+Comment[fr]=Synchronisation Automatique
+Comment[he]=סנכרון אוטומטי
+Comment[hi]=स्वचालित सिंक्रनाइज़ेशन
+Comment[hr]=Automatska Sinkronizacija
+Comment[hu]=Automatizált szinkronizálás
+Comment[it]=Sincronizzazione automatizzata
+Comment[ja]=自動同期
+Comment[ko]=자동 동기화
+Comment[lt]=Automatinis Suvienodinimas
+Comment[nl]=Automatische synchronisatie
+Comment[no]=Automatisk synkronisering
+Comment[pl]=Automatyczna synchronizacja
+Comment[pt]=Sincronização Automática
+Comment[pt_BR]=Sincronização Automatizada
+Comment[ro]=Sincronizare Automată
+Comment[ru]=Автоматическая синхронизация
+Comment[sk]=Automatická synchronizácia
+Comment[sl]=Samodejna sinhronizacija
+Comment[sv]=Automatiserad synkronisering
+Comment[tr]=Otomatik eşitleme
+Comment[vi]=Đồng bộ tự động
+Comment[zh]=自动同步
+Comment[zh_TW]=自動化同步
+Keywords=Backup Copy
+Path=/usr/share/freefilesync
diff --git a/freefilesync/debian/docs b/freefilesync/debian/docs
new file mode 100644
index 0000000..7adf61e
--- /dev/null
+++ b/freefilesync/debian/docs
@@ -0,0 +1 @@
+Bugs.txt
diff --git a/freefilesync/debian/freefilesync+stackrpms.dsc b/freefilesync/debian/freefilesync+stackrpms.dsc
index 31ef021..1b648c3 100644
--- a/freefilesync/debian/freefilesync+stackrpms.dsc
+++ b/freefilesync/debian/freefilesync+stackrpms.dsc
@@ -2,11 +2,11 @@ Format: 3.0 (quilt)
Source: freefilesync
Binary: freefilesync
Architecture: any
-Version: 13.3-100+stackrpms
+Version: 13.3-101+stackrpms
Maintainer: B. Stack <bgstack15@gmail.com>
Homepage: https://freefilesync.org/
Standards-Version: 4.1.4
-Build-Depends: debhelper (>= 12~), g++-12, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.86.0-1), libglibmm-2.4-dev, libssh2-1-dev (>= 1.10.0-3+b1), libssl-dev (>= 3.0.3-5), wx3.2-headers, unzip, libgtk-3-dev, libwxgtk3.2-dev, libfontconfig-dev
+Build-Depends: debhelper (>= 13~), g++-12, imagemagick, libcurl4-openssl-dev (>= 7.86.0-1), libglibmm-2.4-dev, libselinux1-dev, libssh2-1-dev (>= 1.10), libssl-dev (>= 3.0~), pkgconf, unzip, libgtk-3-dev, libwxgtk3.2-dev, libfontconfig-dev, zlib1g-dev
Package-List:
freefilesync deb utils optional arch=any
Files:
diff --git a/freefilesync/debian/freefilesync.install b/freefilesync/debian/freefilesync.install
deleted file mode 100644
index b857502..0000000
--- a/freefilesync/debian/freefilesync.install
+++ /dev/null
@@ -1,2 +0,0 @@
-debian/FreeFileSync.desktop /usr/share/applications
-debian/RealTimeSync.desktop /usr/share/applications
diff --git a/freefilesync/debian/freefilesync.manpages b/freefilesync/debian/freefilesync.manpages
deleted file mode 100644
index 2fb19fb..0000000
--- a/freefilesync/debian/freefilesync.manpages
+++ /dev/null
@@ -1 +0,0 @@
-debian/manpages/*
diff --git a/freefilesync/debian/install b/freefilesync/debian/install
new file mode 100644
index 0000000..bd12a02
--- /dev/null
+++ b/freefilesync/debian/install
@@ -0,0 +1,6 @@
+FreeFileSync/Build/Bin/* /usr/bin/
+FreeFileSync/Build/Resources/* /usr/share/freefilesync
+debian/desktop/FreeFileSync-edit-with.desktop /usr/share/kservices5/ServiceMenus/
+debian/desktop/FreeFileSync.desktop /usr/share/applications
+debian/desktop/RealTimeSync.desktop /usr/share/applications
+usr/share/icons/hicolor
diff --git a/freefilesync/debian/links b/freefilesync/debian/links
new file mode 100644
index 0000000..4c2d15d
--- /dev/null
+++ b/freefilesync/debian/links
@@ -0,0 +1 @@
+#stackrpms,1 no CamelCase links please
diff --git a/freefilesync/debian/manpages/FreeFileSync.1 b/freefilesync/debian/man/FreeFileSync.1
index 3e60546..3e60546 100644
--- a/freefilesync/debian/manpages/FreeFileSync.1
+++ b/freefilesync/debian/man/FreeFileSync.1
diff --git a/freefilesync/debian/manpages/RealTimeSync.1 b/freefilesync/debian/man/RealTimeSync.1
index 9b1f992..1bcaf6d 100644
--- a/freefilesync/debian/manpages/RealTimeSync.1
+++ b/freefilesync/debian/man/RealTimeSync.1
@@ -1,11 +1,11 @@
-.TH "RealtimeSync" "1" "10 Dec 2011" "" ""
+.TH "RealTimeSync" "1" "10 Dec 2011" "" ""
.SH "NAME"
-RealtimeSync \(em a folder comparison and synchronization tool (Batch)
+RealTimeSync \(em a folder comparison and synchronization tool (Batch)
.SH "SYNOPSIS"
.PP
.nf
-RealtimeSync CONFIG_FILE
+RealTimeSync CONFIG_FILE
.fi
.PP
.SH "DESCRIPTION"
@@ -22,6 +22,6 @@ performance, Transactional file copy, ...
.SH "AUTHOR"
.PP
-RealtimeSync was originally written by ZenJu. It is currently maintained
+RealTimeSync was originally written by ZenJu. It is currently maintained
by Damien Lecan.
.PP
diff --git a/freefilesync/debian/manpages b/freefilesync/debian/manpages
new file mode 100644
index 0000000..19f429f
--- /dev/null
+++ b/freefilesync/debian/manpages
@@ -0,0 +1 @@
+debian/man/*
diff --git a/freefilesync/debian/patches/ffs_curl.patch b/freefilesync/debian/patches/ffs_curl.patch
deleted file mode 100644
index 2b93756..0000000
--- a/freefilesync/debian/patches/ffs_curl.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Author: Brulhart, bgstack15
-Date: 2021-06-12 10:54:15 -0400
-Message: remove assertion for libcurl version >1.71
-Version: FreeFileSync 11.16
-Message: We have to omit checking for certain definitions.
-On Fedora 33, file /usr/include/curl/curl.h from libcurl-devel 7.71 stops with CURLE_QUIC_CONNECT_ERROR 96
-On Devuan Ceres file /usr/include/x86_64-linux-gnu/curl/curl.h from libcurl 4-openssl-dev stops with CURLE_PROXY 97
-For Devuan Ceres libcurl4-openssl-dev 7.74.0-1.3+b1 uses CURLE_TELNET_OPTION_SYNTAX and not CURLE_SETOPT_OPTION_SYNTAX which replaced the first at version 7.78.0 per https://github.com/curl/curl/blob/master/docs/libcurl/symbols-in-versions
-diff -r -u 10.17-0/FreeFileSync/Source/afs/ftp.cpp 10.17-1/FreeFileSync/Source/afs/ftp.cpp
---- 10.21-0/FreeFileSync/Source/afs/ftp.cpp 2020-03-18 08:56:08.608066350 -0400
-+++ 10.21-1/FreeFileSync/Source/afs/ftp.cpp 2020-03-18 09:23:46.882110499 -0400
-@@ -635,7 +635,7 @@
- curlRelPath += compFmt;
- }
-
-- static_assert(LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 67));
-+ static_assert(LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 71 ));
- /* 1. CURLFTPMETHOD_NOCWD requires absolute paths to unconditionally skip CWDs: https://github.com/curl/curl/pull/4382
- 2. CURLFTPMETHOD_SINGLECWD requires absolute paths to skip one needless "CWD entry path": https://github.com/curl/curl/pull/4332
- => https://curl.haxx.se/docs/faq.html#How_do_I_list_the_root_dir_of_an
-diff -x '*.orig' -x '*.rej' -aur 11.16-0/libcurl/curl_wrap.cpp 11.16-1/libcurl/curl_wrap.cpp
---- 11.16-0/libcurl/curl_wrap.cpp 2022-01-04 08:52:19.603430247 -0500
-+++ 11.16-1/libcurl/curl_wrap.cpp 2022-01-04 09:18:42.877140030 -0500
-@@ -330,7 +330,7 @@
- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE46);
- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TOO_MANY_REDIRECTS);
- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNKNOWN_OPTION);
-- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SETOPT_OPTION_SYNTAX);
-+ 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_GOT_NOTHING);
-@@ -378,11 +378,8 @@
- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_AUTH_ERROR);
- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_HTTP3);
- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_QUIC_CONNECT_ERROR);
-- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PROXY);
-- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CLIENTCERT);
- ZEN_CHECK_CASE_FOR_CONSTANT(CURL_LAST);
- }
-- static_assert(CURL_LAST == CURLE_SSL_CLIENTCERT + 1);
-
- return replaceCpy<std::wstring>(L"Curl status %x", L"%x", numberTo<std::wstring>(static_cast<int>(sc)));
- }
diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch
index a835ccb..0be089d 100644
--- a/freefilesync/debian/patches/ffs_devuan.patch
+++ b/freefilesync/debian/patches/ffs_devuan.patch
@@ -1,8 +1,8 @@
Author: bgstack15
Source: Original research
-Last-Modified: 2023-07-24
-Last-Version: 12.5
-Message: Main patch to compile on Devuan.
+Last-Modified: 2024-02-09
+Last-Version: 13.3
+Message: Main patch to compile on Devuan. Updated with some improvements from bastif (Fab Stz)
--- a/FreeFileSync/Source/ffs_paths.cpp
+++ b/FreeFileSync/Source/ffs_paths.cpp
@@ -54,7 +54,7 @@ Zstring fff::getInstallDirPath()
@@ -23,20 +23,43 @@ Message: Main patch to compile on Devuan.
CXXFLAGS += -std=c++23 -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 -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
+- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
++ -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
-LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread
-+LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread -lz
++LDFLAGS += `wx-config --libs std, aui, richtext --debug=no` -pthread
CXXFLAGS += `pkg-config --cflags openssl`
+@@ -28,6 +28,12 @@ CXXFLAGS += `pkg-config --cflags libsel
+ LDFLAGS += `pkg-config --libs libselinux`
+ endif
+
++ifeq ($(DPKG_VENDOR),)
++#DPKG_VENDOR = $(shell dpkg-vendor --query vendor)
++DPKG_VENDOR = "Devuan"
++CPPFLAGS += -DAPP_NAME_SUFFIX='L" for ${DPKG_VENDOR}"'
++endif
++
+ cppFiles=
+ cppFiles+=application.cpp
+ cppFiles+=base_tools.cpp
+@@ -124,7 +130,7 @@ all: ../Build/Bin/$(exeName)
+
+ $(tmpPath)/ffs/src/%.o : %
+ mkdir -p $(dir $@)
+- $(CXX) $(CXXFLAGS) -c $< -o $@
++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
+
+ clean:
+ rm -rf $(tmpPath)
--- a/FreeFileSync/Source/ui/small_dlgs.cpp
+++ b/FreeFileSync/Source/ui/small_dlgs.cpp
@@ -90,6 +90,8 @@ AboutDlg::AboutDlg(wxWindow* parent) : A
build += LTR_MARK; //fix Arabic
build += utfTo<wxString>(cpuArchName);
-+ build += L" for Devuan";
++ build += APP_NAME_SUFFIX;
+
build += SPACED_BULLET;
build += utfTo<wxString>(formatTime(formatDateTag, getCompileTime()));
@@ -71,10 +94,20 @@ Message: Main patch to compile on Devuan.
CXXFLAGS += -std=c++23 -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 -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
+- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
++ -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
-LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread
-+LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread -lz
++LDFLAGS += `wx-config --libs std, aui, richtext --debug=no` -pthread
#Gtk - support "no button border"
CXXFLAGS += `pkg-config --cflags gtk+-2.0`
+@@ -60,7 +60,7 @@ all: ../../Build/Bin/$(exeName)
+
+ $(tmpPath)/ffs/src/rts/%.o : %
+ mkdir -p $(dir $@)
+- $(CXX) $(CXXFLAGS) -c $< -o $@
++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
+
+ clean:
+ rm -rf $(tmpPath)
diff --git a/freefilesync/debian/patches/ffs_devuan_gtk3.patch b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
index c78eb28..8de9a44 100644
--- a/freefilesync/debian/patches/ffs_devuan_gtk3.patch
+++ b/freefilesync/debian/patches/ffs_devuan_gtk3.patch
@@ -20,8 +20,8 @@ Message: Main patch to compile on Devuan using GTK3.
SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES)
--- a/FreeFileSync/Source/RealTimeSync/Makefile
+++ b/FreeFileSync/Source/RealTimeSync/Makefile
-@@ -8,9 +8,10 @@ CXXFLAGS += -std=c++2b -pipe -DWXINTL_NO
- LDFLAGS += -s -no-pie `wx-config --libs std, aui, richtext --debug=no` -pthread -lz
+@@ -8,9 +8,10 @@ CXXFLAGS += -std=c++23 -pipe -DWXINTL_NO
+ LDFLAGS += `wx-config --libs std, aui, richtext --debug=no` -pthread
#Gtk - support "no button border"
-CXXFLAGS += `pkg-config --cflags gtk+-2.0`
diff --git a/freefilesync/debian/patches/ffs_libssh2.patch b/freefilesync/debian/patches/ffs_libssh2.patch
deleted file mode 100644
index 08eb013..0000000
--- a/freefilesync/debian/patches/ffs_libssh2.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Source: https://aur.archlinux.org/cgit/aur.git/commit/?h=freefilesync&id=7e1524db8e0243ff9d7b7dcba64a3a5228295725
-Author: Simon Brulhart
-Message: libssh2 v1.8.0 does not yet implement LIBSSH2_SFTP_DEFAULT_MODE, revert to previous impl.
-Method:
-
- sed -e 's/LIBSSH2_SFTP_DEFAULT_MODE/LIBSSH2_SFTP_S_IRWXU | LIBSSH2_SFTP_S_IRWXG | LIBSSH2_SFTP_S_IRWXO/g' -i 'FreeFileSync/Source/afs/sftp.cpp'
-
-Source: <none>
-Author: B Stack
-Message: libssh2 v1.8.0 does not yet implement these two error messages. I do not know why distros are not serving libssh2 v1.9.0 which wa released June 20, 2019.
-Date: 2019-09-17T13:41:23Z
---- a/libssh2/libssh2_wrap.h
-+++ b/libssh2/libssh2_wrap.h
-@@ -174,8 +174,6 @@ std::wstring formatSshStatusCode(int sc)
- ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_CHANNEL_WINDOW_FULL);
- ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_KEYFILE_AUTH_FAILED);
- ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_RANDGEN);
-- ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_MISSING_USERAUTH_BANNER);
-- ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_ALGO_UNSUPPORTED);
-
- default:
- return replaceCpy<std::wstring>(L"SSH status %x", L"%x", numberTo<std::wstring>(sc));
diff --git a/freefilesync/debian/patches/ffs_no_wx311.patch b/freefilesync/debian/patches/ffs_no_wx311.patch
deleted file mode 100644
index e74da90..0000000
--- a/freefilesync/debian/patches/ffs_no_wx311.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-Last modified: 2022-05-24
-Version: 11.21
-Author: bgstack15
-Message: Just compile by stepping around wxWidgets 3.1.1 calls
-diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/ui/small_dlgs.cpp 11.4-1/FreeFileSync/Source/ui/small_dlgs.cpp
---- 11.4-0/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 08:15:29.432156507 -0500
-+++ 11.21-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 18:22:19.929543356 -0500
-@@ -300,7 +300,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))
-@@ -1292,7 +1298,8 @@
- for (const auto& [dlgShown, dlgSetShown, msg] : hiddenDialogCfgMapping_)
- dialogMessages.push_back(msg);
-
-- m_checkListHiddenDialogs->Append(dialogMessages);
-+ for (const wxString& item :dialogMessages) // reverted to pre-wx 3.1.1 logic
-+ m_checkListHiddenDialogs->Append(item);
-
- unsigned int itemPos = 0;
- for (const auto& [dlgShown, dlgSetShown, msg] : hiddenDialogCfgMapping_)
-@@ -1689,7 +1690,6 @@
- //setMainInstructionFont(*m_staticTextMain);
-
- setImage(*m_bitmapActivation, loadImage("internet"));
-- m_textCtrlOfflineActivationKey->ForceUpper();
-
- setTextWithUrls(*m_richTextLastError, lastErrorMsg);
- setTextWithUrls(*m_richTextManualActivationUrl, manualActivationUrl);
-diff -Naur -x '*.orig' -x '*.rej' 10.3-0/wx+/grid.cpp 10.3-2/wx+/grid.cpp
---- 10.3-0/wx+/grid.cpp 2018-08-07 05:03:34.000000000 -0400
-+++ 10.3-2/wx+/grid.cpp 2018-08-08 19:24:56.849445102 -0400
-@@ -1176,7 +1176,9 @@
- {
- if (overlapPix != 0)
- {
-- const double scrollSpeed = wnd_.ToDIP(overlapPix) * mouseDragSpeedIncScrollU; //unit: [scroll units / sec]
-+ // Fedora 28 does not have wxGTK 3.1.1 yet. This probably breaks HiDPI usage
-+ //const double scrollSpeed = wnd_.ToDIP(overlapPix) * mouseDragSpeedIncScrollU; //unit: [scroll units / sec]
-+ const double scrollSpeed = overlapPix * mouseDragSpeedIncScrollU; //unit: [scroll units / sec]
- toScroll += scrollSpeed * deltaSecs;
- }
- else
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/FreeFileSync/Source/ui/command_box.cpp 10.24-1/FreeFileSync/Source/ui/command_box.cpp
---- 10.24-0/FreeFileSync/Source/ui/command_box.cpp 2020-05-17 11:01:12.893890567 -0400
-+++ 10.24-1/FreeFileSync/Source/ui/command_box.cpp 2020-05-17 11:22:18.069114993 -0400
-@@ -120,7 +120,8 @@
-
- //this->Clear(); -> NO! emits yet another wxEVT_COMMAND_TEXT_UPDATED!!!
- wxItemContainer::Clear(); //suffices to clear the selection items only!
-- this->Append(items); //expensive as fuck! => only call when absolutely needed!
-+ for (const wxString& item : items) // reverted to pre-wx 3.1.1 logic
-+ this->Append(item);
-
- //this->SetSelection(wxNOT_FOUND); //don't select anything
- ChangeValue(value); //preserve main text!
-diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/FreeFileSync/Source/ui/folder_history_box.cpp 10.24-1/FreeFileSync/Source/ui/folder_history_box.cpp
---- 10.24-0/FreeFileSync/Source/ui/folder_history_box.cpp 2020-05-17 11:01:12.909890709 -0400
-+++ 10.24-1/FreeFileSync/Source/ui/folder_history_box.cpp 2020-05-17 11:21:18.460583251 -0400
-@@ -90,7 +90,8 @@
-
- //this->Clear(); -> NO! emits yet another wxEVT_COMMAND_TEXT_UPDATED!!!
- wxItemContainer::Clear(); //suffices to clear the selection items only!
-- this->Append(items); //expensive as fuck! => only call when absolutely needed!
-+ for (const wxString& itemk : items) // reverted to pre-wx 3.1.1 logic
-+ this->Append(itemk);
-
- //this->SetSelection(wxNOT_FOUND); //don't select anything
- ChangeValue(folderPathPhrase); //preserve main text!
---- 11.21-0/FreeFileSync/Source/config.cpp 2022-05-22 17:09:32.238809549 -0400
-+++ 11.21-1/FreeFileSync/Source/config.cpp 2022-05-24 08:41:55.360955076 -0400
-@@ -1502,13 +1512,13 @@
- if (lngName == "English (US)")
- cfg.programLanguage = wxLANGUAGE_ENGLISH_US;
- else if (lngName == "Chinese (Simplified)")
-- cfg.programLanguage = wxLANGUAGE_CHINESE_CHINA;
-+ cfg.programLanguage = wxLANGUAGE_CHINESE_SIMPLIFIED;
- else if (lngName == "Chinese (Traditional)")
- cfg.programLanguage = wxLANGUAGE_CHINESE_TAIWAN;
- else if (lngName == "English (U.K.)")
- cfg.programLanguage = wxLANGUAGE_ENGLISH_UK;
- else if (lngName == "Norwegian (Bokmal)")
-- cfg.programLanguage = wxLANGUAGE_NORWEGIAN;
-+ cfg.programLanguage = wxLANGUAGE_NORWEGIAN_BOKMAL;
- else if (lngName == "Portuguese (Brazilian)")
- cfg.programLanguage = wxLANGUAGE_PORTUGUESE_BRAZILIAN;
- else if (const wxLanguageInfo* lngInfo = wxLocale::FindLanguageInfo(utfTo<wxString>(lngName)))
---- 11.21-0/FreeFileSync/Source/localization.cpp 2022-05-22 17:09:32.238809549 -0400
-+++ 11.21-1/FreeFileSync/Source/localization.cpp 2022-05-24 08:48:56.398222091 -0400
-@@ -195,19 +195,19 @@
- if (lngCode == "zh")
- {
- if (lng == wxLANGUAGE_CHINESE) //wxWidgets assigns this to "zh" or "zh_TW" for some reason
-- return wxLANGUAGE_CHINESE_CHINA;
-+ return wxLANGUAGE_CHINESE_SIMPLIFIED;
-
- for (const char* l : {"zh_HK", "zh_MO", "zh_TW"})
- if (locale == l)
- return wxLANGUAGE_CHINESE_TAIWAN;
-
-- return wxLANGUAGE_CHINESE_CHINA;
-+ return wxLANGUAGE_CHINESE_SIMPLIFIED;
- }
-
- if (lngCode == "en")
- {
- if (lng == wxLANGUAGE_ENGLISH || //wxWidgets assigns this to "en" or "en_GB" for some reason
-- lng == wxLANGUAGE_ENGLISH_WORLD)
-+ lng == wxLANGUAGE_ENGLISH_EIRE)
- return wxLANGUAGE_ENGLISH_US;
-
- for (const char* l : {"en_US", "en_CA", "en_AS", "en_UM", "en_VI"})
-@@ -218,7 +218,7 @@
- }
-
- if (lngCode == "nb" || lngCode == "nn") //wxLANGUAGE_NORWEGIAN_BOKMAL, wxLANGUAGE_NORWEGIAN_NYNORSK
-- return wxLANGUAGE_NORWEGIAN;
-+ return wxLANGUAGE_NORWEGIAN_BOKMAL;
-
- if (locale == "pt_BR")
- return wxLANGUAGE_PORTUGUESE_BRAZILIAN;
---- 11.21-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 17:09:32.246809650 -0400
-+++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-24 09:29:32.384695364 -0400
-@@ -1759,7 +1753,7 @@
- if (statusTxts_.empty())
- {
- m_staticTextStatusCenter->SetForegroundColour(highlight ? wxColor(31, 57, 226) /*blue*/ : wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));
-- m_staticTextStatusCenter->SetFont((m_staticTextStatusCenter->GetFont().*(highlight ? &wxFont::Bold : &wxFont::GetBaseFont))());
-+ m_staticTextStatusCenter->SetFont(m_staticTextStatusCenter->GetFont().Bold());
-
- setText(*m_staticTextStatusCenter, text);
- m_panelStatusBar->Layout();
diff --git a/freefilesync/debian/patches/ffs_openssl.patch b/freefilesync/debian/patches/ffs_openssl.patch
deleted file mode 100644
index 7097d33..0000000
--- a/freefilesync/debian/patches/ffs_openssl.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Summary: Compile for libss-dev 1.1.1m
-Author: bgstack15
-Date: 2022-01-04
-Version: 11.16
-Message: Compile on Devuan Ceres with libssl-dev_1.1.1m-1
-diff -aur 11.13/zen/open_ssl.cpp 11.14/zen/open_ssl.cpp
---- 11.16-0/zen/open_ssl.cpp 2022-01-04 10:04:34.135914294 -0500
-+++ 11.16-1/zen/open_ssl.cpp 2022-01-04 10:29:12.544451067 -0500
-@@ -201,7 +201,7 @@
-
- //================================================================================
-
--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
- {
- //assert(::EVP_PKEY_get_base_id(evp) == EVP_PKEY_RSA);
-
-@@ -210,7 +210,7 @@
- case RsaStreamType::pkix:
- {
- //fix OpenSSL API inconsistencies:
-- auto PEM_write_bio_PrivateKey2 = [](BIO* bio, const EVP_PKEY* key)
-+ auto PEM_write_bio_PrivateKey2 = [](BIO* bio, EVP_PKEY* key)
- {
- return ::PEM_write_bio_PrivateKey(bio, //BIO* bp
- key, //const EVP_PKEY* x
-@@ -269,7 +269,7 @@
- return {reinterpret_cast<const char*>(keyBuf), keyLen};
- #else
- //fix OpenSSL API inconsistencies:
-- auto PEM_write_bio_RSAPrivateKey2 = [](BIO* bio, const RSA* rsa)
-+ auto PEM_write_bio_RSAPrivateKey2 = [](BIO* bio, RSA* rsa)
- {
- return ::PEM_write_bio_RSAPrivateKey(bio, //BIO* bp
- rsa, //const RSA* x
-@@ -279,14 +279,14 @@
- nullptr, //pem_password_cb* cb
- nullptr); //void* u
- };
-- auto PEM_write_bio_RSAPublicKey2 = [](BIO* bio, const RSA* rsa) { return ::PEM_write_bio_RSAPublicKey(bio, rsa); };
-+ auto PEM_write_bio_RSAPublicKey2 = [](BIO* bio, RSA* rsa) { return ::PEM_write_bio_RSAPublicKey(bio, rsa); };
-
- 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"));
-
diff --git a/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch b/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch
new file mode 100644
index 0000000..50d5942
--- /dev/null
+++ b/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch
@@ -0,0 +1,116 @@
+Description: extend the versions of libcurl that can be used to build ffs
+ .
+ Minimal version supported by this patch is libcurl >= 7.66
+ .
+ FreeFileSync makes an 'assert' that it supports all error codes of the curl
+ version that it links to. Since FreeFileSync code is shipped to build
+ with a specific version of curl, there is a hard coded assertion.
+ .
+ To avoid a build failure when curl is not in line with the one used upstream
+ we make conditional checks on the curl version to determine which assertion
+ should be made.
+ .
+ While this works fine to build with any old version of curl > 7.66, there
+ will be a build fairure as soon as a new error code appears in a newer version
+ of curl. In that case it is required to add it here.
+ .
+ Error codes can be found in the 'enum' named 'CURLcode' at
+ https://github.com/curl/curl/blob/master/include/curl/curl.h
+ .
+Author: Brulhart
+Author: bgstack15
+Author: Fab Stz <fabstz-it@yahoo.fr>
+Origin: multiple sources
+Forwarded: https://freefilesync.org/forum/viewtopic.php?t=9687
+Last-Update: 2024-02-05
+
+--- a/libcurl/curl_wrap.cpp
++++ b/libcurl/curl_wrap.cpp
+@@ -350,7 +350,11 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE46);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TOO_MANY_REDIRECTS);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNKNOWN_OPTION);
++#if LIBCURL_VERSION_NUM >= 0x074E00 // 7.78.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SETOPT_OPTION_SYNTAX);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TELNET_OPTION_SYNTAX);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE50);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE51);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_GOT_NOTHING);
+@@ -363,7 +367,11 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CIPHER);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PEER_FAILED_VERIFICATION);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_BAD_CONTENT_ENCODING);
++#if LIBCURL_VERSION_NUM >= 0x075200 // 7.82.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE62);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_LDAP_INVALID_URL);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_FILESIZE_EXCEEDED);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_USE_SSL_FAILED);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SEND_FAIL_REWIND);
+@@ -376,8 +384,16 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TFTP_UNKNOWNID);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_REMOTE_FILE_EXISTS);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TFTP_NOSUCHUSER);
++#if LIBCURL_VERSION_NUM >= 0x075500 // 7.85.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE75);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_FAILED);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x075200 // 7.82.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE76);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_REQD);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CACERT_BADFILE);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_REMOTE_FILE_NOT_FOUND);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSH);
+@@ -395,15 +411,46 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_INVALIDCERTSTATUS);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_HTTP2_STREAM);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_RECURSIVE_API_CALL);
++#if LIBCURL_VERSION_NUM >= 0x074200 // 7.66.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_AUTH_ERROR);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074400 // 7.68.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_HTTP3);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074500 // 7.69.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_QUIC_CONNECT_ERROR);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074900 // 7.73.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PROXY);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074D00 // 7.77.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CLIENTCERT);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x075400 // 7.84.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNRECOVERABLE_POLL);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x080600 // 8.6.0
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TOO_LARGE);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURL_LAST);
+ }
++#if LIBCURL_VERSION_NUM >= 0x080600 // 8.6.0
++ static_assert(CURL_LAST == CURLE_TOO_LARGE + 1);
++#elif LIBCURL_VERSION_NUM >= 0x075400 // 7.84.0
+ static_assert(CURL_LAST == CURLE_UNRECOVERABLE_POLL + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074D00 // 7.77.0
++ static_assert(CURL_LAST == CURLE_SSL_CLIENTCERT + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074900 // 7.73.0
++ static_assert(CURL_LAST == CURLE_PROXY + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074500 // 7.69.0
++ static_assert(CURL_LAST == CURLE_QUIC_CONNECT_ERROR + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074400 // 7.68.0
++ static_assert(CURL_LAST == CURLE_HTTP3 + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074200 // 7.66.0
++ static_assert(CURL_LAST == CURLE_AUTH_ERROR + 1);
++#else
++ static_assert(CURL_LAST == CURLE_RECURSIVE_API_CALL + 1);
++#endif
+
+ return replaceCpy<std::wstring>(L"Curl status %x", L"%x", numberTo<std::wstring>(static_cast<int>(sc)));
+ }
diff --git a/freefilesync/debian/patches/libssh2_relax_dep.patch b/freefilesync/debian/patches/libssh2_relax_dep.patch
new file mode 100644
index 0000000..3d1249a
--- /dev/null
+++ b/freefilesync/debian/patches/libssh2_relax_dep.patch
@@ -0,0 +1,27 @@
+Description: Allow one to build with older version of libssh2
+ Don't fail on missing constants when building with older versions of libssh2
+Author: Fab Stz <fabstz-it@yahoo.fr>
+Origin: self
+Forwarded: not-needed
+Last-Update: 2023-06-20
+
+--- a/libssh2/libssh2_wrap.h
++++ b/libssh2/libssh2_wrap.h
+@@ -171,11 +171,17 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_ENCRYPT);
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_BAD_SOCKET);
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_KNOWN_HOSTS);
++#if LIBSSH2_VERSION_NUM >= 0x010900 // 1.9.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_CHANNEL_WINDOW_FULL);
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_KEYFILE_AUTH_FAILED);
++#endif
++#if LIBSSH2_VERSION_NUM >= 0x010A00 // 1.10.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_RANDGEN);
++#endif
++#if LIBSSH2_VERSION_NUM >= 0x010B00 // 1.11.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_MISSING_USERAUTH_BANNER);
+ ZEN_CHECK_CASE_FOR_CONSTANT(LIBSSH2_ERROR_ALGO_UNSUPPORTED);
++#endif
+
+ default:
+ return replaceCpy<std::wstring>(L"SSH status %x", L"%x", numberTo<std::wstring>(sc));
diff --git a/freefilesync/debian/patches/makefile-improvements.patch b/freefilesync/debian/patches/makefile-improvements.patch
new file mode 100644
index 0000000..e27a107
--- /dev/null
+++ b/freefilesync/debian/patches/makefile-improvements.patch
@@ -0,0 +1,110 @@
+Description: put pkg-config and wx-config into variables
+ When cross-compiling on debian, the build system dh set the name of the
+ pkg-config command name to use into PKG_CONFIG variable.
+ For armhf, it is PKG_CONFIG=arm-linux-gnueabihf-pkg-config
+ .
+ Since the pkg-config that is installed during cross-compiling is the one
+ of the build-arch (amd64), and not the one of the host-arch (armhf),
+ using `pkg-config` instead of `arm-linux-gnueabihf-pkg-config` would
+ prevent detection of the libraries.
+ .
+ freefilesync (11.23-1) UNRELEASED; urgency=medium
+ .
+ * Initial release. (Closes: #925512)
+ Also, set wx-config version
+ Useful when there are multiple versions of wx-config installed on the system
+
+Author: Fab Stz <fabstz-it@yahoo.fr>
+Author: bgstack15
+Origin: self
+Forwarded: by-email-to-author-on-2022-08-11
+Last-Update: 2024-02-09
+
+--- a/FreeFileSync/Source/Makefile
++++ b/FreeFileSync/Source/Makefile
+@@ -2,39 +2,45 @@ CXX ?= g++
+ exeName = FreeFileSync
+ CXX=g++-12
+
++PKG_CONFIG=pkgconf
++WX_CONFIG=wx-config --version=3.2
++
+ CXXFLAGS += -std=c++23 -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 -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
+- -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
++ -DNDEBUG `$(WX_CONFIG) --cxxflags --debug=no` -pthread
++
++LDFLAGS += `$(WX_CONFIG) --libs std, aui, richtext --debug=no` -pthread
+
+-LDFLAGS += `wx-config --libs std, aui, richtext --debug=no` -pthread
+
++CXXFLAGS += `$(PKG_CONFIG) --cflags zlib`
++LDFLAGS += `$(PKG_CONFIG) --libs zlib`
+
+-CXXFLAGS += `pkg-config --cflags openssl`
+-LDFLAGS += `pkg-config --libs openssl`
++CXXFLAGS += `$(PKG_CONFIG) --cflags openssl`
++LDFLAGS += `$(PKG_CONFIG) --libs openssl`
+
+-CXXFLAGS += `pkg-config --cflags libcurl`
+-LDFLAGS += `pkg-config --libs libcurl`
++CXXFLAGS += `$(PKG_CONFIG) --cflags libcurl`
++LDFLAGS += `$(PKG_CONFIG) --libs libcurl`
+
+-CXXFLAGS += `pkg-config --cflags libssh2`
+-LDFLAGS += `pkg-config --libs libssh2`
++CXXFLAGS += `$(PKG_CONFIG) --cflags libssh2`
++LDFLAGS += `$(PKG_CONFIG) --libs libssh2`
+
+-CXXFLAGS += `pkg-config --cflags gtk+-3.0`
+-LDFLAGS += `pkg-config --libs gtk+-3.0`
++CXXFLAGS += `$(PKG_CONFIG) --cflags gtk+-3.0`
++LDFLAGS += `$(PKG_CONFIG) --libs gtk+-3.0`
+ #treat as system headers so that warnings are hidden:
+ CXXFLAGS += -isystem/usr/include/gtk-3.0
+
+ with_notifications ?= YES
+ ifeq ($(with_notifications),YES)
+ # package libglibmm-2.4-dev or glibmm24-devel
+-cxxFlags += `pkg-config --cflags giomm-2.4` -Dwith_notifications
+-linkFlags += `pkg-config --libs giomm-2.4`
++cxxFlags += `$(PKG_CONFIG) --cflags giomm-2.4` -Dwith_notifications
++linkFlags += `$(PKG_CONFIG) --libs giomm-2.4`
+ endif
+
+ #support for SELinux (optional)
+-SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES)
++SELINUX_EXISTING=$(shell $(PKG_CONFIG) --exists libselinux && echo YES)
+ ifeq ($(SELINUX_EXISTING),YES)
+-CXXFLAGS += `pkg-config --cflags libselinux` -DHAVE_SELINUX
+-LDFLAGS += `pkg-config --libs libselinux`
++CXXFLAGS += `$(PKG_CONFIG) --cflags libselinux` -DHAVE_SELINUX
++LDFLAGS += `$(PKG_CONFIG) --libs libselinux`
+ endif
+
+ ifeq ($(DPKG_VENDOR),)
+--- a/FreeFileSync/Source/RealTimeSync/Makefile
++++ b/FreeFileSync/Source/RealTimeSync/Makefile
+@@ -2,15 +2,18 @@ CXX ?= g++
+ exeName = RealTimeSync
+ CXX=g++-12
+
++PKG_CONFIG=pkgconf
++WX_CONFIG=wx-config --version=3.2
++
+ CXXFLAGS += -std=c++23 -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 -Wnon-virtual-dtor -Wno-unused-function -Wshadow -Wno-maybe-uninitialized \
+- -DNDEBUG `wx-config --cxxflags --debug=no` -pthread
++ -DNDEBUG `$(WX_CONFIG) --cxxflags --debug=no` -pthread
+
+-LDFLAGS += `wx-config --libs std, aui, richtext --debug=no` -pthread
++LDFLAGS += `$(WX_CONFIG) --libs std, aui, richtext --debug=no` -pthread
+
+ #Gtk - support "no button border"
+-CXXFLAGS += `pkg-config --cflags gtk+-3.0`
+-LDFLAGS += `pkg-config --libs gtk+-3.0`
++CXXFLAGS += `$(PKG_CONFIG) --cflags gtk+-3.0`
++LDFLAGS += `$(PKG_CONFIG) --libs gtk+-3.0`
+ #treat as system headers so that warnings are hidden:
+ CXXFLAGS += -isystem/usr/include/gtk-3.0
+
diff --git a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
deleted file mode 100644
index 20ccedb..0000000
--- a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch
+++ /dev/null
@@ -1,399 +0,0 @@
-Description: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map>
- Had to revert gui_status_handler.cpp and .h entirely to version 11.0 to avoid the wx 3.1.4-isms here.
- .
- Now have to revert wxWidgets 3.1.4 upstreamisms
- cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxASCII_STR' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxASCII_STR' ) ; )
- cd 11.1-0 ; git diff HEAD~1 -- $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) > ~/foo1 ; ( cd ../11.1-2 ; vi ~/foo1 $( grep -l -rIE 'wxDD_SHOW_HIDDEN' ) ; )
-Date: 2022-09-07
-Version: 11.26
-Author: bgstack15
---- a/wx+/choice_enum.h
-+++ b/wx+/choice_enum.h
-@@ -7,7 +7,6 @@
- #ifndef CHOICE_ENUM_H_132413545345687
- #define CHOICE_ENUM_H_132413545345687
-
--#include <unordered_map>
- #include <vector>
- #include <wx/choice.h>
-
-@@ -47,8 +46,6 @@ struct EnumDescrList
-
- using DescrList = std::vector<std::pair<Enum, std::pair<wxString, wxString>>>;
- DescrList descrList;
--
-- std::unordered_map<const wxChoice*, std::vector<wxString>> labelsSetLast;
- };
- 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);
-@@ -71,32 +68,24 @@ template <class Enum> void updateTooltip
- template <class Enum>
- void setEnumVal(EnumDescrList<Enum>& mapping, wxChoice& ctrl, Enum value)
- {
-- auto& labelsSetLast = mapping.labelsSetLast[&ctrl];
--
-- std::vector<wxString> labels;
-- for (const auto& [val, texts] : mapping.descrList)
-- labels.push_back(texts.first);
-+ ctrl.Clear();
-
-- if (labels != labelsSetLast)
-+ int selectedPos = 0;
-+ for (auto it = mapping.descrList.begin(); it != mapping.descrList.end(); ++it)
- {
-- ctrl.Set(labels); //expensive as fuck! => only call when absolutely needed!
-- labelsSetLast = std::move(labels);
-+ 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 +104,11 @@ Enum getEnumVal(const EnumDescrList<Enum
-
- 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 < std::ssize(mapping.descrList))
-- {
-- 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);
- }
- }
-
---- a/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
-+++ b/FreeFileSync/Source/RealTimeSync/folder_selector2.cpp
-@@ -165,7 +165,7 @@ void FolderSelector2::onSelectDir(wxComm
- }
-
- Zstring newFolderPath;
-- wxDirDialog folderSelector(parent_, _("Select a folder"), utfTo<wxString>(defaultFolderPath), wxDD_DEFAULT_STYLE | wxDD_SHOW_HIDDEN);
-+ wxDirDialog folderSelector(parent_, _("Select a folder"), utfTo<wxString>(defaultFolderPath));
- if (folderSelector.ShowModal() != wxID_OK)
- return;
- newFolderPath = utfTo<Zstring>(folderSelector.GetPath());
---- a/FreeFileSync/Source/ui/command_box.h
-+++ b/FreeFileSync/Source/ui/command_box.h
-@@ -28,7 +28,7 @@ public:
- const wxString choices[] = nullptr,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
-- const wxString& name = wxASCII_STR(wxComboBoxNameStr));
-+ const wxString& name = wxComboBoxNameStr);
-
- void setHistory(const std::vector<Zstring>& history, size_t historyMax) { history_ = history; historyMax_ = historyMax; }
- std::vector<Zstring> getHistory() const { return history_; }
---- a/FreeFileSync/Source/ui/folder_history_box.h
-+++ b/FreeFileSync/Source/ui/folder_history_box.h
-@@ -68,7 +68,7 @@ public:
- const wxString choices[] = nullptr,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
-- const wxString& name = wxASCII_STR(wxComboBoxNameStr));
-+ const wxString& name = wxComboBoxNameStr);
-
- void setHistory(std::shared_ptr<HistoryList> sharedHistory) { sharedHistory_ = std::move(sharedHistory); }
- std::shared_ptr<HistoryList> getHistory() { return sharedHistory_; }
---- a/FreeFileSync/Source/ui/folder_selector.cpp
-+++ b/FreeFileSync/Source/ui/folder_selector.cpp
-@@ -239,7 +239,7 @@ void FolderSelector::onSelectFolder(wxCo
-
- Zstring shellItemPath;
- //default size? Windows: not implemented, Linux(GTK2): not implemented, macOS: not implemented => wxWidgets, what is this shit!?
-- wxDirDialog folderSelector(parent_, _("Select a folder"), utfTo<wxString>(defaultFolderNative), wxDD_DEFAULT_STYLE | wxDD_SHOW_HIDDEN);
-+ wxDirDialog folderSelector(parent_, _("Select a folder"), utfTo<wxString>(defaultFolderNative));
- //GTK2: "Show hidden" is also available as a context menu option in the folder picker!
- //It looks like wxDD_SHOW_HIDDEN only sets the default when opening for the first time!?
- if (folderSelector.ShowModal() != wxID_OK)
---- a/wx+/bitmap_button.h
-+++ b/wx+/bitmap_button.h
-@@ -28,7 +28,7 @@ public:
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
-- const wxString& name = wxASCII_STR(wxButtonNameStr)) :
-+ const wxString& name = wxButtonNameStr) :
- wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name)
- {
- SetLabel(label);
-@@ -104,7 +104,6 @@ inline
- wxBitmap renderSelectedButton(const wxSize& sz)
- {
- wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
-- bmp.SetScaleFactor(getDisplayScaleFactor());
- {
- wxMemoryDC dc(bmp);
-
-@@ -120,7 +119,6 @@ inline
- wxBitmap renderPressedButton(const wxSize& sz)
- {
- wxBitmap bmp(sz); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
-- bmp.SetScaleFactor(getDisplayScaleFactor());
- {
- //draw rectangle border with gradient
- const wxColor colFrom = wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE);
---- a/wx+/dc.h
-+++ b/wx+/dc.h
-@@ -12,7 +12,7 @@
- #include <zen/basic_math.h>
- #include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER
- #include <wx/dcscreen.h>
--#include <wx/bmpbndl.h>
-+//#include <wx/bmpbndl.h>
- #include <gtk/gtk.h>
-
-
-@@ -92,9 +92,6 @@ constexpr int defaultDpi = 96; //on Wind
- inline
- int getDPI()
- {
--#ifndef wxHAS_DPI_INDEPENDENT_PIXELS
--#error why is wxHAS_DPI_INDEPENDENT_PIXELS not defined?
--#endif
- //GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114
- //=> requires general fix at wxWidgets-level
-
-@@ -130,7 +127,6 @@ wxBitmap toScaledBitmap(const wxImage& i
- {
- //wxBitmap(const wxImage& image, int depth = -1, double WXUNUSED(scale) = 1.0) => wxWidgets just ignores scale parameter! WTF!
- wxBitmap bmpScaled(img);
-- bmpScaled.SetScaleFactor(getDisplayScaleFactor());
- return bmpScaled; //when testing use 175% scaling: wxWidgets' scaling logic doesn't kick in for 150% only
- }
-
---- a/wx+/graph.h
-+++ b/wx+/graph.h
-@@ -192,7 +192,7 @@ public:
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxTAB_TRAVERSAL | wxNO_BORDER,
-- const wxString& name = wxASCII_STR(wxPanelNameStr));
-+ const wxString& name = wxPanelNameStr);
-
- class CurveAttributes
- {
---- a/wx+/grid.cpp
-+++ b/wx+/grid.cpp
-@@ -263,7 +263,7 @@ class Grid::SubWindow : public wxWindow
- {
- public:
- SubWindow(Grid& parent) :
-- wxWindow(&parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS | wxBORDER_NONE, wxASCII_STR(wxPanelNameStr)),
-+ wxWindow(&parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS | wxBORDER_NONE, wxPanelNameStr),
- parent_(parent)
- {
- Bind(wxEVT_PAINT, [this](wxPaintEvent& event) { onPaintEvent(event); });
---- a/wx+/grid.h
-+++ b/wx+/grid.h
-@@ -149,7 +149,7 @@ public:
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxTAB_TRAVERSAL | wxNO_BORDER,
-- const wxString& name = wxASCII_STR(wxPanelNameStr));
-+ const wxString& name = wxPanelNameStr);
-
- size_t getRowCount() const;
-
---- a/wx+/toggle_button.h
-+++ b/wx+/toggle_button.h
-@@ -24,7 +24,7 @@ public:
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
-- const wxString& name = wxASCII_STR(wxButtonNameStr)) :
-+ const wxString& name = wxButtonNameStr) :
- wxBitmapButton(parent, id, bitmap, pos, size, style, validator, name) {}
-
- //wxButton constructor
-@@ -35,7 +35,7 @@ public:
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxValidator& validator = wxDefaultValidator,
-- const wxString& name = wxASCII_STR(wxButtonNameStr)) :
-+ const wxString& name = wxButtonNameStr) :
- wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name)
- {
- SetLabel(label);
---- a/FreeFileSync/Source/ui/gui_status_handler.cpp
-+++ b/FreeFileSync/Source/ui/gui_status_handler.cpp
-@@ -44,8 +44,8 @@ StatusHandlerTemporaryPanel::StatusHandl
- mainDlg_.Update(); //don't wait until idle event!
-
- //register keys
-- mainDlg_. Bind(wxEVT_CHAR_HOOK, &StatusHandlerTemporaryPanel::onLocalKeyEvent, this);
-- mainDlg_.m_buttonCancel->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &StatusHandlerTemporaryPanel::onAbortCompare, this);
-+ mainDlg_.Connect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this);
-+ mainDlg_.m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this);
- }
-
-
-@@ -129,9 +129,8 @@ StatusHandlerTemporaryPanel::~StatusHand
- mainDlg_.auiMgr_.Update();
-
- //unregister keys
-- [[maybe_unused]] bool ubOk1 = mainDlg_. Unbind(wxEVT_CHAR_HOOK, &StatusHandlerTemporaryPanel::onLocalKeyEvent, this);
-- [[maybe_unused]] bool ubOk2 = mainDlg_.m_buttonCancel->Unbind(wxEVT_COMMAND_BUTTON_CLICKED, &StatusHandlerTemporaryPanel::onAbortCompare, this);
-- assert(ubOk1 && ubOk2);
-+ mainDlg_.Disconnect(wxEVT_CHAR_HOOK, wxKeyEventHandler(StatusHandlerTemporaryPanel::OnKeyPressed), nullptr, this);
-+ mainDlg_.m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusHandlerTemporaryPanel::OnAbortCompare), nullptr, this);
-
- mainDlg_.compareStatus_->teardown();
-
-@@ -336,7 +335,7 @@ void StatusHandlerTemporaryPanel::forceU
- }
-
-
--void StatusHandlerTemporaryPanel::onLocalKeyEvent(wxKeyEvent& event)
-+void StatusHandlerTemporaryPanel::OnKeyPressed(wxKeyEvent& event)
- {
- const int keyCode = event.GetKeyCode();
- if (keyCode == WXK_ESCAPE)
-@@ -346,7 +345,7 @@ void StatusHandlerTemporaryPanel::onLoca
- }
-
-
--void StatusHandlerTemporaryPanel::onAbortCompare(wxCommandEvent& event)
-+void StatusHandlerTemporaryPanel::OnAbortCompare(wxCommandEvent& event)
- {
- userRequestAbort();
- }
---- a/FreeFileSync/Source/ui/gui_status_handler.h
-+++ b/FreeFileSync/Source/ui/gui_status_handler.h
-@@ -46,8 +46,8 @@ public:
- Result reportResults(); //noexcept!!
-
- private:
-- void onLocalKeyEvent(wxKeyEvent& event);
-- void onAbortCompare(wxCommandEvent& event); //handle abort button click
-+ void OnKeyPressed(wxKeyEvent& event);
-+ void OnAbortCompare(wxCommandEvent& event); //handle abort button click
- void showStatsPanel();
-
- MainDialog& mainDlg_;
---- a/wx+/no_flicker.h
-+++ b/wx+/no_flicker.h
-@@ -72,7 +72,7 @@ void setTextWithUrls(wxRichTextCtrl& ric
- ZEN_ON_SCOPE_EXIT(richCtrl.EndSuppressUndo());
-
- //fix mouse scroll speed: why the FUCK is this even necessary!
-- richCtrl.SetLineHeight(richCtrl.GetCharHeight());
-+ //richCtrl.SetLineHeight(richCtrl.GetCharHeight()); // this is not even documented in wxWidgets 3.1.5!
-
- //get rid of margins and space between text blocks/"paragraphs"
- richCtrl.SetMargins({0, 0});
---- a/FreeFileSync/Source/ui/progress_indicator.cpp
-+++ b/FreeFileSync/Source/ui/progress_indicator.cpp
-@@ -878,12 +878,10 @@ dlgSizeBuf_(dlgSize)
- auto generateSquareBitmap = [&](const wxColor& fillCol, const wxColor& borderCol)
- {
- wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
-- bmpSquare.SetScaleFactor(getDisplayScaleFactor());
- {
- wxMemoryDC dc(bmpSquare);
- drawInsetRectangle(dc, wxRect(bmpSquare.GetSize()), fastFromDIP(1), borderCol, fillCol);
- }
-- bmpSquare.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi);
- return bmpSquare;
- };
- pnl_.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(getColorBytes(), getColorBytesRim()));
---- a/wx+/rtl.h
-+++ b/wx+/rtl.h
-@@ -70,8 +70,6 @@ void drawBitmapRtlMirror(wxDC& dc, const
- if (!buffer || buffer->GetSize() != rect.GetSize()) //[!] since we do a mirror, width needs to match exactly!
- buffer.emplace(rect.GetSize());
-
-- if (buffer->GetScaleFactor() != dc.GetContentScaleFactor()) //needed here?
-- buffer->SetScaleFactor(dc.GetContentScaleFactor()); //
-
- wxMemoryDC memDc(*buffer); //copies scale factor from wxBitmap
- memDc.Blit(wxPoint(0, 0), rect.GetSize(), &dc, rect.GetTopLeft()); //blit in: background is mirrored due to memDc, dc having different layout direction!
---- a/FreeFileSync/Source/ui/main_dlg.cpp
-+++ b/FreeFileSync/Source/ui/main_dlg.cpp
-@@ -3586,7 +3586,6 @@ void MainDialog::onCfgGridContext(GridCo
- auto addColorOption = [&](const wxColor& col, const wxString& name)
- {
- wxBitmap bmpSquare(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
-- bmpSquare.SetScaleFactor(getDisplayScaleFactor());
- {
- wxMemoryDC dc(bmpSquare);
- const wxColor borderCol(0xdd, 0xdd, 0xdd); //light grey
-@@ -3619,7 +3618,6 @@ void MainDialog::onCfgGridContext(GridCo
-
- //show color picker
- wxBitmap bmpColorPicker(this->GetCharHeight(), this->GetCharHeight()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
-- bmpColorPicker.SetScaleFactor(getDisplayScaleFactor());
- {
- wxMemoryDC dc(bmpColorPicker);
- const wxColor borderCol(0xdd, 0xdd, 0xdd); //light grey
-@@ -3633,7 +3631,6 @@ void MainDialog::onCfgGridContext(GridCo
- {
- wxColourData colCfg;
- colCfg.SetChooseFull(true);
-- colCfg.SetChooseAlpha(false);
- colCfg.SetColour(defaultColors[1].first); //tentative
-
- if (const ConfigView::Details* cfg = cfggrid::getDataView(*m_gridCfgHistory).getItem(selectedRows[0]))
-@@ -3650,19 +3647,6 @@ void MainDialog::onCfgGridContext(GridCo
- assert(col.Alpha() == 255);
- return col;
- };
-- wxColourDialog dlg(this, &colCfg);
-- dlg.Center();
--
-- dlg.Bind(wxEVT_COLOUR_CHANGED, [&](wxColourDialogEvent& event2)
-- {
-- //show preview during color selection (Windows-only atm)
-- cfggrid::getDataView(*m_gridCfgHistory).setBackColor(cfgFilePaths, fixColorPickerColor(event2.GetColour()), true /*previewOnly*/);
-- m_gridCfgHistory->Refresh();
-- });
--
-- if (dlg.ShowModal() == wxID_OK)
-- applyBackColor(fixColorPickerColor(dlg.GetColourData().GetColour()));
-- else //shut off color preview
- {
- cfggrid::getDataView(*m_gridCfgHistory).setBackColor(cfgFilePaths, wxNullColour, true /*previewOnly*/);
- m_gridCfgHistory->Refresh();
---- a/wx+/image_tools.cpp
-+++ b/wx+/image_tools.cpp
-@@ -188,7 +188,6 @@ wxImage zen::createImageFromText(const w
- return wxNullImage;
-
- wxBitmap newBitmap(maxWidth, lineHeight * lineInfo.size()); //seems we don't need to pass 24-bit depth here even for high-contrast color schemes
-- newBitmap.SetScaleFactor(getDisplayScaleFactor());
- {
- dc.SelectObject(newBitmap); //copies scale factor from wxBitmap
- ZEN_ON_SCOPE_EXIT(dc.SelectObject(wxNullBitmap));
diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series
index 40f1e25..38ae7f2 100644
--- a/freefilesync/debian/patches/series
+++ b/freefilesync/debian/patches/series
@@ -2,16 +2,16 @@ ffs_allow_parallel_ops.patch
ffs_devuan.patch
ffs_devuan_gtk3.patch
ffs_no_check_updates.patch
-#ffs_no_wx311.patch
ffs_sftp.patch
-ffs_libssh2.patch
-#ffs_curl.patch
-#revert_zenju_aggressive_upstreamisms.patch
+# libssh2 and libcurl are now directly from bastif
+libssh2_relax_dep.patch
+libcurl_improve_supported_error_codes.patch
ffs_gcc.patch
ffs_traditional_view.patch
ffs_desktop_notifications.patch
-#ffs_openssl.patch
ffs_icon_loader.patch
ffs_tooltips_no_taskbar.patch
revert_buggy_gtk3_change_in_12.1.patch
disable_wxuse_Exceptions.patch
+# makefile-improvements mostly combines wx-config-version, zlib-dep, pkg-config patches from bastif
+makefile-improvements.patch
diff --git a/freefilesync/debian/rules b/freefilesync/debian/rules
index 8476609..2654668 100755
--- a/freefilesync/debian/rules
+++ b/freefilesync/debian/rules
@@ -1,102 +1,54 @@
#!/usr/bin/make -f
# You must remove unused comment lines for the released package.
#export DH_VERBOSE = 1
-#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
-export linkFlags="${LDFLAGS} -pie"
-export appname=freefilesync
-export pkgname=FreeFileSync
-export prog2name=RealTimeSync
-export debuilddir="debian"
-export debuildappdir="${pkgname}"
-export buildroot="${debuilddir}/${appname}"
-export _datadir="/usr/share"
-export _bindir="/usr/bin"
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
-export TMPDIR=/tmp
+include /usr/share/dpkg/architecture.mk
+
+include /usr/share/dpkg/buildtools.mk
+
+# Produce .debug_info (used by dh_dwz)
+CXXFLAGS += -g
+
+# Enable PIE
+#CXXFLAGS += -fpie
+#LDFLAGS += -pie
+
+#stackrpms,2: I put APP_NAME_SUFFIX in Makefile
+# libatomic stuff is for ubuntu only
%:
- dh $@
+ dh $@ --sourcedirectory=FreeFileSync/Source
-override_dh_auto_clean:
- dh_auto_clean
- dh_auto_clean --sourcedirectory=FreeFileSync/Source
+execute_after_dh_auto_clean:
+ # Now, auto_clean RealTimeSync
dh_auto_clean --sourcedirectory=FreeFileSync/Source/RealTimeSync
- rm -f ${pkgname}.png ${prog2name}.png cfg_batch.png
-override_dh_auto_build:
- dh_auto_build
- dh_auto_build --sourcedirectory=FreeFileSync/Source
+execute_after_dh_auto_build:
+ # Now, auto_build RealTimeSync
dh_auto_build --sourcedirectory=FreeFileSync/Source/RealTimeSync
override_dh_auto_install:
- # 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/Resources/* ${buildroot}${_datadir}/${appname}
-
- # make extra sure the files are not marked with executable
- find ${debuildappdir}/share/${pkgname} -type f -exec chmod -x '{}' \; || :
-
# desktop files
- # handled by dpkg already
-
- # application start script
- # none
-
- # man pages
- # none
+ # handled by dh_install through debian/install
# mimetypes
- # handled by dpkg already
+ # handled by dh_installmime through debian/sharedmimeinfo
# icons
- unzip ${pkgname}/Build/Resources/Icons.zip cfg_batch.png start_sync.png ${pkgname}.png ${prog2name}.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
- # apps
- 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 ${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
- # mimetypes
- convert cfg_batch.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/mimetypes/application-x-freefilesync-batch.png
- convert cfg_batch.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/mimetypes/application-x-freefilesync-batch.png
- convert cfg_batch.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/mimetypes/application-x-freefilesync-batch.png
- convert cfg_batch.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/mimetypes/application-x-freefilesync-batch.png
- convert cfg_batch.png -filter Lanczos -resize 128x128 ${buildroot}${_datadir}/icons/hicolor/128x128/mimetypes/application-x-freefilesync-batch.png
- convert start_sync.png -filter Lanczos -resize 16x16 ${buildroot}${_datadir}/icons/hicolor/16x16/mimetypes/application-x-freefilesync-ffs.png
- convert start_sync.png -filter Lanczos -resize 32x32 ${buildroot}${_datadir}/icons/hicolor/32x32/mimetypes/application-x-freefilesync-ffs.png
- convert start_sync.png -filter Lanczos -resize 48x48 ${buildroot}${_datadir}/icons/hicolor/48x48/mimetypes/application-x-freefilesync-ffs.png
- convert start_sync.png -filter Lanczos -resize 64x64 ${buildroot}${_datadir}/icons/hicolor/64x64/mimetypes/application-x-freefilesync-ffs.png
- convert start_sync.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/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
-
- rm -f cfg_batch.png start_sync.png
-
-override_dh_fixperms:
- dh_fixperms || :
- chmod 0644 ${buildroot}${_datadir}/${appname}/* || :
+ unzip -u FreeFileSync/Build/Resources/Icons.zip cfg_batch.png database.png start_sync.png FreeFileSync.png RealTimeSync.png
+ for size in 16 24 32 48 64 128 256; do \
+ mkdir -p debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/apps ; \
+ convert FreeFileSync.png -filter Lanczos -resize $${size}x$${size} debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/apps/FreeFileSync.png ; \
+ convert RealTimeSync.png -filter Lanczos -resize $${size}x$${size} debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/apps/RealTimeSync.png ; \
+ mkdir -p debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/mimetypes ; \
+ convert cfg_batch.png -filter Lanczos -resize $${size}x$${size} debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/mimetypes/application-x-freefilesync-batch.png ; \
+ convert database.png -filter Lanczos -resize $${size}x$${size} debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/mimetypes/application-x-freefilesync-db.png ; \
+ convert start_sync.png -filter Lanczos -resize $${size}x$${size} debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/mimetypes/application-x-freefilesync-gui.png ; \
+ convert RealTimeSync.png -filter Lanczos -resize $${size}x$${size} debian/tmp/usr/share/icons/hicolor/$${size}x$${size}/mimetypes/application-x-freefilesync-real.png ; \
+ done
diff --git a/freefilesync/debian/freefilesync.sharedmimeinfo b/freefilesync/debian/sharedmimeinfo
index 99f459d..99f459d 100644
--- a/freefilesync/debian/freefilesync.sharedmimeinfo
+++ b/freefilesync/debian/sharedmimeinfo
bgstack15