commit 0eb5897fd95a27f5b71f3e32d7ff4f7cbe2ea547 Author: Michael Crosby Date: Mon Apr 6 10:40:40 2020 -0400 Initial commit of makefile and setup scripts Signed-off-by: Michael Crosby diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..3b5018c0b --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +# Copyright (c) 2020 Docker Inc. + +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, +# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH +# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +PACKAGES=$(shell go list ./... | grep -v /vendor/) +GIT_COMMIT=$(shell git rev-parse --short HEAD) +GOOS ?= $(shell go env GOOS) + +all: protos + +protos: + @protobuild --quiet ${PACKAGES} + +FORCE: + +.PHONY: protos diff --git a/README.md b/README.md new file mode 100644 index 000000000..a88b496bc --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# Docker API + +## Dev Setup + +To setup a development machine to update the API protobufs, first run the `./setup-dev.sh` script +to install the correct version of protobufs on your system and get the protobuild binary. diff --git a/scripts/setup/install-protobuf b/scripts/setup/install-protobuf new file mode 100755 index 000000000..88a9c983e --- /dev/null +++ b/scripts/setup/install-protobuf @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +# Copyright The containerd Authors. + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# +# Downloads and installs protobuf +# +set -eu -o pipefail + +PROTOBUF_VERSION=3.11.4 +GOARCH=$(go env GOARCH) +GOOS=$(go env GOOS) +PROTOBUF_DIR=$(mktemp -d) + +case $GOARCH in + +arm64) + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-aarch64.zip" + unzip $PROTOBUF_DIR/protobuf -d /usr/local + ;; + +amd64|386) + if [ "$GOOS" = windows ]; then + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-win32.zip" + elif [ "$GOOS" = linux ]; then + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-x86_64.zip" + fi + unzip $PROTOBUF_DIR/protobuf -d /usr/local + ;; + +ppc64le) + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-linux-ppcle_64.zip" + unzip $PROTOBUF_DIR/protobuf -d /usr/local + ;; +*) + wget -O $PROTOBUF_DIR/protobuf "https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-cpp-$PROTOBUF_VERSION.zip" + unzip $PROTOBUF_DIR/protobuf -d /usr/src/protobuf + cd /usr/src/protobuf/protobuf-$PROTOBUF_VERSION + ./autogen.sh + ./configure --disable-shared + make + make check + make install + ldconfig + ;; +esac +rm -rf $PROTOBUF_DIR diff --git a/setup-dev.sh b/setup-dev.sh new file mode 100755 index 000000000..1e78ca6e2 --- /dev/null +++ b/setup-dev.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# Copyright (c) 2020 Docker Inc. + +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, +# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH +# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +./scripts/setup/install-protobufs + +go get github.com/stevvooe/protobuild