[Rpm-maint] [patch 2/2] add %{sources} %{patches} and %{macronames}

Peter Jones pjones at redhat.com
Fri Nov 2 15:25:57 UTC 2007


This Xpatch adds %{sources}, %{patches}, and %{macronames} .  If anybody 
has any input regarding a better way to do any of this, I'm open to 
suggestions...

Anyway, this means in .spec files you can do something like:

...
Patch0: foo.patch
Patch1: bar.patch
...
%prep
%setup %setup -q
git-am -p1 %{patches}
%build
...

Without further ado, the patch (slightly mangled by tbird, but oh well):

vroomfondel:~/devel/rpm$ hg diff Makefile.am init.lua.in macros.in
diff -r fbafe05f41e0 Makefile.am
--- a/Makefile.am       Fri Nov 02 09:25:33 2007 -0400
+++ b/Makefile.am       Fri Nov 02 11:18:37 2007 -0400
@@ -176,6 +176,15 @@ macros: $(top_srcdir)/macros.in
           && ( cd $(top_builddir) && ./config.status 
--file=${subdir}/macros:${subdir}/macros.tmp )
  CLEANFILES += macros.tmp macros
  EXTRA_DIST += macros.in
+
+rpmconfig_DATA += init.lua
+init.lua: $(top_srcdir)/init.lua.in
+       @$(SED) \
+         -e "s,[@]varprefix[@],$(localstatedir),g" \
+         < $(top_srcdir)/init.lua.in > init.lua.tmp \
+         && ( cd $(top_builddir) && ./config.status 
--file=${subdir}/init.lua:${subdir}/init.lua.tmp )
+CLEANFILES += init.lua.tmp init.lua
+EXTRA_DIST += init.lua.in

  noinst_DATA = platform
  platform: $(top_srcdir)/platform.in
@@ -282,7 +291,7 @@ install-data-local:
         @case "@host_os@" in \
         mint) $(MKDIR_P) $(DESTDIR)$(pkgsrcdir)/RPMS/m68kmint ;;\
         solaris*|linux*|darwin*) \
-          DESTDIR="$(DESTDIR)" pkglibdir="$(rpmconfigdir)" $(SHELL) 
$(top_srcdir)/installplatform rpmrc macros platform ;; \
+          DESTDIR="$(DESTDIR)" pkglibdir="$(rpmconfigdir)" $(SHELL) 
$(top_srcdir)/installplatform rpmrc init.lua macros platform ;; \
         esac
         @$(MKDIR_P) $(DESTDIR)$(localstatedir)/tmp

diff -r fbafe05f41e0 init.lua.in
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/init.lua.in       Fri Nov 02 11:18:37 2007 -0400
@@ -0,0 +1,39 @@
+
+function findmacros(...)
+        filter = arg[1]
+        macros = rpm.getMacros()
+        names = {}
+        for name in pairs(macros) do
+                if ((filter == nil) or filter(name, macros[name])) then
+                        table.insert(names, name)
+                end
+        end
+        return names
+end
+
+function ispatch(name, object)
+        return not (string.find(name, "%PATCH%d$") == nil)
+end
+
+function issource(name, object)
+        return not (string.find(name, "%SOURCE%d$") == nil)
+end
+
+function patches()
+        for i,name in findmacros(ispatch) do
+                print(rpm.expand(string.format("%%%s ", name)))
+        end
+end
+
+function sources()
+        for i,name in findmacros(issource) do
+                print(rpm.expand(string.format("%%%s ", name)))
+        end
+end
+
+function macronames()
+        for i,name in findmacros() do
+                print(name, " ")
+        end
+end
+
diff -r fbafe05f41e0 macros.in
--- a/macros.in Fri Nov 02 09:25:33 2007 -0400
+++ b/macros.in Fri Nov 02 11:18:37 2007 -0400
@@ -386,6 +386,53 @@ package or when debugging this package.\
  #
  # Filter GLIBC_PRIVATE Provides: and Requires:
  %_filter_GLIBC_PRIVATE                 0
+
+
+%{lua:
+
+function findmacros(...)
+        filter = arg[1]
+        macros = rpm.getMacros()
+        names = {}
+        for name in pairs(macros) do
+                if ((filter == nil) or filter(name, macros[name])) then
+                        table.insert(names, name)
+                end
+        end
+        return names
+end
+
+function ispatch(name, object)
+        return not (string.find(name, "%PATCH%d$") == nil)
+end
+
+function issource(name, object)
+        return not (string.find(name, "%SOURCE%d$") == nil)
+end
+
+function patches()
+        for i,name in findmacros(ispatch) do
+                print(rpm.expand(string.format("%%%s ", name)))
+        end
+end
+
+function sources()
+        for i,name in findmacros(issource) do
+                print(rpm.expand(string.format("%%%s ", name)))
+        end
+end
+
+function macronames()
+        for i,name in findmacros() do
+                print(name, " ")
+        end
+end
+
+}
+
+sources %{lua:sources()}
+patches %{lua:patches()}
+macronames %{lua:macronames()}

  # Desired selinux policy tree
  %__policy_tree %{expand:%%global __policy_tree %{lua:\

-- 
   Peter




More information about the Rpm-maint mailing list