-include Makefile.pre TOPDIR := $(shell pwd) PACKAGE := $(if $(strip $(PACKAGE)), $(firstword $(PACKAGE)), $(shell basename $(TOPDIR))) SPECNAME := $(if $(strip $(SPECNAME)), $(firstword $(SPECNAME)), $(addsuffix .spec, ${PACKAGE})) SPECDIR := $(if $(strip $(SPECDIR)), $(firstword $(SPECDIR)), SPECS) SPEC := $(if $(strip $(SPEC)), $(firstword $(SPEC)), $(addprefix $(SPECDIR)/, $(SPECNAME))) SOURCEDIR := $(if $(strip $(SOURCEDIR)), $(firstword $(SOURCEDIR)), SOURCES) TMPDIR := $(if $(strip $(TMPDIR)), $(firstword $(TMPDIR)), TMP) TMPEXPORTDIR := $(if $(strip $(TMPEXPORTDIR)), $(firstword $(TMPEXPORTDIR)), $(addprefix $(TMPDIR)/, export)) BUILDDIR := $(if $(strip $(BUILDDIR)), $(firstword $(BUILDDIR)), BUILD) RPMDIR := $(if $(strip $(RPMDIR)), $(firstword $(RPMDIR)), RPM) SRPMDIR := $(if $(strip $(SRPMDIR)), $(firstword $(SRPMDIR)), SRPM) # rpm dirs RPMTOPDIR := $(if $(strip $(RPMTOPDIR)), $(firstword $(RPMTOPDIR)), $(TOPDIR)) RPMTMPDIR := $(if $(strip $(RPMTMPDIR)), $(firstword $(RPMTMPDIR)), $(addprefix $(RPMTOPDIR)/, $(TMPDIR))) RPMSOURCEDIR := $(if $(strip $(RPMSOURCEDIR)), $(firstword $(RPMSOURCEDIR)), \ $(addprefix $(RPMTOPDIR)/, $(SOURCEDIR))) RPMBUILDDIR := $(if $(strip $(RPMBUILDDIR)), $(firstword $(RPMBUILDDIR)), $(addprefix $(RPMTOPDIR)/, $(BUILDDIR))) RPMRPMDIR := $(if $(strip $(RPMRPMDIR)), $(firstword $(RPMRPMDIR)), $(addprefix $(RPMTOPDIR)/, $(RPMDIR))) RPMSRPMDIR := $(if $(strip $(RPMSRPMDIR)), $(firstword $(RPMSRPMDIR)), $(addprefix $(RPMTOPDIR)/, $(SRPMDIR))) .PHONY: all ba bs bp binary source buildreq tarball clean # all target all: $(SPEC) tarball rpmbuild -ba \ --define "_topdir $(RPMTOPDIR)" --define "_tmpdir $(RPMTMPDIR)" \ --define "_sourcedir $(RPMSOURCEDIR)" --define "_builddir $(RPMBUILDDIR)" \ --define "_rpmdir $(RPMRPMDIR)" --define "_srcrpmdir $(RPMSRPMDIR)" $(SPEC) ba: all bs: source bb: binary bp: $(SPEC) tarball rpmbuild -bp \ --define "_topdir $(RPMTOPDIR)" --define "_tmpdir $(RPMTMPDIR)" \ --define "_sourcedir $(RPMSOURCEDIR)" --define "_builddir $(RPMBUILDDIR)" \ --define "_rpmdir $(RPMRPMDIR)" --define "_srcrpmdir $(RPMSRPMDIR)" $(SPEC) binary: $(SPEC) tarball rpmbuild -bb \ --define "_topdir $(RPMTOPDIR)" --define "_tmpdir $(RPMTMPDIR)" \ --define "_sourcedir $(RPMSOURCEDIR)" --define "_builddir $(RPMBUILDDIR)" \ --define "_rpmdir $(RPMRPMDIR)" --define "_srcrpmdir $(RPMSRPMDIR)" $(SPEC) source: $(SPEC) tarball rpmbuild -bs \ --define "_topdir $(RPMTOPDIR)" --define "_tmpdir $(RPMTMPDIR)" \ --define "_sourcedir $(RPMSOURCEDIR)" --define "_builddir $(RPMBUILDDIR)" \ --define "_rpmdir $(RPMRPMDIR)" --define "_srcrpmdir $(RPMSRPMDIR)" $(SPEC) buildreq: $(SPEC) tarball buildreq --args=" \ --define \"_topdir $(RPMTOPDIR)\" --define \"_tmpdir $(RPMTMPDIR)\" \ --define \"_sourcedir $(RPMSOURCEDIR)\" --define \"_builddir $(RPMBUILDDIR)\" \ --define \"_rpmdir $(RPMRPMDIR)\" --define \"_srcrpmdir $(RPMSRPMDIR)\"" $(SPEC) SUBDIRS = $(wildcard $(SOURCEDIR) $(BUILDDIR) $(RPMDIR) $(SRPMDIR) $(TMPDIR)) CLEANS = $(foreach name, $(sort $(addsuffix /*, $(SUBDIRS)) $(SUBDIRS) $(wildcard *)), \ $(if $(strip $(call get_url, $(name))), , $(name))) clean: rm -Rf $(CLEANS) ifneq ($(strip $(wildcard $(SPEC))), ) SPECURLSORCES := $(shell rpm -bE $(SPEC) 2>/dev/null | \ sed -n -e '/^Source[0-9]*\:/{s/^Source[0-9]*:[[:space:]]*//;p}') SPECSORCES := $(notdir $(SPECURLSORCES)) SPECURLPATCHS := $(shell rpm -bE $(SPEC) 2>/dev/null | \ sed -n -e '/^Patch[0-9]*\:/{s/^Patch[0-9]*:[[:space:]]*//;p}') SPECPATCHS := $(notdir $(SPECURLPATCHS)) SOURCE := $(addprefix $(RPMSOURCEDIR)/, $(SPECSORCES) $(SPECPATCHS)) UNCOMPRESSED := $(if $(strip $(UNCOMPRESSED)), $(firstword $(UNCOMPRESSED)), UNCOMPRESSED) ifneq ($(strip $(wildcard $(UNCOMPRESSED))), ) VERSION := $(shell rpm -q --specfile --qf "%{VERSION}\n" $(SPEC)|head -1) TARBASENAME := $(addprefix $(PACKAGE)-, $(VERSION)) TAR := $(addprefix $(RPMSOURCEDIR)/, $(addsuffix .tar.bz2, $(TARBASENAME))) $(TAR): - rm -Rf $(TMPEXPORTDIR) mkdir -p $(TMPEXPORTDIR) svn export $(call get_url, $(UNCOMPRESSED)) $(addprefix $(TMPEXPORTDIR)/, $(TARBASENAME)) pushd $(TMPEXPORTDIR);tar cvfj $@ $(TARBASENAME);popd endif endif tarball: $(SOURCE) mkdir -p $(TMPEXPORTDIR) $(SPEC): $(error "No spec: $@") -include Makefile.post