From 80f48291f3b23cdc230b5ad3aab0e4cff5732f11 Mon Sep 17 00:00:00 2001 From: James Shubin Date: Sun, 28 Feb 2016 16:57:18 -0500 Subject: [PATCH] Update Makefile plumbing and associated misc things --- Makefile | 55 +++++++++++++++++---------------- misc/{mgmt.bashrc => bashrc.sh} | 0 misc/example.conf | 1 + misc/make-deps.sh | 2 +- misc/mgmt.conf.example | 1 - mgmt.spec.in => spec.in | 24 +++++++------- 6 files changed, 42 insertions(+), 41 deletions(-) rename misc/{mgmt.bashrc => bashrc.sh} (100%) create mode 100644 misc/example.conf delete mode 100644 misc/mgmt.conf.example rename mgmt.spec.in => spec.in (63%) diff --git a/Makefile b/Makefile index ffd0296a..f38eda30 100644 --- a/Makefile +++ b/Makefile @@ -21,21 +21,22 @@ SHELL = /bin/bash SVERSION := $(shell git describe --match '[0-9]*\.[0-9]*\.[0-9]*' --tags --dirty --always) VERSION := $(shell git describe --match '[0-9]*\.[0-9]*\.[0-9]*' --tags --abbrev=0) -PROGRAM := $(shell basename --suffix=-$(VERSION) $(notdir $(CURDIR))) +PROGRAM := $(shell echo $(notdir $(CURDIR)) | cut -f1 -d"-") +OLDGOLANG := $(shell go version | grep -E 'go1.3|go1.4') ifeq ($(VERSION),$(SVERSION)) RELEASE = 1 else RELEASE = untagged endif ARCH = $(shell arch) -SPEC = rpmbuild/SPECS/mgmt.spec -SOURCE = rpmbuild/SOURCES/mgmt-$(VERSION).tar.bz2 -SRPM = rpmbuild/SRPMS/mgmt-$(VERSION)-$(RELEASE).src.rpm -SRPM_BASE = mgmt-$(VERSION)-$(RELEASE).src.rpm -RPM = rpmbuild/RPMS/mgmt-$(VERSION)-$(RELEASE).$(ARCH).rpm +SPEC = rpmbuild/SPECS/$(PROGRAM).spec +SOURCE = rpmbuild/SOURCES/$(PROGRAM)-$(VERSION).tar.bz2 +SRPM = rpmbuild/SRPMS/$(PROGRAM)-$(VERSION)-$(RELEASE).src.rpm +SRPM_BASE = $(PROGRAM)-$(VERSION)-$(RELEASE).src.rpm +RPM = rpmbuild/RPMS/$(PROGRAM)-$(VERSION)-$(RELEASE).$(ARCH).rpm USERNAME := $(shell cat ~/.config/copr 2>/dev/null | grep username | awk -F '=' '{print $$2}' | tr -d ' ') SERVER = 'dl.fedoraproject.org' -REMOTE_PATH = 'pub/alt/$(USERNAME)/mgmt' +REMOTE_PATH = 'pub/alt/$(USERNAME)/$(PROGRAM)' all: docs @@ -59,20 +60,20 @@ run: race: find -maxdepth 1 -type f -name '*.go' -not -name '*_test.go' | xargs go run -race -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)" -build: mgmt +build: $(PROGRAM) -mgmt: main.go - @echo "Building: $(PROGRAM), version: $(SVERSION)." +$(PROGRAM): main.go + @echo "Building: $(PROGRAM), version: $(SVERSION)..." go generate - # avoid equals sign in old golang versions eg in: -X foo=bar - if go version | grep -qE 'go1.3|go1.4'; then \ - go build -ldflags "-X main.program $(PROGRAM) -X main.version $(SVERSION)" -o mgmt; \ - else \ - go build -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)" -o mgmt; \ - fi +ifneq ($(OLDGOLANG),) + @# avoid equals sign in old golang versions eg in: -X foo=bar + go build -ldflags "-X main.program $(PROGRAM) -X main.version $(SVERSION)" -o $(PROGRAM); +else + go build -ldflags "-X main.program=$(PROGRAM) -X main.version=$(SVERSION)" -o $(PROGRAM); +endif clean: - [ ! -e mgmt ] || rm mgmt + [ ! -e $(PROGRAM) ] || rm $(PROGRAM) rm -f *_stringer.go # generated by `go generate` test: @@ -82,10 +83,10 @@ format: find -type f -name '*.go' -not -path './old/*' -not -path './tmp/*' -exec gofmt -w {} \; find -type f -name '*.yaml' -not -path './old/*' -not -path './tmp/*' -not -path './omv.yaml' -exec ruby -e "require 'yaml'; x=YAML.load_file('{}').to_yaml.each_line.map(&:rstrip).join(10.chr)+10.chr; File.open('{}', 'w').write x" \; -docs: mgmt-documentation.pdf +docs: $(PROGRAM)-documentation.pdf -mgmt-documentation.pdf: DOCUMENTATION.md - pandoc DOCUMENTATION.md -o 'mgmt-documentation.pdf' +$(PROGRAM)-documentation.pdf: DOCUMENTATION.md + pandoc DOCUMENTATION.md -o '$(PROGRAM)-documentation.pdf' # # build aliases @@ -116,21 +117,21 @@ upload: upload-sources upload-srpms upload-rpms $(RPM): $(SPEC) $(SOURCE) @echo Running rpmbuild -bb... rpmbuild --define '_topdir $(shell pwd)/rpmbuild' -bb $(SPEC) && \ - mv rpmbuild/RPMS/$(ARCH)/mgmt-$(VERSION)-$(RELEASE).*.rpm $(RPM) + mv rpmbuild/RPMS/$(ARCH)/$(PROGRAM)-$(VERSION)-$(RELEASE).*.rpm $(RPM) $(SRPM): $(SPEC) $(SOURCE) @echo Running rpmbuild -bs... rpmbuild --define '_topdir $(shell pwd)/rpmbuild' -bs $(SPEC) # renaming is not needed because we aren't using the dist variable - #mv rpmbuild/SRPMS/mgmt-$(VERSION)-$(RELEASE).*.src.rpm $(SRPM) + #mv rpmbuild/SRPMS/$(PROGRAM)-$(VERSION)-$(RELEASE).*.src.rpm $(SRPM) # # spec # -$(SPEC): rpmbuild/ mgmt.spec.in +$(SPEC): rpmbuild/ spec.in @echo Running templater... - #cat mgmt.spec.in > $(SPEC) - sed -e s/__VERSION__/$(VERSION)/ -e s/__RELEASE__/$(RELEASE)/ < mgmt.spec.in > $(SPEC) + #cat spec.in > $(SPEC) + sed -e s/__PROGRAM__/$(PROGRAM)/ -e s/__VERSION__/$(VERSION)/ -e s/__RELEASE__/$(RELEASE)/ < spec.in > $(SPEC) # append a changelog to the .spec file git log --format="* %cd %aN <%aE>%n- (%h) %s%d%n" --date=local | sed -r 's/[0-9]+:[0-9]+:[0-9]+ //' >> $(SPEC) @@ -140,7 +141,7 @@ $(SPEC): rpmbuild/ mgmt.spec.in $(SOURCE): rpmbuild/ @echo Running git archive... # use HEAD if tag doesn't exist yet, so that development is easier... - git archive --prefix=mgmt-$(VERSION)/ -o $(SOURCE) $(VERSION) 2> /dev/null || (echo 'Warning: $(VERSION) does not exist. Using HEAD instead.' && git archive --prefix=mgmt-$(VERSION)/ -o $(SOURCE) HEAD) + git archive --prefix=$(PROGRAM)-$(VERSION)/ -o $(SOURCE) $(VERSION) 2> /dev/null || (echo 'Warning: $(VERSION) does not exist. Using HEAD instead.' && git archive --prefix=$(PROGRAM)-$(VERSION)/ -o $(SOURCE) HEAD) # TODO: if git archive had a --submodules flag this would easier! @echo Running git archive submodules... # i thought i would need --ignore-zeros, but it doesn't seem necessary! @@ -149,7 +150,7 @@ $(SOURCE): rpmbuild/ temp="$${temp#\'}"; \ path=$$temp; \ [ "$$path" = "" ] && continue; \ - (cd $$path && git archive --prefix=mgmt-$(VERSION)/$$path/ HEAD > $$p/rpmbuild/tmp.tar && tar --concatenate --file=$$p/$(SOURCE) $$p/rpmbuild/tmp.tar && rm $$p/rpmbuild/tmp.tar); \ + (cd $$path && git archive --prefix=$(PROGRAM)-$(VERSION)/$$path/ HEAD > $$p/rpmbuild/tmp.tar && tar --concatenate --file=$$p/$(SOURCE) $$p/rpmbuild/tmp.tar && rm $$p/rpmbuild/tmp.tar); \ done # TODO: ensure that each sub directory exists diff --git a/misc/mgmt.bashrc b/misc/bashrc.sh similarity index 100% rename from misc/mgmt.bashrc rename to misc/bashrc.sh diff --git a/misc/example.conf b/misc/example.conf new file mode 100644 index 00000000..fe2f67fe --- /dev/null +++ b/misc/example.conf @@ -0,0 +1 @@ +# example mgmt configuration file, currently has no options at the moment! diff --git a/misc/make-deps.sh b/misc/make-deps.sh index 54636960..f3f4d0f2 100755 --- a/misc/make-deps.sh +++ b/misc/make-deps.sh @@ -34,7 +34,7 @@ fi [ -x build ] && ./build mkdir -p ~/bin/ cp bin/etcd ~/bin/ -cd - +cd - >/dev/null rm -rf etcd # clean up to avoid failing on upstream gofmt errors go get ./... # get all the go dependencies diff --git a/misc/mgmt.conf.example b/misc/mgmt.conf.example deleted file mode 100644 index e5a1857e..00000000 --- a/misc/mgmt.conf.example +++ /dev/null @@ -1 +0,0 @@ -# example mgmt configuration file, currently has not options at the moment! diff --git a/mgmt.spec.in b/spec.in similarity index 63% rename from mgmt.spec.in rename to spec.in index 6bac11d3..9c215b9e 100644 --- a/mgmt.spec.in +++ b/spec.in @@ -1,13 +1,13 @@ %global project_version __VERSION__ %define debug_package %{nil} -Name: mgmt +Name: __PROGRAM__ Version: __VERSION__ Release: __RELEASE__ Summary: A next generation config management prototype! License: AGPLv3+ URL: https://github.com/purpleidea/mgmt -Source0: https://dl.fedoraproject.org/pub/alt/purpleidea/mgmt/SOURCES/mgmt-%{project_version}.tar.bz2 +Source0: https://dl.fedoraproject.org/pub/alt/purpleidea/__PROGRAM__/SOURCES/__PROGRAM__-%{project_version}.tar.bz2 # graphviz should really be a "suggests", since technically it's optional Requires: graphviz @@ -38,26 +38,26 @@ make build %install rm -rf %{buildroot} # _datadir is typically /usr/share/ -install -d -m 0755 %{buildroot}/%{_datadir}/mgmt/ -cp -a AUTHORS COPYING COPYRIGHT DOCUMENTATION.md README.md THANKS examples/ %{buildroot}/%{_datadir}/mgmt/ +install -d -m 0755 %{buildroot}/%{_datadir}/__PROGRAM__/ +cp -a AUTHORS COPYING COPYRIGHT DOCUMENTATION.md README.md THANKS examples/ %{buildroot}/%{_datadir}/__PROGRAM__/ # install the binary mkdir -p %{buildroot}/%{_bindir} -install -m 0755 mgmt %{buildroot}/%{_bindir}/mgmt +install -m 0755 __PROGRAM__ %{buildroot}/%{_bindir}/__PROGRAM__ # profile.d bash completion mkdir -p %{buildroot}%{_sysconfdir}/profile.d -install misc/mgmt.bashrc -m 0755 %{buildroot}%{_sysconfdir}/profile.d/mgmt.sh +install misc/bashrc.sh -m 0755 %{buildroot}%{_sysconfdir}/profile.d/__PROGRAM__.sh # etc dir -mkdir -p %{buildroot}%{_sysconfdir}/mgmt/ -install -m 0644 misc/mgmt.conf.example %{buildroot}%{_sysconfdir}/mgmt/mgmt.conf +mkdir -p %{buildroot}%{_sysconfdir}/__PROGRAM__/ +install -m 0644 misc/example.conf %{buildroot}%{_sysconfdir}/__PROGRAM__/__PROGRAM__.conf %files -%attr(0755, root, root) %{_sysconfdir}/profile.d/mgmt.sh -%{_datadir}/mgmt/* -%{_bindir}/mgmt -%{_sysconfdir}/mgmt/* +%attr(0755, root, root) %{_sysconfdir}/profile.d/__PROGRAM__.sh +%{_datadir}/__PROGRAM__/* +%{_bindir}/__PROGRAM__ +%{_sysconfdir}/__PROGRAM__/* # this changelog is auto-generated by git log %changelog