gecko-dev/modules/pdfium/update.sh

149 строки
4.9 KiB
Bash

#!/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/.
# Script to update the mozilla in-tree copy of the PDFium library.
# Run this within the /modules/pdfium directory of the source tree.
set -e
COMMIT_SELECTOR=""
COMMIT=""
COMMIT_DATE=""
print_help() {
echo "usage: ./update.sh [--commit COMMIT]"
echo ""
echo "Update Tool for PDFium Library"
echo "optional arguments:"
echo " --commit COMMIT specify a commit hash or a branch name (default: master)"
}
checkout_commit() {
if [ -d "pdfium" ]; then
echo "Removing pdfium"
rm -rf pdfium
fi
echo "Downloading pdfium"
git clone https://pdfium.googlesource.com/pdfium
echo "Parsing $1"
if [[ $1 =~ ^[0-9A-Fa-f]+$ ]]; then
COMMIT=$(git -C pdfium rev-parse "$1")
else
COMMIT=$(git -C pdfium rev-parse remotes/origin/"$1")
fi
COMMIT_DATE=$(git -C pdfium show -s --format=%ci "$COMMIT")
echo "Checking out $COMMIT"
git -C pdfium checkout "$COMMIT"
}
cleanup_files() {
# Remove git source control files.
echo "Removing pdfium/.git and pdfium/.gitignore"
rm -rf pdfium/.git
rm pdfium/.gitignore
# We remove PDFium's copy of FreeType and link directly to our in-tree copy
# at /modules/freetype2.
# (Our in-tree copy of FreeType is kept up-to-date and the FreeType API is
# generally backwards compatible, so it is unlikely that our copy of the
# PDFium source will be incompatible with our in-tree copy of FreeType.)
echo "Removing pdfium/third_party/freetype"
rm -rf pdfium/third_party/freetype
# We link PDFium to our in-tree copy of libjpeg at /media/libjpeg
echo "Removing pdfium/third_party/libjpeg"
rm -rf pdfium/third_party/libjpeg
# We link PDFium to our in-tree copy of zlib at /modules/zlib
echo "Removing pdfium/third_party/zlib_v128"
rm -rf pdfium/third_party/zlib_v128
# We don't use libpng since the XFA features are disabled.
echo "Removing pdfium/third_party/libpng16"
rm -rf pdfium/third_party/libpng16
# We don't use libtiff since the XFA features are disabled.
echo "Removing pdfium/third_party/libtiff"
rm -rf pdfium/third_party/libtiff
# We don't use pymock since we don't run the pymock based tests.
echo "Removing pdfium/third_party/pymock"
rm -rf pdfium/third_party/pymock
# We don't currently need PDfium to support JPEG 2000 since we are not
# currently using PDFium as a general PDF viewer. Currently we only
# process PDF files generated by SkiaPDF, and SkiaPDF doesn't output
# JPEG 2000 images.
echo "Removing pdfium/third_party/libopenjpeg20"
rm -rf pdfium/third_party/libopenjpeg20
# We don't currently use any testing data or any testing programs of PDFium.
echo "Removing pdfium/test and pdfium/testing"
rm -rf pdfium/test
rm -rf pdfium/testing
# We don't need XFA implementations since the XFA features are disabled.
echo "Removing pdfium/xfa"
rm -rf pdfium/xfa
}
apply_patches() {
# Patch to fix build errors due to lacking GDI+ prerequisite headers
echo "Applying patches/bug1368948_gdiplus_prerequisite.patch"
patch -p3 < patches/bug1368948_gdiplus_prerequisite.patch
# Patch to use freetype library within Gecko
echo "Applying patches/bug1368948_use_gecko_freetype.patch"
patch -p3 < patches/bug1368948_use_gecko_freetype.patch
# Patch to use libjpeg library within Gecko
echo "Applying patches/bug1368948_use_gecko_libjpeg.patch"
patch -p3 < patches/bug1368948_use_gecko_libjpeg.patch
# Patch to use zlib library within Gecko
echo "Applying patches/bug1368948_use_gecko_zlib.patch"
patch -p3 < patches/bug1368948_use_gecko_zlib.patch
# Patch to remove openjpeg support
echo "Applying patches/bug1368948_remove_openjpeg.patch"
patch -p3 < patches/bug1368948_remove_openjpeg.patch
# Patch to avoid using GDIPlusExt while rendering EMF
echo "Applying patches/bug1367948_avoid_using_GDIPlusExt.patch"
patch -p3 < patches/bug1367948_avoid_using_GDIPlusExt.patch
# Patch for compatibility with freetype 2.8
echo "Applying patches/bug1364714_freetype28_compat.patch"
patch -p3 < patches/bug1364714_freetype28_compat.patch
# Patch to remove __in and __out macros
echo "Applying patches/bug1402065_remove___in_and___out.patch"
patch -p3 < patches/bug1402065_remove___in_and___out.patch
}
update_readme() {
echo "Updating README_MOZILLA"
PREFIX="The git commit ID last used to import was"
perl -p -i -e "s/${PREFIX} [0-9A-Fa-f]+ \(.+\)/${PREFIX} ${COMMIT} (${COMMIT_DATE})/" README_MOZILLA
}
if [ "$#" == 0 ]; then
COMMIT_SELECTOR="master"
elif [ "$#" == 2 -a "$1" == "--commit" ]; then
COMMIT_SELECTOR="$2"
else
print_help
exit 1
fi
cd $(dirname $0)
checkout_commit "$COMMIT_SELECTOR"
cleanup_files
apply_patches
update_readme