Skip to content

Commit

Permalink
Merge pull request #43 from sshedi/make-fix
Browse files Browse the repository at this point in the history
Makefile fixes
  • Loading branch information
AkihiroSuda authored Nov 9, 2022
2 parents bf32365 + 719056e commit 329e079
Showing 1 changed file with 69 additions and 26 deletions.
95 changes: 69 additions & 26 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,52 +12,95 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# Deliverables path
DESTDIR ?= /usr/local
BINDIR ?= $(DESTDIR)/bin

VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always --tags)
# Tools path
ECHO ?= echo
DOCKER ?= docker
GO ?= go
MKDIR ?= mkdir
TAR ?= tar
INSTALL ?= install
GIT ?= git

TARGET_BIN=containerd-fuse-overlayfs-grpc

VERSION ?= $(shell $(GIT) describe --match 'v[0-9]*' --dirty='.m' --always --tags)
VERSION_TRIMMED := $(VERSION:v%=%)
REVISION=$(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi)
REVISION ?= $(shell $(GIT) rev-parse HEAD)$(shell if ! $(GIT) diff --no-ext-diff --quiet --exit-code; then $(ECHO) .m; fi)

PKG_MAIN := github.com/containerd/fuse-overlayfs-snapshotter/cmd/containerd-fuse-overlayfs-grpc
PKG_VERSION := github.com/containerd/fuse-overlayfs-snapshotter/cmd/containerd-fuse-overlayfs-grpc/version
PKG_MAIN := github.com/containerd/fuse-overlayfs-snapshotter/cmd/$(TARGET_BIN)
PKG_VERSION := github.com/containerd/fuse-overlayfs-snapshotter/cmd/$(TARGET_BIN)/version

GO ?= go
export GO_BUILD=GO111MODULE=on CGO_ENABLED=0 $(GO) build -ldflags "-s -w -X $(PKG_VERSION).Version=$(VERSION) -X $(PKG_VERSION).Revision=$(REVISION)"

bin/containerd-fuse-overlayfs-grpc:
bin/$(TARGET_BIN):
$(GO_BUILD) -o $@ $(PKG_MAIN)

all: binaries

help:
@$(ECHO) "Usage: make <target>"
@$(ECHO)
@$(ECHO) " * 'install' - Install binaries to system locations."
@$(ECHO) " * 'uninstall' - Uninstall binaries from system."
@$(ECHO) " * 'binaries' - Build $(TARGET_BIN)."
@$(ECHO) " * 'test' - Run tests."
@$(ECHO) " * 'clean' - Clean artifacts."
@$(ECHO) " * 'help' - Show this help message."

binaries: bin/$(TARGET_BIN)

$(TARGET_BIN):
$(GO_BUILD) -o $(CURDIR)/bin/$@ $(PKG_MAIN)

binaries: $(TARGET_BIN)

install:
install bin/containerd-fuse-overlayfs-grpc $(DESTDIR)/bin
$(INSTALL) -D -m 755 $(CURDIR)/bin/$(TARGET_BIN) $(BINDIR)/$(TARGET_BIN)

uninstall:
rm -f $(DESTDIR)/bin/containerd-fuse-overlayfs-grpc
$(RM) $(BINDIR)/$(TARGET_BIN)

clean:
rm -rf bin
$(RM) -r $(CURDIR)/bin $(CURDIR)/_output

TEST_DOCKER_IMG_TAG=containerd-fuse-overlayfs-test

test:
DOCKER_BUILDKIT=1 docker build -t containerd-fuse-overlayfs-test --build-arg FUSEOVERLAYFS_COMMIT=${FUSEOVERLAYFS_COMMIT} .
docker run --rm containerd-fuse-overlayfs-test fuse-overlayfs -V
docker run --rm --security-opt seccomp=unconfined --security-opt apparmor=unconfined --device /dev/fuse containerd-fuse-overlayfs-test
docker rmi containerd-fuse-overlayfs-test
DOCKER_BUILDKIT=1 $(DOCKER) build -t $(TEST_DOCKER_IMG_TAG) --build-arg FUSEOVERLAYFS_COMMIT=${FUSEOVERLAYFS_COMMIT} .
$(DOCKER) run --rm $(TEST_DOCKER_IMG_TAG) fuse-overlayfs -V
$(DOCKER) run --rm --security-opt seccomp=unconfined --security-opt apparmor=unconfined --device /dev/fuse $(TEST_DOCKER_IMG_TAG)
$(DOCKER) rmi $(TEST_DOCKER_IMG_TAG)

_test:
go test -exec rootlesskit -test.v -test.root
$(GO) test -exec rootlesskit -test.v -test.root

TAR_FLAGS=--transform 's/.*\///g' --owner=0 --group=0

ARTIFACT_NAME=containerd-fuse-overlayfs-$(VERSION_TRIMMED)

artifacts: clean
mkdir -p _output
GOOS=linux GOARCH=amd64 make
tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-amd64.tar.gz bin/*
GOOS=linux GOARCH=arm64 make
tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-arm64.tar.gz bin/*
$(MKDIR) -p _output
GOOS=linux GOARCH=amd64 make
$(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-amd64.tar.gz $(CURDIR)/bin/*
GOOS=linux GOARCH=arm64 make
$(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-arm64.tar.gz $(CURDIR)/bin/*
GOOS=linux GOARCH=arm GOARM=7 make
tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-arm-v7.tar.gz bin/*
GOOS=linux GOARCH=ppc64le make
tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-ppc64le.tar.gz bin/*
GOOS=linux GOARCH=s390x make
tar $(TAR_FLAGS) -czvf _output/containerd-fuse-overlayfs-$(VERSION_TRIMMED)-linux-s390x.tar.gz bin/*

.PHONY: bin/containerd-fuse-overlayfs-grpc install uninstall clean test _test artifacts
$(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-arm-v7.tar.gz $(CURDIR)/bin/*
GOOS=linux GOARCH=ppc64le make
$(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-ppc64le.tar.gz $(CURDIR)/bin/*
GOOS=linux GOARCH=s390x make
$(TAR) $(TAR_FLAGS) -czvf _output/$(ARTIFACT_NAME)-linux-s390x.tar.gz $(CURDIR)/bin/*

.PHONY: \
$(TARGET_BIN) \
install \
uninstall \
clean \
test \
_test \
artifacts \
help

0 comments on commit 329e079

Please sign in to comment.