Make checksums for downloads mandatory

Use SKIP_CHECKSUM if you really want to avoid checksums.
This commit is contained in:
Fredrik Fornwall 2018-08-21 00:35:50 +02:00
parent 87d45e68a8
commit 33e80f9944
2 changed files with 33 additions and 20 deletions

View File

@ -12,16 +12,20 @@ if [ `uname -o` = Android ]; then
termux_error_exit "On-device builds are not supported - see README.md" termux_error_exit "On-device builds are not supported - see README.md"
fi fi
# Utility function to download a resource, optionally checking against a checksum. # Utility function to download a resource with an expected checksum.
termux_download() { termux_download() {
if [ $# != 3 ]; then
termux_error_exit "termux_download(): Invalid arguments - expected \$URL \$DESTINATION \$CHECKSUM"
fi
local URL="$1" local URL="$1"
local DESTINATION="$2" local DESTINATION="$2"
local CHECKSUM="$3"
if [ -f "$DESTINATION" ] && [ $# = 3 ] && [ -n "$3" ]; then if [ -f "$DESTINATION" ] && [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then
# Keep existing file if checksum matches. # Keep existing file if checksum matches.
local EXISTING_CHECKSUM local EXISTING_CHECKSUM
EXISTING_CHECKSUM=$(sha256sum "$DESTINATION" | cut -f 1 -d ' ') EXISTING_CHECKSUM=$(sha256sum "$DESTINATION" | cut -f 1 -d ' ')
if [ "$EXISTING_CHECKSUM" = "$3" ]; then return; fi if [ "$EXISTING_CHECKSUM" = "$CHECKSUM" ]; then return; fi
fi fi
local TMPFILE local TMPFILE
@ -32,16 +36,14 @@ termux_download() {
if curl -L --fail --retry 2 -o "$TMPFILE" "$URL"; then if curl -L --fail --retry 2 -o "$TMPFILE" "$URL"; then
local ACTUAL_CHECKSUM local ACTUAL_CHECKSUM
ACTUAL_CHECKSUM=$(sha256sum "$TMPFILE" | cut -f 1 -d ' ') ACTUAL_CHECKSUM=$(sha256sum "$TMPFILE" | cut -f 1 -d ' ')
if [ $# = 3 ] && [ -n "$3" ]; then if [ "$CHECKSUM" != "SKIP_CHECKSUM" ]; then
# Optional checksum argument: if [ "$CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
local EXPECTED=$3
if [ "$EXPECTED" != "$ACTUAL_CHECKSUM" ]; then
>&2 printf "Wrong checksum for %s:\nExpected: %s\nActual: %s\n" \ >&2 printf "Wrong checksum for %s:\nExpected: %s\nActual: %s\n" \
"$URL" "$EXPECTED" "$ACTUAL_CHECKSUM" "$URL" "$CHECKSUM" "$ACTUAL_CHECKSUM"
exit 1 exit 1
fi fi
else else
printf "No validation of checksum for %s:\nActual: %s\n" \ printf "WARNING: No checksum check for %s:\nActual: %s\n" \
"$URL" "$ACTUAL_CHECKSUM" "$URL" "$ACTUAL_CHECKSUM"
fi fi
mv "$TMPFILE" "$DESTINATION" mv "$TMPFILE" "$DESTINATION"

View File

@ -17,17 +17,20 @@ termux_step_make_install () {
SYSTEM_CORE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/system_core_include_${_TAGNAME}.tar.gz SYSTEM_CORE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/system_core_include_${_TAGNAME}.tar.gz
test ! -f $SYSTEM_CORE_INCLUDE_TARFILE && termux_download \ test ! -f $SYSTEM_CORE_INCLUDE_TARFILE && termux_download \
"https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/include.tar.gz" \ "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/include.tar.gz" \
$SYSTEM_CORE_INCLUDE_TARFILE $SYSTEM_CORE_INCLUDE_TARFILE \
SKIP_CHECKSUM
ANDROIDFW_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_include_${_TAGNAME}.tar.gz ANDROIDFW_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_include_${_TAGNAME}.tar.gz
test ! -f $ANDROIDFW_INCLUDE_TARFILE && termux_download \ test ! -f $ANDROIDFW_INCLUDE_TARFILE && termux_download \
"https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/include/androidfw.tar.gz" \ "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/include/androidfw.tar.gz" \
$ANDROIDFW_INCLUDE_TARFILE $ANDROIDFW_INCLUDE_TARFILE \
SKIP_CHECKSUM
ANDROID_BASE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/android_base_include_${_TAGNAME}.tar.gz ANDROID_BASE_INCLUDE_TARFILE=$TERMUX_PKG_CACHEDIR/android_base_include_${_TAGNAME}.tar.gz
test ! -f $ANDROID_BASE_INCLUDE_TARFILE && termux_download \ test ! -f $ANDROID_BASE_INCLUDE_TARFILE && termux_download \
"https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/base/include/android-base.tar.gz" \ "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/base/include/android-base.tar.gz" \
$ANDROID_BASE_INCLUDE_TARFILE $ANDROID_BASE_INCLUDE_TARFILE \
SKIP_CHECKSUM
local AOSP_INCLUDE_DIR=$TERMUX_PREFIX/include/aosp local AOSP_INCLUDE_DIR=$TERMUX_PREFIX/include/aosp
mkdir -p $AOSP_INCLUDE_DIR mkdir -p $AOSP_INCLUDE_DIR
@ -50,7 +53,8 @@ termux_step_make_install () {
LIBCUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libcutils_${_TAGNAME}.tar.gz LIBCUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libcutils_${_TAGNAME}.tar.gz
test ! -f $LIBCUTILS_TARFILE && termux_download \ test ! -f $LIBCUTILS_TARFILE && termux_download \
"https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libcutils.tar.gz" \ "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libcutils.tar.gz" \
$LIBCUTILS_TARFILE $LIBCUTILS_TARFILE \
SKIP_CHECKSUM
tar xf $LIBCUTILS_TARFILE tar xf $LIBCUTILS_TARFILE
patch -p0 < $TERMUX_PKG_BUILDER_DIR/libcutils-patch.txt patch -p0 < $TERMUX_PKG_BUILDER_DIR/libcutils-patch.txt
$CXX $CXXFLAGS -isystem $AOSP_INCLUDE_DIR -c -o sockets.o sockets.cpp $CXX $CXXFLAGS -isystem $AOSP_INCLUDE_DIR -c -o sockets.o sockets.cpp
@ -113,12 +117,14 @@ termux_step_make_install () {
local LIBUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libutils_${_TAGNAME}.tar.gz local LIBUTILS_TARFILE=$TERMUX_PKG_CACHEDIR/libutils_${_TAGNAME}.tar.gz
test ! -f $LIBUTILS_TARFILE && termux_download \ test ! -f $LIBUTILS_TARFILE && termux_download \
"https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libutils.tar.gz" \ "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libutils.tar.gz" \
$LIBUTILS_TARFILE $LIBUTILS_TARFILE \
SKIP_CHECKSUM
local SAFE_IOP_TARFILE=$TERMUX_PKG_CACHEDIR/safe_iop.tar.gz local SAFE_IOP_TARFILE=$TERMUX_PKG_CACHEDIR/safe_iop.tar.gz
test ! -f $SAFE_IOP_TARFILE && termux_download \ test ! -f $SAFE_IOP_TARFILE && termux_download \
https://android.googlesource.com/platform/external/safe-iop/+archive/cd76f998688d145235de78ecd5b340d0eac9239d.tar.gz \ https://android.googlesource.com/platform/external/safe-iop/+archive/cd76f998688d145235de78ecd5b340d0eac9239d.tar.gz \
$SAFE_IOP_TARFILE $SAFE_IOP_TARFILE \
SKIP_CHECKSUM
local SAFE_IOP_DIR=$TERMUX_PKG_TMPDIR/safe-iop local SAFE_IOP_DIR=$TERMUX_PKG_TMPDIR/safe-iop
mkdir -p $SAFE_IOP_DIR mkdir -p $SAFE_IOP_DIR
cd $SAFE_IOP_DIR cd $SAFE_IOP_DIR
@ -170,7 +176,8 @@ termux_step_make_install () {
local LIBBASE_TARFILE=$TERMUX_PKG_CACHEDIR/libbase_${_TAGNAME}.tar.gz local LIBBASE_TARFILE=$TERMUX_PKG_CACHEDIR/libbase_${_TAGNAME}.tar.gz
test ! -f $LIBBASE_TARFILE && termux_download \ test ! -f $LIBBASE_TARFILE && termux_download \
"https://android.googlesource.com/platform/system/core/+archive/android-${_TAGNAME}/base.tar.gz" \ "https://android.googlesource.com/platform/system/core/+archive/android-${_TAGNAME}/base.tar.gz" \
$LIBBASE_TARFILE $LIBBASE_TARFILE \
SKIP_CHECKSUM
mkdir -p $TERMUX_PKG_SRCDIR/libbase mkdir -p $TERMUX_PKG_SRCDIR/libbase
cd $TERMUX_PKG_SRCDIR/libbase cd $TERMUX_PKG_SRCDIR/libbase
tar xf $LIBBASE_TARFILE tar xf $LIBBASE_TARFILE
@ -202,7 +209,8 @@ termux_step_make_install () {
LIBZIPARCHIVE_TARFILE=$TERMUX_PKG_CACHEDIR/libziparchive_${_TAGNAME}.tar.gz LIBZIPARCHIVE_TARFILE=$TERMUX_PKG_CACHEDIR/libziparchive_${_TAGNAME}.tar.gz
test ! -f $LIBZIPARCHIVE_TARFILE && termux_download \ test ! -f $LIBZIPARCHIVE_TARFILE && termux_download \
"https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libziparchive.tar.gz" \ "https://android.googlesource.com/platform/system/core/+archive/android-$_TAGNAME/libziparchive.tar.gz" \
$LIBZIPARCHIVE_TARFILE $LIBZIPARCHIVE_TARFILE \
SKIP_CHECKSUM
mkdir -p $TERMUX_PKG_SRCDIR/libziparchive mkdir -p $TERMUX_PKG_SRCDIR/libziparchive
cd $TERMUX_PKG_SRCDIR/libziparchive cd $TERMUX_PKG_SRCDIR/libziparchive
tar xf $LIBZIPARCHIVE_TARFILE tar xf $LIBZIPARCHIVE_TARFILE
@ -228,7 +236,8 @@ termux_step_make_install () {
ANDROIDFW_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_${_TAGNAME}.tar.gz ANDROIDFW_TARFILE=$TERMUX_PKG_CACHEDIR/androidfw_${_TAGNAME}.tar.gz
test ! -f $ANDROIDFW_TARFILE && termux_download \ test ! -f $ANDROIDFW_TARFILE && termux_download \
https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/libs/androidfw.tar.gz \ https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/libs/androidfw.tar.gz \
$ANDROIDFW_TARFILE $ANDROIDFW_TARFILE \
SKIP_CHECKSUM
mkdir -p $TERMUX_PKG_SRCDIR/androidfw mkdir -p $TERMUX_PKG_SRCDIR/androidfw
cd $TERMUX_PKG_SRCDIR/androidfw cd $TERMUX_PKG_SRCDIR/androidfw
tar xf $ANDROIDFW_TARFILE tar xf $ANDROIDFW_TARFILE
@ -261,7 +270,8 @@ termux_step_make_install () {
AAPT_TARFILE=$TERMUX_PKG_CACHEDIR/aapt_${_TAGNAME}.tar.gz AAPT_TARFILE=$TERMUX_PKG_CACHEDIR/aapt_${_TAGNAME}.tar.gz
test ! -f $AAPT_TARFILE && termux_download \ test ! -f $AAPT_TARFILE && termux_download \
"https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/tools/aapt.tar.gz" \ "https://android.googlesource.com/platform/frameworks/base/+archive/android-$_TAGNAME/tools/aapt.tar.gz" \
$AAPT_TARFILE $AAPT_TARFILE \
SKIP_CHECKSUM
mkdir $TERMUX_PKG_SRCDIR/aapt mkdir $TERMUX_PKG_SRCDIR/aapt
cd $TERMUX_PKG_SRCDIR/aapt cd $TERMUX_PKG_SRCDIR/aapt
tar xf $AAPT_TARFILE tar xf $AAPT_TARFILE
@ -286,7 +296,8 @@ termux_step_make_install () {
ZIPALIGN_TARFILE=$TERMUX_PKG_CACHEDIR/zipalign_${_TAGNAME}.tar.gz ZIPALIGN_TARFILE=$TERMUX_PKG_CACHEDIR/zipalign_${_TAGNAME}.tar.gz
test ! -f $ZIPALIGN_TARFILE && termux_download \ test ! -f $ZIPALIGN_TARFILE && termux_download \
"https://android.googlesource.com/platform/build.git/+archive/android-$_TAGNAME/tools/zipalign.tar.gz" \ "https://android.googlesource.com/platform/build.git/+archive/android-$_TAGNAME/tools/zipalign.tar.gz" \
$ZIPALIGN_TARFILE $ZIPALIGN_TARFILE \
SKIP_CHECKSUM
mkdir $TERMUX_PKG_SRCDIR/zipalign mkdir $TERMUX_PKG_SRCDIR/zipalign
cd $TERMUX_PKG_SRCDIR/zipalign cd $TERMUX_PKG_SRCDIR/zipalign
tar xf $ZIPALIGN_TARFILE tar xf $ZIPALIGN_TARFILE