diff --git a/app/.gitignore b/app/.gitignore index 07e2949ebc..b1603225cc 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -2,7 +2,9 @@ cache config-custom.sh dist +lastrev staging +tmp xulrunner pdftools win/resource_hacker diff --git a/app/build.sh b/app/build.sh index 893f9fba65..7e0f8eb218 100755 --- a/app/build.sh +++ b/app/build.sh @@ -266,14 +266,14 @@ if [ $DEVTOOLS -eq 1 ]; then fi # 5.0.96.3 / 5.0.97-beta.37+ddc7be75c -VERSION=`perl -ne 'print and last if s/.*(.+)<\/em:version>.*/\1/;' install.rdf` +VERSION=`cat version` # 5.0.96 / 5.0.97 -VERSION_NUMERIC=`perl -ne 'print and last if s/.*(\d+\.\d+(\.\d+)?).*<\/em:version>.*/\1/;' install.rdf` +VERSION_NUMERIC=`perl -ne 'print and last if s/^(\d+\.\d+(\.\d+)?).*/\1/;' version` if [ -z "$VERSION" ]; then - echo "Version number not found in install.rdf" + echo "Version number not found in version file" exit 1 fi -rm install.rdf +rm version echo echo "Version: $VERSION" diff --git a/app/config.sh b/app/config.sh index a88dfbf931..26a5ed38ad 100644 --- a/app/config.sh +++ b/app/config.sh @@ -38,12 +38,6 @@ SIGNTOOL_CERT_SUBJECT="Corporation for Digital Scholarship" SIGNTOOL_TIMESTAMP_SERVER="http://timestamp.sectigo.com" SIGNTOOL_DELAY=15 -# Directory for Zotero code repos -repo_dir=$( cd "$DIR"/.. && pwd ) -# Directory for Zotero source code -ZOTERO_SOURCE_DIR="$repo_dir"/zotero-client -# Directory for Zotero build files (needed for scripts/*_build_and_deploy) -ZOTERO_BUILD_DIR="$repo_dir"/zotero-build # Directory for unpacked binaries STAGE_DIR="$DIR/staging" # Directory for packed binaries diff --git a/app/scripts/5.0_beta_build_and_deploy b/app/scripts/5.0_beta_build_and_deploy index ac71df49cf..d129a61b4d 100755 --- a/app/scripts/5.0_beta_build_and_deploy +++ b/app/scripts/5.0_beta_build_and_deploy @@ -2,8 +2,9 @@ set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ROOT_DIR="$(dirname "$SCRIPT_DIR")" -. "$ROOT_DIR/config.sh" +APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")" +ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")" +. "$APP_ROOT_DIR/config.sh" CHANNEL="beta" export SAFARI_APPEX="$ROOT_DIR/../safari-app-extension-builds/beta/ZoteroSafariExtension.appex" @@ -13,11 +14,13 @@ cd "$SCRIPT_DIR" hash=`./get_repo_branch_hash master` source_dir=`./get_commit_files $hash` +build_dir=`mktemp -d` function cleanup { - rm -rf $source_dir + rm -rf "$source_dir" + rm -rf "$build_dir" } trap cleanup EXIT -"$ZOTERO_BUILD_DIR/xpi/build_xpi" -s "$source_dir" -c $CHANNEL -m $hash -./build_and_deploy -d "$ZOTERO_BUILD_DIR/xpi/build/staging" -p $BUILD_PLATFORMS -c $CHANNEL +./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash +./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL diff --git a/app/scripts/5.0_dev_build_and_deploy b/app/scripts/5.0_dev_build_and_deploy index 05fe4254ce..d2f46d811c 100755 --- a/app/scripts/5.0_dev_build_and_deploy +++ b/app/scripts/5.0_dev_build_and_deploy @@ -2,8 +2,9 @@ set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ROOT_DIR="$(dirname "$SCRIPT_DIR")" -. "$ROOT_DIR/config.sh" +APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")" +ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")" +. "$APP_ROOT_DIR/config.sh" CHANNEL="dev" BRANCH="master" @@ -14,11 +15,13 @@ cd "$SCRIPT_DIR" hash=`./get_repo_branch_hash $BRANCH` source_dir=`./get_commit_files $hash` +build_dir=`mktemp -d` function cleanup { - rm -rf $source_dir + rm -rf "$source_dir" + rm -rf "$build_dir" } trap cleanup EXIT -"$ZOTERO_BUILD_DIR/xpi/build_xpi" -s "$source_dir" -c $CHANNEL -m $hash -./build_and_deploy -d "$ZOTERO_BUILD_DIR/xpi/build/staging" -p $BUILD_PLATFORMS -c $CHANNEL -i 1 +./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash +./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL -i 1 diff --git a/app/scripts/5.0_release_build_and_deploy b/app/scripts/5.0_release_build_and_deploy index 357caf7939..1f6b5d82e2 100755 --- a/app/scripts/5.0_release_build_and_deploy +++ b/app/scripts/5.0_release_build_and_deploy @@ -2,8 +2,9 @@ set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ROOT_DIR="$(dirname "$SCRIPT_DIR")" -. "$ROOT_DIR/config.sh" +APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")" +ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")" +. "$APP_ROOT_DIR/config.sh" CHANNEL="release" BRANCH="master" @@ -13,11 +14,13 @@ cd "$SCRIPT_DIR" hash=`./get_repo_branch_hash $BRANCH` source_dir=`./get_commit_files $hash` +build_dir=`mktemp -d` function cleanup { - rm -rf $source_dir + rm -rf "$source_dir" + rm -rf "$build_dir" } trap cleanup EXIT -"$ZOTERO_BUILD_DIR/xpi/build_xpi" -s "$source_dir" -c $CHANNEL -m $hash -./build_and_deploy -d "$ZOTERO_BUILD_DIR/xpi/build/staging" -p $BUILD_PLATFORMS -c $CHANNEL +./prepare_build -s "$source_dir" -o "$build_dir" -c $CHANNEL -m $hash +./build_and_deploy -d "$build_dir" -p $BUILD_PLATFORMS -c $CHANNEL diff --git a/app/scripts/build_and_deploy b/app/scripts/build_and_deploy index 89de26c3c2..08b8936c9c 100755 --- a/app/scripts/build_and_deploy +++ b/app/scripts/build_and_deploy @@ -54,9 +54,9 @@ fi "$SCRIPT_DIR"/check_requirements -VERSION="`perl -ne 'print and last if s/.*(.*)<\/em:version>.*/\1/;' \"$SOURCE_DIR\"/install.rdf`" +VERSION="`cat \"$SOURCE_DIR\"/version`" if [ -z "$VERSION" ]; then - echo "Error getting version from $SOURCE_DIR/install.rdf" + echo "Error getting version from $SOURCE_DIR/version" exit 1 fi diff --git a/app/scripts/build_and_run b/app/scripts/build_and_run index a7aba6e528..f3eddba504 100755 --- a/app/scripts/build_and_run +++ b/app/scripts/build_and_run @@ -1,21 +1,8 @@ #!/bin/bash -e SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ROOT_DIR="$(dirname "$SCRIPT_DIR")" - -# Set ZOTERO_REPOS_DIR to use directory other than $HOME for zotero-client and zotero-standalone-build -if [ -n "${ZOTERO_REPOS_DIR:-}" ]; then - repos_dir=$ZOTERO_REPOS_DIR -else - repos_dir=$HOME -fi - -for dir in zotero-client zotero-standalone-build; do - if [ ! -d "$repos_dir/$dir" ]; then - echo "$repos_dir/$dir not found" >&2 - exit 1 - fi -done +APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")" +ROOT_DIR="$(dirname $APP_ROOT_DIR)" # Set ZOTERO_PROFILE environment variable to choose profile if [ -n "${ZOTERO_PROFILE:-}" ]; then @@ -57,16 +44,16 @@ if [ $REBUILD -eq 1 ]; then if ! ps u | grep scripts/build.js | grep -v grep > /dev/null; then echo "Running JS build process" echo - cd $repos_dir/zotero-client + cd $ROOT_DIR npm run build echo fi - $repos_dir/zotero-standalone-build/scripts/dir_build -q $PARAMS + "$SCRIPT_DIR/dir_build" -q $PARAMS if [ "`uname`" = "Darwin" ]; then # Sign the Word dylib so it works on Apple Silicon - $SCRIPT_DIR/codesign_local $repos_dir/zotero-standalone-build/staging/Zotero.app + "$SCRIPT_DIR/codesign_local" "$APP_ROOT_DIR/staging/Zotero.app" fi fi @@ -89,4 +76,4 @@ else exit 1 fi -$repos_dir/zotero-standalone-build/staging/$command $profile -ZoteroDebugText -jsconsole -purgecaches $PARAMS "$@" +"$APP_ROOT_DIR/staging/$command" $profile -ZoteroDebugText -jsconsole -purgecaches $PARAMS "$@" diff --git a/app/scripts/dir_build b/app/scripts/dir_build index 41606ff245..ab96f2de6d 100755 --- a/app/scripts/dir_build +++ b/app/scripts/dir_build @@ -2,8 +2,9 @@ set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -ROOT_DIR="$(dirname "$SCRIPT_DIR")" -. "$ROOT_DIR/config.sh" +APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")" +ROOT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")" +. "$APP_ROOT_DIR/config.sh" function usage { cat >&2 <(.{3}).+/\1/;' "$ZOTERO_SOURCE_DIR/install.rdf"` -if [ $VERSION = "4.0" ]; then - "$ZOTERO_BUILD_DIR/xpi/build_xpi_4.0" "$ZOTERO_SOURCE_DIR" $CHANNEL - "$ROOT_DIR/build.sh" -f "$ZOTERO_BUILD_DIR/xpi/build/zotero-build.xpi" -p $PLATFORM -c $CHANNEL -s -else - PARAMS="" - if [ $DEVTOOLS -eq 1 ]; then - PARAMS+=" -t" - fi - if [ $quick_build -eq 1 ]; then - PARAMS+=" -q" - fi - - hash=`git -C "$ZOTERO_SOURCE_DIR" rev-parse --short HEAD` - - "$ZOTERO_BUILD_DIR/xpi/build_xpi" -s "$ZOTERO_SOURCE_DIR/build" -c $CHANNEL -m $hash - "$ROOT_DIR/build.sh" -d "$ZOTERO_BUILD_DIR/xpi/build/staging" -p $PLATFORM -c $CHANNEL -s $PARAMS +PARAMS="" +if [ $DEVTOOLS -eq 1 ]; then + PARAMS+=" -t" +fi +if [ $quick_build -eq 1 ]; then + PARAMS+=" -q" fi +hash=`git -C "$ROOT_DIR" rev-parse --short HEAD` + +build_dir=`mktemp -d` +function cleanup { + rm -rf $build_dir +} +trap cleanup EXIT + +"$SCRIPT_DIR/prepare_build" -s "$ROOT_DIR/build" -o "$build_dir" -c $CHANNEL -m $hash +"$APP_ROOT_DIR/build.sh" -d "$build_dir" -p $PLATFORM -c $CHANNEL -s $PARAMS + echo Done diff --git a/app/scripts/prepare_build b/app/scripts/prepare_build index 544dae529d..1236a68d36 100755 --- a/app/scripts/prepare_build +++ b/app/scripts/prepare_build @@ -9,7 +9,6 @@ import re import fileinput from collections import OrderedDict import json -import hashlib import traceback # Hack to combine two argparse formatters @@ -17,101 +16,59 @@ class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescri pass parser = argparse.ArgumentParser( - description='Build a Zotero XPI', - formatter_class=CustomFormatter, - epilog=''' -Example: build_xpi -s ~/zotero-client/build -x 5.0.1 -z - - Builds zotero-build.xpi and update-build.rdf - - Points update-build.rdf to https://download.zotero.org/extension/zotero-5.0.1.xpi - - Points install.rdf to https://www.zotero.org/download/update.rdf + description='Prepare build/ files for the app build process', + formatter_class=CustomFormatter) -Example: build_xpi -s ~/zotero-client/build -c beta -m 7c27a9bb5 -x 5.0b2 -r beta -z - - Builds zotero-build.xpi and update-build.rdf - - Points update-build.rdf to https://download.zotero.org/extension/zotero-5.0b2.xpi - - Points install.rdf to https://www.zotero.org/download/update-beta.rdf - -Example: build_xpi -s ~/zotero-client/build -c alpha -m 7c27a9bb5 -x 5.0-alpha -r 5.0-branch --xpi-dir dev -z - - Builds zotero-build.xpi and update-build.rdf - - Points update-build.rdf to https://download.zotero.org/extension/dev/zotero-5.0-alpha.xpi - - Points install.rdf to https://zotero.org/download/dev/update-5.0-branch.rdf''') - -parser.add_argument('--source-dir', '-s', required=True, metavar='DIR', help='Directory to build from') +parser.add_argument('--source-dir', '-s', required=True, metavar='BUILD_DIR', help='Directory to build from') +parser.add_argument('--output-dir', '-o', required=True, metavar='OUTPUT_DIR', help='Directory to write files to') parser.add_argument('-c', '--channel', default='source', help='channel to add to dev build version number (e.g., "beta" for "5.0-beta.3+a5f28ca8"), or "release" or "source" to skip') parser.add_argument('--commit-hash', '-m', metavar='HASH', help='Commit hash (required for non-release builds)') -parser.add_argument('--build-suffix', metavar='SUFFIX', default='build', help='suffix of output XPI') -parser.add_argument('--xpi-suffix', '-x', metavar='SUFFIX', default='', help='suffix of XPI to reference in update.rdf') -parser.add_argument('--rdf-suffix', '-r', metavar='SUFFIX', default='', help='suffix of update.rdf file to reference in install.rdf (e.g., "beta" for "update-beta.rdf")') -parser.add_argument('--xpi-dir', metavar='DIR', default='', help='extra directory to point to when referencing the XPI in update.rdf') -parser.add_argument('--zip', '-z', action='store_true', help="Create XPI instead of leaving files in build/staging") args = parser.parse_args() def main(): try: - if args.xpi_suffix: - args.xpi_suffix = "-" + args.xpi_suffix - if args.rdf_suffix: - args.rdf_suffix = "-" + args.rdf_suffix - if args.build_suffix: - args.build_suffix = "-" + args.build_suffix + app_root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - root_dir = os.path.dirname(os.path.realpath(__file__)) - - # Use BUILD_DIR environmental variable if present, and otherwise ./build - build_dir = os.environ.get('BUILD_DIR', os.path.join(root_dir, 'build')) - tmp_dir = os.path.join(build_dir, 'tmp') - - if not os.path.isdir(build_dir): - raise Exception(build_dir + " is not a directory") - - src_dir = args.source_dir - if not os.path.isdir(src_dir): - raise Exception(src_dir + " is not a directory") + lastrev_dir = os.path.join(app_root_dir, 'lastrev') + if not os.path.exists(lastrev_dir): + os.mkdir(lastrev_dir) + tmp_dir = os.path.join(app_root_dir, 'tmp') if args.commit_hash: commit_hash = args.commit_hash[0:9] elif args.channel != "release": raise Exception("--commit-hash must be specified for non-release builds") + src_dir = args.source_dir + if not os.path.isdir(src_dir): + raise Exception(src_dir + " is not a directory") + + output_dir = args.output_dir + if not os.path.isdir(output_dir): + raise Exception(output_dir + " is not a directory") + if os.listdir(output_dir): + raise Exception(output_dir + " is not empty") + log("Using source directory of " + src_dir) os.chdir(src_dir) - if not os.path.exists('install.rdf'): - raise FileNotFoundError("install.rdf not found in {0}".format(src_dir)) + if not os.path.exists('version'): + raise FileNotFoundError("version file not found in {0}".format(src_dir)) - # Extract version number from install.rdf - with open('install.rdf') as f: + # Extract version number from version file + with open('version') as f: rdf = f.read() - m = re.search('version>([0-9].+)\\.SOURCE - - - - - zotero@chnm.gmu.edu - Zotero - 7.0.0.SOURCE - false - 2 - - - - - {ec8030f7-c20a-464f-9b0e-13a3a9e97384} - 45.0 - 45.* - - - - - diff --git a/js-build/config.js b/js-build/config.js index d09363f581..d941bb1837 100644 --- a/js-build/config.js +++ b/js-build/config.js @@ -26,7 +26,6 @@ const copyDirs = [ // list of files from root folder to symlink const symlinkFiles = [ 'chrome.manifest', - 'install.rdf', // React needs to be patched by babel-worker.js, so symlink all files in resource/ except for // those. Babel transpilation for React is still disabled in .babelrc. 'resource/**/*', @@ -52,7 +51,6 @@ const symlinkFiles = [ 'resource/ace/worker-javascript.js', // Feed *.idl files are for documentation only '!resource/feeds/*.idl', - 'update.rdf', '!chrome/skin/default/zotero/**/*.scss', '!resource/citeproc_rs_wasm.js', // We only need a few Monaco languages @@ -65,6 +63,7 @@ const symlinkFiles = [ 'resource/vs/basic-languages/xml/*.js', 'resource/vs/language/typescript/*.js', 'resource/vs/language/json/*.js', + 'version', ]; diff --git a/version b/version new file mode 100644 index 0000000000..4d8e6b1209 --- /dev/null +++ b/version @@ -0,0 +1 @@ +7.0.0.SOURCE