util/webkit/mkdist-javascriptcore
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 #!/bin/bash
       
     2 
       
     3 die() {
       
     4     echo $*
       
     5     exit 1
       
     6 }
       
     7 
       
     8 default_tag="javascriptcore-4.6-snapshot-29072009"
       
     9 
       
    10 if [ $# -eq 0 ]; then
       
    11     tag="$default_tag"
       
    12 elif [ $# -eq 1 ]; then
       
    13     tag=$1
       
    14 else
       
    15     die "usage: $0 [commit (defaults to $default_tag)]"
       
    16 fi
       
    17 
       
    18 repository=`git config qtwebkit.url`
       
    19 if [ -z "$repository" ]; then
       
    20     die "error: cannot locate webkit git repository. please run git config --global qtwebkit.url /path-or-url/to/webkit/repo"
       
    21 fi
       
    22 
       
    23 excluded_directories="$excluded_directories JavaScriptCore/Makefile"
       
    24 excluded_directories="$excluded_directories JavaScriptCore/GNUmakefile.am"
       
    25 excluded_directories="$excluded_directories JavaScriptCore/Configurations"
       
    26 excluded_directories="$excluded_directories JavaScriptCore/JavaScriptCore.exp"
       
    27 excluded_directories="$excluded_directories JavaScriptCore/JavaScriptCore.xcodeproj"
       
    28 excluded_directories="$excluded_directories JavaScriptCore/tests"
       
    29 excluded_directories="$excluded_directories JavaScriptCore/API/tests"
       
    30 excluded_directories="$excluded_directories JavaScriptCore/JavaScriptCore.vcproj"
       
    31 excluded_directories="$excluded_directories JavaScriptCore/wtf/wx"
       
    32 excluded_directories="$excluded_directories JavaScriptCore/wtf/gtk"
       
    33 excluded_directories="$excluded_directories JavaScriptCore/wtf/mac"
       
    34 excluded_directories="$excluded_directories JavaScriptCore/wtf/win"
       
    35 excluded_directories="$excluded_directories JavaScriptCore/wtf/chromium"
       
    36 excluded_directories="$excluded_directories JavaScriptCore/wtf/haiku"
       
    37 excluded_directories="$excluded_directories JavaScriptCore/icu"
       
    38 
       
    39 
       
    40 files_to_remove=""
       
    41 files_to_remove="$files_to_remove JavaScriptCore/AllInOneFile.cpp"
       
    42 files_to_remove="$files_to_remove JavaScriptCore/JavaScriptCoreSources.bkl"
       
    43 files_to_remove="$files_to_remove JavaScriptCore/jscore.bkl"
       
    44 files_to_remove="$files_to_remove JavaScriptCore/jsc.pro"
       
    45 
       
    46 require_clean_work_tree() {
       
    47     # test if working tree is dirty
       
    48     git rev-parse --verify HEAD > /dev/null &&
       
    49     git update-index --refresh &&
       
    50     git diff-files --quiet &&
       
    51     git diff-index --cached --quiet HEAD ||
       
    52     die "Working tree is dirty"
       
    53 }
       
    54 
       
    55 which qmake >/dev/null 2>/dev/null
       
    56 if [ "$?" != 0 ]; then
       
    57     die "abort: Could not locate qmake in your PATH"
       
    58 fi
       
    59 
       
    60 test -z "$(git rev-parse --show-cdup)" || {
       
    61        exit=$?
       
    62        echo >&2 "You need to run this command from the toplevel of the working tree."
       
    63        exit $exit
       
    64 }
       
    65 
       
    66 echo "checking working tree"
       
    67 require_clean_work_tree
       
    68 
       
    69 revCount=`git ls-remote $repository | grep $tag | awk '{print $1}' | wc -l`
       
    70 if [ "$revCount" != 1 ]; then
       
    71     die "Cannot parse $tag into a revision. It seems ambiguous".
       
    72 fi
       
    73 
       
    74 rev=`git ls-remote $repository | grep -E "^.+$tag$" | awk '{print $1}'`
       
    75 
       
    76 tarball=`mktemp /tmp/webkit-snapshot.tar.XXXXXX` || exit 1
       
    77 echo "creating $tarball"
       
    78 
       
    79 echo "archiving webkit from $repository $tag ( $rev )"
       
    80 
       
    81 git archive --remote=$repository $rev JavaScriptCore WebKit.pri > $tarball || exit 1
       
    82 
       
    83 echo "removing unwanted files and directories"
       
    84 for dir in $excluded_directories; do
       
    85     echo "    removing $dir"
       
    86     tar --delete --file=$tarball $dir
       
    87 done
       
    88 
       
    89 for item in $exclude_with_exceptions_list; do
       
    90     dir=`echo $item | awk -F : '{print $1}'`
       
    91     include=`echo $item | awk -F : '{print $2}'`
       
    92     echo "    removing $dir except $include"
       
    93     files=`tar --list --file=$tarball $dir | grep -v -E "^$dir\$" | grep -v $include`
       
    94     tar --delete --file=$tarball $files
       
    95 done
       
    96 
       
    97 for file in $files_to_remove; do
       
    98     echo "    removing $file"
       
    99     tar --delete --file=$tarball $file
       
   100 done
       
   101 
       
   102 echo "done!"
       
   103 
       
   104 srcdir=src/3rdparty/javascriptcore
       
   105 absSrcDir=$PWD/$srcdir
       
   106 localDiff=
       
   107 lastImportRevison=
       
   108 
       
   109 echo "replacing $srcdir"
       
   110 if [  -d $srcdir ]; then
       
   111     git ls-files $srcdir | xargs rm
       
   112     git ls-files -z src/3rdparty/javascriptcore | git update-index --force-remove -z --stdin
       
   113 else
       
   114     mkdir -p $srcdir
       
   115 fi
       
   116 
       
   117 (cd $srcdir && tar xf $tarball)
       
   118 git add $srcdir
       
   119 
       
   120 echo "generating extra sources"
       
   121 (
       
   122   for proj in JavaScriptCore; do
       
   123       cd $absSrcDir/$proj &&
       
   124       rm -rf tmp &&
       
   125       mkdir tmp &&
       
   126       cd tmp &&
       
   127       mkdir -p ../generated &&
       
   128       qmake -o Makefile CONFIG-=QTDIR_build QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated  OUTPUT_DIR=`pwd` ../$proj.pro &&
       
   129       make generated_files &&
       
   130       perl -pi -e "s,$absSrcDir/,,g" ../generated/*.cpp ../generated/*.h &&
       
   131       git add ../generated &&
       
   132       cd .. &&
       
   133       rm -rf tmp &&
       
   134       cd ..
       
   135   done
       
   136 )
       
   137 rm -rf $srcdir/WebKitBuild
       
   138 
       
   139 cat >$srcdir/VERSION <<EOT
       
   140 This is a snapshot of JavaScriptCore from
       
   141 
       
   142         git://gitorious.org/qtwebkit/qtwebkit.git
       
   143 
       
   144 The commit imported was from the
       
   145 
       
   146         $tag branch/tag
       
   147 
       
   148 and has the sha1 checksum
       
   149 
       
   150         $rev
       
   151 EOT
       
   152 git add $srcdir/VERSION
       
   153 
       
   154 git diff-files --name-only -z | git update-index --remove -z --stdin
       
   155 
       
   156 echo "removing $tarball"
       
   157 rm -f $tarball
       
   158 
       
   159 cat >commitlog.txt <<EOT
       
   160 Updated JavaScriptCore from $repository to $tag ( $rev )
       
   161 EOT
       
   162 
       
   163 if [ -d "$repository/.git" -a -n "$lastImportRevison" ]; then
       
   164     echo >>commitlog.txt
       
   165     echo "Changes in WebKit/qt since the last update:" >>commitlog.txt
       
   166     echo >>commitlog.txt
       
   167     git --git-dir=$repository/.git diff $lastImportRevison $rev -- WebKit/qt/ChangeLog | sed -n -e "s,^\+\(.*\),\1,p" >>commitlog.txt
       
   168 fi
       
   169 
       
   170 echo "Changes:"
       
   171 echo
       
   172 git --no-pager diff --name-status --cached $srcdir
       
   173 
       
   174 echo
       
   175 echo "Wrote commitlog.txt. Use with"
       
   176 echo
       
   177 echo "    git commit -e -F commitlog.txt"
       
   178 echo
       
   179 echo "to commit your changes"
       
   180 
       
   181 if [ -n "$localDiff" ]; then
       
   182     echo
       
   183     echo "The changes that were locally stored in Perforce are now stored as a git patch in $localDiff"
       
   184     echo "You may want to appy them with"
       
   185     echo
       
   186     echo "    git am -3 $localDiff"
       
   187     echo
       
   188 fi