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)
|
GOVETABLE_PACKAGES:=$(shell egrep -v "k8s.io/kops/cloudmock|k8s.io/kops/vendor|clientset/fake" hack/.packages)
|
||||||
BAZEL_OPTIONS?=
|
BAZEL_OPTIONS?=
|
||||||
API_OPTIONS?=
|
API_OPTIONS?=
|
||||||
|
GCFLAGS?=
|
||||||
|
|
||||||
# See http://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile
|
# See http://stackoverflow.com/questions/18136918/how-to-get-current-relative-directory-of-your-makefile
|
||||||
MAKEDIR:=$(strip $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))"))
|
MAKEDIR:=$(strip $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))"))
|
||||||
|
@ -121,9 +122,14 @@ ifndef SHASUMCMD
|
||||||
$(error "Neither sha1sum nor shasum command is available")
|
$(error "Neither sha1sum nor shasum command is available")
|
||||||
endif
|
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
|
.PHONY: kops-install # Install kops to local $GOPATH/bin
|
||||||
kops-install: gobindata-tool ${BINDATA_TARGETS}
|
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
|
.PHONY: channels-install # Install channels to local $GOPATH/bin
|
||||||
channels-install: ${CHANNELS}
|
channels-install: ${CHANNELS}
|
||||||
|
@ -174,11 +180,11 @@ kops: ${KOPS}
|
||||||
|
|
||||||
.PHONY: ${KOPS}
|
.PHONY: ${KOPS}
|
||||||
${KOPS}: ${BINDATA_TARGETS}
|
${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}:
|
${GOBINDATA}:
|
||||||
mkdir -p ${LOCAL}
|
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
|
.PHONY: gobindata-tool
|
||||||
gobindata-tool: ${GOBINDATA}
|
gobindata-tool: ${GOBINDATA}
|
||||||
|
@ -232,7 +238,7 @@ test: ${BINDATA_TARGETS} # Run tests locally
|
||||||
.PHONY: ${DIST}/linux/amd64/nodeup
|
.PHONY: ${DIST}/linux/amd64/nodeup
|
||||||
${DIST}/linux/amd64/nodeup: ${BINDATA_TARGETS}
|
${DIST}/linux/amd64/nodeup: ${BINDATA_TARGETS}
|
||||||
mkdir -p ${DIST}
|
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
|
.PHONY: crossbuild-nodeup
|
||||||
crossbuild-nodeup: ${DIST}/linux/amd64/nodeup
|
crossbuild-nodeup: ${DIST}/linux/amd64/nodeup
|
||||||
|
@ -246,17 +252,17 @@ crossbuild-nodeup-in-docker:
|
||||||
.PHONY: ${DIST}/darwin/amd64/kops
|
.PHONY: ${DIST}/darwin/amd64/kops
|
||||||
${DIST}/darwin/amd64/kops: ${BINDATA_TARGETS}
|
${DIST}/darwin/amd64/kops: ${BINDATA_TARGETS}
|
||||||
mkdir -p ${DIST}
|
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
|
.PHONY: ${DIST}/linux/amd64/kops
|
||||||
${DIST}/linux/amd64/kops: ${BINDATA_TARGETS}
|
${DIST}/linux/amd64/kops: ${BINDATA_TARGETS}
|
||||||
mkdir -p ${DIST}
|
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
|
.PHONY: ${DIST}/windows/amd64/kops.exe
|
||||||
${DIST}/windows/amd64/kops.exe: ${BINDATA_TARGETS}
|
${DIST}/windows/amd64/kops.exe: ${BINDATA_TARGETS}
|
||||||
mkdir -p ${DIST}
|
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
|
.PHONY: crossbuild
|
||||||
|
@ -376,7 +382,7 @@ push-aws-run: push
|
||||||
|
|
||||||
.PHONY: ${PROTOKUBE}
|
.PHONY: ${PROTOKUBE}
|
||||||
${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
|
.PHONY: protokube
|
||||||
protokube: ${PROTOKUBE}
|
protokube: ${PROTOKUBE}
|
||||||
|
@ -412,7 +418,7 @@ nodeup: ${NODEUP}
|
||||||
|
|
||||||
.PHONY: ${NODEUP}
|
.PHONY: ${NODEUP}
|
||||||
${NODEUP}: ${BINDATA_TARGETS}
|
${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
|
.PHONY: nodeup-dist
|
||||||
nodeup-dist:
|
nodeup-dist:
|
||||||
|
@ -426,7 +432,7 @@ nodeup-dist:
|
||||||
|
|
||||||
.PHONY: dns-controller-gocode
|
.PHONY: dns-controller-gocode
|
||||||
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
|
.PHONY: dns-controller-builder-image
|
||||||
dns-controller-builder-image:
|
dns-controller-builder-image:
|
||||||
|
@ -556,7 +562,7 @@ channels: ${CHANNELS}
|
||||||
|
|
||||||
.PHONY: ${CHANNELS}
|
.PHONY: ${CHANNELS}
|
||||||
${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
|
# release tasks
|
||||||
|
@ -615,7 +621,7 @@ verify-apimachinery:
|
||||||
|
|
||||||
.PHONY: kops-server-docker-compile
|
.PHONY: kops-server-docker-compile
|
||||||
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
|
.PHONY: kops-server-build
|
||||||
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.
|
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
|
## Troubleshooting
|
||||||
|
|
||||||
- Make sure `$GOPATH` is set, and your [workspace](https://golang.org/doc/code.html#Workspaces) is configured.
|
- Make sure `$GOPATH` is set, and your [workspace](https://golang.org/doc/code.html#Workspaces) is configured.
|
||||||
|
|
Loading…
Reference in New Issue