summaryrefslogtreecommitdiff
path: root/freefilesync/freefilesync.spec
diff options
context:
space:
mode:
authorB Stack <bgstack15@gmail.com>2019-02-18 10:43:53 -0500
committerB Stack <bgstack15@gmail.com>2019-02-18 10:43:53 -0500
commitd37779e8b1af7b7237844a9ff7c705296718835d (patch)
tree403405057d49f01c278ef6e4f285f53a0a4e872a /freefilesync/freefilesync.spec
parentWIP: freefilesync on centos7 raw (diff)
downloadstackrpms-d37779e8b1af7b7237844a9ff7c705296718835d.tar.gz
stackrpms-d37779e8b1af7b7237844a9ff7c705296718835d.tar.bz2
stackrpms-d37779e8b1af7b7237844a9ff7c705296718835d.zip
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.
Diffstat (limited to 'freefilesync/freefilesync.spec')
-rw-r--r--freefilesync/freefilesync.spec83
1 files changed, 24 insertions, 59 deletions
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 <bgstack15@gmail.com>
# 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 <cstddef>\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}
bgstack15