From d37779e8b1af7b7237844a9ff7c705296718835d Mon Sep 17 00:00:00 2001 From: B Stack Date: Mon, 18 Feb 2019 10:43:53 -0500 Subject: WIP: FreeFileSync on CentOS 7, part 1 In my original dev environment, I can now compile and execute the main binaries. My next commit should include some attempts at static linking so the runtime environment does not need the hacked openssl 1.1.0h packages. --- freefilesync/README-freefilesync.md | 25 +++++++++ freefilesync/credits.md | 4 -- freefilesync/ffs.el7.patch | 107 ++++++++++++++++++++++++++++++++++++ freefilesync/ffs.fc28.patch | 56 +++++++++++++++++++ freefilesync/ffs_abi.patch | 12 ---- freefilesync/ffs_fedora.patch | 24 -------- freefilesync/ffs_makefile.patch | 32 ----------- freefilesync/ffs_sftp.patch | 2 + freefilesync/freefilesync.spec | 83 ++++++++-------------------- 9 files changed, 214 insertions(+), 131 deletions(-) create mode 100644 freefilesync/README-freefilesync.md delete mode 100644 freefilesync/credits.md create mode 100644 freefilesync/ffs.el7.patch create mode 100644 freefilesync/ffs.fc28.patch delete mode 100644 freefilesync/ffs_abi.patch delete mode 100644 freefilesync/ffs_fedora.patch delete mode 100644 freefilesync/ffs_makefile.patch diff --git a/freefilesync/README-freefilesync.md b/freefilesync/README-freefilesync.md new file mode 100644 index 0000000..02d0505 --- /dev/null +++ b/freefilesync/README-freefilesync.md @@ -0,0 +1,25 @@ +# Summary for CentOS 7 compilation of freefilesync + +### Dependencies to build FreeFileSync on CentOS 7 +All of the packages in the next section, and also +* devtoolset-7 [Software Collections (SCL)][3] +* custom patches provided in this repo. + +### Sources of the bgstack15/FreeFileSync copr packages +Custom packages: +* openssl: [bgstack15][1] +* libssh2: [city-fan][2] +* curl: city-fan +* libmetalink: city-fan +* libpsl: city-fan + +# Credits +This package, freefilesync, is made possible by the concerted efforts of many people and groups +* Zenju, author of the upstream project [FreeFileSync](http://freefilesync.org) +* [PhantomX](https://github.com/PhantomX/)/chinforpms [freefilesync spec](https://github.com/PhantomX/chinforpms/tree/master/freefilesync) +* My [original freefilesync spec](https://gitlab.com/bgstack15/freefilesync-rpm/) + +# References +[1][https://bgstack15.wordpress.com] +[2][http://www.city-fan.org/ftp/contrib/yum-repo/] +[3][https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/] diff --git a/freefilesync/credits.md b/freefilesync/credits.md deleted file mode 100644 index 8a92965..0000000 --- a/freefilesync/credits.md +++ /dev/null @@ -1,4 +0,0 @@ -This package, freefilesync, is made possible by the concerted efforts of many people and groups -* Zenju, author of the upstream project [FreeFileSync](http://freefilesync.org) -* [PhantomX](https://github.com/PhantomX/)/chinforpms [freefilesync spec](https://github.com/PhantomX/chinforpms/tree/master/freefilesync) -* My [original freefilesync spec](https://gitlab.com/bgstack15/freefilesync-rpm/) diff --git a/freefilesync/ffs.el7.patch b/freefilesync/ffs.el7.patch new file mode 100644 index 0000000..0763296 --- /dev/null +++ b/freefilesync/ffs.el7.patch @@ -0,0 +1,107 @@ +The cstddef discovery is from https://stackoverflow.com/questions/52567517/freefilesync-c-error-byte-is-not-a-member-of-std +Some changes just make the application work better in an installed setting (e.g., the hard-coded resouce path). +Tricking the wxWidgets ABI version comes from https://stackoverflow.com/questions/45123664/wxwidgets-runtime-error-mismatch-version/47822976#47822976 +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/base/ffs_paths.cpp 10.9-1.el7/FreeFileSync/Source/base/ffs_paths.cpp +--- 10.9-0/FreeFileSync/Source/base/ffs_paths.cpp 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/base/ffs_paths.cpp 2019-02-17 10:43:22.286986341 -0500 +@@ -59,7 +59,7 @@ + ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); + + //if (isPortableVersion()) +- return appendSeparator(getExeFolderParentPath()); ++ return appendSeparator("/usr") + appendSeparator("share") + appendSeparator("freefilesync"); + //else //use OS' standard paths + // return appendSeparator(utfTo(wxStandardPathsBase::Get().GetResourcesDir())); + } +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/Makefile 10.9-1.el7/FreeFileSync/Source/Makefile +--- 10.9-0/FreeFileSync/Source/Makefile 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/Makefile 2019-02-17 10:50:27.282820639 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = FreeFileSync_$(shell arch) ++EXENAME = FreeFileSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -DLIBSSH2_OPENSSL -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ + -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ +- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread ++ -O3 -DNDEBUG -fPIC `wx-config --version=3.0 --cxxflags --debug=no` -pthread + +-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++LINKFLAGS = -s -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-z,relro -no-pie `wx-config --version=3.0 --libs std, aui --debug=no | sed -r -e 's/-[^[:space:]]+web[^[:space:]]+//;'` -lz -pthread + + + CXXFLAGS += `pkg-config --cflags openssl` +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 10.9-1.el7/FreeFileSync/Source/RealTimeSync/Makefile +--- 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-17 10:50:43.699007372 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = RealTimeSync_$(shell arch) ++EXENAME = RealTimeSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ + -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ +- -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread ++ -O3 -DNDEBUG -fPIC `wx-config --version=3.0 --cxxflags --debug=no` -pthread + +-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++LINKFLAGS = -s -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -no-pie `wx-config --version=3.0 --cxxflags --libs std, aui --debug=no | sed -r -e 's/-[^[:space:]]+web[^[:space:]]+//;'` -lz -pthread + + #Gtk - support "no button border" + CXXFLAGS += `pkg-config --cflags gtk+-2.0` +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.9-1.el7/FreeFileSync/Source/ui/small_dlgs.cpp +--- 10.9-0/FreeFileSync/Source/ui/small_dlgs.cpp 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/ui/small_dlgs.cpp 2019-02-17 10:42:29.741388638 -0500 +@@ -115,6 +115,8 @@ + L" x64"; + #endif + ++ build += ++ L" for CentOS 7"; + + GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize() + +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/zen/ring_buffer.h 10.9-1.el7/zen/ring_buffer.h +--- 10.9-0/zen/ring_buffer.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/zen/ring_buffer.h 2019-02-17 09:53:10.907818287 -0500 +@@ -9,6 +9,7 @@ + + #include + #include "scope_guard.h" ++#include + + + namespace zen +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/zen/serialize.h 10.9-1.el7/zen/serialize.h +--- 10.9-0/zen/serialize.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/zen/serialize.h 2019-02-17 09:53:06.701772057 -0500 +@@ -9,6 +9,7 @@ + + #include + #include ++#include + #include "string_base.h" + //keep header clean from specific stream implementations! (e.g.file_io.h)! used by abstract.h! + +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/wx+/app_main.h 10.9-1/wx+/app_main.h +--- 10.9-0/wx+/app_main.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1/wx+/app_main.h 2019-02-16 13:51:32.437266070 -0500 +@@ -7,6 +7,8 @@ + #ifndef APP_MAIN_H_08215601837818347575856 + #define APP_MAIN_H_08215601837818347575856 + ++#define __GXX_ABI_VERSION 1002 ++ + #include + #include + +diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/FreeFileSync/Source/RealTimeSync/application.h 10.9-1.el7/FreeFileSync/Source/RealTimeSync/application.h +--- 10.9-0/FreeFileSync/Source/RealTimeSync/application.h 2019-02-13 16:05:15.000000000 -0500 ++++ 10.9-1.el7/FreeFileSync/Source/RealTimeSync/application.h 2019-02-18 08:53:14.017850931 -0500 +@@ -7,6 +7,8 @@ + #ifndef APPLICATION_H_18506781708176342677 + #define APPLICATION_H_18506781708176342677 + ++#define __GXX_ABI_VERSION 1002 ++ + #include + + diff --git a/freefilesync/ffs.fc28.patch b/freefilesync/ffs.fc28.patch new file mode 100644 index 0000000..e112b1f --- /dev/null +++ b/freefilesync/ffs.fc28.patch @@ -0,0 +1,56 @@ +diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.3-2/FreeFileSync/Source/ui/small_dlgs.cpp +--- 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 2018-08-07 05:03:34.000000000 -0400 ++++ 10.3-2/FreeFileSync/Source/ui/small_dlgs.cpp 2018-08-29 22:13:40.240595334 -0400 +@@ -106,6 +106,8 @@ + L" x64"; + #endif + ++ build += ++ L" for Fedora"; + + GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize() + +diff -Naur 10.6-0/FreeFileSync/Source/base/ffs_paths.cpp 10.6-1/FreeFileSync/Source/base/ffs_paths.cpp +--- 10.6-0/FreeFileSync/Source/base/ffs_paths.cpp 2018-11-13 06:58:40.771249592 -0500 ++++ 10.6-1/FreeFileSync/Source/base/ffs_paths.cpp 2018-11-16 21:34:30.341077845 -0500 +@@ -66,7 +66,7 @@ + ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); + + //if (isPortableVersion()) +- return appendSeparator(getExeFolderParentPath()); ++ return appendSeparator("/usr") + appendSeparator("share") + appendSeparator("freefilesync"); + //else //use OS' standard paths + // return appendSeparator(utfTo(wxStandardPathsBase::Get().GetResourcesDir())); + } +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/Makefile 10.9-1/FreeFileSync/Source/Makefile +--- 10.3-0/FreeFileSync/Source/Makefile 2019-02-10 22:01:42.138160180 -0500 ++++ 10.9-1/FreeFileSync/Source/Makefile 2019-02-11 21:48:19.729739859 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = FreeFileSync_$(shell arch) ++EXENAME = FreeFileSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -DLIBSSH2_OPENSSL -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ + -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ + -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread + +-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -lz -pthread + + + CXXFLAGS += `pkg-config --cflags openssl` +diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile +--- 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-10 22:01:42.141160214 -0500 ++++ 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-11 21:48:22.504771344 -0500 +@@ -1,10 +1,10 @@ +-EXENAME = RealTimeSync_$(shell arch) ++EXENAME = RealTimeSync + + CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ + -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ + -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread + +-LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread ++LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -lz -pthread + + #Gtk - support "no button border" + CXXFLAGS += `pkg-config --cflags gtk+-2.0` diff --git a/freefilesync/ffs_abi.patch b/freefilesync/ffs_abi.patch deleted file mode 100644 index 375397c..0000000 --- a/freefilesync/ffs_abi.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur -x '*.orig' -x '*.rej' -x '*.swp' 10.9-0/wx+/app_main.h 10.9-1/wx+/app_main.h ---- 10.9-0/wx+/app_main.h 2019-02-13 16:05:15.000000000 -0500 -+++ 10.9-1/wx+/app_main.h 2019-02-16 13:51:32.437266070 -0500 -@@ -7,6 +7,8 @@ - #ifndef APP_MAIN_H_08215601837818347575856 - #define APP_MAIN_H_08215601837818347575856 - -+#define __GXX_ABI_VERSION 1002 -+ - #include - #include - diff --git a/freefilesync/ffs_fedora.patch b/freefilesync/ffs_fedora.patch deleted file mode 100644 index 1fc0a50..0000000 --- a/freefilesync/ffs_fedora.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -Naur -x '*.orig' -x '*.rej' 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 10.3-2/FreeFileSync/Source/ui/small_dlgs.cpp ---- 10.3-0/FreeFileSync/Source/ui/small_dlgs.cpp 2018-08-07 05:03:34.000000000 -0400 -+++ 10.3-2/FreeFileSync/Source/ui/small_dlgs.cpp 2018-08-29 22:13:40.240595334 -0400 -@@ -106,6 +106,8 @@ - L" x64"; - #endif - -+ build += -+ L" for Fedora"; - - GetSizer()->SetSizeHints(this); //~=Fit() + SetMinSize() - -diff -Naur 10.6-0/FreeFileSync/Source/base/ffs_paths.cpp 10.6-1/FreeFileSync/Source/base/ffs_paths.cpp ---- 10.6-0/FreeFileSync/Source/base/ffs_paths.cpp 2018-11-13 06:58:40.771249592 -0500 -+++ 10.6-1/FreeFileSync/Source/base/ffs_paths.cpp 2018-11-16 21:34:30.341077845 -0500 -@@ -66,7 +66,7 @@ - ZEN_ON_SCOPE_EXIT(wxTheApp->SetAppName(appName)); - - //if (isPortableVersion()) -- return appendSeparator(getExeFolderParentPath()); -+ return appendSeparator("/usr") + appendSeparator("share") + appendSeparator("freefilesync"); - //else //use OS' standard paths - // return appendSeparator(utfTo(wxStandardPathsBase::Get().GetResourcesDir())); - } diff --git a/freefilesync/ffs_makefile.patch b/freefilesync/ffs_makefile.patch deleted file mode 100644 index 79a8233..0000000 --- a/freefilesync/ffs_makefile.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/Makefile 10.9-1/FreeFileSync/Source/Makefile ---- 10.3-0/FreeFileSync/Source/Makefile 2019-02-10 22:01:42.138160180 -0500 -+++ 10.9-1/FreeFileSync/Source/Makefile 2019-02-11 21:48:19.729739859 -0500 -@@ -1,10 +1,10 @@ --EXENAME = FreeFileSync_$(shell arch) -+EXENAME = FreeFileSync - - CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -DLIBSSH2_OPENSSL -I../.. -I../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ - -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ - -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread - --LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread -+LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -lz -pthread - - - CXXFLAGS += `pkg-config --cflags openssl` -diff -Naur -x '*.orig' -x '*.rej' 10.9-0/FreeFileSync/Source/RealTimeSync/Makefile 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile ---- 10.3-0/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-10 22:01:42.141160214 -0500 -+++ 10.9-1/FreeFileSync/Source/RealTimeSync/Makefile 2019-02-11 21:48:22.504771344 -0500 -@@ -1,10 +1,10 @@ --EXENAME = RealTimeSync_$(shell arch) -+EXENAME = RealTimeSync - - CXXFLAGS = -std=c++17 -pipe -DWXINTL_NO_GETTEXT_MACRO -I../../.. -I../../../zenXml -include "zen/i18n.h" -include "zen/warn_static.h" \ - -Wall -Wfatal-errors -Wmissing-include-dirs -Wswitch-enum -Wcast-align -Wshadow -Wnon-virtual-dtor \ - -O3 -DNDEBUG `wx-config --cxxflags --debug=no` -pthread - --LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -pthread -+LINKFLAGS = -s -no-pie `wx-config --libs std, aui --debug=no` -lz -pthread - - #Gtk - support "no button border" - CXXFLAGS += `pkg-config --cflags gtk+-2.0` diff --git a/freefilesync/ffs_sftp.patch b/freefilesync/ffs_sftp.patch index 34dc9ad..056cf91 100644 --- a/freefilesync/ffs_sftp.patch +++ b/freefilesync/ffs_sftp.patch @@ -1,3 +1,5 @@ +The upstream author observed that some of the values he uses are not in the libssh2 public headers. I don't know where he uses them from, but I had to replace them here to get this to compile. +https://github.com/libssh2/libssh2/issues/90 diff -x '*.orig' -x '*.swp' -x '*.rej' -Naur 10.9-0/FreeFileSync/Source/fs/sftp.cpp 10.9-1/FreeFileSync/Source/fs/sftp.cpp --- 10.9-0/FreeFileSync/Source/fs/sftp.cpp 2019-02-10 16:42:29.139040980 -0500 +++ 10.9-1/FreeFileSync/Source/fs/sftp.cpp 2019-02-10 21:28:00.030732089 -0500 diff --git a/freefilesync/freefilesync.spec b/freefilesync/freefilesync.spec index 2136e86..6d4caf9 100644 --- a/freefilesync/freefilesync.spec +++ b/freefilesync/freefilesync.spec @@ -1,16 +1,17 @@ -# Summary for CentOS 7 compilation of freefilesync: -# 1. city-fan repo (http://www.city-fan.org/ftp/contrib/yum-repo/) for newer libssh2 -# 2. sclo for gcc 7.3.1 -# 3. all sorts of custom patches to code in freefilesync.spec and some standalone patch files. -# 4. custom openssl 1.1.0-devel and -libs packages. %global pkgname FreeFileSync %global prog2name RealTimeSync %global dummy_package 0 +%define min_libcurl %{nil} +%define min_libssh2 %{nil} +%define min_openssl %{nil} %define scl_env %{nil} %define scl_buildreq coreutils %if 0%{?el6}%{?el7} %define scl_env devtoolset-7 %define scl_buildreq devtoolset-7-toolchain + %define min_libcurl >= 7.64.0 + %define min_libssh2 >= 1.8.0 + %define min_openssl >= 1.1.0h %endif Name: freefilesync Version: 10.9 @@ -25,14 +26,11 @@ URL: http://www.freefilesync.org/ Source0: https://gitlab.com/opensource-tracking/%{pkgname}/-/archive/%{version}/%{pkgname}-%{version}.tar.gz Source1: %{pkgname}.desktop Source2: %{prog2name}.desktop -Patch0: ffs_makefile.patch -Patch1: ffs_no_check_updates.patch -Patch2: ffs_no_wx311.patch -Patch3: ffs_fedora.patch -Patch4: ffs_allow_parallel_ops.patch -Patch5: ffs_old_libcurl.patch -Patch6: ffs_sftp.patch -Patch7: ffs_abi.patch +Patch0: ffs_no_check_updates.patch +Patch1: ffs_no_wx311.patch +Patch2: ffs%{?dist}.patch +Patch3: ffs_allow_parallel_ops.patch +Patch4: ffs_sftp.patch Packager: B Stack # WARNING: the build will FAIL if you have wxGTK3-devel installed. Only wxGTK2-devel should be on the build system. @@ -41,19 +39,18 @@ BuildRequires: compat-wxGTK3-gtk2-devel BuildRequires: desktop-file-utils BuildRequires: gcc-c++ BuildRequires: ImageMagick -BuildRequires: libcurl-devel -BuildRequires: libssh2-devel -BuildRequires: openssl-devel BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(libselinux) BuildRequires: pkgconfig(zlib) +BuildRequires: libcurl-devel %{min_libcurl} +BuildRequires: libssh2-devel %{min_libssh2} +BuildRequires: openssl-devel %{min_openssl} %if 0%{?el6}%{?el7} BuildRequires: wxGTK-devel -%endif -%if "%{?scl_env}" != "" BuildRequires: %{scl_buildreq} %endif Requires: hicolor-icon-theme +Requires: xdg-utils %description FreeFileSync is a free Open Source software that helps you synchronize @@ -73,41 +70,13 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \ %patch2 -p1 %patch3 -p1 %patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 - -%if "%{?scl_env}" != "" - # everything minus the -fPIC got farther but failed asking for -fPIC - # another option is to use the output of "wx-config --libs std, aui --debug=no" from fc28 and find the 3.0 libs and use those here. - %{__sed} \ - -e 's|-O3 -DNDEBUG|& -I/usr/include/wx-3.0-gtk2 -I/usr/lib64/wx/include/gtk2-unicode-3.0-gtk2 -fPIC|;' \ - -e '/LINKFLAGS/s|-no-pie|& -I/usr/include/wx-3.0-gtk2 -I/usr/lib64/wx/include/gtk2-unicode-3.0-gtk2 -pthread -lwx_gtk2u_aui-3.0-gtk2 -lwx_gtk2u_xrc-3.0-gtk2 -lwx_gtk2u_html-3.0-gtk2 -lwx_gtk2u_qa-3.0-gtk2 -lwx_gtk2u_adv-3.0-gtk2 -lwx_gtk2u_core-3.0-gtk2 -lwx_baseu_xml-3.0-gtk2 -lwx_baseu_net-3.0-gtk2 -lwx_baseu-3.0-gtk2|;' \ - -e 's|-O3 -DNDEBUG|-DNDEBUG -D"warn_static(arg)= " -DZEN_LINUX %{optflags}|g' \ - -e '/LINKFLAGS/s|-s|-Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld %{__global_ldflags}|g' \ - -e '/LINKFLAGS/s|LINKLAGS\s*=\s*|&--static |;' \ - -i %{pkgname}/Source/Makefile %{pkgname}/Source/%{prog2name}/Makefile - - # old libcurl problems again, perhaps solved with http://www.city-fan.org/ftp/contrib/yum-repo/rhel7/x86_64/ - #sed -r -e '/CURLE_WEIRD_SERVER_REPLY|CURLE_HTTP2|CURLE_NO_CONNECTION_AVAILABLE|CURLE_SSL_PINNEDPUBKEYNOTMATCH|CURLE_SSL_INVALIDCERTSTATUS|CURLE_RECURSIVE_API_CALL|CURLINFO_ACTIVESOCKET/s|^|//|;' \ - # -i %{pkgname}/Source/fs/libcurl/curl_wrap.h - - # https://stackoverflow.com/questions/52567517/freefilesync-c-error-byte-is-not-a-member-of-std - sed -i '1s/^/#include \n/' zen/serialize.h zen/ring_buffer.h - - # trying to use some openssl-devel from 1.1.0 to satisfy it, from city-fan? - ## use openssl 1.0.2 on centos7 - #sed -r -e '/OPENSSL_VERSION_NUMBER/s|0x[0-9]+L|0x100020beL|;' \ - # -i FreeFileSync/Source/fs/libssh2/*.cpp - -%else -# only when not el6/el7 + # custom build parameters for packaging application in rpm - %{__sed} \ - -e 's|-O3 -DNDEBUG|-DNDEBUG -D"warn_static(arg)= " -DZEN_LINUX %{build_cxxflags}|g' \ - -e '/LINKFLAGS/s|-s|%{__global_ldflags}|g' \ - -i %{pkgname}/Source/Makefile %{pkgname}/Source/%{prog2name}/Makefile -%endif +# fedora provides build_cxxflags, which is really just optflags +%{__sed} \ + -e 's|-O3 -DNDEBUG|-DNDEBUG -D"warn_static(arg)= " -DZEN_LINUX %{?build_cxxflags:%{build_cxxflags}}%{!?build_cxxflags:%{optflags}}|g' \ + -e '/LINKFLAGS/s|-s|%{__global_ldflags}|;' \ + -i %{pkgname}/Source/Makefile %{pkgname}/Source/%{prog2name}/Makefile %build %if !%{dummy_package} @@ -115,8 +84,7 @@ find . ! -type d \( -name '*.c' -o -name '*.cpp' -o -name '*.h' \) \ scl enable %{scl_env} /bin/bash << EOF %endif %make_build -C %{pkgname}/Source - # turned off while building ffs for centos 7 - #%make_build -C %{pkgname}/Source/%{prog2name} + %make_build -C %{pkgname}/Source/%{prog2name} %if "%{?scl_env}" != "" EOF %endif @@ -129,9 +97,7 @@ EOF #%%make_install -C %%{pkgname}/Source/%%{prog2name} pushd %{pkgname}/Build install -d %{buildroot}%{_bindir} %{buildroot}%{_datadir}/%{name} -# turned off while building ffs for centos 7 -#install -Dm 0755 -t %{buildroot}%{_bindir} Bin/%{pkgname} Bin/%{prog2name} -install -Dm 0755 -t %{buildroot}%{_bindir} Bin/%{pkgname} +install -Dm 0755 -t %{buildroot}%{_bindir} Bin/%{pkgname} Bin/%{prog2name} cp -pr Languages %{buildroot}%{_datadir}/%{name} install -Dm 0644 ding.wav gong.wav harp.wav Resources.zip styles.gtk_rc %{buildroot}%{_datadir}/%{name} popd @@ -194,8 +160,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %license %attr(444, -, -) License.txt %doc %attr(444, -, -) Changelog.txt %{_bindir}/%{pkgname} -# turned off while building ffs for centos 7 -#%{_bindir}/%{prog2name} +%{_bindir}/%{prog2name} %{_datadir}/applications/*.desktop %{_datadir}/icons/hicolor/*x*/apps/*.png %{_datadir}/%{name} -- cgit