%global commit f3d82adbfe04e57c596b93479d687f4b830ee26c %global commitdate 20260921 %global shortcommit %(c=%{commit}; echo ${c:0:9}) Name: satdump Version: 2.0.0 Release: 0.16.%{commitdate}git%{shortcommit}%{?dist} Summary: Generic satellite data processing software License: GPL-3.0-or-later URL: https://github.com/SatDump/SatDump Source0: https://github.com/SatDump/SatDump/archive/%{commit}.tar.gz # RESPATH/LIBPATH were constructed across TUs before RESOURCES_PATH was built; # GCC 16 libstdc++ dereferences the null dataptr at load and segfaults before # main on fc44/45/rawhide. Move their definitions next to RESOURCES_PATH. Patch0001: 0001-fix-static-init-order.patch # Kepler auto-update ran on scheduler/UI-worker threads and read the shared, # unsynchronized main_cfg nlohmann json. A concurrent insert elsewhere reallocates # the object's backing vector while the worker iterates keys -> memcmp on a freed # key -> SIGSEGV at startup. Snapshot the kepler config on a safe thread and hand # it to the worker; add a recursive_mutex to the config helpers. Patch0002: 0002-fix-kepler-config-race.patch # EventBus::fire_event(void*, name) passed &evt (a void**, the address of the # local pointer param) to handlers instead of evt (the object pointer). Handlers # cast raw back to T*, so empty event structs masked it; any non-empty scheduled # event (e.g. AutoUpdateKeplersEvent carrying a config snapshot) reinterpreted the # 8-byte pointer as the struct -> garbage vector size -> std::bad_alloc on fire. Patch0003: 0003-fix-eventbus-voidptr-overload.patch # GCC 16 on aarch64 segfaults (cc1plus ICE) compiling heavy nlohmann/json + # angelscript template TUs at any -O level; annobin/LTO are not the cause. # Build aarch64 with clang instead. %ifarch aarch64 %global toolchain clang BuildRequires: clang %global _lto_cflags %{nil} # Replace optflags to drop redhat-hardened-clang.cfg (forces _FORTIFY_SOURCE=3, # which breaks vendored libjpeg C under clang). Re-add -fPIE that the hardened # config would otherwise supply, else PIE link fails on __stack_chk_guard. %global optflags -O2 -g -pipe -Wall -Werror=format-security -fexceptions -fstack-protector-strong -fasynchronous-unwind-tables -fstack-clash-protection -fPIE %endif BuildRequires: cmake BuildRequires: ninja-build BuildRequires: gcc-c++ BuildRequires: git BuildRequires: pkgconfig BuildRequires: desktop-file-utils BuildRequires: volk-devel BuildRequires: fftw-devel BuildRequires: libpng-devel BuildRequires: libtiff-devel BuildRequires: libzstd-devel BuildRequires: jemalloc-devel BuildRequires: nng-devel BuildRequires: sqlite-devel BuildRequires: libcurl-devel BuildRequires: glfw-devel BuildRequires: armadillo-devel BuildRequires: libomp-devel BuildRequires: ocl-icd-devel BuildRequires: opencl-headers BuildRequires: libglvnd-devel BuildRequires: dbus-devel BuildRequires: portaudio-devel BuildRequires: hdf5-devel BuildRequires: rtl-sdr-devel BuildRequires: hackrf-devel BuildRequires: airspyone_host-devel BuildRequires: airspyhf-devel BuildRequires: uhd-devel BuildRequires: boost-devel BuildRequires: libiio-devel %global simd_flags -DPLUGIN_SIMD_SSE41=OFF -DPLUGIN_SIMD_AVX2=OFF -DPLUGIN_SIMD_NEON=OFF %ifarch x86_64 %global simd_flags -DPLUGIN_SIMD_SSE41=ON -DPLUGIN_SIMD_AVX2=ON -DPLUGIN_SIMD_NEON=OFF %endif %ifarch aarch64 %global simd_flags -DPLUGIN_SIMD_SSE41=OFF -DPLUGIN_SIMD_AVX2=OFF -DPLUGIN_SIMD_NEON=ON %endif %description SatDump is a generic satellite data processing program. It demodulates, decodes, and processes recorded or live satellite transmissions. %prep %autosetup -p1 -n SatDump-%{commit} %build # satdump's CMakeLists.txt appends -march=native to the compile flags unless the # CI env var is set. That bakes the *builder* CPU's ISA (e.g. AVX-512 %zmm ops) # into libsatdump_core, producing SIGILL at library load on older CPUs. Disable it. export CI=true %cmake \ -DBUILD_GUI=ON \ -DBUILD_OPENMP=ON \ -DBUILD_OPENCL=ON \ -DBUILD_TESTING=OFF \ -DBUILD_TOOLS=OFF \ -DPLUGIN_AARONIA_SDR_SUPPORT=OFF \ -DPLUGIN_AAUDIO_SINK=OFF \ -DPLUGIN_SDRPLAY_SDR_SUPPORT=OFF \ -DPLUGIN_MIRISDR_SDR_SUPPORT=OFF \ -DPLUGIN_RFNM_SDR_SUPPORT=OFF \ -DPLUGIN_SDDC_SDR_SUPPORT=OFF \ -DPLUGIN_SOAPY_SDR_SUPPORT=OFF \ -DPLUGIN_LIMESDR_SDR_SUPPORT=OFF \ -DPLUGIN_BLADERF_SDR_SUPPORT=OFF \ %{simd_flags} %cmake_build %install %cmake_install %check desktop-file-validate %{buildroot}%{_datadir}/applications/satdump.desktop %ldconfig_scriptlets %files %license LICENSE %doc README.md %{_bindir}/satdump %{_bindir}/satdump-ui %{_bindir}/satdump_sdr_server %{_libdir}/libsatdump*.so* %{_libdir}/satdump/ %{_datadir}/satdump/ %{_datadir}/applications/satdump.desktop %{_datadir}/icons/hicolor/ %{_includedir}/satdump/ %changelog * Sun Sep 28 2026 Jim Howard - 2.0.0-0.16.20260921gitf3d82adbf - Fix EventBus::fire_event(void*,name) passing &evt (void**) instead of evt; masked while scheduled events were empty, caused bad_alloc once the kepler update event carried a config payload * Sun Sep 27 2026 Jim Howard - 2.0.0-0.15.20260921gitf3d82adbf - Fix Kepler auto-update SIGSEGV: snapshot config on safe thread; worker no longer races unsynchronized main_cfg json * Sun Sep 27 2026 Jim Howard - 2.0.0-0.14.20260921gitf3d82adbf - Disable -march=native (export CI=true): builder's AVX-512 ISA caused SIGILL at load * Sun Sep 27 2026 Jim Howard - 2.0.0-0.13.20260921gitf3d82adbf - Fix static-init-order fiasco: satdump segfaulted at load on fc44/45/rawhide * Sun Sep 27 2026 Jim Howard - 2.0.0-0.12.20260921gitf3d82adbf - aarch64 clang: re-add -fPIE, disable LTO for PIE link * Sun Sep 27 2026 Jim Howard - 2.0.0-0.11.20260921gitf3d82adbf - aarch64 clang: replace optflags to drop hardened config (no fortify) * Sun Sep 27 2026 Jim Howard - 2.0.0-0.10.20260921gitf3d82adbf - aarch64 clang: -U_FORTIFY_SOURCE for vendored libjpeg * Sun Sep 27 2026 Jim Howard - 2.0.0-0.9.20260921gitf3d82adbf - aarch64: build with clang (toolchain) around GCC16 cc1plus ICE * Sun Sep 27 2026 Jim Howard - 2.0.0-0.8.20260921gitf3d82adbf - aarch64: build -O1 to avoid GCC16 cc1plus segfault on nlohmann/angelscript * Sun Sep 27 2026 Jim Howard - 2.0.0-0.7.20260921gitf3d82adbf - %undefine _annotated_build on aarch64 (0 does not disable the annobin macro) * Sun Sep 27 2026 Jim Howard - 2.0.0-0.6.20260921gitf3d82adbf - Disable annobin via _annotated_build (aarch64 GCC 16 ICE); drop bad -fno-annobin * Sun Sep 27 2026 Jim Howard - 2.0.0-0.5.20260921gitf3d82adbf - Disable LTO + annobin on aarch64 (GCC 16 ICE on angelscript/json TUs) * Sun Sep 27 2026 Jim Howard - 2.0.0-0.2.20260921gitf3d82adbf - Add sqlite-devel required by master src-core * Sun Sep 27 2026 Jim Howard - 2.0.0-0.3.20260921gitf3d82adbf - Add boost-devel (uhd usrp plugin headers) * Sun Sep 27 2026 Jim Howard - 2.0.0-0.4.20260921gitf3d82adbf - Package satdump_sdr_server and hicolor icons added on master * Sun Sep 27 2026 Jim Howard - 1.2.2-2 - Drop BladeRF and LimeSuite; those -devel packages are not in Fedora * Sun Sep 27 2026 Jim Howard - 1.2.2-1 - Initial Copr package of release 1.2.2