# Автор: ООО "НАЙС СОФТ ГРУПП" 5024245440 <niceos@ncsgp.ru>

# System settings
#%_topdir/usr/src/gostos
%_use_internal_dependency_generator 1


%_host %{_arch}-niceos-linux-gnu
%_host_alias %{_arch}-niceos-linux-gnu%{nil}
%_host_cpu %{_arch}
%_metainfodir /usr/share/metainfo

# Some standard locations
%_sysconfdir /etc
%_lib /usr/lib
%_lib32 /usr/lib32
%_lib64 /usr/lib
%_prefix /usr
%_exec_prefix /usr
%_bindir /usr/bin
%_sbindir /usr/sbin
%_libdir /usr/lib
%_lib64dir /usr/lib
%_libexecdir /usr/libexec
%_datadir /usr/share
%_docdir /usr/share/doc
%_includedir /usr/include
%_infodir /usr/share/info
%_mandir /usr/share/man
%_oldincludedir /usr/include
%_sharedstatedir /var/lib
%_var /var
%_localstatedir /var
%_pkgdocdir %{_datadir}/doc/%{name}-%{version}

%__tar /bin/tar --no-same-owner

%_enable_debug_packages 0
%_include_minidebuginfo 0

# Дополнительные настройки
# Подпись пакетов
#%_gpg_name GOST RPM Signer
#%_gpg_path /path/to/gpg/home  # Укажите реальный путь к GPG home
#%_gpg_digest_algo sha256 # Алгоритм подписи (можно заменить на gost2012_256)
#%_signature "ООО \"НАЙС СОФТ ГРУПП\" <niceos@ncsgp.ru>"

# Сжатие пакетов с zstd
%_binary_payload w19.zstdio
%_source_payload w19.zstdio

# Мультиархитектура
%_lib32dir /usr/lib32
%_lib64dir /usr/lib64

# Временные файлы
%_tmppath /tmp

# Параллельная сборка
%_smp_mflags -j16

# Лицензии и документация
%_licensedir /usr/share/licenses

# Формат имени RPM-файла
#%_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm

# Хост сборки
%_buildhost NiceOS

# Алгоритмы хеширования
#%_source_filedigest_algorithm sha256
#%_binary_filedigest_algorithm sha256

# Совместимость
%_vendor NiceSOFT
%_os niceos-linux-gnu

# Дополнительные пути
%_localedir /usr/share/locale
%_unitdir /usr/lib/systemd/system

# Контроль зависимостей
%_requires_autoprov 1
%_requires_autoreq 1

# Логирование
%_logdir /var/log/rpm

# Метаданные пакетов
%packager "ООО \"НАЙС СОФТ ГРУПП\" 5024245440 <niceos@ncsgp.ru>"
%distribution GOST.OS
%_url "https://niceos.ru"
%_license "Proprietary"
%_group "System/Software"

%with_32bit 0

%configure64 \
%{set_build_flags}; \
../configure --host=%{_host} --build=%{_build} \\\
--program-prefix=%{?_program_prefix} \\\
--disable-dependency-tracking \\\
--prefix=%{_prefix} \\\
--exec-prefix=%{_exec_prefix} \\\
--bindir=%{_bindir} \\\
--sbindir=%{_sbindir} \\\
--sysconfdir=%{_sysconfdir} \\\
--datadir=%{_datadir} \\\
--includedir=%{_includedir} \\\
--libdir=%{_libdir} \\\
--libexecdir=%{_libexecdir} \\\
--localstatedir=%{_localstatedir} \\\
--sharedstatedir=%{_sharedstatedir} \\\
--mandir=%{_mandir} \\\
--infodir=%{_infodir}

%configure32 \
export CC="gcc -m32"; \
export CXX="g++ -m32"; \
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"; \
../configure --host=i686-pc-linux-gnu --build=%{_build} \\\
--prefix=%{_prefix} \\\
--libdir=%{_lib32} \\\
--libexecdir=%{_lib32} \\\
%{nil} 


%make32_install \
pushd build32 \
make DESTDIR=$PWD/LIB32DIR install INSTALL="/usr/bin/install -p" \
mkdir -pv %{buildroot}/usr/lib32 \
ls -lah LIB32DIR/usr/lib32/ \
sleep 1 \
cp -Rv LIB32DIR/usr/lib32/* %{buildroot}/usr/lib32 \
rm -rf LIB32DIR \
find %{buildroot}/usr/lib32 -type f -name "*.so.*" -print -exec chmod -v 755 {} + \
sleep 3 \
for lib in $(find %{buildroot}/usr/lib32 -type f -name "*.so.*"); do \
if file "$lib" | grep -q "ELF 64-bit"; then \
echo "ERROR: !!!Found a 64-bit library in /usr/lib32: $lib" >&2 \
file "$lib" >&2 \
exit 1; \
fi; \
done \
find %{buildroot}/usr/lib32 -name '*.la' -delete \
popd

%make64_install \
pushd build64 \
/usr/bin/make install DESTDIR=%{buildroot} INSTALL="/usr/bin/install -p" \
find %{buildroot}/usr/lib -type f -name "*.so.*" -print -exec chmod -v 755 {} + \
for lib in $(find %{buildroot}/usr/lib -type f -name "*.so.*"); do \
if file "$lib" | grep -q "ELF 32-bit"; then \
echo "ERROR: !!!!Found a 32-bit library in /usr/lib: $lib" >&2 \
file "$lib" >&2 \
exit 1; \
fi; \
done \
find %{buildroot}/usr/lib -name '*.la' -delete \
rm -fv %{buildroot}/usr/share/info/dir \
popd 


%meson32 \
PKG_CONFIG_PATH=/usr/lib32/pkgconfig \
%{shrink:meson setup .. \
--cross-file lib32 \
--buildtype=release \
--prefix=%{_prefix} \
--libdir=%{_lib32} \
--libexecdir=%{_lib32}/%{name} \
--bindir=%{_bindir} \
--sbindir=%{_sbindir} \
--includedir=%{_includedir} \
--datadir=%{_datadir} \
--mandir=%{_mandir} \
--infodir=%{_infodir} \
--localedir=%{_datadir}/locale \
--sysconfdir=%{_sysconfdir} \
--localstatedir=%{_localstatedir} \
--sharedstatedir=%{_sharedstatedir} \
--auto-features=auto \
%{nil}}

%cmake32 \
CC="gcc -m32" CXX="g++ -m32"           \
PKG_CONFIG_PATH="/usr/lib32/pkgconfig" \
cmake -S "." \\\
-B "NiceSOFT-linux-build32" \\\
-DCMAKE_C_FLAGS="-m32" \\\
-DCMAKE_CXX_FLAGS="-m32" \\\
-DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
-DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
-DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \\\
-DCMAKE_INSTALL_DO_STRIP:BOOL=OFF \\\
-DCMAKE_INSTALL_PREFIX:PATH=/usr \\\
-DINCLUDE_INSTALL_DIR:PATH=/usr/include \\\
-DLIB_INSTALL_DIR:PATH=/usr/lib32 \\\
-DCMAKE_INSTALL_LIBDIR=/usr/lib32 \\\
-DSYSCONF_INSTALL_DIR:PATH=/etc \\\
-DSHARE_INSTALL_PREFIX:PATH=/usr/share \\\
-DCMAKE_BUILD_TYPE=Release \\\
-DBUILD_SHARED_LIBS:BOOL=ON

%cmake32_build \
cmake --build "NiceSOFT-linux-build32" -j16 --verbose

%cmake32_install \
pushd NiceSOFT-linux-build32 \
mkdir -pv %{buildroot}/usr/lib32 \
make DESTDIR=$PWD/DESTDIR install \
cp -vr DESTDIR/usr/lib32/*  %{buildroot}/usr/lib32 \
rm -rf DESTDIR \
find %{buildroot}/usr/lib32 -type f -name "*.so.*" -print -exec chmod -v 755 {} + \
sleep 3 \
for lib in $(find %{buildroot}/usr/lib32 -type f -name "*.so.*"); do \
if file "$lib" | grep -q "ELF 64-bit"; then \
echo "ERROR: !!!Found a 64-bit library in /usr/lib32: $lib" >&2 \
file "$lib" >&2 \
exit 1; \
fi; \
done \
find %{buildroot}/usr/lib32 -name '*.la' -delete \
popd \
%{nil}

%package_32bit\
%package -n lib32-%{name}\
Summary: 32-битные библиотеки для %{name}\
Group: System Environment/Libraries32\
%description -n lib32-%{name}\
Этот пакет содержит 32-битные библиотеки для %{name}, необходимые для запуска 32-битных приложений в системе GOST.OS

%files_32bit \
\
%post -n lib32-%{name} \
/sbin/ldconfig \
\
%postun -n lib32-%{name} \
/sbin/ldconfig \
\
%files -n lib32-%{name} \
/usr/lib32/*