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