mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
b7dadf0f7b
This was added by commit 993cbf9db but since some time ago (go 1.13
for sure, but may be earlier) is no longer needed since all the tools
are correctly skipping vendor subdir.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
167 lines
4.9 KiB
Makefile
167 lines
4.9 KiB
Makefile
.PHONY: all shell dbuild man release \
|
|
localtest localunittest localintegration \
|
|
test unittest integration \
|
|
cross localcross vendor verify-dependencies
|
|
|
|
CONTAINER_ENGINE := docker
|
|
GO := go
|
|
|
|
SOURCES := $(shell find . 2>&1 | grep -E '.*\.(c|h|go)$$')
|
|
PREFIX := $(DESTDIR)/usr/local
|
|
BINDIR := $(PREFIX)/sbin
|
|
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g")
|
|
RUNC_IMAGE := runc_dev$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN))
|
|
PROJECT := github.com/opencontainers/runc
|
|
BUILDTAGS ?= seccomp selinux apparmor
|
|
COMMIT_NO := $(shell git rev-parse HEAD 2> /dev/null || true)
|
|
COMMIT ?= $(if $(shell git status --porcelain --untracked-files=no),"$(COMMIT_NO)-dirty","$(COMMIT_NO)")
|
|
VERSION := $(shell cat ./VERSION)
|
|
|
|
# TODO: rm -mod=vendor once go 1.13 will be unsupported
|
|
GO_BUILD := $(GO) build -mod=vendor -buildmode=pie $(EXTRA_FLAGS) -tags "$(BUILDTAGS)" \
|
|
-ldflags "-X main.gitCommit=$(COMMIT) -X main.version=$(VERSION) $(EXTRA_LDFLAGS)"
|
|
GO_BUILD_STATIC := CGO_ENABLED=1 $(GO) build -mod=vendor $(EXTRA_FLAGS) -tags "$(BUILDTAGS) netgo osusergo" \
|
|
-ldflags "-w -extldflags -static -X main.gitCommit=$(COMMIT) -X main.version=$(VERSION) $(EXTRA_LDFLAGS)"
|
|
|
|
MAN_DIR := $(CURDIR)/man/man8
|
|
MAN_PAGES = $(shell ls $(MAN_DIR)/*.8)
|
|
MAN_PAGES_BASE = $(notdir $(MAN_PAGES))
|
|
MAN_INSTALL_PATH := $(PREFIX)/share/man/man8/
|
|
|
|
RELEASE_DIR := $(CURDIR)/release
|
|
|
|
SHELL := $(shell command -v bash 2>/dev/null)
|
|
|
|
.DEFAULT: runc
|
|
|
|
runc: $(SOURCES)
|
|
$(GO_BUILD) -o runc .
|
|
|
|
all: runc recvtty
|
|
|
|
recvtty: contrib/cmd/recvtty/recvtty
|
|
|
|
contrib/cmd/recvtty/recvtty: $(SOURCES)
|
|
$(GO_BUILD) -o contrib/cmd/recvtty/recvtty ./contrib/cmd/recvtty
|
|
|
|
static: $(SOURCES)
|
|
$(GO_BUILD_STATIC) -o runc .
|
|
$(GO_BUILD_STATIC) -o contrib/cmd/recvtty/recvtty ./contrib/cmd/recvtty
|
|
|
|
release:
|
|
script/release.sh -r release/$(VERSION) -v $(VERSION)
|
|
|
|
dbuild: runcimage
|
|
$(CONTAINER_ENGINE) run $(CONTAINER_ENGINE_RUN_FLAGS) \
|
|
--privileged --rm \
|
|
-v $(CURDIR):/go/src/$(PROJECT) \
|
|
$(RUNC_IMAGE) make clean all
|
|
|
|
lint:
|
|
$(GO) vet ./...
|
|
$(GO) fmt ./...
|
|
|
|
man:
|
|
man/md2man-all.sh
|
|
|
|
runcimage:
|
|
$(CONTAINER_ENGINE) build $(CONTAINER_ENGINE_BUILD_FLAGS) -t $(RUNC_IMAGE) .
|
|
|
|
test:
|
|
make unittest integration rootlessintegration
|
|
|
|
localtest:
|
|
make localunittest localintegration localrootlessintegration
|
|
|
|
unittest: runcimage
|
|
$(CONTAINER_ENGINE) run $(CONTAINER_ENGINE_RUN_FLAGS) \
|
|
-t --privileged --rm \
|
|
-v /lib/modules:/lib/modules:ro \
|
|
-v $(CURDIR):/go/src/$(PROJECT) \
|
|
$(RUNC_IMAGE) make localunittest TESTFLAGS=$(TESTFLAGS)
|
|
|
|
localunittest: all
|
|
$(GO) test -timeout 3m -tags "$(BUILDTAGS)" $(TESTFLAGS) -v ./...
|
|
|
|
integration: runcimage
|
|
$(CONTAINER_ENGINE) run $(CONTAINER_ENGINE_RUN_FLAGS) \
|
|
-t --privileged --rm \
|
|
-v /lib/modules:/lib/modules:ro \
|
|
-v $(CURDIR):/go/src/$(PROJECT) \
|
|
$(RUNC_IMAGE) make localintegration TESTPATH=$(TESTPATH)
|
|
|
|
localintegration: all
|
|
bats -t tests/integration$(TESTPATH)
|
|
|
|
rootlessintegration: runcimage
|
|
$(CONTAINER_ENGINE) run $(CONTAINER_ENGINE_RUN_FLAGS) \
|
|
-t --privileged --rm \
|
|
-v $(CURDIR):/go/src/$(PROJECT) \
|
|
-e ROOTLESS_TESTPATH \
|
|
$(RUNC_IMAGE) make localrootlessintegration
|
|
|
|
localrootlessintegration: all
|
|
tests/rootless.sh
|
|
|
|
shell: runcimage
|
|
$(CONTAINER_ENGINE) run $(CONTAINER_ENGINE_RUN_FLAGS) \
|
|
-ti --privileged --rm \
|
|
-v $(CURDIR):/go/src/$(PROJECT) \
|
|
$(RUNC_IMAGE) bash
|
|
|
|
install:
|
|
install -D -m0755 runc $(BINDIR)/runc
|
|
|
|
install-bash:
|
|
install -D -m0644 contrib/completions/bash/runc $(PREFIX)/share/bash-completion/completions/runc
|
|
|
|
install-man:
|
|
install -d -m 755 $(MAN_INSTALL_PATH)
|
|
install -m 644 $(MAN_PAGES) $(MAN_INSTALL_PATH)
|
|
|
|
uninstall:
|
|
rm -f $(BINDIR)/runc
|
|
|
|
uninstall-bash:
|
|
rm -f $(PREFIX)/share/bash-completion/completions/runc
|
|
|
|
uninstall-man:
|
|
rm -f $(addprefix $(MAN_INSTALL_PATH),$(MAN_PAGES_BASE))
|
|
|
|
clean:
|
|
rm -f runc runc-*
|
|
rm -f contrib/cmd/recvtty/recvtty
|
|
rm -rf $(RELEASE_DIR)
|
|
rm -rf $(MAN_DIR)
|
|
|
|
validate:
|
|
script/validate-gofmt
|
|
script/validate-c
|
|
$(GO) vet ./...
|
|
|
|
ci: validate test release
|
|
|
|
vendor:
|
|
export GO111MODULE=on \
|
|
$(GO) mod tidy && \
|
|
$(GO) mod vendor && \
|
|
$(GO) mod verify
|
|
|
|
verify-dependencies: vendor
|
|
@test -z "$$(git status --porcelain -- go.mod go.sum vendor/)" \
|
|
|| (echo -e "git status:\n $$(git status -- go.mod go.sum vendor/)\nerror: vendor/, go.mod and/or go.sum not up to date. Run \"make vendor\" to update"; exit 1) \
|
|
&& echo "all vendor files are up to date."
|
|
|
|
cross: runcimage
|
|
$(CONTAINER_ENGINE) run $(CONTAINER_ENGINE_RUN_FLAGS) \
|
|
-e BUILDTAGS="$(BUILDTAGS)" --rm \
|
|
-v $(CURDIR):/go/src/$(PROJECT) \
|
|
$(RUNC_IMAGE) make localcross
|
|
|
|
localcross:
|
|
CGO_ENABLED=1 GOARCH=arm GOARM=6 CC=arm-linux-gnueabi-gcc $(GO_BUILD) -o runc-armel .
|
|
CGO_ENABLED=1 GOARCH=arm GOARM=7 CC=arm-linux-gnueabihf-gcc $(GO_BUILD) -o runc-armhf .
|
|
CGO_ENABLED=1 GOARCH=arm64 CC=aarch64-linux-gnu-gcc $(GO_BUILD) -o runc-arm64 .
|
|
CGO_ENABLED=1 GOARCH=ppc64le CC=powerpc64le-linux-gnu-gcc $(GO_BUILD) -o runc-ppc64le .
|