diff options
Diffstat (limited to 'freefilesync')
32 files changed, 1016 insertions, 316 deletions
diff --git a/freefilesync/ffs_allow_parallel_ops.patch b/freefilesync/00_allow_parallel_ops.patch index 473ae46..65226bb 100644 --- a/freefilesync/ffs_allow_parallel_ops.patch +++ b/freefilesync/00_allow_parallel_ops.patch @@ -1,5 +1,6 @@ -Last version tested: 11.13 -The source release appears not to actually include the logic that performs operations in parallel, so this patch doesn't actually do anything. +Version: 11.22 +Date: 2022-06-26 +Message: The source release appears not to actually include the logic that performs operations in parallel, so this patch doesn't actually do anything. diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/folder_selector.cpp 11.4-1/FreeFileSync/Source/ui/folder_selector.cpp --- 11.4-0/FreeFileSync/Source/ui/folder_selector.cpp 2020-12-08 08:15:29.428156465 -0500 +++ 11.4-1/FreeFileSync/Source/ui/folder_selector.cpp 2020-12-08 19:12:09.205183330 -0500 @@ -44,14 +45,15 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/smal m_targetFolderPath->setHistory(std::make_shared<HistoryList>(folderHistory, folderHistoryMax)); diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/sync_cfg.cpp 11.4-1/FreeFileSync/Source/ui/sync_cfg.cpp ---- 11.13-0/FreeFileSync/Source/ui/sync_cfg.cpp 2021-08-17 19:18:02.039992429 -0400 -+++ 11.13-1/FreeFileSync/Source/ui/sync_cfg.cpp 2021-08-17 19:33:01.693071327 -0400 -@@ -348,7 +348,7 @@ +--- 11.22-0/FreeFileSync/Source/ui/sync_cfg.cpp 2022-06-26 12:01:15.638291465 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/sync_cfg.cpp 2022-06-26 12:42:38.181161442 -0400 +@@ -352,7 +352,7 @@ commandHistoryOut_(commandHistory), globalPairCfg_(globalPairCfg), localPairCfg_(localPairCfg), - enableExtraFeatures_(false), + enableExtraFeatures_(true), - showMultipleCfgs_(showMultipleCfgs) + showMultipleCfgs_(showMultipleCfgs), + globalLogFolderPhrase_(globalLogFolderPhrase) { - setStandardButtonLayout(*bSizerStdButtons, StdButtons().setAffirmative(m_buttonOkay).setCancel(m_buttonCancel)); + diff --git a/freefilesync/ffs_no_check_updates.patch b/freefilesync/01_no_check_updates.patch index bdc2ebd..1d11f96 100644 --- a/freefilesync/ffs_no_check_updates.patch +++ b/freefilesync/01_no_check_updates.patch @@ -1,10 +1,10 @@ -Version: 11.20 -Date: 2022-04-18 +Version: 11.22 +Date: 2022-06-26 Author: bgstack15 Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program. diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp ---- 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:51:21.090657955 -0500 -+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:55:57.009584234 -0500 +--- 11.22-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-06-26 12:39:05.058511306 -0400 @@ -110,15 +110,6 @@ m_menuHelp->AppendSeparator(); @@ -31,9 +31,9 @@ diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 11.18-1/FreeFileSync/ m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this ); m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this ); diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/Source/ui/gui_generated.h ---- 11.18-0/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:51:21.114658209 -0500 -+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:56:17.057796860 -0500 -@@ -95,8 +95,6 @@ +--- 11.22-0/FreeFileSync/Source/ui/gui_generated.h 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/gui_generated.h 2022-06-26 12:38:30.522081852 -0400 +@@ -96,8 +96,6 @@ wxMenuItem* m_menuItemShowOverview; wxMenu* m_menuHelp; wxMenuItem* m_menuItemHelp; @@ -42,7 +42,7 @@ diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/So wxMenuItem* m_menuItemAbout; wxBoxSizer* bSizerPanelHolder; wxPanel* m_panelTopButtons; -@@ -231,8 +229,6 @@ +@@ -232,8 +230,6 @@ virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); } virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); } virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); } @@ -54,7 +54,15 @@ diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/So diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp --- 11.16-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:52:19.811432573 -0500 +++ 11.16-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:57:14.506728896 -0500 -@@ -744,7 +744,6 @@ +@@ -31,7 +31,6 @@ + #include <wx+/image_resources.h> + //#include <wx+/std_button_layout.h> + #include "cfg_grid.h" +-#include "version_check.h" + #include "gui_status_handler.h" + #include "small_dlgs.h" + #include "progress_indicator.h" +@@ -821,7 +820,6 @@ setImage(*m_menuItemHelp, loadImage("help_sicon")); setImage(*m_menuItemAbout, loadImage("about_sicon")); @@ -62,7 +70,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc fixMenuIcons(*m_menuFile); fixMenuIcons(*m_menuActions); -@@ -854,9 +853,6 @@ +@@ -922,9 +920,6 @@ //mainly to update row label sizes... updateGui(); @@ -81,7 +89,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc auiMgr_.Update(); } -@@ -5680,72 +5674,6 @@ +@@ -5740,72 +5734,6 @@ } } @@ -103,7 +111,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc - - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { -- flashStatusInformation(_("Searching for program updates...")); +- flashStatusInfo(_("Searching for program updates...")); - //synchronous update check is sufficient here: - automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, - automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get()); @@ -134,7 +142,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc - - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { -- flashStatusInformation(_("Searching for program updates...")); +- flashStatusInfo(_("Searching for program updates...")); - - std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread: - @@ -271,3 +279,25 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/version_check.h 11.10-2/FreeFileSync/So } #endif //VERSION_CHECK_H_324872374893274983275 +diff -aur /usr/src/freefilesync/11.22-0/FreeFileSync/Source/Makefile /usr/src/freefilesync/11.22-1/FreeFileSync/Source/Makefile +--- 11.22-0/FreeFileSync/Source/Makefile 2022-06-26 11:47:06.603733867 -0400 ++++ 11.22-1/FreeFileSync/Source/Makefile 2022-06-26 14:01:34.640058450 -0400 +@@ -76,7 +85,6 @@ + cppFiles+=ui/sync_cfg.cpp + cppFiles+=ui/tray_icon.cpp + cppFiles+=ui/triple_splitter.cpp +-cppFiles+=ui/version_check.cpp + cppFiles+=../../libcurl/curl_wrap.cpp + cppFiles+=../../zen/file_access.cpp + cppFiles+=../../zen/file_io.cpp +diff -aur /usr/src/freefilesync/11.22-0/FreeFileSync/Source/ui/small_dlgs.cpp /usr/src/freefilesync/11.22-1/FreeFileSync/Source/ui/small_dlgs.cpp +--- 11.22-0/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 12:01:15.638291465 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 14:01:37.516094208 -0400 +@@ -27,7 +27,6 @@ + #include <wx+/image_resources.h> + #include "gui_generated.h" + #include "folder_selector.h" +-#include "version_check.h" + #include "abstract_folder_picker.h" + #include "../afs/concrete.h" + #include "../afs/gdrive.h" diff --git a/freefilesync/02_no_wx311.patch b/freefilesync/02_no_wx311.patch new file mode 100644 index 0000000..e74da90 --- /dev/null +++ b/freefilesync/02_no_wx311.patch @@ -0,0 +1,138 @@ +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/ffs_sftp.patch b/freefilesync/03_sftp.patch index a51acc8..a51acc8 100644 --- a/freefilesync/ffs_sftp.patch +++ b/freefilesync/03_sftp.patch diff --git a/freefilesync/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/04_revert_zenju_aggressive_upstreamisms.patch index fda8cc2..4758004 100644 --- a/freefilesync/revert_zenju_aggressive_upstreamisms.patch +++ b/freefilesync/04_revert_zenju_aggressive_upstreamisms.patch @@ -1,6 +1,6 @@ Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map> -Date: 2022-04-18 -Version: 11.20 +Date: 2022-06-26 +Version: 11.22 Author: bgstack15 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 @@ -143,9 +143,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/ui/folder_selector.c //It looks like wxDD_SHOW_HIDDEN only sets the default when opening for the first time!? if (folderSelector.ShowModal() != wxID_OK) diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_button.h ---- 11.1-1/wx+/bitmap_button.h 2020-09-01 19:07:43.727122311 -0400 -+++ 11.1-2/wx+/bitmap_button.h 2020-09-01 20:10:31.385364671 -0400 -@@ -26,7 +26,7 @@ +--- 11.22-0/wx+/bitmap_button.h 2022-06-26 12:01:15.638291465 -0400 ++++ 11.22-1/wx+/bitmap_button.h 2022-06-26 12:51:34.527830821 -0400 +@@ -28,7 +28,7 @@ const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, @@ -154,9 +154,25 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name) { SetLabel(label); +@@ -104,7 +104,6 @@ + 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 @@ + 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); diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/wx+/dc.h ---- 11.20-0/wx+/dc.h 2022-04-18 09:49:31.921386600 -0400 -+++ 11.20-1/wx+/dc.h 2022-04-18 10:12:04.667907393 -0400 +--- 11.21-0/wx+/dc.h 2022-05-22 17:09:32.250809701 -0400 ++++ 11.21-1/wx+/dc.h 2022-05-22 20:28:53.788193992 -0400 @@ -12,7 +12,7 @@ #include <zen/basic_math.h> #include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER @@ -175,18 +191,17 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/ -#endif //GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114 //=> requires general fix at wxWidgets-level - -@@ -119,11 +116,11 @@ + +@@ -126,11 +123,10 @@ inline -wxBitmapBundle toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/) +wxBitmap toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/) { - //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); not (yet) implemented + //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); implementation just ignores scale parameter! WTF! wxBitmap bmpScaled(img); -- bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi); -+ //bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi); +- bmpScaled.SetScaleFactor(getDisplayScaleFactor()); return bmpScaled; } @@ -329,7 +344,12 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+ richCtrl.SetMargins({0, 0}); --- 11.20-0/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 09:49:31.917386558 -0400 +++ 11.20-1/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 11:02:10.988781908 -0400 -@@ -882,7 +885,6 @@ +@@ -878,12 +881,10 @@ + 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); } @@ -337,3 +357,35 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+ return bmpSquare; }; pnl_.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(getColorBytes(), getColorBytesRim())); +--- 11.22-0/wx+/rtl.h 2022-06-26 12:01:15.642291514 -0400 ++++ 11.22-1/wx+/rtl.h 2022-06-26 12:58:17.248838575 -0400 +@@ -69,9 +69,6 @@ + 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! + +--- 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 14:44:38.556188935 -0400 +@@ -3595,7 +3590,6 @@ + }; + + 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 +--- 11.22-0/wx+/image_tools.cpp 2022-06-26 16:29:25.668035003 -0400 ++++ 11.22-1/wx+/image_tools.cpp 2022-06-27 09:06:04.999244263 -0400 +@@ -188,7 +188,6 @@ + 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/ffs_traditional_view.patch b/freefilesync/05_traditional_view.patch index b9b35cc..2c7ab23 100644 --- a/freefilesync/ffs_traditional_view.patch +++ b/freefilesync/05_traditional_view.patch @@ -1,11 +1,11 @@ -Version: 11.6 -Date: 2021-02-02 +Version: 11.22 +Date: 2022-06-26 Author: bgstack15@gmail.com -Message: restore a traditional view to FreeFileSync +Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVersion" About dialog diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.3-1/FreeFileSync/Source/ui/file_grid.cpp ---- 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-02 11:38:14.806496077 -0500 -+++ 11.3-2/FreeFileSync/Source/ui/file_grid.cpp 2020-11-05 11:11:46.146360956 -0500 -@@ -493,8 +493,10 @@ +--- 11.21-0/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 17:09:32.242809600 -0400 ++++ 11.21-1/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 20:23:04.015916689 -0400 +@@ -475,8 +475,10 @@ case ItemPathFormat::name: return utfTo<std::wstring>(fsObj->getItemName<side>()); case ItemPathFormat::relative: @@ -16,7 +16,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. return AFS::getDisplayPath(fsObj->getAbstractPath<side>()); } assert(false); -@@ -547,8 +549,13 @@ +@@ -529,8 +531,13 @@ else GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover); @@ -31,7 +31,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); } -@@ -654,6 +661,26 @@ +@@ -636,6 +643,26 @@ else //=> BaseFolderPair groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>()); break; @@ -58,7 +58,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. } //path components should follow the app layout direction and are NOT a single piece of text! -@@ -679,11 +706,42 @@ +@@ -661,11 +688,38 @@ int groupNameWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + getTextExtentBuffered(dc, groupName).x); const int groupNameMinWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + ellipsisWidth); @@ -77,10 +77,6 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. + // start trad patch + + // rearrange this one section -+ //add slashes for better readability + a wide gap for disambiguation -+ assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); -+ const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); -+ + switch (itemPathFormat_) + { + case ItemPathFormat::traditional: @@ -89,7 +85,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. + if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ + !endsWith(groupParentFolder, L'\\') && /*e.g. C:\ */ + groupParentFolder.size() > 0 ) -+ groupParentFolder += groupParentSep; ++ groupParentFolder += contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); + break; + case ItemPathFormat::name: + case ItemPathFormat::relative: @@ -102,18 +98,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. //not enough space? => collapse if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth; excessWidth > 0) -@@ -693,10 +751,6 @@ - //1. render group components on two rows - stackedGroupRender = true; - -- //add slashes for better readability + a wide gap for disambiguation -- assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); -- const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); -- - if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ - !endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */ - groupParentFolder += groupParentSep; -@@ -755,6 +809,11 @@ +@@ -731,6 +785,11 @@ } } } @@ -125,7 +110,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. return { -@@ -873,6 +932,9 @@ +@@ -851,6 +910,9 @@ rectGroup = rectGroupParent = rectGroupName = rectTmp; rectGroupParent.width = groupParentWidth; @@ -135,7 +120,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. rectGroupName .width = groupNameWidth; if (stackedGroupRender) -@@ -896,6 +958,11 @@ +@@ -874,6 +936,11 @@ rectGroupItems.width = 0; } @@ -147,7 +132,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. //------------------------------------------------------------------------- { //clear background below parent path => harmonize with renderRowBackgound() -@@ -906,8 +973,8 @@ +@@ -884,8 +951,8 @@ wxRect rectGroupBack = rectGroup; rectGroupBack.width += 2 * gapSize_; //include gap before vline @@ -158,7 +143,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0)); //clearArea() is surprisingly expensive => call just once! -@@ -924,7 +991,8 @@ +@@ -900,7 +967,8 @@ rectNav.width = fastFromDIP(20); if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! @@ -168,7 +153,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. wxColor backCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row! -@@ -914,13 +982,13 @@ +@@ -908,13 +976,13 @@ dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST); } @@ -184,7 +169,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. wxDCTextColourChanger textColorGroupName(dc); //folder background: coordinate with renderRowBackgound() -@@ -974,9 +1042,9 @@ +@@ -947,9 +1015,9 @@ drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName)); } @@ -196,7 +181,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. (groupName.empty() || !pdi.folderGroupObj->isEmpty<side>())) //don't show for missing folders { wxRect rectGroupParentText = rectGroupParent; -@@ -975,16 +1043,16 @@ +@@ -969,16 +1037,16 @@ rectGroupItems.x += 2 * gapSize_; rectGroupItems.width -= 2 * gapSize_; @@ -217,7 +202,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation()); -@@ -1134,7 +1202,12 @@ +@@ -1105,7 +1173,12 @@ groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth); assert(!stackedGroupRender); @@ -231,7 +216,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0; const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x; const int itemWidth = itemName.empty() ? 0 : -@@ -1166,6 +1239,10 @@ +@@ -1137,6 +1210,10 @@ return _("Relative path"); case ItemPathFormat::full: return _("Full path"); @@ -242,7 +227,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. } assert(false); break; -@@ -1423,7 +1500,8 @@ +@@ -1393,7 +1470,8 @@ GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover); //---------------------------------------------------------------------------------- @@ -252,7 +237,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); } -@@ -1447,7 +1525,8 @@ +@@ -1417,7 +1495,8 @@ { wxRect rectBack = rect; if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! @@ -276,8 +261,8 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::relative; diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 11.2-1-trad3/FreeFileSync/Source/ui/main_dlg.cpp --- 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-10-02 20:49:11.487782099 -0400 -+++ 11.12-1/FreeFileSync/Source/ui/main_dlg.cpp 2021-07-15 20:22:02.191278722 -0400 -@@ -2653,6 +2647,8 @@ ++++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 20:26:31.350461792 -0400 +@@ -2741,6 +2741,8 @@ addFormatEntry(_("Item name" ), ItemPathFormat::name); addFormatEntry(_("Relative path"), ItemPathFormat::relative); addFormatEntry(_("Full path" ), ItemPathFormat::full); @@ -285,7 +270,7 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_d + addFormatEntry(_("Trad. relative"),ItemPathFormat::tradrel); //---------------------------------------------------------------------------------------------- - auto setIconSize = [&](FileIconSize sz, bool showIcons) + auto setIconSize = [&](GridIconSize sz, bool showIcons) diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cpp 11.2-1-trad3/FreeFileSync/Source/config.cpp --- 11.2-1/FreeFileSync/Source/config.cpp 2020-10-02 14:39:05.233462578 -0400 +++ 11.2-1-trad3/FreeFileSync/Source/config.cpp 2020-10-02 20:22:24.275555557 -0400 @@ -330,4 +315,14 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_v if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::left>(folderPairs_)); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::right>(folderPairs_)); else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<false, SelectSide::left>(folderPairs_)); - +diff -aur 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp +--- 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 15:39:46.313320272 -0400 +@@ -436,7 +436,6 @@ + if (mainDlg->globalCfg_.welcomeShownVersion != ffsVersion) + { + mainDlg->globalCfg_.welcomeShownVersion = ffsVersion; +- showAboutDialog(mainDlg); + } + + diff --git a/freefilesync/ffs_icon_loader.patch b/freefilesync/06_icon_loader.patch index 2575ec5..14035d5 100644 --- a/freefilesync/ffs_icon_loader.patch +++ b/freefilesync/06_icon_loader.patch @@ -1,20 +1,21 @@ Summary: Solve libglib2.0 problem in sketchy manner -Date: 2021-09-22 -Version: 11.14 +Date: 2022-05-24 +Version: 11.21 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 +Zenju tried addressing this for me, but it still does not compile, even with g++-12. So I still have to omit this macro call. +--- 11.21-0/FreeFileSync/Source/base/icon_loader.cpp 2022-05-22 17:09:32.234809499 -0400 ++++ 11.21-1/FreeFileSync/Source/base/icon_loader.cpp 2022-05-24 08:59:15.433965993 -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); +- ::g_object_ref(gicon); //pass ownership ++ //::g_object_ref(gicon); //pass ownership + return FileIconHolder(gicon, maxSize); // } - diff --git a/freefilesync/ffs_libssh2.patch b/freefilesync/07_libssh2.patch index 022914b..022914b 100644 --- a/freefilesync/ffs_libssh2.patch +++ b/freefilesync/07_libssh2.patch diff --git a/freefilesync/_service b/freefilesync/_service new file mode 100644 index 0000000..c31e008 --- /dev/null +++ b/freefilesync/_service @@ -0,0 +1,28 @@ +<services> + <service name="tar_scm"> + <param name="scm">git</param> + <param name="url">https://gitlab.com/bgstack15/stackrpms.git</param> + <param name="subdir">freefilesync/debian</param> + <param name="filename">debian</param> + <param name="revision">freefilesync-bump</param> + <param name="version">_none_</param> + </service> + <service name="recompress"> + <param name="file">*.tar</param> + <param name="compression">xz</param> + </service> + <service name="tar_scm"> + <param name="scm">git</param> + <param name="url">https://gitlab.com/opensource-tracking/FreeFileSync.git</param> + <param name="revision">11.22</param> + <param name="version">_none_</param> + </service> + <service name="recompress"> + <param name="file">*.tar</param> + <param name="compression">gz</param> + </service> + <service name="extract_file"> + <param name="archive">*.tar.xz</param> + <param name="files">*/*.dsc</param> + </service> +</services> diff --git a/freefilesync/debian/changelog b/freefilesync/debian/changelog index 9037cac..5ab5cdd 100644 --- a/freefilesync/debian/changelog +++ b/freefilesync/debian/changelog @@ -1,13 +1,46 @@ +freefilesync (11.22-1+devuan) obs; urgency=medium + + * Upstream updates + * Allow to change default log folder in global settings + * Fixed sort order when items existing on one side only + * Consider HOME environment variable for home path (Linux) + * Fixed config selection using shift and arrow keys + * Start comparison, then sync by only pressing Enter after startup + * Fall back to default path when failing to save log file + * Improved relative config path handling in portable mode + * Dpkg updates + * Fix sloppiness regarding missing Animal.dat + * Suppress showing About dialog after upgrade + + -- B. Stack <bgstack15@gmail.com> Sun, 26 Jun 2022 16:21:42 -0400 + +freefilesync (11.21-1+devuan) obs; urgency=medium + + * Upstream updates + * Support volume GUID as path: + \\?\Volume{01234567-89ab-cdef-0123-456789abcdef} (Windows) + * Avoid Two-Way conflict when changing folder name upper/lower-case + * List hidden warning messages in options dialog + * Fixed buffer overflow while receiving SFTP server banner + * Create crash dumps even if FFS-internal crash handling doesn't kick in + * Log time when error occured, not when it is reported + * Swap sides: Require confirmation only after comparison + * Updated translation files + * Dpkg updates + * Remove icon loader patch (addressed by upstream) + + -- B. Stack <bgstack15@gmail.com> Sun, 22 May 2022 20:35:38 -0400 + freefilesync (11.20-1+devuan) obs; urgency=medium * Upstream updates * Fixed broken icon scaling on high-DPI displays - * Improved performance for huge exclusion filter lists: linear to + * Improved performance for huge exclusion filter lists: linear to constant(!) time * Support sync with Google Drive starred folders - * Access "My Computers" (as created by Google Backup and Sync) if + * Access "My Computers" (as created by Google Backup and Sync) if starred - * Western Digital Mycloud NAS: fixed ERROR_ALREADY_EXISTS when changing + * Western Digital Mycloud NAS: fixed ERROR_ALREADY_EXISTS when changing case * Added per-file progress for "copy to" function * Have filter wildcard ? not match path separator @@ -35,7 +68,7 @@ freefilesync (11.18-1+devuan) obs; urgency=medium * Fixed SFTP key file login error on OpenSSH_8.8p1 * Add error details for NSFileReadUnknownError (macOS) * Disable new config button when already at default - * Use user language instead of region locale during installation + * Use user language instead of region locale during installation * Bump required libcurl4-openssl-dev >= 7.82.0 -- B. Stack <bgstack15@gmail.com> Wed, 09 Mar 2022 09:38:41 -0500 diff --git a/freefilesync/debian/control b/freefilesync/debian/control index 9301bd0..9baed3d 100644 --- a/freefilesync/debian/control +++ b/freefilesync/debian/control @@ -4,12 +4,12 @@ Priority: optional Maintainer: B. Stack <bgstack15@gmail.com> Build-Depends: debhelper (>=12~), imagemagick, - g++-11, + g++-12, libbrotli-dev, - libcurl4-openssl-dev (>=7.82.0), + libcurl4-openssl-dev (>=7.83.1-1+b1), libglibmm-2.4-dev, - libssh2-1-dev, - libssl-dev, + libssh2-1-dev (>=1.10.0-3+b1), + libssl-dev (>=3.0.3-5), wx3.0-headers, unzip, # gtk3 version, and these must be removed for gtk2 build diff --git a/freefilesync/debian/freefilesync+devuan.dsc b/freefilesync/debian/freefilesync+devuan.dsc index e2ca5a6..b6f4f0f 100644 --- a/freefilesync/debian/freefilesync+devuan.dsc +++ b/freefilesync/debian/freefilesync+devuan.dsc @@ -2,11 +2,11 @@ Format: 3.0 (quilt) Source: freefilesync Binary: freefilesync Architecture: any -Version: 11.20-1+devuan +Version: 11.22-1+devuan Maintainer: B. Stack <bgstack15@gmail.com> Homepage: https://freefilesync.org/ Standards-Version: 4.1.4 -Build-Depends: debhelper (>= 12~), g++-11, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.82.0), libglibmm-2.4-dev, libssh2-1-dev, libssl-dev, wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev +Build-Depends: debhelper (>= 12~), g++-12, imagemagick, libbrotli-dev, libcurl4-openssl-dev (>= 7.83.1-1+b1), libglibmm-2.4-dev, libssh2-1-dev (>= 1.10.0-3+b1), libssl-dev (>= 3.0.3-5), wx3.0-headers, unzip, libgtk-3-dev, libwxgtk3.0-gtk3-dev, libfontconfig-dev Package-List: freefilesync deb utils optional arch=any Files: diff --git a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch index 473ae46..65226bb 100644 --- a/freefilesync/debian/patches/ffs_allow_parallel_ops.patch +++ b/freefilesync/debian/patches/ffs_allow_parallel_ops.patch @@ -1,5 +1,6 @@ -Last version tested: 11.13 -The source release appears not to actually include the logic that performs operations in parallel, so this patch doesn't actually do anything. +Version: 11.22 +Date: 2022-06-26 +Message: The source release appears not to actually include the logic that performs operations in parallel, so this patch doesn't actually do anything. diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/folder_selector.cpp 11.4-1/FreeFileSync/Source/ui/folder_selector.cpp --- 11.4-0/FreeFileSync/Source/ui/folder_selector.cpp 2020-12-08 08:15:29.428156465 -0500 +++ 11.4-1/FreeFileSync/Source/ui/folder_selector.cpp 2020-12-08 19:12:09.205183330 -0500 @@ -44,14 +45,15 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/smal m_targetFolderPath->setHistory(std::make_shared<HistoryList>(folderHistory, folderHistoryMax)); diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-0/FreeFileSync/Source/ui/sync_cfg.cpp 11.4-1/FreeFileSync/Source/ui/sync_cfg.cpp ---- 11.13-0/FreeFileSync/Source/ui/sync_cfg.cpp 2021-08-17 19:18:02.039992429 -0400 -+++ 11.13-1/FreeFileSync/Source/ui/sync_cfg.cpp 2021-08-17 19:33:01.693071327 -0400 -@@ -348,7 +348,7 @@ +--- 11.22-0/FreeFileSync/Source/ui/sync_cfg.cpp 2022-06-26 12:01:15.638291465 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/sync_cfg.cpp 2022-06-26 12:42:38.181161442 -0400 +@@ -352,7 +352,7 @@ commandHistoryOut_(commandHistory), globalPairCfg_(globalPairCfg), localPairCfg_(localPairCfg), - enableExtraFeatures_(false), + enableExtraFeatures_(true), - showMultipleCfgs_(showMultipleCfgs) + showMultipleCfgs_(showMultipleCfgs), + globalLogFolderPhrase_(globalLogFolderPhrase) { - setStandardButtonLayout(*bSizerStdButtons, StdButtons().setAffirmative(m_buttonOkay).setCancel(m_buttonCancel)); + diff --git a/freefilesync/debian/patches/ffs_devuan.patch b/freefilesync/debian/patches/ffs_devuan.patch index da59209..06de345 100644 --- a/freefilesync/debian/patches/ffs_devuan.patch +++ b/freefilesync/debian/patches/ffs_devuan.patch @@ -1,16 +1,16 @@ Author: bgstack15 Source: Original research -Last modified: 2022-04-18 +Last-Modified: 2022-05-22 +Last-Version: 11.21 Message: Main patch to compile on Devuan. diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.18-0/FreeFileSync/Source/ffs_paths.cpp 10.18-1/FreeFileSync/Source/ffs_paths.cpp --- 10.13-0/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400 -+++ 10.18-1/FreeFileSync/Source/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500 -@@ -64,7 +64,8 @@ ++++ 11.21-1/FreeFileSync/Source/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500 +@@ -49,7 +49,7 @@ - Zstring fff::getResourceDirPf() + Zstring fff::getResourceDirPath() { -- return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR; -+ // For Fedora, EL and Devuan, install to /usr/share/freefilesync specificly +- return appendPath(getProcessParentFolderPath(), Zstr("Resources")); + return Zstr("/usr/share/freefilesync/"); } @@ -61,4 +61,52 @@ diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/RealTimeSyn #Gtk - support "no button border" cxxFlags += `pkg-config --cflags gtk+-2.0` - +Message: Fix some sloppiness by Zenju. +diff -Naur -x '*.orig' -x '*.rej' -x .git 11.21-0/FreeFileSync/Source/application.cpp 11.21-1/FreeFileSync/Source/application.cpp +--- 11.21-0/FreeFileSync/Source/application.cpp 2022-05-22 17:09:32.234809499 -0400 ++++ 11.21-1/FreeFileSync/Source/application.cpp 2022-05-24 08:36:51.949159500 -0400 +@@ -92,7 +92,7 @@ + ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error)); + + ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider, +- (getResourceDirPf() + fileName).c_str(), //const gchar* path, ++ (getResourceDirPath() + fileName).c_str(), //const gchar* path, + &error); //GError** error + if (error) + throw SysError(formatGlibError("gtk_css_provider_load_from_path", error)); +--- 11.21-0/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-22 17:09:32.226809398 -0400 ++++ 11.21-1/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-25 09:15:00.262617987 -0400 +@@ -68,7 +68,7 @@ + ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error)); + + ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider, +- (fff::getResourceDirPf() + fileName).c_str(), //const gchar* path, ++ (fff::getResourceDirPath() + fileName).c_str(), //const gchar* path, + &error); //GError** error + if (error) + throw SysError(formatGlibError("gtk_css_provider_load_from_path", error)); +Message: some random sloppiness with a missing graphical asset. It's not important to the application. +--- 11.22-0/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 16:03:49.887270966 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 16:03:52.123298767 -0400 +@@ -140,9 +140,9 @@ + + wxImage::AddHandler(new wxJPEGHandler /*ownership passed*/); //activate support for .jpg files + +- wxImage animalImg(utfTo<wxString>(appendPath(getResourceDirPath(), Zstr("Animal.dat"))), wxBITMAP_TYPE_JPEG); +- convertToVanillaImage(animalImg); +- assert(animalImg.IsOk()); ++ //wxImage animalImg(utfTo<wxString>(appendPath(getResourceDirPath(), Zstr("Animal.dat"))), wxBITMAP_TYPE_JPEG); ++ //convertToVanillaImage(animalImg); ++ //assert(animalImg.IsOk()); + + //-------------------------------------------------------------------------- + //have animal + text match *final* dialog width +@@ -152,7 +152,7 @@ + const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 /* grey border*/) / 2; + const int textWidth = m_panelDonate->GetSize().GetWidth() - 5 - 5 - imageWidth; + +- setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/)); ++ //setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/)); + + m_staticTextDonate->Show(); + m_staticTextDonate->Wrap(textWidth - 10 /*left gap*/); //wrap *after* changing font size diff --git a/freefilesync/debian/patches/ffs_gcc.patch b/freefilesync/debian/patches/ffs_gcc.patch index dd9e628..e5a5a96 100644 --- a/freefilesync/debian/patches/ffs_gcc.patch +++ b/freefilesync/debian/patches/ffs_gcc.patch @@ -1,13 +1,13 @@ -Date: 2022-04-18 -Version: 11.20 -Message: Parameterize the C++ compiler invocation +Date: 2022-05-24 +Version: 11.21 +Message: Parameterize the C++ compiler invocation, and use g++-12 Author: bgstack15 diff -aur 11.2-1/FreeFileSync/Source/Makefile 11.2-2/FreeFileSync/Source/Makefile --- 11.2-1/FreeFileSync/Source/Makefile 2020-10-02 14:59:35.816639878 -0400 +++ 11.2-2/FreeFileSync/Source/Makefile 2020-10-02 14:59:54.220866929 -0400 @@ -1,4 +1,5 @@ exeName = FreeFileSync -+CXX=g++-11 ++CXX=g++-12 cxxFlags += -std=c++2b -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 \ @@ -30,7 +30,7 @@ diff -aur 11.2-1/FreeFileSync/Source/RealTimeSync/Makefile 11.2-2/FreeFileSync/S +++ 11.2-2/FreeFileSync/Source/RealTimeSync/Makefile 2020-10-02 14:59:54.220866929 -0400 @@ -1,4 +1,5 @@ exeName = RealTimeSync -+CXX=g++-11 ++CXX=g++-12 cxxFlags += -std=c++2b -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 \ diff --git a/freefilesync/debian/patches/ffs_icon_loader.patch b/freefilesync/debian/patches/ffs_icon_loader.patch index 2575ec5..14035d5 100644 --- a/freefilesync/debian/patches/ffs_icon_loader.patch +++ b/freefilesync/debian/patches/ffs_icon_loader.patch @@ -1,20 +1,21 @@ Summary: Solve libglib2.0 problem in sketchy manner -Date: 2021-09-22 -Version: 11.14 +Date: 2022-05-24 +Version: 11.21 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 +Zenju tried addressing this for me, but it still does not compile, even with g++-12. So I still have to omit this macro call. +--- 11.21-0/FreeFileSync/Source/base/icon_loader.cpp 2022-05-22 17:09:32.234809499 -0400 ++++ 11.21-1/FreeFileSync/Source/base/icon_loader.cpp 2022-05-24 08:59:15.433965993 -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); +- ::g_object_ref(gicon); //pass ownership ++ //::g_object_ref(gicon); //pass ownership + return FileIconHolder(gicon, maxSize); // } - diff --git a/freefilesync/debian/patches/ffs_no_check_updates.patch b/freefilesync/debian/patches/ffs_no_check_updates.patch index bdc2ebd..1d11f96 100644 --- a/freefilesync/debian/patches/ffs_no_check_updates.patch +++ b/freefilesync/debian/patches/ffs_no_check_updates.patch @@ -1,10 +1,10 @@ -Version: 11.20 -Date: 2022-04-18 +Version: 11.22 +Date: 2022-06-26 Author: bgstack15 Message: This is a major rewrite of the ffs_no_check_updates patch from before 11.10 which disabled only a few technical www interactions. This current version completely deletes all logic associated with checking the version of the program. diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp ---- 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:51:21.090657955 -0500 -+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-03-08 16:55:57.009584234 -0500 +--- 11.22-0/FreeFileSync/Source/ui/gui_generated.cpp 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/gui_generated.cpp 2022-06-26 12:39:05.058511306 -0400 @@ -110,15 +110,6 @@ m_menuHelp->AppendSeparator(); @@ -31,9 +31,9 @@ diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.cpp 11.18-1/FreeFileSync/ m_bpButtonCmpConfig->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( MainDialogGenerated::onCmpSettings ), NULL, this ); m_bpButtonCmpConfig->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( MainDialogGenerated::onCompSettingsContextMouse ), NULL, this ); diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/Source/ui/gui_generated.h ---- 11.18-0/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:51:21.114658209 -0500 -+++ 11.18-1/FreeFileSync/Source/ui/gui_generated.h 2022-03-08 16:56:17.057796860 -0500 -@@ -95,8 +95,6 @@ +--- 11.22-0/FreeFileSync/Source/ui/gui_generated.h 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/gui_generated.h 2022-06-26 12:38:30.522081852 -0400 +@@ -96,8 +96,6 @@ wxMenuItem* m_menuItemShowOverview; wxMenu* m_menuHelp; wxMenuItem* m_menuItemHelp; @@ -42,7 +42,7 @@ diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/So wxMenuItem* m_menuItemAbout; wxBoxSizer* bSizerPanelHolder; wxPanel* m_panelTopButtons; -@@ -231,8 +229,6 @@ +@@ -232,8 +230,6 @@ virtual void onMenuExportFileList( wxCommandEvent& event ) { event.Skip(); } virtual void onMenuResetLayout( wxCommandEvent& event ) { event.Skip(); } virtual void onShowHelp( wxCommandEvent& event ) { event.Skip(); } @@ -54,7 +54,15 @@ diff -aur 11.18-0/FreeFileSync/Source/ui/gui_generated.h 11.18-1/FreeFileSync/So diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Source/ui/main_dlg.cpp --- 11.16-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:52:19.811432573 -0500 +++ 11.16-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-01-04 08:57:14.506728896 -0500 -@@ -744,7 +744,6 @@ +@@ -31,7 +31,6 @@ + #include <wx+/image_resources.h> + //#include <wx+/std_button_layout.h> + #include "cfg_grid.h" +-#include "version_check.h" + #include "gui_status_handler.h" + #include "small_dlgs.h" + #include "progress_indicator.h" +@@ -821,7 +820,6 @@ setImage(*m_menuItemHelp, loadImage("help_sicon")); setImage(*m_menuItemAbout, loadImage("about_sicon")); @@ -62,7 +70,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc fixMenuIcons(*m_menuFile); fixMenuIcons(*m_menuActions); -@@ -854,9 +853,6 @@ +@@ -922,9 +920,6 @@ //mainly to update row label sizes... updateGui(); @@ -81,7 +89,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc auiMgr_.Update(); } -@@ -5680,72 +5674,6 @@ +@@ -5740,72 +5734,6 @@ } } @@ -103,7 +111,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc - - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { -- flashStatusInformation(_("Searching for program updates...")); +- flashStatusInfo(_("Searching for program updates...")); - //synchronous update check is sufficient here: - automaticUpdateCheckEval(*this, globalCfg_.lastUpdateCheck, globalCfg_.lastOnlineVersion, - automaticUpdateCheckRunAsync(automaticUpdateCheckPrepare(*this).get()).get()); @@ -134,7 +142,7 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/main_dlg.cpp 11.10-2/FreeFileSync/Sourc - - if (shouldRunAutomaticUpdateCheck(globalCfg_.lastUpdateCheck)) - { -- flashStatusInformation(_("Searching for program updates...")); +- flashStatusInfo(_("Searching for program updates...")); - - std::shared_ptr<const UpdateCheckResultPrep> resultPrep = automaticUpdateCheckPrepare(*this); //run on main thread: - @@ -271,3 +279,25 @@ diff -aur 11.10-1/FreeFileSync/Source/ui/version_check.h 11.10-2/FreeFileSync/So } #endif //VERSION_CHECK_H_324872374893274983275 +diff -aur /usr/src/freefilesync/11.22-0/FreeFileSync/Source/Makefile /usr/src/freefilesync/11.22-1/FreeFileSync/Source/Makefile +--- 11.22-0/FreeFileSync/Source/Makefile 2022-06-26 11:47:06.603733867 -0400 ++++ 11.22-1/FreeFileSync/Source/Makefile 2022-06-26 14:01:34.640058450 -0400 +@@ -76,7 +85,6 @@ + cppFiles+=ui/sync_cfg.cpp + cppFiles+=ui/tray_icon.cpp + cppFiles+=ui/triple_splitter.cpp +-cppFiles+=ui/version_check.cpp + cppFiles+=../../libcurl/curl_wrap.cpp + cppFiles+=../../zen/file_access.cpp + cppFiles+=../../zen/file_io.cpp +diff -aur /usr/src/freefilesync/11.22-0/FreeFileSync/Source/ui/small_dlgs.cpp /usr/src/freefilesync/11.22-1/FreeFileSync/Source/ui/small_dlgs.cpp +--- 11.22-0/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 12:01:15.638291465 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 14:01:37.516094208 -0400 +@@ -27,7 +27,6 @@ + #include <wx+/image_resources.h> + #include "gui_generated.h" + #include "folder_selector.h" +-#include "version_check.h" + #include "abstract_folder_picker.h" + #include "../afs/concrete.h" + #include "../afs/gdrive.h" diff --git a/freefilesync/debian/patches/ffs_no_wx311.patch b/freefilesync/debian/patches/ffs_no_wx311.patch index 1671e4c..e74da90 100644 --- a/freefilesync/debian/patches/ffs_no_wx311.patch +++ b/freefilesync/debian/patches/ffs_no_wx311.patch @@ -1,10 +1,10 @@ -Last modified: 2022-04-18 -Version: 11.20 +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.4-1/FreeFileSync/Source/ui/small_dlgs.cpp 2020-12-08 18:22:19.929543356 -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())); @@ -15,6 +15,16 @@ diff -Naur -x '*.orig' -x '*.rej' -x .git 11.4-0/FreeFileSync/Source/ui/small_dl //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); @@ -63,3 +73,66 @@ diff -x '*.rej' -x '*.orig' -x '*.git*' -Naur 10.24-0/FreeFileSync/Source/ui/fol //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_traditional_view.patch b/freefilesync/debian/patches/ffs_traditional_view.patch index b9b35cc..2c7ab23 100644 --- a/freefilesync/debian/patches/ffs_traditional_view.patch +++ b/freefilesync/debian/patches/ffs_traditional_view.patch @@ -1,11 +1,11 @@ -Version: 11.6 -Date: 2021-02-02 +Version: 11.22 +Date: 2022-06-26 Author: bgstack15@gmail.com -Message: restore a traditional view to FreeFileSync +Message: restore a traditional view to FreeFileSync, and disable "welcomeShownVersion" About dialog diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11.3-1/FreeFileSync/Source/ui/file_grid.cpp ---- 11.3-1/FreeFileSync/Source/ui/file_grid.cpp 2020-11-02 11:38:14.806496077 -0500 -+++ 11.3-2/FreeFileSync/Source/ui/file_grid.cpp 2020-11-05 11:11:46.146360956 -0500 -@@ -493,8 +493,10 @@ +--- 11.21-0/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 17:09:32.242809600 -0400 ++++ 11.21-1/FreeFileSync/Source/ui/file_grid.cpp 2022-05-22 20:23:04.015916689 -0400 +@@ -475,8 +475,10 @@ case ItemPathFormat::name: return utfTo<std::wstring>(fsObj->getItemName<side>()); case ItemPathFormat::relative: @@ -16,7 +16,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. return AFS::getDisplayPath(fsObj->getAbstractPath<side>()); } assert(false); -@@ -547,8 +549,13 @@ +@@ -529,8 +531,13 @@ else GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover); @@ -31,7 +31,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); } -@@ -654,6 +661,26 @@ +@@ -636,6 +643,26 @@ else //=> BaseFolderPair groupParentFolder = AFS::getDisplayPath(pdi.fsObj->base().getAbstractPath<side>()); break; @@ -58,7 +58,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. } //path components should follow the app layout direction and are NOT a single piece of text! -@@ -679,11 +706,42 @@ +@@ -661,11 +688,38 @@ int groupNameWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + getTextExtentBuffered(dc, groupName).x); const int groupNameMinWidth = groupName.empty() ? 0 : (gapSize_ + iconSize + gapSize_ + ellipsisWidth); @@ -77,10 +77,6 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. + // start trad patch + + // rearrange this one section -+ //add slashes for better readability + a wide gap for disambiguation -+ assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); -+ const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); -+ + switch (itemPathFormat_) + { + case ItemPathFormat::traditional: @@ -89,7 +85,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. + if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ + !endsWith(groupParentFolder, L'\\') && /*e.g. C:\ */ + groupParentFolder.size() > 0 ) -+ groupParentFolder += groupParentSep; ++ groupParentFolder += contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); + break; + case ItemPathFormat::name: + case ItemPathFormat::relative: @@ -102,18 +98,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. //not enough space? => collapse if (int excessWidth = groupParentWidth + groupNameWidth + groupItemsWidth - maxWidth; excessWidth > 0) -@@ -693,10 +751,6 @@ - //1. render group components on two rows - stackedGroupRender = true; - -- //add slashes for better readability + a wide gap for disambiguation -- assert(!contains(groupParentFolder, L'/') || !contains(groupParentFolder, L'\\')); -- const wchar_t groupParentSep = contains(groupParentFolder, L'/') ? L'/' : (contains(groupParentFolder, L'\\') ? L'\\' : FILE_NAME_SEPARATOR); -- - if (!endsWith(groupParentFolder, L'/' ) && //e.g. ftp://server/ - !endsWith(groupParentFolder, L'\\')) /*e.g. C:\ */ - groupParentFolder += groupParentSep; -@@ -755,6 +809,11 @@ +@@ -731,6 +785,11 @@ } } } @@ -125,7 +110,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. return { -@@ -873,6 +932,9 @@ +@@ -851,6 +910,9 @@ rectGroup = rectGroupParent = rectGroupName = rectTmp; rectGroupParent.width = groupParentWidth; @@ -135,7 +120,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. rectGroupName .width = groupNameWidth; if (stackedGroupRender) -@@ -896,6 +958,11 @@ +@@ -874,6 +936,11 @@ rectGroupItems.width = 0; } @@ -147,7 +132,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. //------------------------------------------------------------------------- { //clear background below parent path => harmonize with renderRowBackgound() -@@ -906,8 +973,8 @@ +@@ -884,8 +951,8 @@ wxRect rectGroupBack = rectGroup; rectGroupBack.width += 2 * gapSize_; //include gap before vline @@ -158,7 +143,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectGroupBack, getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 == 0)); //clearArea() is surprisingly expensive => call just once! -@@ -924,7 +991,8 @@ +@@ -900,7 +967,8 @@ rectNav.width = fastFromDIP(20); if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! @@ -168,7 +153,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. wxColor backCol = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); dc.GetPixel(rectNav.GetTopRight(), &backCol); //e.g. selected row! -@@ -914,13 +982,13 @@ +@@ -908,13 +976,13 @@ dc.GradientFillLinear(rectNav, getColorSelectionGradientFrom(), backCol, wxEAST); } @@ -184,7 +169,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. wxDCTextColourChanger textColorGroupName(dc); //folder background: coordinate with renderRowBackgound() -@@ -974,9 +1042,9 @@ +@@ -947,9 +1015,9 @@ drawCellText(dc, rectGroupName, groupName, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, &getTextExtentBuffered(dc, groupName)); } @@ -196,7 +181,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. (groupName.empty() || !pdi.folderGroupObj->isEmpty<side>())) //don't show for missing folders { wxRect rectGroupParentText = rectGroupParent; -@@ -975,16 +1043,16 @@ +@@ -969,16 +1037,16 @@ rectGroupItems.x += 2 * gapSize_; rectGroupItems.width -= 2 * gapSize_; @@ -217,7 +202,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. drawCudHighlight(rectItemsBack, pdi.fsObj->getSyncOperation()); -@@ -1134,7 +1202,12 @@ +@@ -1105,7 +1173,12 @@ groupNameWidth] = getGroupRenderLayout(dc, row, pdi, insanelyHugeWidth); assert(!stackedGroupRender); @@ -231,7 +216,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. const int fileIconWidth = getIconManager().getIconBuffer() ? gapSize_ + getIconManager().getIconSize() : 0; const int ellipsisWidth = getTextExtentBuffered(dc, ELLIPSIS).x; const int itemWidth = itemName.empty() ? 0 : -@@ -1166,6 +1239,10 @@ +@@ -1137,6 +1210,10 @@ return _("Relative path"); case ItemPathFormat::full: return _("Full path"); @@ -242,7 +227,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. } assert(false); break; -@@ -1423,7 +1500,8 @@ +@@ -1393,7 +1470,8 @@ GridData::renderRowBackgound(dc, rect, row, true /*enabled*/, true /*selected*/, rowHover); //---------------------------------------------------------------------------------- @@ -252,7 +237,7 @@ diff -x '*.orig' -x '*.rej' -aur 11.3-0/FreeFileSync/Source/ui/file_grid.cpp 11. clearArea(dc, rectLine, row == pdi.groupLastRow - 1 /*last group item*/ ? getColorGridLine() : getDefaultBackgroundColorAlternating(pdi.groupIdx % 2 != 0)); } -@@ -1447,7 +1525,8 @@ +@@ -1417,7 +1495,8 @@ { wxRect rectBack = rect; if (row == pdi.groupLastRow - 1 /*last group item*/) //preserve the group separation line! @@ -276,8 +261,8 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_g const ItemPathFormat defaultItemPathFormatLeftGrid = ItemPathFormat::relative; diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 11.2-1-trad3/FreeFileSync/Source/ui/main_dlg.cpp --- 11.2-1/FreeFileSync/Source/ui/main_dlg.cpp 2020-10-02 20:49:11.487782099 -0400 -+++ 11.12-1/FreeFileSync/Source/ui/main_dlg.cpp 2021-07-15 20:22:02.191278722 -0400 -@@ -2653,6 +2647,8 @@ ++++ 11.21-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-05-22 20:26:31.350461792 -0400 +@@ -2741,6 +2741,8 @@ addFormatEntry(_("Item name" ), ItemPathFormat::name); addFormatEntry(_("Relative path"), ItemPathFormat::relative); addFormatEntry(_("Full path" ), ItemPathFormat::full); @@ -285,7 +270,7 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/main_d + addFormatEntry(_("Trad. relative"),ItemPathFormat::tradrel); //---------------------------------------------------------------------------------------------- - auto setIconSize = [&](FileIconSize sz, bool showIcons) + auto setIconSize = [&](GridIconSize sz, bool showIcons) diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/config.cpp 11.2-1-trad3/FreeFileSync/Source/config.cpp --- 11.2-1/FreeFileSync/Source/config.cpp 2020-10-02 14:39:05.233462578 -0400 +++ 11.2-1-trad3/FreeFileSync/Source/config.cpp 2020-10-02 20:22:24.275555557 -0400 @@ -330,4 +315,14 @@ diff -x '.git*' -x '*.orig' -x '*.rej' -aur 11.2-1/FreeFileSync/Source/ui/file_v if ( ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::left>(folderPairs_)); else if ( ascending && !onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<true, SelectSide::right>(folderPairs_)); else if (!ascending && onLeft) std::sort(sortedRef_.begin(), sortedRef_.end(), LessFullPath<false, SelectSide::left>(folderPairs_)); - +diff -aur 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp +--- 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 15:39:46.313320272 -0400 +@@ -436,7 +436,6 @@ + if (mainDlg->globalCfg_.welcomeShownVersion != ffsVersion) + { + mainDlg->globalCfg_.welcomeShownVersion = ffsVersion; +- showAboutDialog(mainDlg); + } + + diff --git a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch index fda8cc2..ee34b5b 100644 --- a/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch +++ b/freefilesync/debian/patches/revert_zenju_aggressive_upstreamisms.patch @@ -1,6 +1,6 @@ Message: Some of these can be traced back to version 10.23 which was the last to not use <unordered_map> -Date: 2022-04-18 -Version: 11.20 +Date: 2022-06-26 +Version: 11.22 Author: bgstack15 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 @@ -143,9 +143,9 @@ diff -x '*.orig' -x '*.rej' -aur 11.2-0/FreeFileSync/Source/ui/folder_selector.c //It looks like wxDD_SHOW_HIDDEN only sets the default when opening for the first time!? if (folderSelector.ShowModal() != wxID_OK) diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_button.h ---- 11.1-1/wx+/bitmap_button.h 2020-09-01 19:07:43.727122311 -0400 -+++ 11.1-2/wx+/bitmap_button.h 2020-09-01 20:10:31.385364671 -0400 -@@ -26,7 +26,7 @@ +--- 11.22-0/wx+/bitmap_button.h 2022-06-26 12:01:15.638291465 -0400 ++++ 11.22-1/wx+/bitmap_button.h 2022-06-26 12:51:34.527830821 -0400 +@@ -28,7 +28,7 @@ const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, @@ -154,9 +154,25 @@ diff -x '*.orig' -x '*.rej' -aur 11.1-1/wx+/bitmap_button.h 11.1-2/wx+/bitmap_bu wxBitmapButton(parent, id, wxNullBitmap, pos, size, style, validator, name) { SetLabel(label); +@@ -104,7 +104,6 @@ + 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 @@ + 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); diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/wx+/dc.h ---- 11.20-0/wx+/dc.h 2022-04-18 09:49:31.921386600 -0400 -+++ 11.20-1/wx+/dc.h 2022-04-18 10:12:04.667907393 -0400 +--- 11.21-0/wx+/dc.h 2022-05-22 17:09:32.250809701 -0400 ++++ 11.21-1/wx+/dc.h 2022-05-22 20:28:53.788193992 -0400 @@ -12,7 +12,7 @@ #include <zen/basic_math.h> #include <wx/dcbuffer.h> //for macro: wxALWAYS_NATIVE_DOUBLE_BUFFER @@ -175,18 +191,17 @@ diff -aur -x '*.git*' -x '.*.swp' -x '*.orig' -x '*.rej' 11.6-0/wx+/dc.h 11.6-1/ -#endif //GTK2 doesn't properly support high DPI: https://freefilesync.org/forum/viewtopic.php?t=6114 //=> requires general fix at wxWidgets-level - -@@ -119,11 +116,11 @@ + +@@ -126,11 +123,10 @@ inline -wxBitmapBundle toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/) +wxBitmap toBitmapBundle(const wxImage& img /*expected to be DPI-scaled!*/) { - //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); not (yet) implemented + //return wxBitmap(img, -1 /*depth*/, static_cast<double>(getDPI()) / defaultDpi); implementation just ignores scale parameter! WTF! wxBitmap bmpScaled(img); -- bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi); -+ //bmpScaled.SetScaleFactor(static_cast<double>(getDPI()) / defaultDpi); +- bmpScaled.SetScaleFactor(getDisplayScaleFactor()); return bmpScaled; } @@ -329,7 +344,12 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+ richCtrl.SetMargins({0, 0}); --- 11.20-0/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 09:49:31.917386558 -0400 +++ 11.20-1/FreeFileSync/Source/ui/progress_indicator.cpp 2022-04-18 11:02:10.988781908 -0400 -@@ -882,7 +885,6 @@ +@@ -878,12 +881,10 @@ + 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); } @@ -337,3 +357,25 @@ diff -Naur -x '*.orig' -x '*.rej' -x '*.git*' 11.4-1/wx+/no_flicker.h 11.4-2/wx+ return bmpSquare; }; pnl_.m_bitmapGraphKeyBytes->SetBitmap(generateSquareBitmap(getColorBytes(), getColorBytesRim())); +--- 11.22-0/wx+/rtl.h 2022-06-26 12:01:15.642291514 -0400 ++++ 11.22-1/wx+/rtl.h 2022-06-26 12:58:17.248838575 -0400 +@@ -69,9 +69,6 @@ + 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! + +--- 11.22-0/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 12:01:15.634291415 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/main_dlg.cpp 2022-06-26 14:44:38.556188935 -0400 +@@ -3595,7 +3590,6 @@ + }; + + 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 diff --git a/freefilesync/debian/patches/series b/freefilesync/debian/patches/series index 92dd680..467d69a 100644 --- a/freefilesync/debian/patches/series +++ b/freefilesync/debian/patches/series @@ -10,5 +10,5 @@ revert_zenju_aggressive_upstreamisms.patch ffs_gcc.patch ffs_traditional_view.patch ffs_desktop_notifications.patch -ffs_openssl.patch +#ffs_openssl.patch ffs_icon_loader.patch diff --git a/freefilesync/ffs_el.patch b/freefilesync/ffs_distro_el6_el7.patch index ad9ae15..ad9ae15 100644 --- a/freefilesync/ffs_el.patch +++ b/freefilesync/ffs_distro_el6_el7.patch diff --git a/freefilesync/ffs_fedora.patch b/freefilesync/ffs_distro_fedora.patch index 7f5c4d1..17287ef 100644 --- a/freefilesync/ffs_fedora.patch +++ b/freefilesync/ffs_distro_fedora.patch @@ -1,14 +1,16 @@ -Last modified date: 2022-04-18 +Author: bgstack15 +Source: Original research +Last-Modified: 2022-05-22 +Message: Main patch to compile on Fedora History: ffs_fedora 2020-07-22 now uses gtk3 diff -Naur 10.13-0/FreeFileSync/Source/ffs_paths.cpp 10.13-1/FreeFileSync/Source/ffs_paths.cpp --- 10.13-0/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:23:07.615661499 -0400 -+++ 10.13-1/FreeFileSync/Source/ffs_paths.cpp 2019-06-14 20:36:28.178274292 -0400 -@@ -55,7 +55,8 @@ ++++ 11.21-1/FreeFileSync/Source/ffs_paths.cpp 2019-11-21 09:41:42.287474472 -0500 +@@ -49,7 +49,7 @@ - Zstring fff::getResourceDirPf() + Zstring fff::getResourceDirPath() { -- return getProcessParentFolderPath() + FILE_NAME_SEPARATOR + Zstr("Resources") + FILE_NAME_SEPARATOR; -+ // For Fedora, EL and Devuan, install to /usr/share/freefilesync specificly +- return appendPath(getProcessParentFolderPath(), Zstr("Resources")); + return Zstr("/usr/share/freefilesync/"); } @@ -80,3 +82,52 @@ diff -x '*.swp' -x '.git*' -x '*.orig' -x '*.rej' -Naur 10.19-0/FreeFileSync/Sou build += SPACED_BULLET; build += utfTo<wxString>(formatTime(formatDateTag, getCompileTime())); +Message: Fix some sloppiness by Zenju. +diff -Naur -x '*.orig' -x '*.rej' -x .git 11.21-0/FreeFileSync/Source/application.cpp 11.21-1/FreeFileSync/Source/application.cpp +--- 11.21-0/FreeFileSync/Source/application.cpp 2022-05-22 17:09:32.234809499 -0400 ++++ 11.21-1/FreeFileSync/Source/application.cpp 2022-05-24 08:36:51.949159500 -0400 +@@ -92,7 +92,7 @@ + ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error)); + + ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider, +- (getResourceDirPf() + fileName).c_str(), //const gchar* path, ++ (getResourceDirPath() + fileName).c_str(), //const gchar* path, + &error); //GError** error + if (error) + throw SysError(formatGlibError("gtk_css_provider_load_from_path", error)); +--- 11.21-0/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-22 17:09:32.226809398 -0400 ++++ 11.21-1/FreeFileSync/Source/RealTimeSync/application.cpp 2022-05-25 09:15:00.262617987 -0400 +@@ -68,7 +68,7 @@ + ZEN_ON_SCOPE_EXIT(if (error) ::g_error_free(error)); + + ::gtk_css_provider_load_from_path(provider, //GtkCssProvider* css_provider, +- (fff::getResourceDirPf() + fileName).c_str(), //const gchar* path, ++ (fff::getResourceDirPath() + fileName).c_str(), //const gchar* path, + &error); //GError** error + if (error) + throw SysError(formatGlibError("gtk_css_provider_load_from_path", error)); +Message: some random sloppiness with a missing graphical asset. It's not important to the application. +--- 11.22-0/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 16:03:49.887270966 -0400 ++++ 11.22-1/FreeFileSync/Source/ui/small_dlgs.cpp 2022-06-26 16:03:52.123298767 -0400 +@@ -140,9 +140,9 @@ + + wxImage::AddHandler(new wxJPEGHandler /*ownership passed*/); //activate support for .jpg files + +- wxImage animalImg(utfTo<wxString>(appendPath(getResourceDirPath(), Zstr("Animal.dat"))), wxBITMAP_TYPE_JPEG); +- convertToVanillaImage(animalImg); +- assert(animalImg.IsOk()); ++ //wxImage animalImg(utfTo<wxString>(appendPath(getResourceDirPath(), Zstr("Animal.dat"))), wxBITMAP_TYPE_JPEG); ++ //convertToVanillaImage(animalImg); ++ //assert(animalImg.IsOk()); + + //-------------------------------------------------------------------------- + //have animal + text match *final* dialog width +@@ -152,7 +152,7 @@ + const int imageWidth = (m_panelDonate->GetSize().GetWidth() - 5 - 5 /* grey border*/) / 2; + const int textWidth = m_panelDonate->GetSize().GetWidth() - 5 - 5 - imageWidth; + +- setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/)); ++ //setImage(*m_bitmapAnimalSmall, shrinkImage(animalImg, imageWidth, -1 /*maxHeight*/)); + + m_staticTextDonate->Show(); + m_staticTextDonate->Wrap(textWidth - 10 /*left gap*/); //wrap *after* changing font size diff --git a/freefilesync/ffs_bit.patch b/freefilesync/ffs_el6_el7_bit.patch index 3cc6ccc..3cc6ccc 100644 --- a/freefilesync/ffs_bit.patch +++ b/freefilesync/ffs_el6_el7_bit.patch diff --git a/freefilesync/ffs_no_eraseif.patch b/freefilesync/ffs_el6_el7_no_eraseif.patch index 71239e4..71239e4 100644 --- a/freefilesync/ffs_no_eraseif.patch +++ b/freefilesync/ffs_el6_el7_no_eraseif.patch diff --git a/freefilesync/ffs_libcurl_7.61.1.patch b/freefilesync/ffs_libcurl_7.61.1.patch new file mode 100644 index 0000000..a6b8532 --- /dev/null +++ b/freefilesync/ffs_libcurl_7.61.1.patch @@ -0,0 +1,79 @@ +Author: Brulhart, bgstack15 +Date: 2022-06-07 +Message: remove assertion for libcurl version >1.61 for EL8 +Version: FreeFileSync 11.21 +Message: We have to omit checking for certain definitions. +Distro: AlmaLinux 8. File ffs_curl.patch is different between all distros! +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 >= 61 )); + /* 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 -aur 11.21-{0,1}/libcurl/curl_wrap.h +--- FreeFileSync-11.21-0/libcurl/curl_wrap.h 2022-05-22 17:09:26.000000000 -0400 ++++ FreeFileSync-11.21-1/libcurl/curl_wrap.h 2022-06-07 13:27:43.530380754 -0400 +@@ -17,10 +17,6 @@ + #include <curl/curl.h> + //------------------------------------------------- + +-#ifndef CURLINC_CURL_H +- #error curl.h header guard changed +-#endif +- + namespace zen + { + void libcurlInit(); +diff -aur 11.21-{0,1}/libcurl/curl_wrap.cpp +--- FreeFileSync-11.21/libcurl/curl_wrap.cpp 2022-05-22 17:09:26.000000000 -0400 ++++ FreeFileSync-11.21-2/libcurl/curl_wrap.cpp 2022-06-07 13:34:11.216294490 -0400 +@@ -331,9 +331,8 @@ + 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); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_ENGINE_SETFAILED); +@@ -344,7 +343,7 @@ + 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); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE62); ++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_LDAP_INVALID_URL); // < libcurl 7.82.0 + 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); +@@ -358,7 +357,7 @@ + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_REMOTE_FILE_EXISTS); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TFTP_NOSUCHUSER); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_FAILED); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE76); ++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_REQD); // < libcurl 7.82.0 + 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); +@@ -376,14 +375,8 @@ + 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); +- 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/ffs_curl.patch b/freefilesync/ffs_libcurl_7.71.1.patch index bd0354a..bd0354a 100644 --- a/freefilesync/ffs_curl.patch +++ b/freefilesync/ffs_libcurl_7.71.1.patch diff --git a/freefilesync/ffs_libcurl_7.79.1.patch b/freefilesync/ffs_libcurl_7.79.1.patch new file mode 100644 index 0000000..d76eac8 --- /dev/null +++ b/freefilesync/ffs_libcurl_7.79.1.patch @@ -0,0 +1,39 @@ +Author: Brulhart, bgstack15 +Date: 2022-06-27 +Message: remove assertion for libcurl version >1.79 +Version: FreeFileSync 11.22 +Message: We have to omit checking for certain definitions. +Distro: Fedora 35. File ffs_curl.patch is different between fc34 and devuan! +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 >= 79 )); + /* 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 -aur 11.18-{0,1}/libcurl/curl_wrap.cpp +--- 11.18-0/libcurl/curl_wrap.cpp 2022-03-09 10:19:42.961942416 -0500 ++++ 11.18-1/libcurl/curl_wrap.cpp 2022-03-09 10:37:44.702421086 -0500 +@@ -343,7 +343,7 @@ + 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); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE62); ++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_LDAP_INVALID_URL); // < libcurl 7.82.0 + 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); +@@ -357,7 +357,7 @@ + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_REMOTE_FILE_EXISTS); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TFTP_NOSUCHUSER); + ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_FAILED); +- ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE76); ++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_REQD); // < libcurl 7.82.0 + 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); diff --git a/freefilesync/ffs_no_gcc12.patch b/freefilesync/ffs_no_gcc12.patch new file mode 100644 index 0000000..b25edac --- /dev/null +++ b/freefilesync/ffs_no_gcc12.patch @@ -0,0 +1,63 @@ +Message: Because we do not use gcc 12, we have an error with unordered_map and std::pair. +Author: zensubz +Date-Modified: 2022-06-27 +Version: 11.22 +Source: https://freefilesync.org/forum/viewtopic.php?t=9376&p=34044#p34044 +Distro: any distro with g++ < 12 +--- a/FreeFileSync/Source/base/db_file.cpp ++++ b/FreeFileSync/Source/base/db_file.cpp +@@ -642,7 +642,7 @@ + + void process(const ContainerObject::FolderList& currentFolders, const Zstring& parentRelPath, InSyncFolder::FolderList& dbFolders) + { +- std::unordered_map<ZstringNorm, const FolderPair*> toPreserve; ++ std::map<ZstringNorm, const FolderPair*> toPreserve; + + for (const FolderPair& folder : currentFolders) + if (!folder.isPairEmpty()) +--- a/FreeFileSync/Source/base/db_file.h ++++ b/FreeFileSync/Source/base/db_file.h +@@ -67,9 +67,9 @@ + InSyncStatus status = DIR_STATUS_STRAW_MAN; + + //------------------------------------------------------------------ +- using FolderList = std::unordered_map<ZstringNorm, InSyncFolder >; // +- using FileList = std::unordered_map<ZstringNorm, InSyncFile >; // key: file name (ignoring Unicode normal forms) +- using SymlinkList = std::unordered_map<ZstringNorm, InSyncSymlink>; // ++ using FolderList = std::map<ZstringNorm, InSyncFolder >; // ++ using FileList = std::map<ZstringNorm, InSyncFile >; // key: file name (ignoring Unicode normal forms) ++ using SymlinkList = std::map<ZstringNorm, InSyncSymlink>; // + //------------------------------------------------------------------ + + FolderList folders; +--- a/FreeFileSync/Source/base/file_hierarchy.h ++++ b/FreeFileSync/Source/base/file_hierarchy.h +@@ -7,12 +7,14 @@ + #ifndef FILE_HIERARCHY_H_257235289645296 + #define FILE_HIERARCHY_H_257235289645296 + ++#include <map> + #include <string> + #include <memory> + #include <list> + #include <functional> + #include <unordered_set> +-#include <unordered_map> ++#include <zen/zstring.h> ++#include <zen/stl_tools.h> + #include "structures.h" + #include "path_filter.h" + #include "../afs/abstract.h" +@@ -94,9 +96,9 @@ + //------------------------------------------------------------------ + //key: raw file name, without any (Unicode) normalization, preserving original upper-/lower-case + //"Changing data [...] to NFC would cause interoperability problems. Always leave data as it is." +- using FolderList = std::unordered_map<Zstring, std::pair<FolderAttributes, FolderContainer>>; +- using FileList = std::unordered_map<Zstring, FileAttributes>; +- using SymlinkList = std::unordered_map<Zstring, LinkAttributes>; ++ using FolderList = std::map<Zstring, std::pair<FolderAttributes, FolderContainer>>; ++ using FileList = std::map<Zstring, FileAttributes>; ++ using SymlinkList = std::map<Zstring, LinkAttributes>; + //------------------------------------------------------------------ + + FolderContainer() = default; diff --git a/freefilesync/ffs_no_wx311.patch b/freefilesync/ffs_no_wx311.patch deleted file mode 100644 index 1671e4c..0000000 --- a/freefilesync/ffs_no_wx311.patch +++ /dev/null @@ -1,65 +0,0 @@ -Last modified: 2022-04-18 -Version: 11.20 -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.4-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)) -@@ -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! diff --git a/freefilesync/ffs_openssl.patch b/freefilesync/ffs_openssl.patch index 7097d33..b77d8ac 100644 --- a/freefilesync/ffs_openssl.patch +++ b/freefilesync/ffs_openssl.patch @@ -1,8 +1,8 @@ Summary: Compile for libss-dev 1.1.1m Author: bgstack15 -Date: 2022-01-04 +Date: 2022-06-07 Version: 11.16 -Message: Compile on Devuan Ceres with libssl-dev_1.1.1m-1 +Message: Compile on any distro with openssl < 3.0.0 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 diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec index 3636de0..1beec2a 100644 --- a/freefilesync/freefilesync.spec +++ b/freefilesync/freefilesync.spec @@ -6,20 +6,37 @@ %define min_libssh2 %{nil} %define min_openssl %{nil} %define scl_env %{nil} -%define scl_buildreq coreutils +%define scl_buildreq %{nil} %if 0%{?el6}%{?el7} %define scl_env devtoolset-7 %define scl_buildreq devtoolset-7-toolchain - %define min_libcurl >= 7.64.0 + %define min_libcurl >= 7.61.0 %define min_libssh2 >= 1.8.0 %define min_openssl >= 1.1.1c %endif +%if 0%{?el8} + %define scl_env gcc-toolset-11 + %define scl_buildreq gcc-toolset-11-gcc-c++, gcc-toolset-11-annobin-plugin-gcc + %define min_libcurl >= 7.61.0 + %define min_libssh2 >= 1.9.0 + %define min_openssl >= 1.1.1k +%endif %define libssh2_name libssh2 -%if 0%{?rhel} >= 8 -%define libssh2_name libssh2-%{name} +%define openssl_name openssl +# EL8 copr has some dnf module weirdness with libssh2, not a version problem. +%if 0%{?el6}%{?el7}%{?el8} +%define libssh2_name libssh2-freefilesync +%endif +%if 0%{?el6}%{?el7} +%define openssl_name openssl-freefilesync +%endif +%if 0%{?fedora} >= 36 +# https://www.spinics.net/lists/fedora-devel/msg296646.html +# https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects +%undefine _package_note_file %endif Name: freefilesync -Version: 11.20 +Version: 11.22 Release: 1%{?dist} Summary: A file synchronization utility @@ -32,21 +49,29 @@ Source0: https://gitlab.com/opensource-tracking/%{pkgname}/-/archive/%{versio Source1: %{pkgname}.desktop Source2: %{prog2name}.desktop Source3: %{name}.xml -Patch0: ffs_allow_parallel_ops.patch -Patch1: ffs_no_check_updates.patch -Patch2: ffs_no_wx311.patch -Patch3: ffs_sftp.patch -Patch4: ffs_fedora.patch -Patch5: ffs_el.patch -Patch6: ffs_libssh2.patch -Patch7: ffs_curl.patch -Patch8: ffs_bit.patch -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 +# all rpm distros use these +Patch0: 00_allow_parallel_ops.patch +Patch1: 01_no_check_updates.patch +Patch2: 02_no_wx311.patch +Patch3: 03_sftp.patch +Patch4: 04_revert_zenju_aggressive_upstreamisms.patch +Patch5: 05_traditional_view.patch +Patch6: 06_icon_loader.patch +Patch7: 07_libssh2.patch +# distro specific patches +## Fedora and EL8 +Patch20: ffs_distro_fedora.patch +## EL6 and EL7 +Patch30: ffs_distro_el6_el7.patch +Patch31: ffs_el6_el7_bit.patch +Patch32: ffs_el6_el7_no_eraseif.patch +# dependency specific +Patch40: ffs_openssl.patch +Patch41: ffs_no_gcc12.patch +Patch60: ffs_desktop_notifications.patch +Patch70: ffs_libcurl_7.61.1.patch +Patch71: ffs_libcurl_7.71.1.patch +Patch72: ffs_libcurl_7.79.1.patch Packager: B. Stack <bgstack15@gmail.com> BuildRequires: brotli-devel @@ -54,22 +79,34 @@ BuildRequires: wxGTK3-devel BuildRequires: desktop-file-utils BuildRequires: gcc-c++ BuildRequires: ImageMagick +%if "%{?min_libcurl}" != "" BuildRequires: libcurl-devel %{min_libcurl} +%else +BuildRequires: libcurl-devel +%endif +%if "%{?min_libssh2}" != "" BuildRequires: %{libssh2_name}-devel %{min_libssh2} +%else +BuildRequires: %{libssh2_name}-devel +%endif BuildRequires: patch BuildRequires: pkgconfig(giomm-2.4) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(libselinux) BuildRequires: pkgconfig(zlib) -%if 0%{?el6}%{?el7} +# We need the binary so we can check version number +BuildRequires: %{openssl_name} +%if "%{?scl_buildreq}" != "" BuildRequires: %{scl_buildreq} -BuildRequires: openssl-%{name}-devel %{min_openssl} -Requires: libcurl %{min_libcurl} -Requires: %{libssh2_name} %{min_libssh2} -Requires: openssl-%{name}-libs %{min_openssl} +%endif +%if "%{?min_openssl}" != "" +BuildRequires: %{openssl_name}-devel %{min_openssl} %else -BuildRequires: openssl-devel +BuildRequires: %{openssl_name}-devel %endif +#Requires: libcurl %%{?min_libcurl} +#Requires: %%{libssh2_name} %%{?min_libssh2} +#Requires: openssl-%%{name}-libs %%{?min_openssl} Requires: hicolor-icon-theme Requires: xdg-utils Provides: mimehandler(application/x-freefilesync-ffs) @@ -84,36 +121,63 @@ having nice visual feedback along the way. %prep %setup -n %{pkgname}-%{version} - # fix text file line endings and permissions to unix find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \ -exec %{__sed} -i -r -e 's/\r$//' {} + - %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 %if 0%{?el6}%{?el7} # use the el patch -%patch5 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 %else # use the fedora patch, even for el8 -%patch4 -p1 +%patch20 -p1 %endif -%patch6 -p1 -%patch7 -p1 -%if 0%{?el6}%{?el7}%{?el8}%{?fc29} -%patch8 -p1 -%patch9 -p1 +# Determine if openssl < 3.0.0 +opensslver="$( openssl version | awk '{if($2>=3){print "3"}else{print"1"}}' )" +if test ${opensslver} -lt 3 ; +then +%patch40 -p1 +fi +# Determine if g++ < 12 +g__version="$( +%if "%{?scl_env}" != "" + scl enable %{scl_env} /bin/bash <<'EOFSCL' %endif -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%if 0%{?fedora} < 36 -# Patch13 openssl is only for openssl < 3.0.0 -%patch13 -p1 + g++ --version +%if "%{?scl_env}" != "" +EOFSCL %endif -%patch14 -p1 +)" +g__version="$( echo "${g__version}" | awk 'NR==1{if($3>=12){print "12"}else{print"11"}}' )" +echo "G__version=${g_version}" +if test ${g__version} -lt 12 ; +then +%patch41 -p1 +fi +# desktop notifications merely has to happen after distro patch +%patch60 -p1 +# Determine version of libcurl +%define libcurl_ver %( rpm -q libcurl-devel --queryformat '%%{version}' ) +case "%{libcurl_ver}" in + 7.61.1) +%patch70 -p1 + ;; + 7.79.1) +%patch72 -p1 + ;; + *) +%patch71 -p1 + ;; +esac # custom build parameters for packaging application in rpm # fedora provides build_cxxflags, which is really just optflags @@ -137,7 +201,7 @@ EOFSCL %install %if !%{dummy_package} -# removed by upstream! +# removed by upstream around version 11 #%%make_install -C %%{pkgname}/Source #%%make_install -C %%{pkgname}/Source/%%{prog2name} pushd %{pkgname}/Build @@ -155,12 +219,6 @@ mkdir -p %{buildroot}%{_datadir}/applications desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE1} desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE2} -# application start script -# none - -# man pages -# none - # mimetypes install -d %{buildroot}%{_datadir}/mime/packages install -Dm 0644 -t %{buildroot}%{_datadir}/mime/packages %{SOURCE3} @@ -188,12 +246,6 @@ done %post touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : -%preun -# is it a final removal? -#if test "$1" = "0" ; -#then -#fi - %postun if test "$1" = "0" ; then @@ -217,6 +269,17 @@ update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & : %ghost %config %attr(666, -, -) %{_datadir}/%{name}/GlobalSettings.xml %changelog +* Mon Jun 27 2022 B. Stack <bgstack15@gmail.com> - 11.22-1 +- version bump + +* Tue Jun 07 2022 B. Stack <bgstack15@gmail.com> - 11.21-2 +- rewrite spec for easier cross-distro support +- fix builds for el8 + +* Wed May 25 2022 B. Stack <bgstack15@gmail.com> - 11.21-1 +- version bump +- add ffs_no_gcc12 patch + * Mon Apr 18 2022 B. Stack <bgstack15@gmail.com> - 11.20-1 - version bump - remove a few patches from r_z_a_u for when gcc < 11 |