mirror of https://github.com/kubernetes/kops.git
Merge pull request #5636 from lblackstone/debuggable
Add `DEBUGGABLE` option to Makefile to compile debuggable bins
This commit is contained in:
commit
a207d60e00
30
Makefile
30
Makefile
|
@ -43,6 +43,7 @@ TESTABLE_PACKAGES:=$(shell egrep -v "k8s.io/kops/vendor" hack/.packages)
|
|||
GOVETABLE_PACKAGES:=$(shell egrep -v "k8s.io/kops/cloudmock|k8s.io/kops/vendor|clientset/fake" hack/.packages)
|
||||
BAZEL_OPTIONS?=
|
||||
API_OPTIONS?=
|
||||
GCFLAGS?=
|
||||
|
||||
# See http://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile
|
||||
MAKEDIR:=$(strip $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))"))
|
||||
|
@ -121,9 +122,14 @@ ifndef SHASUMCMD
|
|||
$(error "Neither sha1sum nor shasum command is available")
|
||||
endif
|
||||
|
||||
# Set compiler flags to allow binary debugging
|
||||
ifdef DEBUGGABLE
|
||||
GCFLAGS=-gcflags "all=-N -l"
|
||||
endif
|
||||
|
||||
.PHONY: kops-install # Install kops to local $GOPATH/bin
|
||||
kops-install: gobindata-tool ${BINDATA_TARGETS}
|
||||
go install ${EXTRA_BUILDFLAGS} ${LDFLAGS}"-X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA} ${EXTRA_LDFLAGS}" k8s.io/kops/cmd/kops/
|
||||
go install ${GCFLAGS} ${EXTRA_BUILDFLAGS} ${LDFLAGS}"-X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA} ${EXTRA_LDFLAGS}" k8s.io/kops/cmd/kops/
|
||||
|
||||
.PHONY: channels-install # Install channels to local $GOPATH/bin
|
||||
channels-install: ${CHANNELS}
|
||||
|
@ -174,11 +180,11 @@ kops: ${KOPS}
|
|||
|
||||
.PHONY: ${KOPS}
|
||||
${KOPS}: ${BINDATA_TARGETS}
|
||||
go build ${EXTRA_BUILDFLAGS} ${LDFLAGS}"-X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA} ${EXTRA_LDFLAGS}" -o $@ k8s.io/kops/cmd/kops/
|
||||
go build ${GCFLAGS} ${EXTRA_BUILDFLAGS} ${LDFLAGS}"-X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA} ${EXTRA_LDFLAGS}" -o $@ k8s.io/kops/cmd/kops/
|
||||
|
||||
${GOBINDATA}:
|
||||
mkdir -p ${LOCAL}
|
||||
go build ${EXTRA_BUILDFLAGS} ${LDFLAGS}"${EXTRA_LDFLAGS}" -o $@ k8s.io/kops/vendor/github.com/jteeuwen/go-bindata/go-bindata
|
||||
go build ${GCFLAGS} ${EXTRA_BUILDFLAGS} ${LDFLAGS}"${EXTRA_LDFLAGS}" -o $@ k8s.io/kops/vendor/github.com/jteeuwen/go-bindata/go-bindata
|
||||
|
||||
.PHONY: gobindata-tool
|
||||
gobindata-tool: ${GOBINDATA}
|
||||
|
@ -232,7 +238,7 @@ test: ${BINDATA_TARGETS} # Run tests locally
|
|||
.PHONY: ${DIST}/linux/amd64/nodeup
|
||||
${DIST}/linux/amd64/nodeup: ${BINDATA_TARGETS}
|
||||
mkdir -p ${DIST}
|
||||
GOOS=linux GOARCH=amd64 go build -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/nodeup
|
||||
GOOS=linux GOARCH=amd64 go build ${GCFLAGS} -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/nodeup
|
||||
|
||||
.PHONY: crossbuild-nodeup
|
||||
crossbuild-nodeup: ${DIST}/linux/amd64/nodeup
|
||||
|
@ -246,17 +252,17 @@ crossbuild-nodeup-in-docker:
|
|||
.PHONY: ${DIST}/darwin/amd64/kops
|
||||
${DIST}/darwin/amd64/kops: ${BINDATA_TARGETS}
|
||||
mkdir -p ${DIST}
|
||||
GOOS=darwin GOARCH=amd64 go build -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
|
||||
GOOS=darwin GOARCH=amd64 go build ${GCFLAGS} -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
|
||||
|
||||
.PHONY: ${DIST}/linux/amd64/kops
|
||||
${DIST}/linux/amd64/kops: ${BINDATA_TARGETS}
|
||||
mkdir -p ${DIST}
|
||||
GOOS=linux GOARCH=amd64 go build -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
|
||||
GOOS=linux GOARCH=amd64 go build ${GCFLAGS} -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
|
||||
|
||||
.PHONY: ${DIST}/windows/amd64/kops.exe
|
||||
${DIST}/windows/amd64/kops.exe: ${BINDATA_TARGETS}
|
||||
mkdir -p ${DIST}
|
||||
GOOS=windows GOARCH=amd64 go build -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
|
||||
GOOS=windows GOARCH=amd64 go build ${GCFLAGS} -a ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops
|
||||
|
||||
|
||||
.PHONY: crossbuild
|
||||
|
@ -376,7 +382,7 @@ push-aws-run: push
|
|||
|
||||
.PHONY: ${PROTOKUBE}
|
||||
${PROTOKUBE}:
|
||||
go build -o $@ -tags 'peer_name_alternative peer_name_hash' k8s.io/kops/protokube/cmd/protokube
|
||||
go build ${GCFLAGS} -o $@ -tags 'peer_name_alternative peer_name_hash' k8s.io/kops/protokube/cmd/protokube
|
||||
|
||||
.PHONY: protokube
|
||||
protokube: ${PROTOKUBE}
|
||||
|
@ -412,7 +418,7 @@ nodeup: ${NODEUP}
|
|||
|
||||
.PHONY: ${NODEUP}
|
||||
${NODEUP}: ${BINDATA_TARGETS}
|
||||
go build ${EXTRA_BUILDFLAGS} ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" -o $@ k8s.io/kops/cmd/nodeup
|
||||
go build ${GCFLAGS} ${EXTRA_BUILDFLAGS} ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops.Version=${VERSION} -X k8s.io/kops.GitVersion=${GITSHA}" -o $@ k8s.io/kops/cmd/nodeup
|
||||
|
||||
.PHONY: nodeup-dist
|
||||
nodeup-dist:
|
||||
|
@ -426,7 +432,7 @@ nodeup-dist:
|
|||
|
||||
.PHONY: dns-controller-gocode
|
||||
dns-controller-gocode:
|
||||
go install -tags 'peer_name_alternative peer_name_hash' ${LDFLAGS}"${EXTRA_LDFLAGS} -X main.BuildVersion=${DNS_CONTROLLER_TAG}" k8s.io/kops/dns-controller/cmd/dns-controller
|
||||
go install ${GCFLAGS} -tags 'peer_name_alternative peer_name_hash' ${LDFLAGS}"${EXTRA_LDFLAGS} -X main.BuildVersion=${DNS_CONTROLLER_TAG}" k8s.io/kops/dns-controller/cmd/dns-controller
|
||||
|
||||
.PHONY: dns-controller-builder-image
|
||||
dns-controller-builder-image:
|
||||
|
@ -556,7 +562,7 @@ channels: ${CHANNELS}
|
|||
|
||||
.PHONY: ${CHANNELS}
|
||||
${CHANNELS}:
|
||||
go build ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"-X k8s.io/kops.Version=${VERSION} ${EXTRA_LDFLAGS}" k8s.io/kops/channels/cmd/channels
|
||||
go build ${GCFLAGS} ${EXTRA_BUILDFLAGS} -o $@ ${LDFLAGS}"-X k8s.io/kops.Version=${VERSION} ${EXTRA_LDFLAGS}" k8s.io/kops/channels/cmd/channels
|
||||
|
||||
# --------------------------------------------------
|
||||
# release tasks
|
||||
|
@ -615,7 +621,7 @@ verify-apimachinery:
|
|||
|
||||
.PHONY: kops-server-docker-compile
|
||||
kops-server-docker-compile:
|
||||
GOOS=linux GOARCH=amd64 go build -a ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/amd64/kops-server ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops-server.Version=${VERSION} -X k8s.io/kops-server.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops-server
|
||||
GOOS=linux GOARCH=amd64 go build ${GCFLAGS} -a ${EXTRA_BUILDFLAGS} -o ${DIST}/linux/amd64/kops-server ${LDFLAGS}"${EXTRA_LDFLAGS} -X k8s.io/kops-server.Version=${VERSION} -X k8s.io/kops-server.GitVersion=${GITSHA}" k8s.io/kops/cmd/kops-server
|
||||
|
||||
.PHONY: kops-server-build
|
||||
kops-server-build:
|
||||
|
|
|
@ -27,6 +27,22 @@ make
|
|||
|
||||
Cross compiling for things like `nodeup` are now done automatically via `make nodeup`. `make push-aws-run TARGET=admin@$TARGET` will automatically choose the linux amd64 build from your `.build` directory.
|
||||
|
||||
## Debugging
|
||||
|
||||
To enable interactive debugging, the kops binary needs to be specially compiled to include debugging symbols.
|
||||
Add `DEBUGGING=true` to the `make` invocation to set the compile flags appropriately.
|
||||
|
||||
For example, `DEBUGGING=true make` will produce a kops binary that can be interactively debugged.
|
||||
|
||||
### Interactive debugging with Delve
|
||||
|
||||
[Delve](https://github.com/derekparker/delve) can be used to interactively debug the kops binary.
|
||||
After installing Delve, you can use it directly, or run it in headless mode for use with an
|
||||
Interactive Development Environment (IDE).
|
||||
|
||||
For example, run `dlv --listen=:2345 --headless=true --api-version=2 exec ${GOPATH}/bin/kops -- <kops command>`,
|
||||
and then configure your IDE to connect its debugger to port 2345 on localhost.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- Make sure `$GOPATH` is set, and your [workspace](https://golang.org/doc/code.html#Workspaces) is configured.
|
||||
|
|
Loading…
Reference in New Issue