# This file deals with installing programs used by the build. # # It depends on: # - The `go` binary being installed in PATH. # - OSS_HOME being set. # That should be it. ifeq ($(words $(filter $(abspath $(lastword $(MAKEFILE_LIST))),$(abspath $(MAKEFILE_LIST)))),1) tools.mk := $(lastword $(MAKEFILE_LIST)) tools.dir = tools tools.bindir = $(tools.dir)/bin tools.srcdir = $(tools.dir)/src GOHOSTOS := $(shell go env GOHOSTOS) GOHOSTARCH := $(shell go env GOHOSTARCH) clobber: clobber-tools .PHONY: clobber-tools clobber-tools: rm -rf $(tools.bindir) $(tools.dir)/include $(tools.dir)/downloads go-mod-tidy: $(patsubst $(tools.srcdir)/%/go.mod,go-mod-tidy/tools/%,$(wildcard $(tools.srcdir)/*/go.mod)) .PHONY: go-mod-tidy/tools/% go-mod-tidy/tools/%: $(OSS_HOME)/build-aux/go-version.txt rm -f $(tools.srcdir)/$*/go.sum cd $(tools.srcdir)/$* && GOFLAGS=-mod=mod go mod tidy -compat=$$(cut -d. -f1,2 < $<) -go=$$(cut -d. -f1,2 < $<) # Shell scripts # ============= # tools/copy-ifchanged = $(tools.bindir)/copy-ifchanged tools/devversion = $(tools.bindir)/devversion tools/docker-promote = $(tools.bindir)/docker-promote tools/move-ifchanged = $(tools.bindir)/move-ifchanged tools/tap-driver = $(tools.bindir)/tap-driver tools/write-dockertagfile = $(tools.bindir)/write-dockertagfile tools/write-ifchanged = $(tools.bindir)/write-ifchanged $(tools.bindir)/%: $(tools.srcdir)/%.sh mkdir -p $(@D) install $< $@ # Python scripts # ============== # tools/py-list-deps = $(tools.bindir)/py-list-deps $(tools.bindir)/%: $(tools.srcdir)/%.py mkdir -p $(@D) install $< $@ # `go get`-able things # ==================== # tools/chart-doc-gen = $(tools.bindir)/chart-doc-gen tools/controller-gen = $(tools.bindir)/controller-gen tools/conversion-gen = $(tools.bindir)/conversion-gen tools/crane = $(tools.bindir)/crane tools/go-mkopensource = $(tools.bindir)/go-mkopensource tools/golangci-lint = $(tools.bindir)/golangci-lint tools/kubestatus = $(tools.bindir)/kubestatus tools/ocibuild = $(tools.bindir)/ocibuild tools/protoc-gen-go = $(tools.bindir)/protoc-gen-go tools/protoc-gen-go-grpc = $(tools.bindir)/protoc-gen-go-grpc tools/yq = $(tools.bindir)/yq $(tools.bindir)/%: $(tools.srcdir)/%/pin.go $(tools.srcdir)/%/go.mod cd $($(abspath $@) $(tools/ct).d/venv: %/venv: %/dir.txt rm -rf $@ python3 -m venv $@ $@/bin/pip3 install \ yamllint==$$(sed -n 's/ARG yamllint_version=//p' "$$(cat $<)/Dockerfile") \ yamale==$$(sed -n 's/ARG yamale_version=//p' "$$(cat $<)/Dockerfile") \ || (rm -rf $@; exit 1) $(tools/ct).d/home: %/home: %/dir.txt rm -rf $@ mkdir $@ $@/.ct cp "$$(cat $<)"/etc/* $@/.ct || (rm -rf $@; exit 1) # Inter-tool dependencies # ======================= # $(tools/devversion): $(tools/goversion) endif