summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Shombert <shombert@google.com>2024-03-18 04:03:46 +0000
committerLee Shombert <shombert@google.com>2024-03-18 04:03:46 +0000
commitf19bd9fc62c1ed264c62fa50287b0b71f116a645 (patch)
tree833e522293989493ebf863fc7c68249efc2fc3ef
parentf5a5a9584f69a5a58d7e023b38e438b105713291 (diff)
downloadsqlite-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.md9
-rwxr-xr-xREBUILD-ANDROID-PATCH.bash44
-rwxr-xr-xUPDATE-SOURCE.bash118
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)