6c9628cdb1
* Rename 'vendor/src' -> 'vendor' * Ignore vendor/ instead of vendor/src/ for lint * Rename 'cmd/client' -> 'cmd/ocic' to make it 'go install'able * Rename 'cmd/server' -> 'cmd/ocid' to make it 'go install'able * Update Makefile to build and install from GOPATH * Update tests to locate ocid/ocic in GOPATH/bin * Search for binaries in GOPATH/bin instead of PATH * Install tools using `go get -u`, so they are updated on each run Signed-off-by: Jonathan Yu <jawnsy@redhat.com>
193 lines
4.8 KiB
Makefile
193 lines
4.8 KiB
Makefile
GO ?= go
|
|
EPOCH_TEST_COMMIT ?= 78aae688e2932f0cfc2a23e28ad30b58c6b8577f
|
|
PROJECT := github.com/kubernetes-incubator/cri-o
|
|
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
GIT_BRANCH_CLEAN := $(shell echo $(GIT_BRANCH) | sed -e "s/[^[:alnum:]]/-/g")
|
|
OCID_IMAGE := ocid_dev$(if $(GIT_BRANCH_CLEAN),:$(GIT_BRANCH_CLEAN))
|
|
OCID_INSTANCE := ocid_dev
|
|
PREFIX ?= ${DESTDIR}/usr/local
|
|
BINDIR ?= ${PREFIX}/bin
|
|
LIBEXECDIR ?= ${PREFIX}/libexec
|
|
MANDIR ?= ${PREFIX}/share/man
|
|
ETCDIR ?= ${DESTDIR}/etc
|
|
ETCDIR_OCID ?= ${ETCDIR}/ocid
|
|
BUILDTAGS := selinux seccomp $(shell hack/btrfs_tag.sh) $(shell hack/libdm_tag.sh)
|
|
BASHINSTALLDIR=${PREFIX}/share/bash-completion/completions
|
|
|
|
all: binaries ocid.conf docs
|
|
|
|
default: help
|
|
|
|
help:
|
|
@echo "Usage: make <target>"
|
|
@echo
|
|
@echo " * 'install' - Install binaries to system locations"
|
|
@echo " * 'binaries' - Build ocid, conmon and ocic"
|
|
@echo " * 'integration' - Execute integration tests"
|
|
@echo " * 'clean' - Clean artifacts"
|
|
@echo " * 'lint' - Execute the source code linter"
|
|
@echo " * 'gofmt' - Verify the source code gofmt"
|
|
|
|
lint:
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
@echo "checking lint"
|
|
@./.tool/lint
|
|
|
|
gofmt:
|
|
@./hack/verify-gofmt.sh
|
|
|
|
conmon:
|
|
make -C $@
|
|
|
|
pause:
|
|
make -C $@
|
|
|
|
ocid:
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
$(GO) install \
|
|
-tags "$(BUILDTAGS)" \
|
|
$(PROJECT)/cmd/ocid
|
|
|
|
ocic:
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
$(GO) install $(PROJECT)/cmd/ocic
|
|
|
|
kpod:
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
$(GO) install $(PROJECT)/cmd/kpod
|
|
|
|
ocid.conf: ocid
|
|
$(GOPATH)/bin/ocid --config="" config --default > ocid.conf
|
|
|
|
clean:
|
|
rm -f docs/*.1 docs/*.5 docs/*.8
|
|
find . -name \*~ -delete
|
|
find . -name \#\* -delete
|
|
make -C conmon clean
|
|
make -C pause clean
|
|
|
|
ocidimage:
|
|
docker build -t ${OCID_IMAGE} .
|
|
|
|
dbuild: ocidimage
|
|
docker run --name=${OCID_INSTANCE} --privileged ${OCID_IMAGE} -v ${PWD}:/go/src/${PROJECT} --rm make binaries
|
|
|
|
integration: ocidimage
|
|
docker run -e TESTFLAGS -e TRAVIS -t --privileged --rm -v ${CURDIR}:/go/src/${PROJECT} ${OCID_IMAGE} make localintegration
|
|
|
|
localintegration: binaries
|
|
./test/test_runner.sh ${TESTFLAGS}
|
|
|
|
binaries: ocid ocic kpod conmon pause
|
|
|
|
MANPAGES_MD := $(wildcard docs/*.md)
|
|
MANPAGES := $(MANPAGES_MD:%.md=%)
|
|
|
|
docs/%.1: docs/%.1.md
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
$(GOPATH)/bin/go-md2man -in $< -out $@.tmp && touch $@.tmp && mv $@.tmp $@
|
|
|
|
docs/%.5: docs/%.5.md
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
$(GOPATH)/bin/go-md2man -in $< -out $@.tmp && touch $@.tmp && mv $@.tmp $@
|
|
|
|
docs/%.8: docs/%.8.md
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
$(GOPATH)/bin/go-md2man -in $< -out $@.tmp && touch $@.tmp && mv $@.tmp $@
|
|
|
|
docs: $(MANPAGES)
|
|
|
|
install:
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
install -D -m 755 $(GOPATH)/bin/ocid $(BINDIR)/ocid
|
|
install -D -m 755 $(GOPATH)/bin/ocic $(BINDIR)/ocic
|
|
install -D -m 755 $(GOPATH)/bin/kpod $(BINDIR)/kpod
|
|
install -D -m 755 conmon/conmon $(LIBEXECDIR)/ocid/conmon
|
|
install -D -m 755 pause/pause $(LIBEXECDIR)/ocid/pause
|
|
install -d -m 755 $(MANDIR)/man1
|
|
install -d -m 755 $(MANDIR)/man5
|
|
install -d -m 755 $(MANDIR)/man8
|
|
install -m 644 $(filter %.1,$(MANPAGES)) -t $(MANDIR)/man1
|
|
install -m 644 $(filter %.5,$(MANPAGES)) -t $(MANDIR)/man5
|
|
install -m 644 $(filter %.8,$(MANPAGES)) -t $(MANDIR)/man8
|
|
|
|
install.config:
|
|
install -D -m 644 ocid.conf $(ETCDIR_OCID)/ocid.conf
|
|
install -D -m 644 seccomp.json $(ETCDIR_OCID)/seccomp.json
|
|
|
|
install.completions:
|
|
install -d -m 755 ${BASHINSTALLDIR}
|
|
install -m 644 -D completions/bash/kpod ${BASHINSTALLDIR}
|
|
|
|
install.systemd:
|
|
install -D -m 644 contrib/systemd/ocid.service $(PREFIX)/lib/systemd/system/ocid.service
|
|
|
|
uninstall:
|
|
rm -f $(BINDIR)/ocid
|
|
rm -f $(BINDIR)/ocic
|
|
rm -f $(LIBEXECDIR)/ocid/conmon
|
|
rm -f $(LIBEXECDIR)/ocid/pause
|
|
for i in $(filter %.1,$(MANPAGES)); do \
|
|
rm -f $(MANDIR)/man8/$$(basename $${i}); \
|
|
done
|
|
for i in $(filter %.5,$(MANPAGES)); do \
|
|
rm -f $(MANDIR)/man5/$$(basename $${i}); \
|
|
done
|
|
for i in $(filter %.8,$(MANPAGES)); do \
|
|
rm -f $(MANDIR)/man8/$$(basename $${i}); \
|
|
done
|
|
|
|
.PHONY: .gitvalidation
|
|
# When this is running in travis, it will only check the travis commit range
|
|
.gitvalidation:
|
|
ifndef GOPATH
|
|
$(error GOPATH is not set)
|
|
endif
|
|
ifeq ($(TRAVIS),true)
|
|
$(GOPATH)/bin/git-validation -q -run DCO,short-subject
|
|
else
|
|
$(GOPATH)/bin/ -v -run DCO,short-subject -range $(EPOCH_TEST_COMMIT)..HEAD
|
|
endif
|
|
|
|
.PHONY: install.tools
|
|
|
|
install.tools: .install.gitvalidation .install.gometalinter .install.md2man
|
|
|
|
.install.gitvalidation:
|
|
go get -u github.com/vbatts/git-validation
|
|
|
|
.install.gometalinter:
|
|
go get -u github.com/alecthomas/gometalinter
|
|
$(GOPATH)/bin/gometalinter --install
|
|
|
|
.install.md2man:
|
|
go get -u github.com/cpuguy83/go-md2man
|
|
|
|
.PHONY: \
|
|
binaries \
|
|
clean \
|
|
conmon \
|
|
default \
|
|
docs \
|
|
gofmt \
|
|
help \
|
|
install \
|
|
lint \
|
|
pause \
|
|
uninstall
|