add makefile.

Signed-off-by: yyjeqhc <jialin.oerv@isrc.iscas.ac.cn>
This commit is contained in:
2026-02-05 12:57:47 +08:00
parent 378ab00f29
commit e5cf2569a7
3 changed files with 59 additions and 6 deletions

9
Makefile Normal file
View File

@@ -0,0 +1,9 @@
PREFIX ?= /usr
RPMMACRODIR ?= $(PREFIX)/lib/rpm/macros.d
RPMSCRIPTDIR ?= $(PREFIX)/lib/rpm/rust-rpm-macros
.PHONY: install
install:
install -D -m644 macros.buildsystem.rustcrates $(DESTDIR)$(RPMMACRODIR)/macros.buildsystem.rustcrates
install -D -m644 macros.rust $(DESTDIR)$(RPMMACRODIR)/macros.rust
install -D -m755 rustcrates-gen-feature-specparts.sh $(DESTDIR)$(RPMSCRIPTDIR)/rustcrates-gen-feature-specparts.sh

View File

@@ -1,10 +1,14 @@
%rustcrates_dynspec_helper %{_rpmconfigdir}/rust-rpm-macros/rustcrates-gen-feature-specparts.sh
# Example buildsystem for rust crates
%buildsystem_rustcrates_prep() %{expand:\\\
%autosetup -C -p1 %* \\\
%buildsystem_rustcrates_prep() %{expand:\
%autosetup -C -p1 %* \
}
%buildsystem_rustcrates_conf() %nil
%buildsystem_rustcrates_build() %nil
%buildsystem_rustcrates_install() %{expand:\\\
%{rust_install_crate} \\\
%buildsystem_rustcrates_build() %{expand:\
%{rustcrates_dynspec_helper} "%{_sourcedir}" \
}
%buildsystem_rustcrates_check() %nil
%buildsystem_rustcrates_install() %{expand:\
%{rust_install_crate} \
}
%buildsystem_rustcrates_check() %nil

View File

@@ -0,0 +1,40 @@
#!/bin/bash
set -euo pipefail
SOURCEDIR="${1:-}"
if [[ -z "$SOURCEDIR" ]]; then
echo "usage: $0 SOURCEDIR" >&2
exit 2
fi
if [[ -z "${RPM_SPECPARTS_DIR:-}" || ! -d "$RPM_SPECPARTS_DIR" ]]; then
echo "error: dynamic spec generation is not supported by this RPM version (missing RPM_SPECPARTS_DIR)" >&2
exit 1
fi
set -- "$SOURCEDIR"/*.spec
SPEC_SELF="$1"
SPECPART="$RPM_SPECPARTS_DIR/50-feature-files.specpart"
: > "$SPECPART"
if [[ ! -f "$SPEC_SELF" ]]; then
echo "warning: no spec file found in $SOURCEDIR" >&2
exit 0
fi
if ! awk '
/^[[:space:]]*%package[[:space:]]+/ {
if (match($0, /-n[[:space:]]+%\{name\}\+([A-Za-z0-9_.-]+)/, m) && !seen[m[1]]++) {
print "%files -n %{name}+" m[1]
print ""
found = 1
}
}
END {
exit(found ? 0 : 2)
}
' "$SPEC_SELF" > "$SPECPART"; then
echo "warning: no feature subpackages parsed from $SPEC_SELF" >&2
fi