# JIT is supported on x86 and x86_64 only, bug #1309772 %ifarch %{ix86} x86_64 %bcond_without jit %else %bcond_with jit %endif # Prefer GCC compiler %global toolchain gcc %bcond_with toolchain_clang %bcond_with toolchain_gcc Name: zpaqfranz %global commit 2826e9a272bf9f2d081d74a341a93b5e6978602e %global shortcommit %(c=%{commit}; echo ${c:0:7}) Version: 58.9^20230912g%{shortcommit} Release: 1%{?dist} Summary: Advanced multiversioned archiver with hardware acceleration # LICENSE: MIT text # man/LICENSE: Unlicense text # man/zpaqfranz.pod: LicenseRef-Fedora-Public-Domain # zpaqfranz.cpp: MIT # zpaqfranz.cpp parts from zpaq: LicenseRef-Fedora-Public-Domain # # zpaqfranz.cpp parts from libtom/libtomcrypt: Unlicense # zpaqfranz.cpp parts from salsa20: LicenseRef-Fedora-Public-Domain # zpaqfranz.cpp parts from 7-zip: LicenseRef-Fedora-Public-Domain # zpaqfranz.cpp parts from libdivsufsort-lite: MIT # zpaqfranz.cpp parts from Embedded Artistry: MIT # zpaqfranz.cpp parts from Nilsimsa: MIT # zpaqfranz.cpp parts from fcorbelli/zsfx: MIT # zpaqfranz.cpp parts from crc32: Zlib # zpaqfranz.cpp parts from stbrumme/hash-library: Zlib # zpaqfranz.cpp parts from madler/brotli: Zlib # zpaqfranz.cpp parts from wangyi-fudan/wyhash: Unlicense # zpaqfranz.cpp parts from memcached: BSD-2-Clause # zpaqfranz.cpp parts from BLAKE3-team/BLAKE3: CC0-1.0 OR Apache-2.0 # zpaqfranz.cpp parts from Whirlpool: LicenseRef-Fedora-Public-Domain # zpaqfranz.cpp parts from wernerd/ZRTPCPP Twofish: Ferguson-Twofish # zpaqfranz.cpp parts from google/highwayhash: Apache-2.0 # zpaqfranz.cpp parts from Bill-Gray/PDCursesMod: LicenseRef-Fedora-Public-Domain # (zpaqfranz.cpp parts from Rufus (GPL-3.0-or-later) removed, but a notice # forgotten in man/zpaqfranz.pod # ) # zpaqfranz.cpp parts from noloader/SHA-Intrinsics: LicenseRef-Fedora-Public-Domain # zpaqfranz.cpp parts from Stephan Brumme's SHA3 and MD5: Zlib # zpaqfranz.cpp parts from Iliade translated by Vincenzo Monti in 1825 # in extract_test[1-4] Base64-encoded variables: LicenseRef-Fedora-Public-Domain ## Used at build time, but not packaged in any binary package # zpaqfranz.cpp part with zsfx_mime64[] Base64-encoded variable: # ZPAQ-compressed Win executable built from ZSFX/zsfx.cpp and # ZSFX/libzpaq.cpp using mingw ## Not used at build time and not in any binary package # man/zpaqfranz.1: LicenseRef-Fedora-Public-Domain (built from man/zpaqfranz.pod) # man/zpaqfranz.man: LicenseRef-Fedora-Public-Domain (built from man/zpaqfranz.pod) # ZSFX/libzpaq.cpp: MIT AND Unlicense AND LicenseRef-Fedora-Public-Domain # (a subset and an old version of zpaqfranz.cpp) # ZSFX/LICENSE: MIT text # ZSFX/zsfx.cpp: MIT License: MIT AND Apache-2.0 AND BSD-2-Clause AND Ferguson-Twofish AND Unlicense AND Zlib AND LicenseRef-Fedora-Public-Domain URL: https://github.com/fcorbelli/%{name} # The latest release archive at %%{url}/archive/refs/tags/%%{version}.tar.gz # contains proprietary files (WINDOWS/asmc64.exe) # . Thus use a git snapshot # until upstream do a proper release. Source0: %{url}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz # Work around a miscompilation on i686, GCC bug #2238781, # . Patch0: zpaqfranz-2826e9a-i686_gcc_workaround.patch BuildRequires: coreutils BuildRequires: gcc-c++ BuildRequires: perl-podlators BuildRequires: sed # libdivsufsort-lite-2.00 is bundled to libzpaq.cpp from # that # is simplified version of # . # New libdivsufsort upstream is . Provides: bundled(libdivsufsort-lite) = 2.00 %description This is a Swiss army knife for backup and disaster recovery with deduplicated snapshots. It efficiently keeps backups, without a need to ever prune. Handles millions of files and terabytes of data. Non-Latin support. Backups with full encryption. Data integrity check with CRC32 and XXHASH or SHA-1, SHA-2, SHA-3, MD5, XXH3, or BLAKE3. Multithread support. Specific ZFS handling functions. %prep %autosetup -p1 -n %{name}-%{commit} # Remove pregenerated files rm man/zpaqfranz.{1,man} # Remove precompiled code sed -i -e '/zsfx_mime64\[\]={/d' zpaqfranz.cpp # Normalize EOLs for F in CHANGELOG.md; do tr -d "\r" < "${F}" > "${F}.new" touch -r "$F" "${F}.new" mv "${F}.new" "$F" done # Extract license texts sed -n -e '/^Credits and copyrights and licenses/,/^ _____ _____/ p' \ < zpaqfranz.cpp > LICENSES %build %{build_cxx} %{optflags} \ -Dunix \ %if %{without jit} -DNOJIT \ %endif %ifarch x86_64 -DHWSHA2 \ %endif %ifarch s390x -DBIG \ %endif zpaqfranz.cpp %{?__global_ldflags} -pthread -o zpaqfranz pod2man --utf8 man/zpaqfranz.pod man/zpaqfranz.1 %check # Run a selftest ./zpaqfranz autotest # Test compress-decopress idemptotency ./zpaqfranz a test.zpaq LICENSE ./zpaqfranz v test.zpaq %install install -m 0755 -D -t %{buildroot}%{_bindir} zpaqfranz install -m 0644 -D -t %{buildroot}%{_mandir}/man1 man/zpaqfranz.1 %files %license COPYING LICENSE LICENSES %doc CHANGELOG.md README.md %{_bindir}/zpaqfranz %{_mandir}/man1/zpaqfranz.1* %changelog * Tue Sep 12 2023 Petr Pisar - 58.9^20230912g2826e9a-1 - 58.9 version packaged