Name: capstone Version: 5.0.1 Release: 6%{?dist} Summary: A lightweight multi-platform, multi-architecture disassembly framework License: BSD-3-Clause AND BSD-4-Clause AND APSL-2.0 AND NCSA AND MIT URL: http://www.capstone-engine.org/ VCS: https://github.com/capstone-engine/capstone/ # https://github.com/capstone-engine/capstone/releases %global common_desc %{expand: Capstone is a disassembly framework with the target of becoming the ultimate disasm engine for binary analysis and reversing in the security community.} %define _lto_cflags %{nil} #%%global _hardened_build 1 %global gituser capstone-engine %global gitname capstone # 5.0.1 release %global gitdate 20230823 %global commit 097c04d9413c59a58b00d4d1c8d5dc0ac158ffaa %global shortcommit %(c=%{commit}; echo ${c:0:7}) # Source0: https://github.com/%%{gituser}/%%{gitname}/archive/%%{commit}/%%{name}-%%{version}-%%{shortcommit}.tar.gz Source0: https://github.com/%{gituser}/%{gitname}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz # Manpage for cstool is missing in the package, add one generated by help2man Source1: cstool.1 # modified to remove the GH CI modifications from this patch # Patch: https://patch-diff.githubusercontent.com/raw/capstone-engine/capstone/pull/2099.patch # Patch0: https://github.com/capstone-engine/capstone/pull/2099.patch#/capstone-5.0.1-cibuildwheel.patch Patch0: capstone-5.0.1-platform.patch # Ocaml binding is not using local path for the includes/links Patch1: capstone-5.0.1-ocaml.patch # Build with python3 package by default %bcond_without python3 # Build without python2 package for newer releases f32+ and rhel8+ %if (0%{?fedora} && 0%{?fedora} >= 32 ) || ( 0%{?rhel} && 0%{?rhel} >= 8 ) %bcond_with python2 %else %bcond_without python2 %endif # Build with java binding %bcond_without java # Build without ocaml binding - it is not ready to be distributed as ocaml shared library %bcond_with ocaml %global srcname distribute BuildRequires: gcc BuildRequires: make BuildRequires: git %if %{with java} %ifarch %{java_arches} BuildRequires: jna BuildRequires: java-devel %endif %endif %if %{with python2} BuildRequires: python2 BuildRequires: python2-devel BuildRequires: python2-pip BuildRequires: python2-setuptools %endif %if %{with python3} BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-pip BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-wheel BuildRequires: python%{python3_pkgversion}-pytest %endif %if %{with ocaml} BuildRequires: ocaml BuildRequires: ocaml-ocamlbuild %endif %description %{common_desc} %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel %{common_desc} The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %package static Summary: Static linking of %{name} library %description static %{common_desc} The %{name}-static package contains files needed for static linking of %{name} library into static binaries. %if %{with python2} %package -n python2-capstone BuildArch: noarch %{?python_provide:%python_provide python2-capstone} # Remove before F30 # loading the libcapstone dynamically using ctypes, not tied to certain architecture Provides: %{name}-python = %{version}-%{release} Obsoletes: %{name}-python < %{version}-%{release} Summary: Python bindings for %{name} Requires: %{name} = %{version}-%{release} %description -n python2-capstone %{common_desc} The python2-capstone package contains python bindings for %{name}. # with_python2 %endif %if %{with python3} %package -n python%{python3_pkgversion}-capstone BuildArch: noarch %{?python_provide:%python_provide python%{python3_pkgversion}-capstone} Provides: %{name}-python%{python3_pkgversion} = %{version}-%{release} Obsoletes: %{name}-python%{python3_pkgversion} < %{version}-%{release} Requires: %{name} = %{version}-%{release} Summary: Python3 bindings for %{name} %description -n python%{python3_pkgversion}-capstone %{common_desc} The python%{python3_pkgversion}-capstone package contains python3 bindings for %{name}. #with python3 %endif %if %{with java} %ifarch %{java_arches} %package java Summary: Java bindings for %{name} Requires: %{name} = %{version}-%{release} BuildArch: noarch %description java %{common_desc} The %{name}-java package contains java bindings for %{name}. %endif %endif %if %{with ocaml} %package -n ocaml-%{name} Summary: OCaml bindings for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description -n ocaml-%{name} %{common_desc} The ocaml-%{name} package contains OCaml bindings for %{name}. %endif %prep # autosetup -n %%{gitname}-%%{commit} -S git %autosetup -n %{gitname}-%{version} -p1 %if %{with python3} pushd bindings/python %pyproject_buildrequires popd %endif %build V=1 CFLAGS="%{optflags}" \ PREFIX="%{_prefix}" LIBDIRARCH="%{_lib}" INCDIR="%{_includedir}" \ %make_build PYTHON2=%{__python2} PYTHON3=%{__python3} # Fix pkgconfig file grep -v archive capstone.pc > capstone.pc.tmp mv capstone.pc.tmp capstone.pc # build python bindings pushd bindings/python %if %{with python2} %py2_build %endif %if %{with python3} # %%pyproject_wheel %py3_build %endif popd %if %{with java} %ifarch %{java_arches} # build java bindings needs some python runtime pushd bindings/java %if %{with python3} %make_build PYTHON2=%{__python3} PYTHON3=%{__python3} CFLAGS="%{optflags}" # %{?_smp_mflags} parallel seems broken %else %make_build PYTHON2=%{__python2} PYTHON3=%{__python2} CFLAGS="%{optflags}" # %{?_smp_mflags} parallel seems broken %endif popd %endif %endif %if %{with ocaml} pushd bindings/ocaml # build ocaml bindings needs some python runtime %if %{with python3} %make_build PYTHON2=%{__python3} PYTHON3=%{__python3} CFLAGS="%{optflags}" -j1 # %{?_smp_mflags} parallel seems broken %else %make_build PYTHON2=%{__python2} PYTHON3=%{__python2} CFLAGS="%{optflags}" -j1 # %{?_smp_mflags} parallel seems broken %endif popd %endif %install DESTDIR=%{buildroot} PREFIX="%{_prefix}" LIBDIRARCH=%{_lib} \ INCDIR="%{_includedir}" make install # cleanup static libraries find %{buildroot} -name '*.la' -exec rm -f {} ';' # find %%{buildroot} -name '*.a' -exec rm -f {} ';' # add the manpage install -d -D %{buildroot}%{_mandir}/man1 install -p -m 644 -D %{SOURCE1} %{buildroot}%{_mandir}/man1/ # install python bindings pushd bindings/python %if %{with python2} %py2_install # cleanup the install rm -rf %{buildroot}%{python2_sitelib}/capstone/lib/libcapstone.a rm -rf %{buildroot}%{python2_sitelib}/capstone/lib/libcapstone.so rm -rf %{buildroot}%{python2_sitelib}/capstone/include/capstone %endif %if %{with python3} %py3_install # %%pyproject_install # %%pyproject_save_files capstone # cleanup the install rm -rf %{buildroot}%{python3_sitelib}/capstone/lib/libcapstone.a rm -rf %{buildroot}%{python3_sitelib}/capstone/lib/libcapstone.so rm -rf %{buildroot}%{python3_sitelib}/capstone/include/capstone %endif popd %if %{with java} %ifarch %{java_arches} # install java bindings install -D -p -m 0644 bindings/java/%{name}.jar %{buildroot}/%{_javadir}/%{name}.jar %endif %endif %if %{with ocaml} # install ocaml binding %endif %check # ln -s libcapstone.so.5 libcapstone.so make check LD_LIBRARY_PATH="`pwd`" %if %{with python3} pushd bindings/python %pytest -sv -k "not testcb and not test_cs_disasm_quick" popd %endif %if %{with ocaml} pushd bindings/ocaml make check LD_LIBRARY_PATH="`pwd`" popd %endif %ldconfig_scriptlets %files %license LICENSE.TXT LICENSE_LLVM.TXT %doc CREDITS.TXT ChangeLog README.md SPONSORS.TXT %{_libdir}/*.so.* %{_bindir}/cstool %{_mandir}/man1/cstool.1* %files devel %{_includedir}/* %{_libdir}/*.so %{_libdir}/pkgconfig/* %files static %license LICENSE.TXT LICENSE_LLVM.TXT %{_libdir}/libcapstone.a %if %{with python2} %files -n python2-capstone %{python2_sitelib}/*egg-info %{python2_sitelib}/%{name} %endif %if %{with python3} #%%files -n python%%{python3_pkgversion}-capstone -f %%{pyproject_files} %files -n python%{python3_pkgversion}-capstone %{python3_sitelib}/capstone* %endif %if %{with java} %ifarch %{java_arches} %files java %{_javadir}/ %endif %endif %if %{with ocaml} %files -n ocaml-%{name} %endif %changelog * Wed Jul 31 2024 Michal Ambroz - 5.0.1-6 - add static subpackage for static building with capstone * Wed Jul 17 2024 Fedora Release Engineering - 5.0.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Fri Jun 07 2024 Python Maint - 5.0.1-4 - Rebuilt for Python 3.13 * Tue Jan 23 2024 Fedora Release Engineering - 5.0.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Fri Jan 19 2024 Fedora Release Engineering - 5.0.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Fri Sep 15 2023 Jonathan Wright - 5.0.1-1 - Update to 5.0.1 * Wed Jul 19 2023 Jonathan Wright - 5.0-1 - Modernize spec file using pyproject/wheel build * Wed Jul 19 2023 Fedora Release Engineering - 4.0.2-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Tue Jun 13 2023 Python Maint - 4.0.2-14 - Rebuilt for Python 3.12 * Fri Jan 27 2023 Michal Ambroz - 4.0.2-13 - update the new github page * Wed Jan 18 2023 Fedora Release Engineering - 4.0.2-12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Wed Jul 20 2022 Fedora Release Engineering - 4.0.2-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - drop java binding for platforms not in %%{java_arches} * Mon Jun 13 2022 Python Maint - 4.0.2-10 - Rebuilt for Python 3.11 * Sat Feb 05 2022 Jiri Vanek - 4.0.2-9 - Rebuilt for java-17-openjdk as system jdk * Wed Jan 19 2022 Fedora Release Engineering - 4.0.2-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Wed Jul 21 2021 Fedora Release Engineering - 4.0.2-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Fri Jun 04 2021 Python Maint - 4.0.2-6 - Rebuilt for Python 3.10 * Fri May 14 2021 Michal Ambroz - 4.0.2-5 - modernize specfile, using with bcond and py*_build macros * Tue Jan 26 2021 Fedora Release Engineering - 4.0.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Mon Jul 27 2020 Fedora Release Engineering - 4.0.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Wed Jul 22 2020 Riccardo Schirone - 4.0.2-2 - Use make_build macro instead of make (thanks to tstellar) * Mon Jul 20 2020 Riccardo Schirone - 4.0.2-1 - Rebase to upstream version 4.0.2 * Fri Jul 10 2020 Jiri Vanek - 4.0.1-13 - Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 * Tue May 26 2020 Miro Hrončok - 4.0.1-12 - Rebuilt for Python 3.9 * Tue Jan 28 2020 Fedora Release Engineering - 4.0.1-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Tue Jan 21 2020 Kalev Lember - 4.0.1-10 - Avoid hardcoding /usr prefix * Tue Oct 15 2019 Michal Ambroz - 4.0.1-9 - do not build python2 package for rhel8 * Thu Oct 10 2019 Michal Ambroz - 4.0.1-8 - fix descriptions of sub-packages - remove buildroot from the build phase * Thu Oct 10 2019 Michal Ambroz - 4.0.1-7 - remove python2 from rawhide/fc32 package * Thu Oct 03 2019 Miro Hrončok - 4.0.1-6 - Rebuilt for Python 3.8.0rc1 (#1748018) * Mon Aug 19 2019 Miro Hrončok - 4.0.1-5 - Rebuilt for Python 3.8 * Wed Jul 24 2019 Fedora Release Engineering - 4.0.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Thu Jan 31 2019 Fedora Release Engineering - 4.0.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Sat Jan 12 2019 Richard W.M. Jones - 4.0.1-2 - Add upstream patch which fixes libcapstone.pc https://github.com/aquynh/capstone/issues/1339 * Fri Jan 11 2019 Michal Ambroz - 4.0.1-1 - bump to 4.0.1 release * Mon Aug 27 2018 Michal Ambroz - 3.0.5-1 - bump to 3.0.5 * Thu Jul 12 2018 Fedora Release Engineering - 3.0.4-18 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Mon Jul 02 2018 Miro Hrončok - 3.0.4-17 - Rebuilt for Python 3.7 * Tue Jun 26 2018 Michal Ambroz - 3.0.4-16 - unify the naming convention for the python packages - fix the python3 package naming for EPEL7 * Tue Jun 19 2018 Miro Hrončok - 3.0.4-15 - Rebuilt for Python 3.7 * Fri Feb 09 2018 Igor Gnatenko - 3.0.4-14 - Escape macros in %%changelog * Wed Feb 07 2018 Fedora Release Engineering - 3.0.4-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild * Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.4-12 - Add Provides for the old name without %%_isa * Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 3.0.4-11 - Python 2 binary package renamed to python2-capstone See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 * Wed Aug 02 2017 Fedora Release Engineering - 3.0.4-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild * Wed Jul 26 2017 Fedora Release Engineering - 3.0.4-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Fri Feb 10 2017 Fedora Release Engineering - 3.0.4-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Mon Dec 19 2016 Miro Hrončok - 3.0.4-7 - Rebuild for Python 3.6 * Tue Jul 19 2016 Fedora Release Engineering - 3.0.4-6 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages * Wed Feb 03 2016 Fedora Release Engineering - 3.0.4-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Tue Oct 27 2015 Stefan Cornelius - 3.0.4-4 - Really add dist tag this time * Sun Oct 25 2015 Stefan Cornelius - 3.0.4-3 - Fix issues found during package review: dist tag, git sources * Thu Jul 16 2015 Stefan Cornelius - 3.0.4-2 - Fix EPEL6 build problems * Wed Jul 15 2015 Stefan Cornelius - 3.0.4-1 - new version 3.0.4. Includes security fixes. * Tue May 12 2015 Stefan Cornelius - 3.0.3-2 - Addressed issues found during package review. * Fri May 08 2015 Stefan Cornelius - 3.0.3-1 - Update to version 3.0.3 * Fri May 08 2015 Stefan Cornelius - 3.0.2-3 - Added python3 and hardened build support. Update java building. - Various cleanups. * Wed May 06 2015 Stefan Cornelius - 3.0.2-2 - Update to 3.0.2. Fix 64bit issues. add %%check. * Sat Sep 27 2014 Adel Gadllah - 2.1.2-2 - Addressed issues found during package review. * Mon May 19 2014 Adel Gadllah - 2.1.2-1 - Initial package