Add hack/update-godep-licenses.sh to generate Godeps/LICENSES.md

- Add Godeps/LICENSES.md
- Add verify-godep-licenses to verify that Godeps/LICENSES.md is up to date
- Trigger verify-godep-licenses in the pre-commit hook only if the Godeps dir has changed
- Exclude verify-godep-licenses in verify-all
- Add verify-godep-licenses to make verify (used by travis)
- Add verify-godep-licenses to shippable
- Update dev docs to mention update-godep-licenses
This commit is contained in:
Karl Isenberg 2015-12-08 13:23:59 -08:00
parent 5007d7c4a9
commit 6125f539b6
8 changed files with 214 additions and 2 deletions

103
Godeps/LICENSES.md generated Normal file
View File

@ -0,0 +1,103 @@
Dependency Licenses
-------------------
Package | License
------- | -------
bitbucket.org/bertimus9/systemstat | MITname
bitbucket.org/ww/goautoneg | spdxBSD3
github.com/abbot/go-http-auth | Apache-2
github.com/appc/cni | Apache-2
github.com/appc/spec | Apache-2
github.com/aws/aws-sdk-go | Apache-2
github.com/beorn7/perks/quantile | MIT?
github.com/blang/semver | MITname
github.com/boltdb/bolt | MITname
github.com/bradfitz/http2 | BSDlikeRef
github.com/camlistore/camlistore/pkg/errorutil | Apache-2
github.com/ClusterHQ/flocker-go | UNKNOWN
github.com/codegangsta/negroni | MITname
github.com/coreos/etcd | Apache-2
github.com/coreos/go-etcd | Apache-2
github.com/coreos/go-oidc | Apache-2
github.com/coreos/go-semver | Apache-2
github.com/coreos/go-systemd | Apache-2
github.com/coreos/pkg | Apache-2
github.com/coreos/rkt | Apache-2
github.com/cpuguy83/go-md2man | MITname
github.com/davecgh/go-spew | MIToldwithoutSellandNoDocumentationRequi
github.com/daviddengcn/go-colortext | BSD?
github.com/dgrijalva/jwt-go | spdxMIT
github.com/docker/docker | Apache-2
github.com/docker/docker/pkg/symlink | spdxBSD3
github.com/docker/spdystream | Apache-2
github.com/elazarl/go-bindata-assetfs | spdxBSD2
github.com/elazarl/goproxy | BSDWarr
github.com/emicklei/go-restful | MITname
github.com/evanphx/json-patch | BSDWarr
github.com/fsouza/go-dockerclient | spdxBSD2
github.com/garyburd/redigo/internal | ApachesPermLim
github.com/garyburd/redigo/redis | ApachesPermLim
github.com/ghodss/yaml | MITname
github.com/go-ini/ini | Apache-2
github.com/godbus/dbus | spdxBSD2
github.com/gogo/protobuf | spdxBSD3
github.com/golang/glog | Apache-2
github.com/golang/groupcache | Apache-2
github.com/golang/protobuf | spdxBSD3
github.com/google/btree | Apache-2
github.com/google/cadvisor | Apache-2
github.com/google/gofuzz | Apache-2
github.com/gorilla/context | spdxBSD3
github.com/gorilla/mux | spdxBSD3
github.com/imdario/mergo | spdxBSD3
github.com/inconshreveable/mousetrap | Apache-2
github.com/influxdb/influxdb | MITname
github.com/jmespath/go-jmespath | Apache-2
github.com/jonboulle/clockwork | Apache-2
github.com/juju/ratelimit | LesserExceptionGPLVer3-TOOLONG
github.com/kardianos/osext | spdxBSD3
github.com/kr/pty | spdxMIT
github.com/matttproud/golang_protobuf_extensions | Apache-2
github.com/mesos/mesos-go | Apache-2
github.com/miekg/dns | spdxBSD3
github.com/mitchellh/mapstructure | MITname
github.com/mxk/go-flowrate | spdxBSD3
github.com/onsi/ginkgo | spdxMIT
github.com/onsi/gomega | spdxMIT
github.com/opencontainers/runc | Apache-2
github.com/pborman/uuid | spdxBSD3
github.com/prometheus/client_golang | Apache-2
github.com/prometheus/client_model | Apache-2
github.com/prometheus/common/expfmt | Apache-2
github.com/prometheus/common/model | Apache-2
github.com/prometheus/procfs | Apache-2
github.com/rackspace/gophercloud | Apache-2
github.com/russross/blackfriday | AsIsVariant2-TOOLONG
github.com/samuel/go-zookeeper | spdxBSD3
github.com/scalingdata/gcfg | spdxBSD2
github.com/seccomp/libseccomp-golang | AllRights-TOOLONG
github.com/shurcooL/sanitized_anchor_name | MIT?
github.com/Sirupsen/logrus | MITname
github.com/skynetservices/skydns | MITname
github.com/spf13/cobra | Apache-2
github.com/spf13/pflag | spdxBSD3
github.com/stretchr/objx | MIT?
github.com/stretchr/testify | MIT?
github.com/syndtr/gocapability | spdxBSD2
github.com/ugorji/go | MITname
github.com/vishvananda/netlink | Apache-2
github.com/xiang90/probing | MITname
github.com/xyproto/simpleredis | MITname
golang.org/x/crypto | spdxBSD3
golang.org/x/exp | spdxBSD3
golang.org/x/net | spdxBSD3
golang.org/x/oauth2 | spdxBSD3
golang.org/x/sys | spdxBSD3
golang.org/x/tools | spdxBSD3
google.golang.org/api | spdxBSD3
google.golang.org/cloud | Apache-2
google.golang.org/grpc | spdxBSD3
gopkg.in/natefinch/lumberjack.v2 | MITname
gopkg.in/yaml.v2 | LesserExceptionGPLVer3-TOOLONG
k8s.io/heapster | Apache-2
speter.net/go/exp/math/dec/inf | spdxBSD2

View File

@ -52,6 +52,7 @@ verify:
hack/verify-linkcheck.sh hack/verify-linkcheck.sh
hack/verify-flags-underscore.py hack/verify-flags-underscore.py
hack/verify-godeps.sh $(BRANCH) hack/verify-godeps.sh $(BRANCH)
hack/verify-godep-licenses.sh $(BRANCH)
.PHONY: verify .PHONY: verify
# Build and run tests. # Build and run tests.

View File

@ -219,7 +219,7 @@ _If `go get -u path/to/dependency` fails with compilation errors, instead try `g
to fetch the dependencies without compiling them. This can happen when updating the cadvisor dependency._ to fetch the dependencies without compiling them. This can happen when updating the cadvisor dependency._
5) Before sending your PR, it's a good idea to sanity check that your Godeps.json file is ok by running hack/verify-godeps.sh 5) Before sending your PR, it's a good idea to sanity check that your Godeps.json file is ok by running `hack/verify-godeps.sh`
_If hack/verify-godeps.sh fails after a `godep update`, it is possible that a transitive dependency was added or removed but not _If hack/verify-godeps.sh fails after a `godep update`, it is possible that a transitive dependency was added or removed but not
updated by godeps. It then may be necessary to perform a `godep save ./...` to pick up the transitive dependency changes._ updated by godeps. It then may be necessary to perform a `godep save ./...` to pick up the transitive dependency changes._
@ -228,6 +228,10 @@ It is sometimes expedient to manually fix the /Godeps/godeps.json file to minimi
Please send dependency updates in separate commits within your PR, for easier reviewing. Please send dependency updates in separate commits within your PR, for easier reviewing.
6) If you updated the Godeps, please also update `Godeps/LICENSES.md` by running `hack/update-godep-licenses.sh`.
_If Godep does not automatically vendor the proper license file for a new dependency, be sure to add an exception entry to `hack/update-godep-licenses.sh`._
## Unit tests ## Unit tests
```sh ```sh

44
hack/update-godep-licenses.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/bash
# Copyright 2015 The Kubernetes Authors All rights reserved.
#
# 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.
# Update the Godeps/LICENSES.md document.
# Generates a table of Godep dependencies and their license.
# Requires:
# docker
# mesosphere/godep-licenses (docker image) - source: https://github.com/mesosphere/godep-licenses
# Usage:
# Run every time a license file is added/modified within /Godeps to update /Godeps/LICENSES.md.
# Add exceptions (-e <repo>:<license>) for any dependency (project) vendored by Godep
# that has a known license that isn't vendored by Godep or can't be found by godep-licenses.
set -o errexit
set -o nounset
set -o pipefail
KUBE_ROOT="${KUBE_ROOT:-$(cd "$(dirname "${BASH_SOURCE}")/.." && pwd -P)}"
cd "${KUBE_ROOT}"
exec docker run --rm -i -v "${KUBE_ROOT}:/repo" mesosphere/godep-licenses:latest -p /repo \
-e github.com/abbot/go-http-auth:Apache-2 \
-e github.com/beorn7/perks/quantile:MIT? \
-e github.com/daviddengcn/go-colortext:BSD? \
-e github.com/docker/docker/pkg/symlink:spdxBSD3 \
-e github.com/shurcooL/sanitized_anchor_name:MIT? \
-e github.com/spf13/cobra:Apache-2 \
-e github.com/stretchr/objx:MIT? \
-e github.com/stretchr/testify:MIT? \
-o md > Godeps/LICENSES.md

View File

@ -60,7 +60,7 @@ if $SILENT ; then
fi fi
# remove protobuf until it is part of direct generation # remove protobuf until it is part of direct generation
EXCLUDE="verify-godeps.sh verify-generated-protobuf.sh" EXCLUDE="verify-godeps.sh verify-godep-licenses.sh verify-generated-protobuf.sh"
ret=0 ret=0
for t in `ls $KUBE_ROOT/hack/verify-*.sh` for t in `ls $KUBE_ROOT/hack/verify-*.sh`

49
hack/verify-godep-licenses.sh Executable file
View File

@ -0,0 +1,49 @@
#!/bin/bash
# Copyright 2015 The Kubernetes Authors All rights reserved.
#
# 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.
set -o errexit
set -o nounset
set -o pipefail
KUBE_ROOT="$(cd "$(dirname "${BASH_SOURCE}")/.." && pwd -P)"
branch="${1:-master}"
# notice this uses ... to find the first shared ancestor
if ! git diff origin/"${branch}"...HEAD | grep 'Godeps/' > /dev/null; then
exit 0
fi
# create a nice clean place to put our new godeps
# must be in the user dir (e.g. KUBE_ROOT) in order for the docker volume mount to work with docker-machine on macs
_tmpdir="$(mktemp -d "${KUBE_ROOT}/kube-godep-licenses.XXXXXX")"
echo "Created workspace: ${_tmpdir}"
function cleanup {
echo "Removing workspace: ${_tmpdir}"
rm -rf "${_tmpdir}"
}
trap cleanup EXIT
cp -r "${KUBE_ROOT}/Godeps" "${_tmpdir}/Godeps"
# Update Godep Licenses
KUBE_ROOT="${_tmpdir}" "${KUBE_ROOT}/hack/update-godep-licenses.sh"
# Compare Godep Licenses
if ! _out="$(diff -Naupr ${KUBE_ROOT}/Godeps/LICENSES.md ${_tmpdir}/Godeps/LICENSES.md)"; then
echo "Your godep licenses file is out of date. Run hack/update-godep-licenses.sh and commit the results."
echo "${_out}"
exit 1
fi

View File

@ -28,6 +28,16 @@ if [[ "${#files[@]}" -ne 0 ]]; then
echo "${green}OK" echo "${green}OK"
fi fi
echo "${reset}" echo "${reset}"
echo -ne "Check if Godep licesnses are up to date..."
if ! OUT=$("hack/verify-godep-licenses.sh" 2>&1); then
echo
echo "${red}${OUT}"
exit_code=1
else
echo "${green}OK"
fi
echo "${reset}"
fi fi
echo -ne "Checking for files that need gofmt... " echo -ne "Checking for files that need gofmt... "

View File

@ -49,6 +49,7 @@ install:
- ./hack/verify-description.sh - ./hack/verify-description.sh
- ./hack/verify-flags-underscore.py - ./hack/verify-flags-underscore.py
- ./hack/verify-godeps.sh ${BASE_BRANCH} - ./hack/verify-godeps.sh ${BASE_BRANCH}
- ./hack/verify-godep-licenses.sh ${BASE_BRANCH}
- ./hack/travis/install-std-race.sh - ./hack/travis/install-std-race.sh
- ./hack/verify-generated-conversions.sh - ./hack/verify-generated-conversions.sh
- ./hack/verify-generated-deep-copies.sh - ./hack/verify-generated-deep-copies.sh