mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
58e2e722d0
Also fixes bug 926980 - load ICU data from an archive file. Stop invoking ICU's autoconf build system. Instead, have hand-authored moz.build files under config/external/icu to build what we need. In addition, we'll commit a pre-built copy of the ICU data file (currently icudt56l.dat) under config/external/icu/data to avoid having to build ICU host tools to generate it. config/external/icu/data also contains some assembly files which can generate an object file containing the ICU data file contents so that the JS shell (or standalone JS builds) can be linked directly to the data without having to deal with the external data file. This requires yasm or GNU as. Various bits of packaging have been updated to account for the ICU data file. XPCOM initialization now sets the ICU data directory so ICU can locate its data file. The update-icu.sh script has been modified to read the list of C/C++ source files out of the ICU Makefiles and update `sources.mozbuild` files under config/external/icu, as well as build a local copy of ICU using its autoconf build system to generate the ICU data file to be committed in-tree. MozReview-Commit-ID: 8Pfkzqt6S1W --HG-- extra : rebase_source : 31426cddddb5543e0191059ba2f2eb069abe7727
76 lines
2.8 KiB
Bash
Executable File
76 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
set -e
|
|
|
|
# Usage: update-icu.sh <URL of ICU SVN with release>
|
|
# E.g., for ICU 55.1: update-icu.sh http://source.icu-project.org/repos/icu/icu/tags/release-55-1/
|
|
|
|
if [ $# -lt 1 ]; then
|
|
echo "Usage: update-icu.sh <URL of ICU SVN with release>"
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure that $Date$ in the checked-out svn files expands timezone-agnostically,
|
|
# so that this script's behavior is consistent when run from any time zone.
|
|
export TZ=UTC
|
|
|
|
icu_dir=`dirname $0`/icu
|
|
|
|
# Remove intl/icu/source, then replace it with a clean export.
|
|
rm -rf ${icu_dir}/source
|
|
svn export $1/source/ ${icu_dir}/source
|
|
|
|
# remove layout, tests, and samples, but leave makefiles in place
|
|
find ${icu_dir}/source/layout -name '*Makefile.in' -prune -or -type f -print | xargs rm
|
|
find ${icu_dir}/source/layoutex -name '*Makefile.in' -prune -or -type f -print | xargs rm
|
|
find ${icu_dir}/source/test -name '*Makefile.in' -prune -or -type f -print | xargs rm
|
|
find ${icu_dir}/source/samples -name '*Makefile.in' -prune -or -type f -print | xargs rm
|
|
|
|
# remove data that we currently don't need
|
|
rm -rf ${icu_dir}/source/data/brkitr/*
|
|
rm ${icu_dir}/source/data/lang/*.mk
|
|
rm ${icu_dir}/source/data/lang/*.txt
|
|
rm ${icu_dir}/source/data/mappings/*.mk
|
|
find ${icu_dir}/source/data/mappings \
|
|
-name ibm-37_P100-1995.ucm -prune -or \
|
|
-name ibm-1047_P100-1995.ucm -prune -or \
|
|
-name '*.ucm' -print | xargs rm
|
|
rm ${icu_dir}/source/data/rbnf/*
|
|
rm ${icu_dir}/source/data/region/*.mk
|
|
rm ${icu_dir}/source/data/region/*.txt
|
|
rm ${icu_dir}/source/data/translit/*
|
|
rm ${icu_dir}/source/data/unit/*.mk
|
|
rm ${icu_dir}/source/data/unit/*.txt
|
|
|
|
# Record `svn info`, eliding the line that changes every time the entire ICU
|
|
# repository (not just the path within it we care about) receives a commit.
|
|
# (This ensures that if ICU modifications are performed properly, it's always
|
|
# possible to run the command at the top of this script and make no changes to
|
|
# the tree.)
|
|
svn info $1 | grep -v '^Revision: [[:digit:]]\+$' > ${icu_dir}/SVN-INFO
|
|
|
|
for patch in \
|
|
bug-915735 \
|
|
suppress-warnings.diff \
|
|
bug-1172609-icu-fix.diff \
|
|
bug-1172609-timezone-recreateDefault.diff \
|
|
bug-1198952-workaround-make-3.82-bug.diff \
|
|
icu-release-56-1-flagparser-fix.patch \
|
|
bug-1228227-libc++-gcc_hidden.diff \
|
|
; do
|
|
echo "Applying local patch $patch"
|
|
patch -d ${icu_dir}/../../ -p1 --no-backup-if-mismatch < ${icu_dir}/../icu-patches/$patch
|
|
done
|
|
|
|
topsrcdir=`dirname $0`/../
|
|
python ${topsrcdir}/js/src/tests/ecma_6/String/make-normalize-generateddata-input.py $topsrcdir
|
|
|
|
# Update our moz.build files in config/external/icu, and
|
|
# build a new ICU data file.
|
|
python `dirname $0`/icu_sources_data.py $topsrcdir
|
|
|
|
hg addremove ${icu_dir} ${topsrcdir}/config/external/icu
|