diff options
author | Lee Shombert <shombert@google.com> | 2024-03-18 04:03:46 +0000 |
---|---|---|
committer | Lee Shombert <shombert@google.com> | 2024-03-18 04:03:46 +0000 |
commit | f19bd9fc62c1ed264c62fa50287b0b71f116a645 (patch) | |
tree | 833e522293989493ebf863fc7c68249efc2fc3ef | |
parent | f5a5a9584f69a5a58d7e023b38e438b105713291 (diff) | |
download | sqlite-f19bd9fc62c1ed264c62fa50287b0b71f116a645.tar.gz |
Revert "Allow multiple releases of sqlite"
Revert submission 3004403
Reason for revert: build breakage on mainline modules
Reverted changes: /q/submissionid:3004403
Change-Id: I5eb768aa7c03f7159c400dc28faf8ea006e3e56f
-rw-r--r-- | README-upgrade.md | 9 | ||||
-rwxr-xr-x | REBUILD-ANDROID-PATCH.bash | 44 | ||||
-rwxr-xr-x | UPDATE-SOURCE.bash | 118 |
3 files changed, 36 insertions, 135 deletions
diff --git a/README-upgrade.md b/README-upgrade.md index 951bb37..fc93cf5 100644 --- a/README-upgrade.md +++ b/README-upgrade.md @@ -13,20 +13,19 @@ external/sqlite The upgrade steps are: -* Select a version for the upgrade. Note the year it was released by sqlite.org. +* Select a version for the upgrade. * Find the autoconf amalgamation tarball. For release 3.42.0, the URL is [sqlite-autoconf-3420000.tar.gz](https://sqlite.org/2023/sqlite-autoconf-3420000.tar.gz). * Change to the directory `external/sqlite` in the workspace. * Run the script `UPDATE-SOURCE.bash`. This script is executable. The - arguments are the sqlite release year and the version. Invoke the script without + arguments are the tarball URL and the version. Invoke the script without arguments for an example. `UPDATE-SOURCE.bash` may fail if the Android patch cannot be applied cleanly. If this happens, correct the patch failures by hand and rebuild the Android patch file. Use the script `REBUILD-ANDROID-PATCH.bash` to rebuild the patch file. -This script takes the same arguments as `UPDATE-SOURCE.bash`. Then rerun -`UPDATE-SOURCE.bash`. It is important that `UPDATE-SOURCE.bash` run without -errors. +Then rerun `UPDATE-SOURCE.bash`. It is important that `UPDATE-SOURCE.bash` run +without errors. ## LICENSE diff --git a/REBUILD-ANDROID-PATCH.bash b/REBUILD-ANDROID-PATCH.bash index 53d0990..734e296 100755 --- a/REBUILD-ANDROID-PATCH.bash +++ b/REBUILD-ANDROID-PATCH.bash @@ -16,7 +16,7 @@ # This script updates SQLite source files with a SQLite tarball. # -# Usage: REBUILD-ANDROID_PATCH.bash <release> +# Usage: REBUILD-ANDROID_PATCH.bash # # This script must be executed in $ANDROID_BUILD_TOP/external/sqlite/ # @@ -24,7 +24,9 @@ set -e script_name="$(basename "$0")" -script_dir=$(dirname $(realpath ${BASH_SOURCE[0]})) + +source_tgz="$1" +source_ext_dir="$1.extracted" die() { echo "$script_name: $*" @@ -36,38 +38,20 @@ echo_and_exec() { "$@" } -# This function converts a release string like "3.42.0" to the canonical 7-digit -# format used by sqlite.org for downloads: "3420000". A hypothetical release -# number of 3.45.6 is converted to "3450600". A hypothetical release number of -# 3.45.17 is converted to "3451700". The last two digits are assumed to be -# "00" for now, as there are no known counter-examples. -function normalize_release { - local version=$1 - local -a fields - fields=($(echo "$version" | sed 's/\./ /g')) - if [[ ${#fields[*]} -lt 2 || ${#fields[*]} -gt 3 ]]; then - echo "cannot parse version: $version" - return 1 - elif [[ ${#fields[*]} -eq 2 ]]; then - fields+=(0) - fi - printf "%d%02d%02d00" ${fields[*]} - return 0 -} +# Make sure the source tgz file exists. +pwd="$(pwd)" +if [[ ! "$pwd" =~ .*/external/sqlite/? ]] ; then + die 'Execute this script in $ANDROID_BUILD_TOP/external/sqlite/' +fi -if [[ $# -lt 1 ]]; then - die "missing required arguments" -elif [[ $# -gt 1 ]]; then - die "extra arguments on command line" +# No parameters are permitted +if [[ ! $# -eq 0 ]]; then + die "Unexpected arguments on the command line" fi -sqlite_release=$(normalize_release "$1") || die "invalid release" -sqlite_base="sqlite-autoconf-${sqlite_release}" -export patch_dir=${script_dir}/dist echo echo "# Regenerating Android.patch ..." ( - cd dist/$sqlite_base || die "release directory not found" + cd dist echo_and_exec bash -c '(for x in orig/*; do diff -u -d $x ${x#orig/}; done) > Android.patch' - echo_and_exec cp Android.patch ${patch_dir}/ -) +) diff --git a/UPDATE-SOURCE.bash b/UPDATE-SOURCE.bash index 24e3a1a..fdd9093 100755 --- a/UPDATE-SOURCE.bash +++ b/UPDATE-SOURCE.bash @@ -14,32 +14,23 @@ # See the License for the specific language governing permissions and # limitations under the License. -# This script updates SQLite source files with a SQLite tarball. The tarball is -# downloaded from the sqlite website. +# This script updates SQLite source files with a SQLite tarball. # -# Usage: UPDATE-SOURCE.bash [-nF] <year> <sqlite-release> +# Usage: UPDATE-SOURCE.bash SQLITE-SOURCE.tgz # -# This script must be executed in $ANDROID_BUILD_TOP/external/sqlite/. However, -# for testing it can run anywhere: use the -F switch. +# This script must be executed in $ANDROID_BUILD_TOP/external/sqlite/ # set -e script_name="$(basename "$0")" -script_dir=$(dirname $(realpath ${BASH_SOURCE[0]})) - -usage() { - if [[ $# -gt 0 ]]; then echo "$*" >&2; fi - echo "Usage: ${script_name} -nF <year> <version>" - echo " year the 4-digit year the sqlite version was released" - echo " version the sqlite version as <major>.<minor>[.<patch>]" - echo " the patch level defaults to 0" - echo " -n dry-run: evaluate arguments but d not change anything" - echo " -F force execution even if not in external/sqlite" - echo + +if [ $# -eq 0 ]; then + echo "Usage: ${script_name} [src_tarball_url] [sqlite_version]" echo "Example:" - echo "${script_name} 2023 3.42" -} + echo "${script_name} https://sqlite.org/2023/sqlite-autoconf-3420000.tar.gz 3.42.0" + exit 1 +fi die() { echo "$script_name: $*" @@ -51,89 +42,20 @@ echo_and_exec() { "$@" } -validate_year() { - local year=$1 - if [[ "$year" =~ ^2[0-9][0-9][0-9]$ ]]; then - return 0; - else - return 1; - fi -} - -# This function converts a release string like "3.42.0" to the canonical 7-digit -# format used by sqlite.org for downloads: "3420000". A hypothetical release -# number of 3.45.6 is converted to "3450600". A hypothetical release number of -# 3.45.17 is converted to "3451700". The last two digits are assumed to be -# "00" for now, as there are no known counter-examples. -function normalize_release { - local version=$1 - local -a fields - fields=($(echo "$version" | sed 's/\./ /g')) - if [[ ${#fields[*]} -lt 2 || ${#fields[*]} -gt 3 ]]; then - echo "cannot parse version: $version" - return 1 - elif [[ ${#fields[*]} -eq 2 ]]; then - fields+=(0) - fi - printf "%d%02d%02d00" ${fields[*]} - return 0 -} - -function prettify_release { - local version=$1 - local patch=$((version % 100)) - version=$((version / 100)) - local minor=$((version % 100)) - version=$((version / 100)) - local major=$((version % 100)) - version=$((version / 100)) - # version now contains the generation number. - printf "%d.%d.%d" $version $major $minor -} - -dry_run= -force= -while getopts "hnF" option; do - case $option in - h) usage; exit 0;; - n) dry_run=y;; - F) force=y;; - *) usage "unknown switch"; exit 1;; - esac -done -shift $((OPTIND- 1)) - -if [[ $# -lt 2 ]]; then - usage; die "missing required arguments" -elif [[ $# -gt 2 ]]; then - die "extra arguments on command line" -fi -year=$1 -validate_year "$year" || die "invalid year" -sqlite_release=$(normalize_release "$2") || die "invalid release" - -sqlite_base="sqlite-autoconf-${sqlite_release}" -sqlite_file="${sqlite_base}.tar.gz" -src_tarball_url="https://www.sqlite.org/$year/${sqlite_file}" - -if [[ -n $dry_run ]]; then - echo "fetching $src_tarball_url" - echo "installing in dist/$sqlite_base" - exit 0 -fi - pwd="$(pwd)" -if [[ -z $force && ! "$pwd" =~ .*/external/sqlite/? ]] ; then +if [[ ! "$pwd" =~ .*/external/sqlite/? ]] ; then die 'Execute this script in $ANDROID_BUILD_TOP/external/sqlite/' fi -source_tgz=$(mktemp /tmp/sqlite-${sqlite_release}.zip.XXXXXX) -source_ext_dir="${source_tgz}.extracted" -trap "rm -r ${source_tgz} ${source_ext_dir}" EXIT +src_tarball_url="$1" +sqlite_version="$2" + +source_tgz=$(mktemp /tmp/sqlite-${sqlite_version}.zip.XXXXXX) wget ${src_tarball_url} -O ${source_tgz} echo echo "# Extracting the source tgz..." +source_ext_dir="${source_tgz}.extracted" echo_and_exec rm -fr "$source_ext_dir" echo_and_exec mkdir -p "$source_ext_dir" echo_and_exec tar xvf "$source_tgz" -C "$source_ext_dir" --strip-components=1 @@ -146,23 +68,20 @@ echo "# Making file sqlite3.c in $source_ext_dir ..." echo_and_exec make -j 4 sqlite3.c ) -export dist_dir="dist/${sqlite_base}" +dist_dir="dist-${sqlite_version}" echo echo "# Copying the source files ..." -echo_and_exec rm -rf ${dist_dir} echo_and_exec mkdir -p "${dist_dir}" echo_and_exec mkdir -p "${dist_dir}/orig" for to in ${dist_dir}/orig/ ${dist_dir}/ ; do echo_and_exec cp "$source_ext_dir/"{shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h} "$to" done -export patch_dir=${script_dir}/dist echo echo "# Applying Android.patch ..." ( cd ${dist_dir} - echo "PATCHING IN $dist_dir" >&2 - echo_and_exec patch -i ${patch_dir}/Android.patch + echo_and_exec patch -i ../Android.patch ) echo @@ -170,14 +89,13 @@ echo "# Regenerating Android.patch ..." ( cd ${dist_dir} echo_and_exec bash -c '(for x in orig/*; do diff -u -d $x ${x#orig/}; done) > Android.patch' - echo_and_exec cp Android.patch ${patch_dir}/ ) echo echo "# Generating metadata ..." ( export SQLITE_URL=${src_tarball_url} - export SQLITE_VERSION=$(prettify_release ${sqlite_release}) + export SQLITE_VERSION=${sqlite_version} export YEAR=$(date +%Y) export MONTH=$(date +%M) export DAY=$(date +%D) |