diff --git a/Makefile b/Makefile index 7a8155f0d..9fbe01a42 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ DOKKU_VERSION ?= master -SSHCOMMAND_URL ?= https://raw.githubusercontent.com/dokku/sshcommand/v0.6.0/sshcommand +SSHCOMMAND_URL ?= https://raw.githubusercontent.com/dokku/sshcommand/v0.7.0/sshcommand PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v0.3.0/plugn_0.3.0_linux_x86_64.tgz SIGIL_URL ?= https://github.com/gliderlabs/sigil/releases/download/v0.4.0/sigil_0.4.0_Linux_x86_64.tgz STACK_URL ?= https://github.com/gliderlabs/herokuish.git diff --git a/contrib/build.Dockerfile b/contrib/build.Dockerfile index 17ec3137d..57cbcd89a 100644 --- a/contrib/build.Dockerfile +++ b/contrib/build.Dockerfile @@ -2,8 +2,7 @@ FROM ubuntu:14.04 ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update -RUN apt-get -y install gcc git build-essential wget ruby-dev ruby1.9.1 lintian rpm help2man man-db +RUN apt-get update && apt-get -y install gcc git build-essential wget ruby-dev ruby1.9.1 lintian rpm help2man man-db RUN command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc ARG GOLANG_VERSION diff --git a/debian/lintian-overrides b/debian/lintian-overrides index b567152e9..52a34c0e4 100644 --- a/debian/lintian-overrides +++ b/debian/lintian-overrides @@ -3,3 +3,10 @@ dokku: maintainer-script-calls-systemctl postinst:87 dokku: changelog-file-missing-in-native-package dokku: statically-linked-binary dokku: unstripped-binary-or-object + +# The Go compiler is currently unable to produce read-only relocations +# (it produces static binaries). +dokku: hardening-no-relro + +# Built golang binaries link to libc +dokku: missing-dependency-on-libc diff --git a/plugins/config/Makefile b/plugins/config/Makefile index 4eb670252..74d8ef36e 100644 --- a/plugins/config/Makefile +++ b/plugins/config/Makefile @@ -23,3 +23,6 @@ subcommands/%: src/subcommands/*/%.go clean: rm -rf commands subcommands + +src-clean: + rm -rf .gitignore src vendor Makefile diff --git a/plugins/network/Makefile b/plugins/network/Makefile index c3017156f..2d6a5770d 100644 --- a/plugins/network/Makefile +++ b/plugins/network/Makefile @@ -1,68 +1,34 @@ include ../../common.mk +GO_ARGS ?= -a + +SUBCOMMANDS = subcommands/rebuild subcommands/rebuildall subcommands/report subcommands/set +TRIGGERS = triggers/install triggers/network-build-config triggers/network-compute-ports triggers/network-config-exists triggers/network-get-ipaddr triggers/network-get-listeners triggers/network-get-port triggers/network-get-property triggers/network-write-ipaddr triggers/network-write-port triggers/post-create triggers/post-delete build-in-docker: clean docker run --rm \ -v $$PWD/../..:$(GO_REPO_ROOT) \ -w $(GO_REPO_ROOT)/plugins/network \ $(BUILD_IMAGE) \ - bash -c "make build" || exit $$? + bash -c "GO_ARGS='$(GO_ARGS)' make build" || exit $$? build: commands subcommands triggers -subcommands: subcommands/rebuild subcommands/rebuildall subcommands/report subcommands/set -triggers: install network-build-config network-compute-ports network-config-exists network-get-ipaddr network-get-listeners network-get-port network-get-property network-write-ipaddr network-write-port post-create post-delete + commands: **/**/commands.go - go build -a -o commands src/commands/commands.go + go build $(GO_ARGS) -o commands src/commands/commands.go -subcommands/rebuild: **/**/**/rebuild.go - go build -a -o subcommands/rebuild src/subcommands/rebuild/rebuild.go +subcommands: $(SUBCOMMANDS) -subcommands/rebuildall: **/**/**/rebuildall.go - go build -a -o subcommands/rebuildall src/subcommands/rebuildall/rebuildall.go - -subcommands/report: **/**/**/report.go - go build -a -o subcommands/report src/subcommands/report/report.go - -subcommands/set: **/**/**/set.go - go build -a -o subcommands/set src/subcommands/set/set.go - -install: **/**/**/install.go - go build -a -o install src/triggers/install/install.go - -network-build-config: **/**/**/network-build-config.go - go build -a -o network-build-config src/triggers/network-build-config/network-build-config.go - -network-compute-ports: **/**/**/network-compute-ports.go - go build -a -o network-compute-ports src/triggers/network-compute-ports/network-compute-ports.go - -network-config-exists: **/**/**/network-config-exists.go - go build -a -o network-config-exists src/triggers/network-config-exists/network-config-exists.go - -network-get-ipaddr: **/**/**/network-get-ipaddr.go - go build -a -o network-get-ipaddr src/triggers/network-get-ipaddr/network-get-ipaddr.go - -network-get-listeners: **/**/**/network-get-listeners.go - go build -a -o network-get-listeners src/triggers/network-get-listeners/network-get-listeners.go - -network-get-port: **/**/**/network-get-port.go - go build -a -o network-get-port src/triggers/network-get-port/network-get-port.go - -network-get-property: **/**/**/network-get-property.go - go build -a -o network-get-property src/triggers/network-get-property/network-get-property.go - -network-write-ipaddr: **/**/**/network-write-ipaddr.go - go build -a -o network-write-ipaddr src/triggers/network-write-ipaddr/network-write-ipaddr.go - -network-write-port: **/**/**/network-write-port.go - go build -a -o network-write-port src/triggers/network-write-port/network-write-port.go - -post-create: **/**/**/post-create.go - go build -a -o post-create src/triggers/post-create/post-create.go - -post-delete: **/**/**/post-delete.go - go build -a -o post-delete src/triggers/post-delete/post-delete.go +subcommands/%: src/subcommands/*/%.go + go build $(GO_ARGS) -o $@ $< clean: rm -rf commands subcommands network-* install post-create post-delete src-clean: rm -rf .gitignore src vendor Makefile + +triggers: $(TRIGGERS) + +triggers/%: src/triggers/*/%.go + go build $(GO_ARGS) -o $@ $< + mv $@ . diff --git a/plugins/repo/Makefile b/plugins/repo/Makefile index 6c127ac4b..3940279d1 100644 --- a/plugins/repo/Makefile +++ b/plugins/repo/Makefile @@ -1,23 +1,25 @@ include ../../common.mk +GO_ARGS ?= -a + +SUBCOMMANDS = subcommands/gc subcommands/purge-cache + build-in-docker: clean docker run --rm \ -v $$PWD/../..:$(GO_REPO_ROOT) \ -w $(GO_REPO_ROOT)/plugins/repo \ $(BUILD_IMAGE) \ - bash -c "make build" || exit $$? + bash -c "GO_ARGS='$(GO_ARGS)' make build" || exit $$? build: commands subcommands -subcommands: subcommands/gc subcommands/purge-cache commands: **/**/commands.go - go build -a -o commands src/commands/commands.go + go build $(GO_ARGS) -o commands src/commands/commands.go -subcommands/gc: **/**/**/gc.go - go build -a -o subcommands/gc src/subcommands/gc/gc.go +subcommands: $(SUBCOMMANDS) -subcommands/purge-cache: **/**/**/purge-cache.go - go build -a -o subcommands/purge-cache src/subcommands/purge-cache/purge-cache.go +subcommands/%: src/subcommands/*/%.go + go build $(GO_ARGS) -o $@ $< clean: rm -rf commands subcommands