mirror of
https://github.com/raspberrypi/rpi-update.git
synced 2026-01-20 21:13:38 +08:00
Support for GitHub API tokens added (fixes Hexxeh/rpi-update#151) (#237)
* Support for GitHub API tokens added (fixes Hexxeh/rpi-update#151) Use it like this: $ sudo GITHUB_API_TOKEN=“<my-api-token”> rpi-update * Added details about the GITHUB_API_TOKEN option to README * Corrected headline level
This commit is contained in:
committed by
popcornmix
parent
d74ace7328
commit
cabadf0b91
@@ -130,7 +130,13 @@ To just get a list of commits contained in rpi-update since you last updated, ru
|
|||||||
|
|
||||||
This won't update your firmware
|
This won't update your firmware
|
||||||
|
|
||||||
#### Troubleshooting
|
#### `GITHUB_API_TOKEN`
|
||||||
|
|
||||||
|
By default, `rpi-update` will not use a custom GitHub API token. If you run into rate limiting issues, you can supply an API token on the command line:
|
||||||
|
|
||||||
|
sudo GITHUB_API_TOKEN=<your API token> rpi-update
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
There are two possible problems related to SSL certificates that may prevent
|
There are two possible problems related to SSL certificates that may prevent
|
||||||
this tool from working.
|
this tool from working.
|
||||||
|
|||||||
24
rpi-update
24
rpi-update
@@ -34,6 +34,7 @@ WANT_SYMVERS=${WANT_SYMVERS:-0}
|
|||||||
PRUNE_MODULES=${PRUNE_MODULES:-0}
|
PRUNE_MODULES=${PRUNE_MODULES:-0}
|
||||||
RPI_UPDATE_UNSUPPORTED=${RPI_UPDATE_UNSUPPORTED:-0}
|
RPI_UPDATE_UNSUPPORTED=${RPI_UPDATE_UNSUPPORTED:-0}
|
||||||
JUST_CHECK=${JUST_CHECK:-0}
|
JUST_CHECK=${JUST_CHECK:-0}
|
||||||
|
GITHUB_API_TOKEN=${GITHUB_API_TOKEN:-""}
|
||||||
FW_REPO="${REPO_URI}.git"
|
FW_REPO="${REPO_URI}.git"
|
||||||
FW_REPOLOCAL=${FW_REPOLOCAL:-"${WORK_PATH}/.rpi-firmware"}
|
FW_REPOLOCAL=${FW_REPOLOCAL:-"${WORK_PATH}/.rpi-firmware"}
|
||||||
FW_PATH="${BOOT_PATH}"
|
FW_PATH="${BOOT_PATH}"
|
||||||
@@ -46,11 +47,18 @@ if command -v vcgencmd > /dev/null; then
|
|||||||
vcgencmd get_config str | grep -qE "^kernel=" && echo -e "You appear to be using a custom kernel file.\nSkipping installation of new kernel, as bundled dtb files may be incompatible with your kernel." && SKIP_KERNEL=1
|
vcgencmd get_config str | grep -qE "^kernel=" && echo -e "You appear to be using a custom kernel file.\nSkipping installation of new kernel, as bundled dtb files may be incompatible with your kernel." && SKIP_KERNEL=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Support for custom GitHub Auth Tokens
|
||||||
|
GITHUB_AUTH_PARAM=""
|
||||||
|
if [[ -n "${GITHUB_API_TOKEN}" ]]; then
|
||||||
|
echo " *** Using GitHub token for all requests."
|
||||||
|
GITHUB_AUTH_PARAM="--header \"Authorization: token ${GITHUB_API_TOKEN}\""
|
||||||
|
fi
|
||||||
|
|
||||||
function update_self() {
|
function update_self() {
|
||||||
echo " *** Performing self-update"
|
echo " *** Performing self-update"
|
||||||
_tempFileName="$0.tmp"
|
_tempFileName="$0.tmp"
|
||||||
|
|
||||||
if ! curl -Lfs --output "${_tempFileName}" "${UPDATE_URI}"; then
|
if ! eval curl -Lfs ${GITHUB_AUTH_PARAM} --output "${_tempFileName}" "${UPDATE_URI}"; then
|
||||||
echo " !!! Failed to download update for rpi-update!"
|
echo " !!! Failed to download update for rpi-update!"
|
||||||
echo " !!! Make sure you have ca-certificates installed and that the time is set correctly"
|
echo " !!! Make sure you have ca-certificates installed and that the time is set correctly"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -134,7 +142,7 @@ function update_sdk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function show_notice {
|
function show_notice {
|
||||||
local FULL_NOTICE=`curl -Lfs https://raw.githubusercontent.com/hexxeh/rpi-firmware/${FW_REV}/NOTICE.md`
|
local FULL_NOTICE=`eval curl -Lfs ${GITHUB_AUTH_PARAM} https://raw.githubusercontent.com/hexxeh/rpi-firmware/${FW_REV}/NOTICE.md`
|
||||||
local NOTICE=$(echo "$FULL_NOTICE" | tail -n+2)
|
local NOTICE=$(echo "$FULL_NOTICE" | tail -n+2)
|
||||||
if [ -z "$NOTICE" ]; then
|
if [ -z "$NOTICE" ]; then
|
||||||
return
|
return
|
||||||
@@ -270,14 +278,14 @@ function do_update {
|
|||||||
|
|
||||||
function download_rev {
|
function download_rev {
|
||||||
if [[ ${SKIP_DOWNLOAD} -eq 0 ]]; then
|
if [[ ${SKIP_DOWNLOAD} -eq 0 ]]; then
|
||||||
if ! curl -Lfs --output /dev/null --head --fail "${REPO_URI}/tarball/${FW_REV}"; then
|
if ! eval curl -Lfs ${GITHUB_AUTH_PARAM} --output /dev/null --head --fail "${REPO_URI}/tarball/${FW_REV}"; then
|
||||||
echo "Invalid git hash specified"
|
echo "Invalid git hash specified"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo " *** Downloading specific firmware revision (this will take a few minutes)"
|
echo " *** Downloading specific firmware revision (this will take a few minutes)"
|
||||||
rm -rf "${FW_REPOLOCAL}"
|
rm -rf "${FW_REPOLOCAL}"
|
||||||
mkdir -p "${FW_REPOLOCAL}"
|
mkdir -p "${FW_REPOLOCAL}"
|
||||||
curl -L "${REPO_URI}/tarball/${FW_REV}" | tar xzf - -C "${FW_REPOLOCAL}" --strip-components=1
|
eval curl -L ${GITHUB_AUTH_PARAM} "${REPO_URI}/tarball/${FW_REV}" | tar xzf - -C "${FW_REPOLOCAL}" --strip-components=1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,7 +338,7 @@ function noobs_fix {
|
|||||||
|
|
||||||
function get_hash_date {
|
function get_hash_date {
|
||||||
commit_api="https://api.github.com/repos/Hexxeh/rpi-firmware/git/commits/"
|
commit_api="https://api.github.com/repos/Hexxeh/rpi-firmware/git/commits/"
|
||||||
curl -Ls "$commit_api"$1 | grep "date" | head -1 | awk -F\" '{print $4}'
|
eval curl -Ls ${GITHUB_AUTH_PARAM} "$commit_api"$1 | grep "date" | head -1 | awk -F\" '{print $4}'
|
||||||
}
|
}
|
||||||
|
|
||||||
function compare_hashes {
|
function compare_hashes {
|
||||||
@@ -383,11 +391,11 @@ command -v readelf >/dev/null 2>&1 || {
|
|||||||
if [[ "${FW_REV}" == "" ]]; then
|
if [[ "${FW_REV}" == "" ]]; then
|
||||||
# ask github for latest version hash
|
# ask github for latest version hash
|
||||||
REPO_API=${REPO_URI/github.com/api.github.com\/repos}/git/refs/heads/${BRANCH}
|
REPO_API=${REPO_URI/github.com/api.github.com\/repos}/git/refs/heads/${BRANCH}
|
||||||
FW_REV=$(curl -Ls ${REPO_API} | awk '{ if ($1 == "\"sha\":") { print substr($2, 2, 40) } }')
|
FW_REV=$(eval curl -Ls ${GITHUB_AUTH_PARAM} ${REPO_API} | awk '{ if ($1 == "\"sha\":") { print substr($2, 2, 40) } }')
|
||||||
if [[ "${FW_REV}" == "" ]]; then
|
if [[ "${FW_REV}" == "" ]]; then
|
||||||
echo " *** No hash received from github: ${REPO_API}"
|
echo " *** No hash received from github: ${REPO_API}"
|
||||||
# run again with errors not suppressed
|
# run again with errors not suppressed
|
||||||
curl -L ${REPO_API}
|
eval curl -L ${GITHUB_AUTH_PARAM} ${REPO_API}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -407,7 +415,7 @@ else
|
|||||||
echo " *** Firmware update required. New commits available:"
|
echo " *** Firmware update required. New commits available:"
|
||||||
DIFF_API=${REPO_URI/github.com/api.github.com\/repos}/compare/$(cat "${FW_REVFILE}")...${BRANCH}
|
DIFF_API=${REPO_URI/github.com/api.github.com\/repos}/compare/$(cat "${FW_REVFILE}")...${BRANCH}
|
||||||
SEPARATOR="======================================================"
|
SEPARATOR="======================================================"
|
||||||
curl -Ls ${DIFF_API} | awk -v SEPARATOR="${SEPARATOR}" -F\" ' { if ($2 == "commits") {commits=1} if (commits && $2 == "message") {print SEPARATOR "\nCommit: " $4} }' | sed 's/\\n\\n/\nCommit:\ /g'
|
eval curl -Ls ${GITHUB_AUTH_PARAM} ${DIFF_API} | awk -v SEPARATOR="${SEPARATOR}" -F\" ' { if ($2 == "commits") {commits=1} if (commits && $2 == "message") {print SEPARATOR "\nCommit: " $4} }' | sed 's/\\n\\n/\nCommit:\ /g'
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user