github.com/mackerelio/mackerel-agent-plugins@v0.89.3/Makefile (about) 1 # This VERSION variable indicates the latest tag. 2 VERSION = $(subst v,,$(shell git describe --abbrev=0 --tags)) 3 VERBOSE_FLAG = $(if $(VERBOSE),-verbose) 4 5 GOOS ?= $(shell go env GOOS) 6 GOARCH ?= $(shell go env GOARCH) 7 BINDIR = build/$(GOOS)/$(GOARCH) 8 9 export GO111MODULE=on 10 11 .PHONY: all 12 all: testconvention rpm deb tar 13 14 .SECONDEXPANSION: 15 $(BINDIR)/mackerel-plugin-%: mackerel-plugin-%/main.go $$(wildcard mackerel-plugin-%/lib/*.go) 16 @if [ ! -d $(BINDIR) ]; then mkdir -p $(BINDIR); fi 17 cd `basename $@` && CGO_ENABLED=0 go build -ldflags="-s -w" -o ../$@ 18 19 .PHONY: build 20 build: 21 for i in mackerel-plugin-*; do \ 22 $(MAKE) $(BINDIR)/$$i; \ 23 done 24 25 build/mackerel-plugin: $(patsubst %,depends_on,$(GOOS)$(GOARCH)) 26 mkdir -p build 27 CGO_ENABLED=0 go build -ldflags="-s -w" \ 28 -o build/mackerel-plugin 29 30 .PHONY: depends_on 31 depends_on: 32 @: 33 34 .PHONY: test 35 test: testgo testconvention 36 ./test.bash 37 38 .PHONY: testgo 39 testgo: 40 go test $(VERBOSE_FLAG) ./... 41 42 .PHONY: testconvention 43 testconvention: 44 prove -r t/ 45 go generate ./... && git diff --exit-code -- . ':(exclude)go.*' || \ 46 (echo 'please `go generate ./...` and commit them' && false) 47 48 .PHONY: lint 49 lint: 50 golangci-lint run 51 52 .PHONY: rpm 53 rpm: rpm-v2 54 55 .PHONY: rpm-v2 56 rpm-v2: rpm-v2-x86 rpm-v2-arm 57 58 .PHONY: rpm-v2-x86 59 rpm-v2-x86: 60 $(MAKE) build/mackerel-plugin GOOS=linux GOARCH=amd64 61 rpmbuild --define "_sourcedir `pwd`" --define "_version ${VERSION}" \ 62 --define "buildarch x86_64" --define "dist .el7.centos" \ 63 --target x86_64 -bb packaging/rpm/mackerel-agent-plugins-v2.spec 64 rpmbuild --define "_sourcedir `pwd`" --define "_version ${VERSION}" \ 65 --define "buildarch x86_64" --define "dist .amzn2" \ 66 --target x86_64 -bb packaging/rpm/mackerel-agent-plugins-v2.spec 67 68 .PHONY: rpm-v2-arm 69 rpm-v2-arm: 70 $(MAKE) build/mackerel-plugin GOOS=linux GOARCH=arm64 71 rpmbuild --define "_sourcedir `pwd`" --define "_version ${VERSION}" \ 72 --define "buildarch aarch64" --define "dist .el7.centos" \ 73 --target aarch64 -bb packaging/rpm/mackerel-agent-plugins-v2.spec 74 rpmbuild --define "_sourcedir `pwd`" --define "_version ${VERSION}" \ 75 --define "buildarch aarch64" --define "dist .amzn2" \ 76 --target aarch64 -bb packaging/rpm/mackerel-agent-plugins-v2.spec 77 78 NEXT_VERSION := $(shell grep -o -e "[0-9]\+.[0-9]\+.[0-9]\+-[0-9]" "packaging/deb-v2/debian/changelog" | head -1 | sed 's/-.*$$//') 79 80 .PHONY: deb 81 deb: deb-v2-x86 deb-v2-arm 82 83 .PHONY: deb-v2-x86 84 deb-v2-x86: 85 git clean -f -d ./packaging 86 $(MAKE) build/mackerel-plugin GOOS=linux GOARCH=amd64 87 cp build/mackerel-plugin packaging/deb-v2/debian/ 88 cp -f packaging/dummy-empty.tar.gz packaging/mackerel-agent-plugins_${NEXT_VERSION}.orig.tar.gz 89 cd packaging/deb-v2 && debuild --no-tgz-check -rfakeroot -uc -us 90 91 .PHONY: deb-v2-arm 92 deb-v2-arm: 93 git clean -f -d ./packaging 94 $(MAKE) build/mackerel-plugin GOOS=linux GOARCH=arm64 95 cp build/mackerel-plugin packaging/deb-v2/debian/ 96 cp -f packaging/dummy-empty.tar.gz packaging/mackerel-agent-plugins_${NEXT_VERSION}.orig.tar.gz 97 cd packaging/deb-v2 && debuild --no-tgz-check -rfakeroot -uc -us -aarm64 98 99 .PHONY: tar 100 tar: tar-x86 tar-arm 101 102 .PHONY: tar-x86 103 tar-x86: 104 git clean -f -d ./packaging 105 $(MAKE) build/mackerel-plugin GOOS=linux GOARCH=amd64 106 mkdir -p packaging/tar/build/mackerel-agent-plugins-$(VERSION)-x86_64 107 cp README.md CHANGELOG.md build/mackerel-plugin packaging/tar/build/mackerel-agent-plugins-$(VERSION)-x86_64/ 108 cd packaging/tar && VERSION=$(VERSION) ARCH=x86_64 ./build.sh 109 110 .PHONY: tar-arm 111 tar-arm: 112 git clean -f -d ./packaging 113 $(MAKE) build/mackerel-plugin GOOS=linux GOARCH=arm64 114 mkdir -p packaging/tar/build/mackerel-agent-plugins-$(VERSION)-arm64 115 cp README.md CHANGELOG.md build/mackerel-plugin packaging/tar/build/mackerel-agent-plugins-$(VERSION)-arm64/ 116 cd packaging/tar && VERSION=$(VERSION) ARCH=arm64 ./build.sh 117 118 .PHONY: clean 119 clean: 120 @if [ -d build ]; then rm -rfv build packaging/tar/build; fi 121 122 .PHONY: update 123 update: 124 go get -u ./... 125 go mod tidy