|
12 | 12 | # See the License for the specific language governing permissions and |
13 | 13 | # limitations under the License. |
14 | 14 |
|
| 15 | +# Deliverables path |
15 | 16 | DESTDIR ?= /usr/local |
| 17 | +BINDIR ?= $(DESTDIR)/bin |
16 | 18 |
|
17 | | -VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always --tags) |
| 19 | +# Tools path |
| 20 | +ECHO ?= echo |
| 21 | +DOCKER ?= docker |
| 22 | +GO ?= go |
| 23 | +MKDIR ?= mkdir |
| 24 | +TAR ?= tar |
| 25 | +INSTALL ?= install |
| 26 | +GIT ?= git |
| 27 | + |
| 28 | +TARGET_BIN=containerd-fuse-overlayfs-grpc |
| 29 | + |
| 30 | +VERSION ?= $(shell $(GIT) describe --match 'v[0-9]*' --dirty='.m' --always --tags) |
18 | 31 | VERSION_TRIMMED := $(VERSION:v%=%) |
19 | | -REVISION=$(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi) |
| 32 | +REVISION ?= $(shell $(GIT) rev-parse HEAD)$(shell if ! $(GIT) diff --no-ext-diff --quiet --exit-code; then $(ECHO) .m; fi) |
20 | 33 |
|
21 | | -PKG_MAIN := github.com/containerd/fuse-overlayfs-snapshotter/cmd/containerd-fuse-overlayfs-grpc |
22 | | -PKG_VERSION := github.com/containerd/fuse-overlayfs-snapshotter/cmd/containerd-fuse-overlayfs-grpc/version |
| 34 | +PKG_MAIN := github.com/containerd/fuse-overlayfs-snapshotter/cmd/$(TARGET_BIN) |
| 35 | +PKG_VERSION := github.com/containerd/fuse-overlayfs-snapshotter/cmd/$(TARGET_BIN)/version |
23 | 36 |
|
24 | | -GO ?= go |
25 | 37 | export GO_BUILD=GO111MODULE=on CGO_ENABLED=0 $(GO) build -ldflags "-s -w -X $(PKG_VERSION).Version=$(VERSION) -X $(PKG_VERSION).Revision=$(REVISION)" |
26 | 38 |
|
27 | | -bin/containerd-fuse-overlayfs-grpc: |
| 39 | +bin/$(TARGET_BIN): |
28 | 40 | $(GO_BUILD) -o $@ $(PKG_MAIN) |
29 | 41 |
|
| 42 | +all: binaries |
| 43 | + |
| 44 | +help: |
| 45 | + @$(ECHO) "Usage: make <target>" |
| 46 | + @$(ECHO) |
| 47 | + @$(ECHO) " * 'install' - Install binaries to system locations." |
| 48 | + @$(ECHO) " * 'uninstall' - Uninstall binaries from system." |
| 49 | + @$(ECHO) " * 'binaries' - Build $(TARGET_BIN)." |
| 50 | + @$(ECHO) " * 'test' - Run tests." |
| 51 | + @$(ECHO) " * 'clean' - Clean artifacts." |
| 52 | + @$(ECHO) " * 'help' - Show this help message." |
| 53 | + |
| 54 | +binaries: bin/$(TARGET_BIN) |
| 55 | + |
| 56 | +$(TARGET_BIN): |
| 57 | + $(GO_BUILD) -o $(CURDIR)/bin/$@ $(PKG_MAIN) |
| 58 | + |
| 59 | +binaries: $(TARGET_BIN) |
| 60 | + |
30 | 61 | install: |
31 | | - install bin/containerd-fuse-overlayfs-grpc $(DESTDIR)/bin |
| 62 | + $(INSTALL) -D -m 755 $(CURDIR)/bin/$(TARGET_BIN) $(BINDIR)/$(TARGET_BIN) |
32 | 63 |
|
33 | 64 | uninstall: |
34 | | - rm -f $(DESTDIR)/bin/containerd-fuse-overlayfs-grpc |
| 65 | + $(RM) $(BINDIR)/$(TARGET_BIN) |
35 | 66 |
|
36 | 67 | clean: |
37 | | - rm -rf bin |
| 68 | + $(RM) -r $(CURDIR)/bin $(CURDIR)/_output |
| 69 | + |
| 70 | +TEST_DOCKER_IMG_TAG=containerd-fuse-overlayfs-test |
38 | 71 |
|
39 | 72 | test: |
40 | | - DOCKER_BUILDKIT=1 docker build -t containerd-fuse-overlayfs-test --build-arg FUSEOVERLAYFS_COMMIT=${FUSEOVERLAYFS_COMMIT} . |
41 | | - docker run --rm containerd-fuse-overlayfs-test fuse-overlayfs -V |
42 | | - docker run --rm --security-opt seccomp=unconfined --security-opt apparmor=unconfined --device /dev/fuse containerd-fuse-overlayfs-test |
43 | | - docker rmi containerd-fuse-overlayfs-test |
| 73 | + DOCKER_BUILDKIT=1 $(DOCKER) build -t $(TEST_DOCKER_IMG_TAG) --build-arg FUSEOVERLAYFS_COMMIT=${FUSEOVERLAYFS_COMMIT} . |
| 74 | + $(DOCKER) run --rm $(TEST_DOCKER_IMG_TAG) fuse-overlayfs -V |
| 75 | + $(DOCKER) run --rm --security-opt seccomp=unconfined --security-opt apparmor=unconfined --device /dev/fuse $(TEST_DOCKER_IMG_TAG) |
| 76 | + $(DOCKER) rmi $(TEST_DOCKER_IMG_TAG) |
44 | 77 |
|
45 | 78 | _test: |
46 | | - go test -exec rootlesskit -test.v -test.root |
| 79 | + $(GO) test -exec rootlesskit -test.v -test.root |
47 | 80 |
|
48 | 81 | TAR_FLAGS=--transform 's/.*\///g' --owner=0 --group=0 |
49 | 82 |
|
| 83 | +ARTIFACT_NAME=containerd-fuse-overlayfs-$(VERSION_TRIMMED) |
| 84 | + |
50 | 85 | artifacts: clean |
51 | | - mkdir -p _output |
52 | | - GOOS=linux GOARCH=amd64 make |
53 | | - tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-amd64.tar.gz bin/* |
54 | | - GOOS=linux GOARCH=arm64 make |
55 | | - tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-arm64.tar.gz bin/* |
| 86 | + $(MKDIR) -p _output |
| 87 | + GOOS=linux GOARCH=amd64 make |
| 88 | + $(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-amd64.tar.gz $(CURDIR)/bin/* |
| 89 | + GOOS=linux GOARCH=arm64 make |
| 90 | + $(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-arm64.tar.gz $(CURDIR)/bin/* |
56 | 91 | GOOS=linux GOARCH=arm GOARM=7 make |
57 | | - tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-arm-v7.tar.gz bin/* |
58 | | - GOOS=linux GOARCH=ppc64le make |
59 | | - tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-ppc64le.tar.gz bin/* |
60 | | - GOOS=linux GOARCH=s390x make |
61 | | - tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-s390x.tar.gz bin/* |
62 | | - |
63 | | -.PHONY: bin/containerd-fuse-overlayfs-grpc install uninstall clean test _test artifacts |
| 92 | + $(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-arm-v7.tar.gz $(CURDIR)/bin/* |
| 93 | + GOOS=linux GOARCH=ppc64le make |
| 94 | + $(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-ppc64le.tar.gz $(CURDIR)/bin/* |
| 95 | + GOOS=linux GOARCH=s390x make |
| 96 | + $(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-s390x.tar.gz $(CURDIR)/bin/* |
| 97 | + |
| 98 | +.PHONY: \ |
| 99 | + $(TARGET_BIN) \ |
| 100 | + install \ |
| 101 | + uninstall \ |
| 102 | + clean \ |
| 103 | + test \ |
| 104 | + _test \ |
| 105 | + artifacts \ |
| 106 | + help |
0 commit comments