%undefine _annotated_build Name: shyft Version: 32.1.0 Release: 1%{?dist} Summary: High-performance C++/Python Hydrology and Time-Series framework License: LGPLv3 URL: https://gitlab.com/ammarshadiq/shyft-arm-64 Source0: %{name}-%{version}.tar.gz # --- Build Dependencies (Fedora) --- BuildRequires: armadillo-devel BuildRequires: boost-devel BuildRequires: bzip2-devel BuildRequires: cmake BuildRequires: dlib BuildRequires: dlib-devel BuildRequires: doctest-devel BuildRequires: ffmpeg-free-devel BuildRequires: fmt-devel BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: gflags-devel BuildRequires: git BuildRequires: google-benchmark-devel BuildRequires: gpm-devel BuildRequires: hdf5-devel BuildRequires: libjxl-devel BuildRequires: libmpc-devel BuildRequires: libzstd-devel BuildRequires: lz4-devel BuildRequires: lapack-devel BuildRequires: libgeotiff-devel BuildRequires: lz4-devel BuildRequires: make BuildRequires: minizip-devel BuildRequires: mpfr-devel BuildRequires: netcdf-devel BuildRequires: ninja-build BuildRequires: nlohmann-json-devel BuildRequires: openblas-devel BuildRequires: openssl-devel BuildRequires: proj-devel BuildRequires: pybind11-devel BuildRequires: python3 BuildRequires: python3-devel BuildRequires: python3-numpy BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtcharts-devel BuildRequires: rocksdb-devel BuildRequires: shapelib-devel BuildRequires: snappy-devel BuildRequires: sqlite-devel BuildRequires: zlib-devel # --- Runtime Dependencies --- Requires: python3 Requires: python3-numpy Requires: rocksdb Requires: openblas %description Shyft is an open-source software for distributed hydrological modeling and operational energy market production planning. %package devel Summary: Development headers for Shyft Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development headers and libraries for building C++ applications against Shyft. # --- PREP SECTION (Unpack) --- %prep %setup -q # Forcefully remove quadmath from all CMakeLists.txt files find . \( -name "CMakeLists.txt" -o -name "*.cmake" \) -print0 | xargs -0 sed -i 's/quadmath//g' # --- BUILD SECTION --- %build # Use system compilers to avoid /usr/local/gcc issues export CC=/usr/bin/gcc export CXX=/usr/bin/g++ # Export flags export CXXFLAGS="%{optflags} -Wno-psabi -O3 -mcpu=native -DFMT_HEADER_ONLY" # Note: We removed -DCMAKE_CXX_FLAGS="..." from below to prevent syntax errors %cmake -G Ninja \ -DSHYFT_WITH_STM=OFF \ -DSHYFT_WITH_PYTHON=ON \ -DSHYFT_WITH_BENCHMARKS=ON \ -DSHYFT_WITH_SHOP=OFF \ -DSHYFT_WITH_SHOP_REGEN=OFF \ -DSHYFT_WITH_VERSION_FORGE=OFF \ -DSHYFT_WITH_CPACK=ON %cmake_build # --- INSTALL SECTION --- %install %cmake_install # --- FIX ARCHITECTURE PATHS (Manual Patch) --- # CMake installed to /usr/lib, but Fedora ARM64 needs /usr/lib64. # We move the files manually to avoid re-compiling. if [ -d "%{buildroot}/usr/lib" ]; then echo "DETECTED WRONG INSTALL PATH: Moving content from /usr/lib to /usr/lib64..." # Ensure destination exists mkdir -p "%{buildroot}/usr/lib64" # Merge contents (cp -a preserves links and permissions) cp -a %{buildroot}/usr/lib/* %{buildroot}/usr/lib64/ # Remove the incorrect directory rm -rf "%{buildroot}/usr/lib" fi # --- FILES SECTION What goes into the RPM --- %files # The Main Package (Python libs + Shared Objects) %doc README.md %license LICENSE # Python files (Fedora automatically finds the site-packages path) %{python3_sitearch}/shyft/ # Shared Libraries %{_libdir}/libshyft*.so* %files devel # Headers and CMake configs %{_includedir}/shyft-*/ %{_libdir}/cmake/shyft-*/ %changelog * Mon Dec 29 2025 Your Name - 32.1.0-1 - Initial packaging for ARM64 with STM disabled