Config and scripts to support two instances of sshd, one using automount
[pl_sshd.git] / rpm.mk
diff --git a/rpm.mk b/rpm.mk
new file mode 100644 (file)
index 0000000..753be0a
--- /dev/null
+++ b/rpm.mk
@@ -0,0 +1,77 @@
+SPECFILE := $(PACKAGE).spec
+SPECFILE_FILELIST := /^%files/,/^%pre/s,^%attr.*/\([^/]*\),\1,p
+FILES := $(shell sed -ne '$(SPECFILE_FILELIST)' $(SPECFILE))
+VERSION := $(shell sed -ne 's/^Version: \(.*\)/\1/p' $(SPECFILE))
+RELEASE := $(shell sed -ne 's/^Release: \(.*\)/\1/p' $(SPECFILE))
+NAME := $(PACKAGE)-$(VERSION)
+FULLNAME := $(NAME)-$(RELEASE)
+TARBALL := $(FULLNAME).tar.gz
+RPM_BUILDDIR := .rpmbuild
+CWD := $(shell pwd)
+
+#
+# we have to jump through hoops to make RPM work nicely
+#
+RPM_RC_SYS := /usr/lib/rpm/rpmrc:$(wildcard /usr/lib/rpm/redhat/rpmrc)
+RPM_RC_USER := $(wildcard $(HOME)/.rpmrc)
+RPM_RC_LOCAL := .rpmrc
+RPM_RCFILES := $(subst ::,:,$(RPM_RC_SYS):$(RPM_RC_LOCAL):$(RPM_RC_USER))
+
+# ask RPM what architecture it will build for
+ARCH := $(shell rpm --showrc | sed -ne 's/^build arch.*: *\(.*\)/\1/p')
+
+# find out what the standard list of macro files is
+RPM_MACROS_SYS := $(shell rpm --showrc | \
+       sed -ne 's,^macrofiles[^:]*: \(.*\):~.*,\1,p')
+RPM_MACROS_LOCAL := .rpmmacros
+RPM_MACROS_USER := $(wildcard $(HOME)/.rpmmacros)
+RPM_MACROFILES := $(RPM_MACROS_SYS):$(RPM_MACROS_LOCAL):$(RPM_MACROS_USER)
+
+LOCALFILES := $(RPM_RC_LOCAL) $(RPM_MACROS_LOCAL) $(RPM_BUILDDIR)
+
+RPMFILE := $(FULLNAME).$(ARCH).rpm
+
+tarball: $(TARBALL)
+
+#
+# the idiosyncracies of RPM building require that the tarball has files
+# located in directory $(NAME), not $(FULLNAME)
+#
+$(TARBALL): $(FILES)
+       @echo creating $@...
+       @[ -d $(NAME) ] || ln -s . $(NAME)
+       @tar czvf $(TARBALL) $(addprefix $(NAME)/,$^)
+       @rm $(NAME)
+
+rpm: $(RPMFILE)
+
+$(RPMFILE): $(TARBALL) $(SPECFILE) $(LOCALFILES)
+       rpmbuild --buildroot=$(CWD)/$(RPM_BUILDDIR)/tmp \
+       --rcfile $(RPM_RCFILES) -bb $(SPECFILE)
+
+$(RPM_RC_LOCAL):
+       @echo 'macrofiles: $(RPM_MACROFILES)' >$@
+       @echo created $@
+
+$(RPM_MACROS_LOCAL):
+       @exec >$@; \
+       echo "%distribution PlanetLab"; \
+       echo "%_fullname %{name}-%{version}-%{release}"; \
+       echo "%_topdir $(CWD)"; \
+       echo "%_sourcedir %{_topdir}"; \
+       echo "%_builddir %{_topdir}/$(RPM_BUILDDIR)"; \
+       echo "%_rpmdir %{_builddir}"
+       @echo created $@
+
+$(RPM_BUILDDIR):
+       mkdir -p $(RPM_BUILDDIR)/tmp
+       ln -s .. $(RPM_BUILDDIR)/$(ARCH)
+
+rpm-config: $(LOCALFILES)
+       @echo RPM_RCFILES=$(RPM_RCFILES)
+       @echo RPM_MACROFILES=$(RPM_MACROFILES)
+       @echo RPM_ARCH=$(ARCH)
+
+rpm-clean:
+       rm -f $(NAME) $(RPMFILE) $(TARBALL)
+       rm -rf $(LOCALFILES)