| Index: import_from_android.sh
 | 
| diff --git a/import_from_android.sh b/import_from_android.sh
 | 
| deleted file mode 100755
 | 
| index 60420d841d40badc5212c0a371d0ff9a0530ebc3..0000000000000000000000000000000000000000
 | 
| --- a/import_from_android.sh
 | 
| +++ /dev/null
 | 
| @@ -1,483 +0,0 @@
 | 
| -#!/bin/sh
 | 
| -#
 | 
| -# Copyright (c) 2013 The Chromium Authors. All rights reserved.
 | 
| -# Use of this source code is governed by a BSD-style license that can be
 | 
| -# found in the LICENSE file.
 | 
| -
 | 
| -# Sanitize environment.
 | 
| -set -e
 | 
| -export LANG=C
 | 
| -export LC_ALL=C
 | 
| -
 | 
| -PROGDIR=$(dirname "$0")
 | 
| -PROGNAME=$(basename "$0")
 | 
| -
 | 
| -# Defaults
 | 
| -VERBOSE=1
 | 
| -
 | 
| -. "$PROGDIR/openssl-chromium.config"
 | 
| -
 | 
| -# Print error message and exit script.
 | 
| -# $1+: Error message.
 | 
| -panic () {
 | 
| -  echo "ERROR: $@"
 | 
| -  exit 1
 | 
| -}
 | 
| -
 | 
| -# $1: Variable name
 | 
| -# Output: variable value.
 | 
| -var_value () {
 | 
| -  # NOTE: Don't use 'echo' here, it is sensitive to options like -n.
 | 
| -  eval printf \"%s\\n\" \$$1
 | 
| -}
 | 
| -
 | 
| -# Print a message if verbosity is sufficiently high.
 | 
| -# $1: Verbosity threshold, only if '$VERBOSE > $1' does this print.
 | 
| -# $2+: Message.
 | 
| -dump_n () {
 | 
| -  local LEVEL=$1
 | 
| -  shift
 | 
| -  if [ "$VERBOSE" -gt "$LEVEL" ]; then
 | 
| -    printf "%s\n" "$@"
 | 
| -  fi
 | 
| -}
 | 
| -
 | 
| -# Print a message, unless --quiet was used.
 | 
| -dump () {
 | 
| -  dump_n 0 "$@"
 | 
| -}
 | 
| -
 | 
| -# Print a message if --verbose was used.
 | 
| -log () {
 | 
| -  dump_n 1 "$@"
 | 
| -}
 | 
| -
 | 
| -# Print a message if --verbose --verbose was used.
 | 
| -log2 () {
 | 
| -  dump_n 2 "$@"
 | 
| -}
 | 
| -
 | 
| -# Run a command silently, unless --verbose is used.
 | 
| -# More specifically:
 | 
| -#  - By default, this runs the command but redirects its stdout/stderr
 | 
| -#    to /dev/null to avoid printing anything.
 | 
| -#  - If --verbose is used, this prints the command's name, and stderr
 | 
| -#    will not be redirected.
 | 
| -#  - If '--verbose --verbose' is used, this prints the commands and its
 | 
| -#    complete output.
 | 
| -# $1+: Command
 | 
| -# Return: Command status
 | 
| -run () {
 | 
| -  if [ "$VERBOSE" -gt 1 ]; then
 | 
| -    echo "COMMAND: $@"
 | 
| -  fi
 | 
| -  case $VERBOSE in
 | 
| -    0)
 | 
| -        "$@" > /dev/null 2>&1
 | 
| -        ;;
 | 
| -    1)
 | 
| -        "$@" > /dev/null
 | 
| -        ;;
 | 
| -    *)
 | 
| -        "$@"
 | 
| -        ;;
 | 
| -  esac
 | 
| -}
 | 
| -
 | 
| -# Support cleaning up stuff when the script exits, even in case of
 | 
| -# error.
 | 
| -_ALL_CLEANUPS=
 | 
| -
 | 
| -clean_atexit () {
 | 
| -  local CLEANUPS CLEANUP
 | 
| -  CLEANUPS=$_ALL_CLEANUPS
 | 
| -  _ALL_CLEANUPS=
 | 
| -  for CLEANUP in $CLEANUPS; do
 | 
| -    ($CLEANUP)
 | 
| -  done
 | 
| -  exit $1
 | 
| -}
 | 
| -
 | 
| -trap "clean_atexit 0" EXIT
 | 
| -trap "clean_atexit \$?" HUP INT QUIT TERM
 | 
| -
 | 
| -# Add a cleanup function to the list of cleanups that will be run when
 | 
| -# the script exits.
 | 
| -atexit () {
 | 
| -    # Prepend to ensure that the cleanup steps are performed in reverse
 | 
| -    # order or registration.
 | 
| -    _ALL_CLEANUPS="$* $_ALL_CLEANUPS"
 | 
| -}
 | 
| -
 | 
| -# Support code to write into a gyp file
 | 
| -_GYP_MARGIN=""
 | 
| -
 | 
| -# Increment margin of gyp printer.
 | 
| -incr_gyp_margin () {
 | 
| -  _GYP_MARGIN="$_GYP_MARGIN  "
 | 
| -}
 | 
| -
 | 
| -decr_gyp_margin () {
 | 
| -  _GYP_MARGIN=$(echo "$_GYP_MARGIN" | cut --bytes=3-)
 | 
| -}
 | 
| -
 | 
| -print_gyp () {
 | 
| -  printf "%s%s\n" "$_GYP_MARGIN" "$@"
 | 
| -}
 | 
| -
 | 
| -# This prints a list variable definition in a gyp file.
 | 
| -# $1: Variable name (e.g. 'openssl_common_defines')
 | 
| -# $2+: List items (e.g. defines)
 | 
| -print_gyp_variable () {
 | 
| -  local VARNAME=$1
 | 
| -  local VALUE
 | 
| -  shift
 | 
| -  print_gyp "'$VARNAME': ["
 | 
| -  for VALUE; do
 | 
| -    print_gyp "  '$VALUE',"
 | 
| -  done
 | 
| -  print_gyp "],"
 | 
| -}
 | 
| -
 | 
| -# Same as print_gyp_variable, but for source file lists, this
 | 
| -# prepends openssl/ as required by the Chromium build to each item
 | 
| -# in the list.
 | 
| -# $1: Variable name (e.g. 'openssl_common_sources')
 | 
| -# $2+: List items (source file names).
 | 
| -print_gyp_source_variable () {
 | 
| -  local VARNAME=$1
 | 
| -  local VALUE
 | 
| -  shift
 | 
| -  print_gyp "'$VARNAME': ["
 | 
| -  for VALUE; do
 | 
| -    print_gyp "  'openssl/$VALUE',"
 | 
| -  done
 | 
| -  print_gyp "],"
 | 
| -}
 | 
| -
 | 
| -# Print usage instructions.
 | 
| -usage () {
 | 
| -    echo \
 | 
| -"Usage: $PROGNAME [options]
 | 
| -
 | 
| -This script is used to regenerate the content of the Chromium
 | 
| -third_party/openssl/ directory according to the configuration file
 | 
| -named 'openssl-chromium.config'.
 | 
| -
 | 
| -In particular, it will perform the following steps:
 | 
| -
 | 
| -  1) Download the Android sources from the AOSP git servers.
 | 
| -
 | 
| -  2) Add Chromium-specific patches to the Android source tree.
 | 
| -     (they must be under patches.chromium/ in $PROGDIR).
 | 
| -
 | 
| -  3) Download a versioned openssl package from the official OpenSSL
 | 
| -     servers, and check its MD5. The version is taken from the
 | 
| -     'openssl.version' file in the Android source tree.
 | 
| -
 | 
| -  4) Run the Android 'import_openssl.sh' script that rebuilds all sources
 | 
| -     from a clean slate.
 | 
| -
 | 
| -  5) Generate the 'openssl.gypi' that contains gyp-specific declarations
 | 
| -     for the library.
 | 
| -
 | 
| -  6) Generate 64-bit compatible opensslconf.h header.
 | 
| -
 | 
| -Valid options are the following (defaults are in brackets):
 | 
| -
 | 
| -  --help|-h|-?          Display this message.
 | 
| -  --aosp-git=<url>      Change git source for Android repository.
 | 
| -                        [$ANDROID_OPENSSL_GIT_SOURCE]
 | 
| -  --aosp-commit=<name>  Specify git commit or branch name [$ANDROID_OPENSSL_GIT_COMMIT]
 | 
| -  --temp-dir=<path>     Specify temporary directory, will not be cleaned.
 | 
| -                        [<random-temp-file-cleaned-on-exit>]
 | 
| -  --verbose             Increase verbosity.
 | 
| -  --quiet               Decrease verbosity.
 | 
| -"
 | 
| -  exit 1
 | 
| -}
 | 
| -
 | 
| -# Parse command-line.
 | 
| -DO_HELP=
 | 
| -
 | 
| -for OPT; do
 | 
| -  OPTARG=$()
 | 
| -  case $OPT in
 | 
| -    --help|-h|-?)
 | 
| -        DO_HELP=true
 | 
| -        ;;
 | 
| -    --aosp-commit=*)
 | 
| -        ANDROID_OPENSSL_GIT_COMMIT=${OPT#--aosp-commit=}
 | 
| -        if [ -z "$ANDROID_OPENSSL_GIT_COMMIT" ]; then
 | 
| -            panic "Missing option value: $OPT"
 | 
| -        fi
 | 
| -        ;;
 | 
| -    --aosp-git=*)
 | 
| -        ANDROID_OPENSSL_GIT_SOURCE=${OPT#--aosp-git=}
 | 
| -        if [ -z "$ANDROID_OPENSSL_GIT_SOURCE" ]; then
 | 
| -            panic "Missing option value: $OPT"
 | 
| -        fi
 | 
| -        ;;
 | 
| -    --temp-dir=*)
 | 
| -        TEMP_DIR=${OPT#--temp-dir=}
 | 
| -        if [ -z "$TEMP_DIR" ]; then
 | 
| -            panic "Missing option value: $OPT"
 | 
| -        fi
 | 
| -        ;;
 | 
| -    --quiet)
 | 
| -        VERBOSE=$(( $VERBOSE - 1 ))
 | 
| -        ;;
 | 
| -    --verbose)
 | 
| -        VERBOSE=$(( $VERBOSE + 1 ))
 | 
| -        ;;
 | 
| -    -*)
 | 
| -        panic "Invalid option '$OPT', see --help for details."
 | 
| -        ;;
 | 
| -    *)
 | 
| -        panic "This script doesn't take parameters. See --help for details."
 | 
| -        ;;
 | 
| -  esac
 | 
| -done
 | 
| -
 | 
| -if [ "$DO_HELP" ]; then
 | 
| -  usage
 | 
| -fi
 | 
| -
 | 
| -# Create temporary directory. Ensure it's always cleaned up on exit.
 | 
| -if [ -z "$TEMP_DIR" ]; then
 | 
| -  TEMP_DIR=$(mktemp -d)
 | 
| -  clean_tempdir () {
 | 
| -    rm -rf "$TEMP_DIR"
 | 
| -  }
 | 
| -  atexit clean_tempdir
 | 
| -  log "Temporary directory created: $TEMP_DIR"
 | 
| -else
 | 
| -  log "Using user-provided temp directory: $TEMP_DIR"
 | 
| -fi
 | 
| -
 | 
| -GIT_FLAGS=
 | 
| -case $VERBOSE in
 | 
| -  0|1)
 | 
| -    GIT_CLONE_FLAGS="--quiet"
 | 
| -    GIT_CHECKOUT_FLAGS="--quiet"
 | 
| -    CURL_FLAGS="-s"
 | 
| -    ;;
 | 
| -  2)
 | 
| -    GIT_CLONE_FLAGS=""
 | 
| -    GIT_CHECKOUT_FLAGS=""
 | 
| -    CURL_FLAGS=""
 | 
| -    ;;
 | 
| -  *)
 | 
| -    GIT_CLONE_FLAGS="--verbose"
 | 
| -    GIT_CHECKOUT_FLAGS=""
 | 
| -    CURL_FLAGS=""
 | 
| -    ;;
 | 
| -esac
 | 
| -
 | 
| -BUILD_DIR=$TEMP_DIR/build
 | 
| -mkdir -p "$BUILD_DIR" && rm -rf "$BUILD_DIR"/*
 | 
| -
 | 
| -# Download the Android sources.
 | 
| -ANDROID_SRC_DIR=$BUILD_DIR/android-openssl
 | 
| -dump "Downloading Android sources"
 | 
| -log "Downloading branch $ANDROID_OPENSSL_GIT_COMMIT from: $ANDROID_OPENSSL_GIT_SOURCE"
 | 
| -(
 | 
| -  run mkdir -p $ANDROID_SRC_DIR
 | 
| -  run cd $ANDROID_SRC_DIR
 | 
| -  run git clone $GIT_CLONE_FLAGS $ANDROID_OPENSSL_GIT_SOURCE .
 | 
| -  run git checkout $GIT_CHECKOUT_FLAGS $ANDROID_OPENSSL_GIT_COMMIT
 | 
| -  run rm -rf .git
 | 
| -)
 | 
| -
 | 
| -# Apply chromium-specific patches located in patches.chromium
 | 
| -CHROMIUM_PATCHES_DIR=$PROGDIR/patches.chromium
 | 
| -if [ ! -d "$CHROMIUM_PATCHES_DIR" ]; then
 | 
| -  dump "No Chromium-specific patches to apply."
 | 
| -else
 | 
| -  dump "Applying Chromium-specific patches:"
 | 
| -  CHROMIUM_PATCHES=$(/bin/ls $CHROMIUM_PATCHES_DIR/*.patch 2>/dev/null)
 | 
| -  for CHROMIUM_PATCH in $CHROMIUM_PATCHES; do
 | 
| -    dump "Applying: $CHROMIUM_PATCH"
 | 
| -    (cd $ANDROID_SRC_DIR && run patch -p1) < $CHROMIUM_PATCH
 | 
| -  done
 | 
| -fi
 | 
| -
 | 
| -# Get the openssl version
 | 
| -. $ANDROID_SRC_DIR/openssl.version
 | 
| -if [ -z "$OPENSSL_VERSION" ]; then
 | 
| -  panic "Could not find OPENSSL_VERSION definition from $ANDROID_SRC_DIR!"
 | 
| -fi
 | 
| -dump "Found OpenSSL version: $OPENSSL_VERSION"
 | 
| -
 | 
| -# Download OpenSSL package
 | 
| -DOWNLOAD_DIR=$BUILD_DIR/download
 | 
| -mkdir -p "$DOWNLOAD_DIR"
 | 
| -
 | 
| -OPENSSL_PACKAGE=openssl-$OPENSSL_VERSION.tar.gz
 | 
| -dump "Downloading $OPENSSL_PACKAGE from $OPENSSL_TAR_SOURCE"
 | 
| -run curl $CURL_FLAGS -o $DOWNLOAD_DIR/$OPENSSL_PACKAGE $OPENSSL_TAR_SOURCE/$OPENSSL_PACKAGE
 | 
| -run curl $CURL_FLAGS -o $DOWNLOAD_DIR/$OPENSSL_PACKAGE.md5 $OPENSSL_TAR_SOURCE/$OPENSSL_PACKAGE.md5
 | 
| -
 | 
| -OPENSSL_SHA1_DOWNLOADED=$(sha1sum $DOWNLOAD_DIR/$OPENSSL_PACKAGE | cut -d" " -f1)
 | 
| -OPENSSL_SHA1_EXPECTED=$OPENSSL_TAR_SHA1
 | 
| -if [ "$OPENSSL_SHA1_DOWNLOADED" != "$OPENSSL_SHA1_EXPECTED" ]; then
 | 
| -  echo "ERROR: Content mismatch for downloaded OpenSSL package:"
 | 
| -  echo "       Downloaded SHA-1: $OPENSSL_SHA1_DOWNLOADED"
 | 
| -  echo "       Expected SHA-1  : $OPENSSL_SHA1_EXPECTED"
 | 
| -  exit 1
 | 
| -fi
 | 
| -dump "Checking content of downloaded package: ok"
 | 
| -
 | 
| -# The import_openssl.sh script will really remove the existing 'openssl'
 | 
| -# directory and replace it with something completely new. This is a problem
 | 
| -# when using subversion because this also gets rid of all .svn
 | 
| -# subdirectories. This makes it impossible to commit the right set of
 | 
| -# changes with "gcl commit".
 | 
| -#
 | 
| -# To work-around this, copy all the .svn subdirectories into a temporary
 | 
| -# tarball, which will be extracted after the import process.
 | 
| -#
 | 
| -dump "Saving .svn subdirectories"
 | 
| -SVN_LIST_FILE=$BUILD_DIR/svn-subdirs
 | 
| -run find . -type d -name ".svn" > $SVN_LIST_FILE
 | 
| -SAVED_SVN_TARBALL=$BUILD_DIR/saved-svn-subdirs.tar.gz
 | 
| -run tar czf $SAVED_SVN_TARBALL -T $SVN_LIST_FILE
 | 
| -
 | 
| -# Re-run the import_openssl.sh script.
 | 
| -dump "Re-running the 'import_openssl.sh' script to reconfigure all sources."
 | 
| -(
 | 
| -  cd $ANDROID_SRC_DIR
 | 
| -  run ./import_openssl.sh import $DOWNLOAD_DIR/$OPENSSL_PACKAGE
 | 
| -)
 | 
| -
 | 
| -dump "Copying new Android sources to final location."
 | 
| -clean_openssl_new () {
 | 
| -  rm -rf "$PROGDIR/openssl.new"
 | 
| -}
 | 
| -atexit clean_openssl_new
 | 
| -
 | 
| -run cp -rp "$ANDROID_SRC_DIR" "$PROGDIR/openssl.new"
 | 
| -run mv "$PROGDIR/openssl" "$PROGDIR/openssl.old"
 | 
| -run mv "$PROGDIR/openssl.new" "$PROGDIR/openssl"
 | 
| -run rm -rf "$PROGDIR/openssl.old"
 | 
| -
 | 
| -dump "Restoring .svn subdirectores"
 | 
| -run tar xzf $SAVED_SVN_TARBALL
 | 
| -
 | 
| -# Extract list of source files or compiler defines from openssl.config
 | 
| -# variable definition. This assumes that the lists are in variables that
 | 
| -# are named as <prefix><suffix> or <prefix><suffix><arch>.
 | 
| -#
 | 
| -# A few examples:
 | 
| -#   get_gyp_list "FOO BAR" _SOURCES
 | 
| -#     -> returns '$FOO_SOURCES $BAR_SOURCES'
 | 
| -#
 | 
| -#   get_gyp_list FOO _SOURCES_ "arm x86"
 | 
| -#     -> returns '$FOO_SOURCES_arm $FOO_SOURCES_x86"
 | 
| -#
 | 
| -#   get_gyp_list "FOO BAR" _SOURCES_ "arm x86"
 | 
| -#     -> returns '$FOO_SOURCES_arm $FOO_SOURCES_x86 $BAR_SOURCES_arm $BAR_SOURCES_x86'
 | 
| -#
 | 
| -# $1: list of variable prefixes
 | 
| -# $2: variable suffix
 | 
| -# $3: optional list of architectures.
 | 
| -get_gyp_list () {
 | 
| -  local ALL_PREFIXES="$1"
 | 
| -  local SUFFIX="$2"
 | 
| -  local ALL_ARCHS="$3"
 | 
| -  local LIST PREFIX ARCH
 | 
| -  for PREFIX in $ALL_PREFIXES; do
 | 
| -    if [ "$ALL_ARCHS" ]; then
 | 
| -      for ARCH in $ALL_ARCHS; do
 | 
| -        LIST="$LIST $(var_value ${PREFIX}${SUFFIX}${ARCH})"
 | 
| -      done
 | 
| -    else
 | 
| -      LIST="$LIST $(var_value ${PREFIX}${SUFFIX})"
 | 
| -    fi
 | 
| -  done
 | 
| -  echo "$LIST"
 | 
| -}
 | 
| -
 | 
| -generate_gyp_file () {
 | 
| -  echo "# Auto-generated file - DO NOT EDIT"
 | 
| -  echo "# To regenerate - run import_from_android.sh."
 | 
| -  echo "# See 'import_from_android.sh --help' for details."
 | 
| -
 | 
| -  local ALL_PREFIXES="OPENSSL_CRYPTO OPENSSL_SSL"
 | 
| -  local ALL_ARCHS="arm mips x86 x86_64 mac_ia32"
 | 
| -  local PREFIX ARCH LIST
 | 
| -
 | 
| -  print_gyp "{"
 | 
| -  incr_gyp_margin
 | 
| -
 | 
| -    print_gyp "'variables': {"
 | 
| -    incr_gyp_margin
 | 
| -
 | 
| -      # First, the common sources and defines
 | 
| -      print_gyp_source_variable "openssl_common_sources" \
 | 
| -          $(get_gyp_list "$ALL_PREFIXES" _SOURCES)
 | 
| -
 | 
| -      print_gyp_variable "openssl_common_defines" \
 | 
| -          $(get_gyp_list "$ALL_PREFIXES" _DEFINES)
 | 
| -
 | 
| -      # Now, conditions section with add architecture-specific sub-sections.
 | 
| -      for ARCH in $ALL_ARCHS; do
 | 
| -        # Convert ARCH to gyp-specific architecture name
 | 
| -        case $ARCH in
 | 
| -          x86)
 | 
| -            GYP_ARCH=ia32
 | 
| -            ;;
 | 
| -          x86_64)
 | 
| -            GYP_ARCH=x64
 | 
| -            ;;
 | 
| -          *)
 | 
| -            GYP_ARCH=$ARCH
 | 
| -            ;;
 | 
| -        esac
 | 
| -
 | 
| -        print_gyp_source_variable "openssl_${ARCH}_source_excludes" \
 | 
| -            $(get_gyp_list "$ALL_PREFIXES" _SOURCES_EXCLUDES_ $ARCH)
 | 
| -
 | 
| -        print_gyp_source_variable "openssl_${ARCH}_sources" \
 | 
| -            $(get_gyp_list "$ALL_PREFIXES" _SOURCES_ $ARCH)
 | 
| -
 | 
| -        print_gyp_variable "openssl_${ARCH}_defines" \
 | 
| -            $(get_gyp_list "$ALL_PREFIXES" _DEFINES_ $ARCH)
 | 
| -
 | 
| -      done # for ARCH
 | 
| -
 | 
| -    decr_gyp_margin
 | 
| -    print_gyp "}"  # variables
 | 
| -
 | 
| -  decr_gyp_margin
 | 
| -  print_gyp "}"  # top-level dict.
 | 
| -}
 | 
| -
 | 
| -dump "Generating 64-bit configuration header file."
 | 
| -mkdir -p $PROGDIR/config/x64/openssl/
 | 
| -sed \
 | 
| -  -e 's|^#define RC4_INT unsigned char|#define RC4_INT unsigned int|g' \
 | 
| -  -e 's|^#define BN_LLONG|#undef BN_LLONG|g' \
 | 
| -  -e 's|^#define THIRTY_TWO_BIT|#undef THIRTY_TWO_BIT|g' \
 | 
| -  -e 's|^#undef SIXTY_FOUR_BIT_LONG|#define SIXTY_FOUR_BIT_LONG|g' \
 | 
| -  -e 's|^#define BF_PTR|#undef BF_PTR|g' \
 | 
| -  $PROGDIR/openssl/include/openssl/opensslconf.h \
 | 
| -  > $PROGDIR/config/x64/openssl/opensslconf.h
 | 
| -
 | 
| -dump "Generating OS X 32-bit configuration header file."
 | 
| -mkdir -p $PROGDIR/config/mac/ia32/openssl/
 | 
| -sed \
 | 
| -  -e '4a#ifndef OPENSSL_SYSNAME_MACOSX\n# define OPENSSL_SYSNAME_MACOSX\n#endif' \
 | 
| -  -e 's|^#define RC4_INT unsigned char|#define RC4_INT unsigned int|g' \
 | 
| -  -e 's|^#define DES_LONG unsigned int|#define DES_LONG unsigned long|g' \
 | 
| -  $PROGDIR/openssl/include/openssl/opensslconf.h \
 | 
| -  > $PROGDIR/config/mac/ia32/openssl/opensslconf.h
 | 
| -
 | 
| -dump "Generating .gypi file."
 | 
| -. $ANDROID_SRC_DIR/openssl.config
 | 
| -generate_gyp_file > $PROGDIR/openssl.gypi.new
 | 
| -run mv $PROGDIR/openssl.gypi $PROGDIR/openssl.gypi.old
 | 
| -run mv $PROGDIR/openssl.gypi.new $PROGDIR/openssl.gypi
 | 
| -run rm $PROGDIR/openssl.gypi.old
 | 
| -
 | 
| -dump "Done."
 | 
| 
 |