mirror of
https://github.com/containers/skopeo.git
synced 2025-10-21 19:03:44 +00:00
75 lines
2.4 KiB
Makefile
75 lines
2.4 KiB
Makefile
.PHONY: all binary build clean install install-binary man shell test-integration
|
|
|
|
export GO15VENDOREXPERIMENT=1
|
|
|
|
PREFIX ?= ${DESTDIR}/usr
|
|
INSTALLDIR=${PREFIX}/bin
|
|
MANINSTALLDIR=${PREFIX}/share/man
|
|
# TODO(runcom)
|
|
#BASHINSTALLDIR=${PREFIX}/share/bash-completion/completions
|
|
|
|
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
DOCKER_IMAGE := skopeo-dev$(if $(GIT_BRANCH),:$(GIT_BRANCH))
|
|
# set env like gobuildtag?
|
|
DOCKER_FLAGS := docker run --rm -i #$(DOCKER_ENVS)
|
|
# if this session isn't interactive, then we don't want to allocate a
|
|
# TTY, which would fail, but if it is interactive, we do want to attach
|
|
# so that the user can send e.g. ^C through.
|
|
INTERACTIVE := $(shell [ -t 0 ] && echo 1 || echo 0)
|
|
ifeq ($(INTERACTIVE), 1)
|
|
DOCKER_FLAGS += -t
|
|
endif
|
|
DOCKER_RUN_DOCKER := $(DOCKER_FLAGS) "$(DOCKER_IMAGE)"
|
|
|
|
GIT_COMMIT := $(shell git rev-parse HEAD 2> /dev/null || true)
|
|
LDFLAGS := "-X github.com/projectatomic/skopeo.GitCommit=${GIT_COMMIT} ${LDFLAGS}"
|
|
|
|
all: man binary
|
|
|
|
binary:
|
|
go build -ldflags ${LDFLAGS} -o ${DEST}skopeo ./cmd/skopeo
|
|
|
|
build-container:
|
|
docker build ${DOCKER_BUILD_ARGS} -t "$(DOCKER_IMAGE)" .
|
|
|
|
clean:
|
|
rm -f skopeo
|
|
rm -f skopeo.1
|
|
|
|
install: install-binary
|
|
install -m 644 skopeo.1 ${MANINSTALLDIR}/man1/
|
|
# TODO(runcom)
|
|
#install -m 644 completion/bash/skopeo ${BASHINSTALLDIR}/
|
|
|
|
install-binary:
|
|
install -d -m 0755 ${INSTALLDIR}
|
|
install -m 755 skopeo ${INSTALLDIR}
|
|
|
|
man:
|
|
go-md2man -in man/skopeo.1.md -out skopeo.1
|
|
|
|
shell: build-container
|
|
$(DOCKER_RUN_DOCKER) bash
|
|
|
|
check: validate test-unit test-integration
|
|
|
|
# The tests can run out of entropy and block in containers, so replace /dev/random.
|
|
test-integration: build-container
|
|
$(DOCKER_RUN_DOCKER) bash -c 'rm -f /dev/random; ln -sf /dev/urandom /dev/random; hack/make.sh test-integration'
|
|
|
|
test-unit: build-container
|
|
# Just call (make test unit-local) here instead of worrying about environment differences, e.g. GO15VENDOREXPERIMENT.
|
|
$(DOCKER_RUN_DOCKER) make test-unit-local
|
|
|
|
validate: build-container
|
|
$(DOCKER_RUN_DOCKER) hack/make.sh validate-git-marks validate-gofmt validate-lint validate-vet
|
|
|
|
# This target is only intended for development, e.g. executing it from an IDE. Use (make test) for CI or pre-release testing.
|
|
test-all-local: validate-local test-unit-local
|
|
|
|
validate-local:
|
|
hack/make.sh validate-git-marks validate-gofmt validate-lint validate-vet
|
|
|
|
test-unit-local:
|
|
go test $$(go list -e ./... | grep -v '^github\.com/projectatomic/skopeo/\(integration\|vendor/.*\)$$')
|