fix(release): use %{_sourcedir} in RPM spec instead of absolute paths

rpmbuild runs %install from its own working directory where
 is undefined. Copy artifacts into SOURCES and use
rpmbuild's %{_sourcedir} macro to locate them.
This commit is contained in:
mirivlad 2026-06-08 18:27:58 +08:00
parent 1dbb1f8c68
commit c1434a0b61
1 changed files with 11 additions and 3 deletions

View File

@ -144,6 +144,7 @@ build_rpm() {
mkdir -p "$buildroot/usr/local/bin" mkdir -p "$buildroot/usr/local/bin"
mkdir -p "$buildroot/usr/share/doc/$pkg_name" mkdir -p "$buildroot/usr/share/doc/$pkg_name"
# Copy binary and systemd unit into the buildroot
cp "$BUILD_DIR/$binary" "$buildroot/usr/local/bin/$pkg_name" cp "$BUILD_DIR/$binary" "$buildroot/usr/local/bin/$pkg_name"
chmod 755 "$buildroot/usr/local/bin/$pkg_name" chmod 755 "$buildroot/usr/local/bin/$pkg_name"
@ -154,6 +155,13 @@ build_rpm() {
[[ -f "README.md" ]] && cp "README.md" "$buildroot/usr/share/doc/$pkg_name/" [[ -f "README.md" ]] && cp "README.md" "$buildroot/usr/share/doc/$pkg_name/"
# Also copy into SOURCES so rpmbuild %install can find them
cp "$BUILD_DIR/$binary" "$rpm_dir/SOURCES/$pkg_name"
if [[ -n "$systemd_unit" && -f "$systemd_unit" ]]; then
cp "$systemd_unit" "$rpm_dir/SOURCES/$(basename "$systemd_unit")"
fi
[[ -f "README.md" ]] && cp "README.md" "$rpm_dir/SOURCES/README.md"
# File list # File list
local file_list local file_list
file_list="%attr(755, root, root) /usr/local/bin/$pkg_name" file_list="%attr(755, root, root) /usr/local/bin/$pkg_name"
@ -183,20 +191,20 @@ $description
%install %install
rm -rf %{buildroot} rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/local/bin mkdir -p %{buildroot}/usr/local/bin
cp $BUILD_DIR/$binary %{buildroot}/usr/local/bin/$pkg_name cp %{_sourcedir}/$pkg_name %{buildroot}/usr/local/bin/$pkg_name
chmod 755 %{buildroot}/usr/local/bin/$pkg_name chmod 755 %{buildroot}/usr/local/bin/$pkg_name
SPEC SPEC
if [[ -n "$systemd_unit" && -f "$systemd_unit" ]]; then if [[ -n "$systemd_unit" && -f "$systemd_unit" ]]; then
cat >> "$spec_file" <<SPEC cat >> "$spec_file" <<SPEC
mkdir -p %{buildroot}/lib/systemd/system mkdir -p %{buildroot}/lib/systemd/system
cp $systemd_unit %{buildroot}/lib/systemd/system/ cp %{_sourcedir}/$(basename "$systemd_unit") %{buildroot}/lib/systemd/system/
SPEC SPEC
fi fi
cat >> "$spec_file" <<SPEC cat >> "$spec_file" <<SPEC
mkdir -p %{buildroot}/usr/share/doc/$pkg_name mkdir -p %{buildroot}/usr/share/doc/$pkg_name
cp -r README.md %{buildroot}/usr/share/doc/$pkg_name/ 2>/dev/null || true cp -r %{_sourcedir}/README.md %{buildroot}/usr/share/doc/$pkg_name/ 2>/dev/null || true
%files %files
/usr/local/bin/$pkg_name /usr/local/bin/$pkg_name