From 68f87685c3aba6bb19992997385179872e0c4442 Mon Sep 17 00:00:00 2001 From: Ram Viswanadha Date: Tue, 18 May 2004 21:33:21 +0000 Subject: [PATCH] ICU-3301 add a tool for generating the data jar file X-SVN-Rev: 15380 --- icu4c/source/tools/genrb/gendtjar.pl | 175 +++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100755 icu4c/source/tools/genrb/gendtjar.pl diff --git a/icu4c/source/tools/genrb/gendtjar.pl b/icu4c/source/tools/genrb/gendtjar.pl new file mode 100755 index 00000000000..d9aab86bbcc --- /dev/null +++ b/icu4c/source/tools/genrb/gendtjar.pl @@ -0,0 +1,175 @@ +#!/usr/bin/perl +# ******************************************************************** +# * COPYRIGHT: +# * Copyright (c) 2002-2003, International Business Machines Corporation and +# * others. All Rights Reserved. +# ******************************************************************** + +# Script to generate the icudata.jar and testdata.jar files. This file is +# part of icu4j. It is checked into CVS. It is generated from +# locale data in the icu4c project. See usage() notes (below) +# for more information. + +# This script requires perl. For Win32, I recommend www.activestate.com. + +# Ram Viswanadha +# copied heavily from genrbjar.pl +use File::Find; +use File::Basename; +use IO::File; +use Cwd; +use File::Copy; +use Getopt::Long; +use File::Path; +use File::Copy; + + +main(); + +#------------------------------------------------------------------ +sub main(){ + +GetOptions( + "--icu-root=s" => \$icuRootDir, + "--jar=s" => \$jarDir, + "--icu4j-root=s" => \$icu4jDir, + "--version=s" => \$version + ); +usage() unless defined $icuRootDir; +usage() unless defined $jarDir; + #usage() unless defined $icu4jRootDir; + $icuswap = $icuRootDir."/bin/icuswap -tb"; + $tempDir =cwd(); + $tempDir .= "/temp"; + $version =~ s/\.//; + $icu4jDataDir ="com/ibm/icu/impl/data/icudt".$version."b"; + $icu4jTestDataDir = "com/ibm/icu/dev/data/testdata"; + $icuDataDir =$icuRootDir."/source/data/out/build/icudt".$version.checkPlatform(); + $icuTestDataDir =$icuRootDir."/source/test/testdata/out/build/"; + convertData($icuDataDir, $icuswap, $tempDir, $icu4jDataDir); + convertData($icuDataDir."/coll/", $icuswap, $tempDir, $icu4jDataDir."/coll"); + createJar("$jarDir/jar", "icudata.jar", $tempDir, $icu4jDataDir); + + convertTestData($icuTestDataDir, $icuswap, $tempDir, $icu4jTestDataDir); + createJar("$jarDir/jar", "testdata.jar", $tempDir, $icu4jTestDataDir); +} + +#----------------------------------------------------------------------- +sub createJar{ + local($jar, $jarFile, $tempDir, $dirToJar) = @_; + chdir($tempDir); + $command = "$jar cvf $jarFile -C $tempDir $dirToJar"; + cmd($command); +} +#----------------------------------------------------------------------- +sub checkPlatform { + my $is_big_endian = unpack("h*", pack("s", 1)) =~ /01/; + if ($is_big_endian) { + return "b"; + }else{ + return "l"; + } +} +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +sub convertData{ + local($icuDataDir, $icuswap, $tempDir, $icu4jDataDir) =@_; + my $dir = $tempDir."/".$icu4jDataDir; + # create the temp directory + mkpath("$tempDir/$icu4jDataDir"); + # cd to the temp directory + chdir($tempDir); + + my @list; + opendir(DIR,$icuDataDir); + print $icuDataDir; + @list = readdir(DIR); + closedir(DIR); + print "{Command: $op*.*}\n"; + my $op = $icuswap; + $i=0; + # now convert + foreach $item (@list){ + next if($item eq "." || $item eq ".."); + next if($item =~ /^t_.*$\.res/ ||$item =~ /^translit_.*$\.res/ || $item =~ /$\.cnv/ || + $item=~/$\.crs/ || $item=~ /$\.txt/ || $item=~/coll/ || $item=~ /^zoneinfo/ || + $item=~/icudata\.res/ || $item=~/$\.exp/ || $item=~/$\.lib/ || $item=~/$\.obj/ || + $item=~/cnvalias\.icu/); + + $command = $icuswap." $icuDataDir/$item $tempDir/$icu4jDataDir/$item"; + cmd($command); + + } + chdir(".."); + print "\nDONE\n"; +} +#----------------------------------------------------------------------- +sub convertTestData{ + local($icuDataDir, $icuswap, $tempDir, $icu4jDataDir) =@_; + my $dir = $tempDir."/".$icu4jDataDir; + # create the temp directory + mkpath("$tempDir/$icu4jDataDir"); + # cd to the temp directory + chdir($tempDir); + print "{Command: $op*.*}\n"; + my $op = $icuswap; + my @list; + opendir(DIR,$icuDataDir); + print $icuDataDir; + @list = readdir(DIR); + closedir(DIR); + + $i=0; + # now convert + foreach $item (@list){ + next if($item eq "." || $item eq ".."); + next if($item =~ /$\.cnv/ || item=~/$\.crs/ || $item=~ /$\.txt/ || + $item=~/$\.exp/ || $item=~/$\.lib/ || $item=~/$\.obj/ || + $item=~/$\.mak/ || $item=~/test\.icu/); + + if($item =~ /^testdata_/){ + $file = $item; + $file =~ s/testdata_//g; + $command = "$icuswap $icuDataDir/$item $tempDir/$icu4jDataDir/$file"; + cmd($command); + } + + } + chdir(".."); + print "\nDONE\n"; +} +#------------------------------------------------------------------------------------------------ +sub cmd { + my $cmd = shift; + my $prompt = shift; + $prompt = "Command: $cmd.." unless ($prompt); + print $prompt."\n"; + system($cmd); + my $exit_value = $? >> 8; + #my $signal_num = $? & 127; + #my $dumped_core = $? & 128; + if ($exit_value == 0) { + print "ok\n"; + } else { + ++$errCount; + print "ERROR ($exit_value)\n"; + exit(1); + } +} +#----------------------------------------------------------------------- +sub usage { + print << "END"; +Usage: +gendtjar.pl +Options: + --icu-root= + --jar= + --icu4j-root= + --version= +e.g: +gendtjar.pl --icu-root=\\work\\icu --jar=\\jdk1.4.1\\bin --icu4j-root=\\work\\icu4j --version=3.0 +END + exit(0); +} +