Нет сети внутри сборки. Это нормально. Используй _service, SourceN, vendor tarballs, download_files; не запускай curl, go get, npm install из сети в %build.

<services>
  <service name="download_files" mode="manual"/>
  <service name="verify_file" mode="manual">
    <param name="file">foo-%{version}.tar.gz</param>
    <param name="verifier">sha256</param>
    <param name="checksum">SHA256_HERE</param>
  </service>
</services>

GCC/binutils/kernel несовместимости: сначала убери -Werror, затем проверь upstream patches, затем добавь минимальный downstream patch. Для Leap 16.0 на SLFO/SLES 16 не предполагай те же версии toolchain, что в Tumbleweed.

Dependencies:

BuildRequires:  pkgconfig(libssl)
BuildRequires:  cmake(Qt6Core)
Requires:       libfoo1 >= %{version}

Предпочитай pkgconfig(...)/cmake(...), когда upstream действительно ищет dependency через pkg-config/CMake. Не добавляй runtime Requires вручную, если auto dependency generator уже даёт корректный ELF/library dependency.

Опасные macro overrides:

# Плохо без очень сильной причины:
%define __arch_install_post %{nil}
%define __spec_install_post %{nil}

Такие overrides отключают brp/post-processing и почти всегда маскируют проблему. Исправляй root cause: rpath, permissions, stripping, misplaced files.

Ownership и permissions:

%install
install -D -m 0755 build/foo %{buildroot}%{_bindir}/foo
install -D -m 0644 packaging/foo.conf %{buildroot}%{_sysconfdir}/foo.conf

%files
%config(noreplace) %{_sysconfdir}/foo.conf

Не запускай chown в %install; ownership задаётся в %files или создаётся через sysusers/tmpfiles.

Патчи:

quilt setup foo.spec
cd foo-*/
quilt push -a
quilt new foo-fix-gcc16.patch
quilt edit src/foo.c
quilt refresh

В spec:

Patch0:         foo-fix-gcc16.patch

%prep
%autosetup -p1

В .changes указывай patch names и bug/CVE:

- Add foo-fix-gcc16.patch: fix build with GCC 16 (boo#123456).

Где искать дополнительно