From cd42ae0dc84ef5e27304f90eca6c2cb577029acc Mon Sep 17 00:00:00 2001 From: Andrew Kesterson Date: Tue, 24 Sep 2013 11:17:20 -0400 Subject: [PATCH] Added Makefile and spec for RPM build --- Makefile | 83 +++++++++++++++++++++++++++++++++++++++++++++++++ versioners.spec | 27 ++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100755 Makefile create mode 100644 versioners.spec diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..0b0ff9f --- /dev/null +++ b/Makefile @@ -0,0 +1,83 @@ +VERSION:=$(shell if [ -d .git ]; then bash -c 'bash ./gitversion.sh | grep "^MAJOR=" | cut -d = -f 2'; else source version.sh && echo $$MAJOR ; fi) +RELEASE:=$(shell if [ -d .git ]; then bash -c 'bash ./gitversion.sh | grep "^BUILD=" | cut -d = -f 2'; else source version.sh && echo $$BUILD ; fi) +DISTFILE=./dist/versioners-$(VERSION)-$(RELEASE).tar.gz +SPECFILE=versioners.spec +SRPM=versioners-$(VERSION)-$(RELEASE).src.rpm +ifndef RHEL_VERSION + RHEL_VERSION=5 +endif +RPM=versioners-$(VERSION)-$(RELEASE).noarch.rpm + +ifndef PREFIX + PREFIX=/ +endif + +DISTFILE_DEPS=$(shell find . -type f | grep -Ev '\.git|\./dist/|$(DISTFILE)') + +all: ./dist/$(RPM) + +# --- PHONY targets + +.PHONY: clean srpm rpm gitclean dist +clean: + rm -f $(DISTFILE) + rm -fr dist/versioners-$(VERSION)-$(RELEASE)* + +dist: $(DISTFILE) + +srpm: ./dist/$(SRPM) + +rpm: ./dist/$(RPM) ./dist/$(SRPM) + +gitclean: + git clean -df + +# --- End phony targets + +# This was borrowed from distiller, and I think it's to prevent version.sh +# from updating unnecessarily +version.sh: + if [ ! -d .git ] && [ -f version.sh ]; then echo "No git, keeping old version.sh" ; fi ; \ + if [ ! -d .git ] && [ ! -f version.sh ]; then echo "No git and no version.sh, you're boned"; exit 1; fi ; \ + if [ -d .git ] ; then \ + bash ./gitversion.sh > tmpversion.sh && \ + VERSIONSHA=$$(openssl sha1 version.sh | cut -d = -f 2) ; \ + TMPVERSIONSHA=$$(openssl sha1 tmpversion.sh | cut -d = -f 2) ; \ + if [ ! -e version.sh ] || [ "$$VERSIONSHA" != "$$TMPVERSIONSHA" ]; then \ + mv tmpversion.sh version.sh; \ + fi; \ + fi + +$(DISTFILE): version.sh + mkdir -p dist/ + mkdir dist/versioners-$(VERSION)-$(RELEASE) || rm -fr dist/versioners-$(VERSION)-$(RELEASE) + rsync -aWH . --exclude=.git --exclude=dist ./dist/versioners-$(VERSION)-$(RELEASE)/ + cd dist && tar -czvf ../$@ versioners-$(VERSION)-$(RELEASE) + +./dist/$(SRPM): $(DISTFILE) + rm -fr ./dist/$(SRPM) + mock --buildsrpm --spec $(SPECFILE) --sources ./dist/ --resultdir ./dist/ --define "version $(VERSION)" --define "release $(RELEASE)" + +./dist/$(RPM): ./dist/$(SRPM) + rm -fr ./dist/$(RPM) + mock -r epel-$(RHEL_VERSION)-noarch ./dist/$(SRPM) --resultdir ./dist/ --define "version $(VERSION)" --define "release $(RELEASE)" + +uninstall: + rm -f $(PREFIX)/usr/bin/taggit + rm -f $(PREFIX)/usr/bin/taghg + rm -f $(PREFIX)/usr/bin/gitversion + rm -f $(PREFIX)/usr/bin/hgversion + + +install: + mkdir -p $(PREFIX)/usr/bin + install ./gitversion $(PREFIX)/usr/bin/gitversion + install ./hgversion $(PREFIX)/usr/bin/hgversion + install ./taggit $(PREFIX)/usr/bin/taggit + install ./taghg $(PREFIX)/usr/bin/taghg + +MANIFEST: + echo /usr/bin/gitversion > MANIFEST + echo /usr/bin/hgversion >> MANIFEST + echo /usr/bin/taggit >> MANIFEST + echo /usr/bin/taghg >> MANIFEST diff --git a/versioners.spec b/versioners.spec new file mode 100644 index 0000000..4bf2945 --- /dev/null +++ b/versioners.spec @@ -0,0 +1,27 @@ +%define __os_install_post %{nil} +Summary: Automatic Versioning Tools +Name: versioners +Version: %{version} +Release: %{release} +License: Vocalocity +Vendor: Vocalocity +Packager: Andrew Kesterson +Group: Development Tools +Provides: %{name} +BuildArch: noarch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release} +Source: %{name}-%{version}-%{release}.tar.gz + +Requires: bash + +%description + +%install +mkdir -p %{buildroot}/usr/src +tar -zxvf %{_sourcedir}/%{name}-%{version}-%{release}.tar.gz +cd %{name}-%{version}-%{release} +PREFIX=%{buildroot} make install +PREFIX=%{buildroot} make MANIFEST +cp MANIFEST /tmp/ + +%files -f /tmp/MANIFEST