瀏覽代碼

Initial commit of makefile and setup scripts

Signed-off-by: Michael Crosby <[email protected]>
Michael Crosby 5 年之前
當前提交
0eb5897fd9
共有 4 個文件被更改,包括 133 次插入0 次删除
  1. 37 0
      Makefile
  2. 6 0
      README.md
  3. 60 0
      scripts/setup/install-protobuf
  4. 30 0
      setup-dev.sh

+ 37 - 0
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

+ 6 - 0
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.

+ 60 - 0
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

+ 30 - 0
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