-
Notifications
You must be signed in to change notification settings - Fork 38.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add hack/update-godep-licenses.sh to generate Godeps/LICENSES.md #18322
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you want to run it again for third_party? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we need one for third_party I would make it a different script and a different output file, like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. godep-licenses also doesn't work on generic directories. It only works on Godep vendored files. So you'd need some other similar method for trolling through a directory looking for LICENSE files, and some way to know where they came from and which ones are root repo directories. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Gotcha. There's not that much in third_party. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -60,7 +60,7 @@ if $SILENT ; then | |
fi | ||
|
||
# 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" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why exclude? Is it slow? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's not super fast, but I figured if we weren't checking godeps there wasn't much point in checking something that depends on the godeps... |
||
|
||
ret=0 | ||
for t in `ls $KUBE_ROOT/hack/verify-*.sh` | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,6 +28,16 @@ if [[ "${#files[@]}" -ne 0 ]]; then | |
echo "${green}OK" | ||
fi | ||
echo "${reset}" | ||
|
||
echo -ne "Check if Godep licesnses are up to date..." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: spelling There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oops! catch it next time we update the file, I guess. |
||
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 | ||
|
||
echo -ne "Checking for files that need gofmt... " | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the 'exec' necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The exec hands off process control to the executed command. This is the easiest way to propagate signal handling. Without exec it's like a dozen lines of code to properly handle SIGTERM.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TIL