| #!/bin/bash |
| # Copyright 2016 The Android Open Source Project |
| # |
| # 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 -eu |
| |
| GIT_URL="git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git" |
| CGIT_URL="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain" |
| |
| usage() { |
| cat <<EOF |
| Usage: $0 [linux version] |
| |
| Helper script to quickly update the bundled checkpatch.pl script. |
| EOF |
| |
| if [[ $# -ne 0 ]]; then |
| echo "ERROR: $*" 2>&1 |
| exit 1 |
| else |
| exit 0 |
| fi |
| } |
| |
| # Return the latest kernel release version. |
| get_latest_version() { |
| local output |
| |
| # Parse the git tag output to find the latest version. |
| # Example output: |
| # 0fc80a1fc05dd08762fda6e8efafbb54e88608f4 refs/tags/v4.5 |
| # b562e44f507e863c6792946e4e1b1449fbbac85d refs/tags/v4.5^{} |
| # b13adfcdf288a00a7e58556f326ecb56fbb53b92 refs/tags/v4.5-rc1 |
| |
| output=$(git ls-remote --tags "${GIT_URL}") |
| # Filter out rc/signed tags. |
| output=$(echo "${output}" | grep -v -e '-rc' -e '\^{}') |
| # The output should be sorted already, so grab the last entry. |
| output=$(echo "${output}" | tail -1 | cut -d/ -f3) |
| # Chop the leading "v" bit. |
| echo "${output#v}" |
| } |
| |
| # Download checkpatch.pl & data for the specified kernel version. |
| download() { |
| local version="$1" |
| local url |
| |
| # First the main checkpatch.pl file. |
| url="${CGIT_URL}/scripts/checkpatch.pl?h=v${version}" |
| wget "${url}" -O checkpatch.pl |
| chmod a+rx checkpatch.pl |
| |
| # Then any data it uses. |
| url="${CGIT_URL}/scripts/spelling.txt?h=v${version}" |
| wget "${url}" -O spelling.txt |
| } |
| |
| main() { |
| local version='' |
| while [[ $# -gt 0 ]]; do |
| case $1 in |
| -h|--help) usage;; |
| -x) set -x;; |
| -*) usage "Unknown option: $1";; |
| *) version=${1#v};; |
| esac |
| shift |
| done |
| |
| if [[ -z "${version}" ]]; then |
| printf 'Detecting latest kernel version ... ' |
| version=$(get_latest_version) |
| echo "${version}" |
| fi |
| |
| download "${version}" |
| } |
| main "$@" |