X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=rpm.mk;fp=rpm.mk;h=753be0a97ce86a44e210c9ee21c1555cdeed0412;hb=e05a8634df6a726188b495941800f4dd9f6b7820;hp=0000000000000000000000000000000000000000;hpb=e2c63e32ae96ef9a058140087f691ca1cf0247d3;p=pl_sshd.git diff --git a/rpm.mk b/rpm.mk new file mode 100644 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)