# Officially supported arches: x86 and PPC # However, only x86 builds seems to work on EL/Fedora %define exclusive_arch %{nil} %define exclusive_arch 1 # Depending on version, program may requires SSSE3 %define force_ssse3 %{nil} %define force_ssse3 0 # Build quickbms64 AKA quickbms_4gb_files # The quickbms_4gb_files is a native 32-bit program # with all the variables set as 64-bit useful in some situations %define build_quickbms64 %{nil} %define build_quickbms64 1 %define debug_package %{nil} # The license macro was introduced in RPM 4.11 %define doc_license %{nil} %define doc_license 1 %if 0%{?rhel}%{?fedora} %if 0%{?rhel} %if 0%{?rhel} < 7 %define doc_license 0 %endif %else %if 0%{?fedora} < 19 %define doc_license 0 %endif %endif %endif # Define ix86 macro if it is not defined %if 0%{!?ix86:1} %define ix86 i386 i486 i586 i686 pentium3 pentium4 athlon geode %endif %if 0%{!?arch_x86_32:1} %define arch_x86_32 %{ix86} %endif %if 0%{!?arch_x86_64:1} %if 0%{?rhel}%{?fedora} %define arch_x86_64 x86_64 amd64 ia32e %else %if 0%{?suse_version} %define arch_x86_64 amd64 %else %define arch_x86_64 x86_64 amd64 ia32e %endif %endif %endif %if 0%{!?arch_x86:1} %define arch_x86 %{arch_x86_32} %{arch_x86_64} %endif %if 0%{!?arch_ppc_32:1} %define arch_ppc_32 ppc %endif %if 0%{!?arch_ppc_64:1} %define arch_ppc_64 ppc64 ppc64le %endif %if 0%{!?arch_ppc:1} %define arch_ppc %{arch_ppc_32} %{arch_ppc_64} %endif # QuickBMS has been tested only on 32-bit systems # and gives problems using 64-bit native code # dep_postfix macro # is used to append "(x86-32)" to dependencies for x86_64 on EL/Fedora # and append "-32bit" to dependencies for x86_64 on SLE/openSUSE %define dep_postfix %{nil} %ifarch %{arch_x86_64} %if 0%{?rhel}%{?fedora} %define dep_postfix (x86-32) %else %if 0%{?suse_version} %define dep_postfix -32bit %endif %endif %endif # Define supported arches %if 0%{!?quickbms_arches:1} # Disable ppc64le # http://wklej.org/hash/3090c0f359f/txt/ # http://wklej.org/hash/33b038ff0ba/txt/ # /usr/include/gnu/stubs.h:8:27: fatal error: gnu/stubs-32.h: No such file or directory # # include %define quickbms_arches %{arch_x86} %endif %define srcdir32 src %define srcdir64 src64 %define srcdirs %{srcdir32} %if 0%{?build_quickbms64} %define srcdirs %{srcdir32} %{srcdir64} %endif %define quickbms32 quickbms %define quickbms64 quickbms_4gb_files %define license_file gpl-2.0.txt Name: quickbms Version: 0.9.0 Release: 1%{?dist} Summary: Flexible datafile extractor License: GPLv2 Group: Development/Tools URL: http://aluigi.altervista.org/papers/quickbms.htm #Source: http://aluigi.altervista.org/papers/%{name}_src_%{version}.zip Source: http://aluigi.altervista.org/papers/%{name}_src.zip Source1: http://aluigi.altervista.org/papers/quickbms.txt %if 0%{?exclusive_arch} ExclusiveArch: %{quickbms_arches} %endif BuildRequires: gcc-c++ BuildRequires: unzip BuildRequires: bzip2 BuildRequires: sed BuildRequires: dos2unix BuildRequires: libstdc++%{dep_postfix} BuildRequires: libstdc++-devel%{dep_postfix} %if 0%{?fedora} >= 14 || 0%{?rhel} >= 7 BuildRequires: libstdc++-static%{dep_postfix} %endif BuildRequires: glibc-devel%{dep_postfix} BuildRequires: bzip2-devel%{dep_postfix} BuildRequires: lzo-devel%{dep_postfix} BuildRequires: openssl-devel%{dep_postfix} BuildRequires: zlib-devel%{dep_postfix} BuildRequires: xz-devel%{dep_postfix} Requires: libstdc++%{dep_postfix} Requires: glibc%{dep_postfix} Requires: openssl-libs%{dep_postfix} Requires: zlib%{dep_postfix} Requires: bzip2-libs%{dep_postfix} Requires: lzo%{dep_postfix} Requires: libgcc%{dep_postfix} Requires: krb5-libs%{dep_postfix} Requires: libcom_err%{dep_postfix} Requires: keyutils-libs%{dep_postfix} Requires: libselinux%{dep_postfix} Requires: pcre%{dep_postfix} Requires: xz-libs%{dep_postfix} Requires: unzip Requires: gzip Requires: bzip2 Requires: xz Requires: openssl %if "%{quickbms32}" != "quickbms32" && "%{quickbms32}" != "quickbms" Provides: %{quickbms32} = %{?epoch:%{epoch}:}%{version}-%{release} %endif Provides: quickbms32 = %{?epoch:%{epoch}:}%{version}-%{release} %if 0%{?build_quickbms64} %if "%{quickbms64}" != "quickbms64" Provides: %{quickbms64} = %{?epoch:%{epoch}:}%{version}-%{release} %endif Provides: quickbms64 = %{?epoch:%{epoch}:}%{version}-%{release} %endif %description QuickBMS is a flexible program that can extract data from various file formats, mostly used in various games. It's extensible through BMS data definition language. %prep %setup -q -c # copy additional docs into build tree so %%doc will find them %{__cp} %{srcdir32}/%{license_file} . %{__cp} %{SOURCE1} . dos2unix %{basename:%{SOURCE1}} pushd %{srcdir32} >/dev/null 2>&1 # change prefix from /usr/local to /usr sed -i -re 's|^(PREFIX[[:blank:]]*=[[:blank:]]*).*$|\1%{_prefix}|' "Makefile" %if 0%{?force_ssse3} %ifarch %{arch_x86} # add " -mssse3" to the CFLAGS sed -i -re '/^CFLAGS[[:blank:]+=]/ {s/$/ -mssse3/;:a;n;ba}' "Makefile" %endif %endif popd >/dev/null 2>&1 %if 0%{?build_quickbms64} %{__cp} -r %{srcdir32} %{srcdir64} pushd %{srcdir64} >/dev/null 2>&1 # change exe name from "quickbms" to "quickbms_4gb_files" sed -i -re 's|^(EXE[[:blank:]]*=[[:blank:]]*).*$|\1%{quickbms64}|' "Makefile" # add -DQUICKBMS64 to CDEFS for compiling quickbms_4gb_files sed -i -re '/^CDEFS[[:blank:]+=]/ {s/$/ -DQUICKBMS64/;:a;n;ba}' "Makefile" %{__mv} %{quickbms32}.c %{quickbms64}.c popd >/dev/null 2>&1 %endif %build for dir in %{srcdirs}; do pushd "${dir}" >/dev/null 2>&1 make %{?_smp_mflags} popd >/dev/null 2>&1 done %install for dir in %{srcdirs}; do pushd "${dir}" >/dev/null 2>&1 make PREFIX="%{buildroot}%{_exec_prefix}" install popd >/dev/null 2>&1 done # create symbolic links %if "%{quickbms32}" != "quickbms32" %{__ln_s} %{quickbms32} %{buildroot}%{_bindir}/quickbms32 %endif %if 0%{?build_quickbms64} %if "%{quickbms64}" != "quickbms64" %{__ln_s} %{quickbms64} %{buildroot}%{_bindir}/quickbms64 %endif %endif %files %defattr(-,root,root) %if 0%{?doc_license} %license %{license_file} %endif %doc %{license_file} %doc %{basename:%{SOURCE1}} %if "%{quickbms32}" != "quickbms32" %{_bindir}/%{quickbms32} %endif %{_bindir}/quickbms32 %if 0%{?build_quickbms64} %if "%{quickbms64}" != "quickbms64" %{_bindir}/%{quickbms64} %endif %{_bindir}/quickbms64 %endif %changelog * Wed Jun 27 2018 Tomasz Tomasik - 0.9.0-1 - Update to 0.9.0 * Sun Oct 22 2017 Tomasz Tomasik - 0.8.1-3 - Provide quickbms_4gb_files. * Sun Oct 22 2017 Tomasz Tomasik - 0.8.1-2 - Add documentacion. * Sun Oct 22 2017 Tomasz Tomasik - 0.8.1-1 - Update to version 0.8.1. * Tue Oct 18 2016 Tomasz Tomasik - 0.7.6a-20161018 - Update to version 0.7.6a. * Mon May 16 2016 Tomasz Tomasik - 0.6.7a-20160516 - Initial EL7 RPM packaging.