diff options
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | GNUmakefile | 2 | ||||
m--------- | git-rpm | 0 | ||||
-rw-r--r-- | git-rpm.mk | 181 |
4 files changed, 4 insertions, 182 deletions
diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0ccfef1 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "git-rpm"] + path = git-rpm + url = git://fedorapeople.org/~ndim/git-rpm.git diff --git a/GNUmakefile b/GNUmakefile index 7dca9a7..763cc33 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,2 +1,2 @@ NAME := phoronix-test-suite -include git-rpm.mk +include git-rpm/git-rpm.mk diff --git a/git-rpm b/git-rpm new file mode 160000 +Subproject 48dc20f325e548fa62eeb82c16d859d35dc4a5a diff --git a/git-rpm.mk b/git-rpm.mk deleted file mode 100644 index a469995..0000000 --- a/git-rpm.mk +++ /dev/null @@ -1,181 +0,0 @@ -# How to use this file: -# 0. run "git init" -# 1. copy this file as git-rpm.mk -# 2. create GNUmakefile with contents like -# NAME = mypkg -# include git-rpm.mk -# 3. run "make mkdir" to created the upload directory on the web server -# 4. write mypkg.spec, patches, Source: files, etc. -# 5. run "make" for a test build of the rpm files -# 6. if you do not like the result, go to 4 -# 7. make sure NVR and %changelog are updated -# 8. Make sure you have "git commit"ed all your changes before -# 9. run "make tag" tag the current release -# 10. run "make upload" to upload the built rpm files to your webspace -# -# Settings best defined in ~/.git-rpm-settings.mk, but with potentially -# useful defaults: -# 1. RSYNC_USER and RSYNC_HOST or RSYNC_USHO -# 2. RSYNC_ROOT -# -# Benefits: -# 1. Reproducible local rpm builds: -# $ make -# 2. Automatic generation of text reports (rpmlint, rpm content list): -# $ make check -# 3. Easy versioning of NVRs using git tags -# $ make tag -# 4. Easy upload via rsync/ssh to NVR specific places, nice for package review -# $ make upload - -RPMDIRS = rpm-build rpm-dist -UPLOAD_FILES = - -OPTS = -OPTS += --define "_sourcedir $${PWD}" -OPTS += --define "_builddir $${PWD}/rpm-build" -OPTS += --define "_srcrpmdir $${PWD}/rpm-dist" --define "_rpmdir $${PWD}/rpm-dist" - -NAME ?= packagename-to-be-defined - -SPEC = $(NAME).spec - -RPM_VERSION := $(shell rpm -q --specfile $(SPEC) --queryformat '%{VERSION}\n' | sed '1q') -RPM_RELEASE := $(shell rpm -q --specfile $(SPEC) --queryformat '%{RELEASE}\n' | sed '1q') -RPM_ARCH := $(shell rpm -q --specfile $(SPEC) --queryformat '%{ARCH}\n' | sed '1q') - -NVR = $(NAME)-$(RPM_VERSION)-$(RPM_RELEASE) - -SRPM = rpm-dist/$(NVR).src.rpm -BRPM = rpm-dist/$(RPM_ARCH)/$(NVR).$(RPM_ARCH).rpm - --include $(HOME)/.git-rpm-settings.mk -RSYNC_USER ?= $(USER) -RSYNC_HOST ?= fedorapeople.org -RSYNC_USHO ?= $(RSYNC_USER)@$(RSYNC_HOST) -RSYNC_ROOT ?= public_html/packages -RSYNC_DIR = $(RSYNC_ROOT)/$(NAME)/$(RPM_VERSION)-$(RPM_RELEASE) - -SOURCE_FILES = $(shell spectool --lf $(SPEC) | cut -d' ' -f2 | xargs -l basename) - -.PHONY: all -all: build -build: rpm check - -.PHONY: sources -sources: - spectool -g $(SPEC) - -.PHONY: srpm -srpm: $(SRPM) - -clog: $(SPEC) - rpm -q --specfile $(SPEC) --changelog | sed '1n; /^\*/,$$d' > $@ - cat $@ - -UPLOAD_FILES += $(NVR)/$(NVR).src.rpm -$(SRPM): $(SPEC) $(SOURCE_FILES) - mkdir -p $(RPMDIRS) - rpmbuild $(OPTS) -bs $(SPEC) -$(NVR)/$(NVR).src.rpm: $(SRPM) - mkdir -p $(NVR) - cp -p $< $@ - -.PHONY: rpm -rpm: $(BRPM) - -UPLOAD_FILES += $(NVR)/build.log -$(BRPM) rpm-build/$(NVR).buildlog: $(SPEC) $(SOURCE_FILES) - mkdir -p $(RPMDIRS) - rpmbuild $(OPTS) -ba $(SPEC) 2>&1 | tee rpm-build/$(NVR).buildlog - -$(NVR)/build.log: rpm-build/$(NVR).buildlog - mkdir -p $(NVR) - sed "s|$(USER)|build|g" < $< > $@ - -.PHONY: check -check: $(NVR)/rpmlint.txt $(NVR)/filelist.txt - -UPLOAD_FILES += $(NVR)/rpmlint.txt -$(NVR)/rpmlint.txt: $(BRPM) - mkdir -p $(NVR) - rpmlint -i $(SPEC) $(SRPM) $(BRPM) 2>&1 | tee $@ - -UPLOAD_FILES += $(NVR)/filelist.txt -$(NVR)/filelist.txt: rpm-build/$(NVR).buildlog - mkdir -p $(NVR) - for pkg in rpm-dist/$(NVR).src.rpm rpm-dist/$(RPM_ARCH)/$(NAME)*-$(RPM_VERSION)-$(RPM_RELEASE).$(RPM_ARCH).rpm; do \ - echo "## $$(basename "$$pkg")"; \ - rpm -qpl --scripts "$$pkg"; \ - echo; \ - done > $@.new - cp $@.new $@ && rm -f $@.new - -.PHONY: mkdir -mkdir: - ssh $(RSYNC_USHO) mkdir -p $(RSYNC_ROOT)/$(NAME) - -.PHONY: upload -upload: $(NVR) - -UPLOAD_FILES += $(NVR)/$(SPEC) -$(NVR)/$(SPEC): $(SPEC) - mkdir -p $(NVR) - cp -p $< $@ - -UPLOAD_FILES += $(foreach p, $(SOURCE_FILES), $(NVR)/$(p)) -$(NVR)/%: % - mkdir -p $(NVR) - cp -p $< $@ - -$(NVR): $(UPLOAD_FILES) - mkdir -p $(NVR) - rsync -avz --delete $(NVR)/ $(RSYNC_USHO):$(RSYNC_DIR)/ - touch $@ - -.PHONY: clean -clean: - rm -rf $(RPMDIRS) - -.PHONY: tag -tag: clog - @echo "List of git tags:"; git tag -n20 - @echo "Really add git tag $(NVR)? Ctrl-C to abort, Enter to continue"; read - git tag -a -F clog $(NVR) - -WORKDIR ?= $(PWD) -MOCKDIR ?= $(WORKDIR) -MOCKCFG ?= fedora-$(shell echo $(RPM_RELEASE) | sed -n 's/.*\.fc\([1-9][0-9]*\)$$/\1/p')-$(RPM_ARCH) -MOCKRESULTDIR ?= $(MOCKDIR)/$(NVR).mock - -SCRATCHBUILD_KOJI_TAG = dist-f10 - -.PHONY: scratch-build -scratch-build: $(SRPM) - /usr/bin/koji build --scratch $(SCRATCHBUILD_KOJI_TAG) $(SRPM) - -.PHONY: mock-build -mock-build: $(MOCKRESULTDIR) - -$(MOCKRESULTDIR): $(SRPM) - mock $(MOCKARGS) -r $(MOCKCFG) --resultdir=$(MOCKRESULTDIR) rebuild $(SRPM) - -.PHONY: help -help: - @echo "NVR: $(NVR)" - @echo "Mock config: $(MOCKCFG)" - @echo "Mock result dir: $(MOCKRESULTDIR)" - @echo "Source RPM: $(SRPM)" - @echo "Targets:" - @echo " build build the RPM package(s) locally" - @echo " scratch-build build scratch RPM via Fedora's koji" - @echo " mock-build build RPM in local mock chroot" - @echo " sources download all source files" - @echo " srpm build SRPM package locally" - -# Package specific rules, best put into package specific GNUmakefile - -#$(NAME)-$(RPM_VERSION)-buildfixes.patch: $(wildcard $(NAME)-$(RPM_VERSION)/* $(NAME)-$(RPM_VERSION)-buildfixes/*) -# diff -ru $(NAME)-$(RPM_VERSION) $(NAME)-$(RPM_VERSION)-buildfixes > $@;: - -# End of file. |