# ftbfs without this, dev is aware https://github.com/WerWolv/ImHex/issues/610 %global _lto_cflags %{nil} Name: imhex Version: 1.20.0 Release: 3%{?dist} Summary: A hex editor for reverse engineers and programmers License: GPL-2.0-only AND Zlib AND MIT AND Apache-2.0 # imhex is gplv2. capstone is custom. nativefiledialog is Zlib # see license dir for full breakdown URL: https://imhex.werwolv.net/ # We need the archive with deps bundled Source0: https://github.com/WerWolv/%{name}/releases/download/v%{version}/Full.Sources.tar.gz#/%{name}-%{version}.tar.gz Source1: imhex.metainfo.xml BuildRequires: cmake BuildRequires: desktop-file-utils BuildRequires: dbus-devel BuildRequires: file-devel BuildRequires: freetype-devel BuildRequires: fmt-devel BuildRequires: gcc-c++ BuildRequires: libappstream-glib BuildRequires: libglvnd-devel BuildRequires: glfw-devel BuildRequires: json-devel BuildRequires: libcurl-devel BuildRequires: llvm-devel BuildRequires: mbedtls-devel BuildRequires: python3-devel %if 0%{?fedora} >= 36 BuildRequires: yara-devel %endif Provides: bundled(gnulib) Provides: bundled(capstone) = 5.0-rc2 Provides: bundled(imgui) Provides: bundled(libromfs) Provides: bundled(microtar) Provides: bundled(nativefiledialog) Provides: bundled(libpl) # ftbfs on these arches. armv7hl might compile when capstone 5.x # is released upstream and we can build against it # [7:02 PM] WerWolv: We're not supporting 32 bit anyways soooo # [11:38 AM] WerWolv: Officially supported are x86_64 and aarch64 ExclusiveArch: x86_64 %{arm64} %description ImHex is a Hex Editor, a tool to display, decode and analyze binary data to reverse engineer their format, extract informations or patch values in them. What makes ImHex special is that it has many advanced features that can often only be found in paid applications. Such features are a completely custom binary template and pattern language to decode and highlight structures in the data, a graphical node-based data processor to pre-process values before they're displayed, a disassembler, diffing support, bookmarks and much much more. At the same time ImHex is completely free and open source under the GPLv2 language. %prep %autosetup -n ImHex # remove bundled libs we aren't using rm -rf lib/external/{curl,fmt,llvm,nlohmann_json,yara} %build %cmake \ -D CMAKE_BUILD_TYPE=Release \ -D IMHEX_STRIP_RELEASE=OFF \ -D IMHEX_OFFLINE_BUILD=ON \ -D USE_SYSTEM_NLOHMANN_JSON=ON \ -D USE_SYSTEM_FMT=ON \ -D USE_SYSTEM_CURL=ON \ -D USE_SYSTEM_LLVM=ON \ %if 0%{?fedora} >= 36 -D USE_SYSTEM_YARA=ON \ # if fedora <= 36 get updated to yara 4.2.x then they should \ # be able to build against system libs \ # https://bugzilla.redhat.com/show_bug.cgi?id=2112508 \ %endif # when capstone >= 5.x is released we should be able to build against \ # system libs of it \ # -D USE_SYSTEM_CAPSTONE=ON %cmake_build %check # build binaries required for tests %cmake_build --target unit_tests %ctest --exclude-regex '(Helpers/StoreAPI|Helpers/TipsAPI|Helpers/ContentAPI)' # Helpers/*API exclude tests that require network access %install %cmake_install desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop # so debuginfo will strip it properly. # https://github.com/WerWolv/ImHex/issues/655 chmod +x %{buildroot}/%{_libdir}/libimhex.so* # AppData mkdir -p %{buildroot}%{_metainfodir} cp -a %{SOURCE1} %{buildroot}%{_metainfodir}/%{name}.metainfo.xml appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.metainfo.xml # install licenses cp -a lib/libimhex-rs/imgui-rs/LICENSE-APACHE %{buildroot}%{_datadir}/licenses/%{name}/imgui-LICENSE-APACHE cp -a lib/libimhex-rs/imgui-rs/LICENSE-MIT %{buildroot}%{_datadir}/licenses/%{name}/imgui-LICENSE-MIT cp -a lib/external/nativefiledialog/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/nativefiledialog-LICENSE cp -a lib/external/capstone/LICENSE.TXT %{buildroot}%{_datadir}/licenses/%{name}/capstone-LICENSE cp -a lib/external/capstone/suite/regress/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/capstone-regress-LICENSE cp -a lib/external/microtar/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/microtar-LICENSE cp -a lib/external/pattern_language/external/intervaltree/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/pattern-language-intervaltree-LICENSE cp -a lib/external/xdgpp/LICENSE %{buildroot}%{_datadir}/licenses/%{name}/xdgpp-LICENSE %files %license %{_datadir}/licenses/%{name}/ %doc README.md %{_bindir}/imhex %{_datadir}/pixmaps/%{name}.png %{_datadir}/applications/%{name}.desktop %{_libdir}/libimhex.so* %{_libdir}/%{name}/ %{_metainfodir}/%{name}.metainfo.xml %changelog * Sat Aug 06 2022 Jonathan Wright - 1.20.0-3 - Add AppStream metainfo - Add provides for included libs - Misc spec cleanup * Fri Aug 05 2022 Jonathan Wright - 1.20.0-2 - Exclude s390x from builds (unsupported by upstream and ftbfs) * Fri Aug 05 2022 Jonathan Wright - 1.20.0-1 - Initial package build