mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-08 06:53:45 +00:00
ICU-3301 add a tool for generating the data jar file
X-SVN-Rev: 15380
This commit is contained in:
parent
c4f2106a37
commit
68f87685c3
1 changed files with 175 additions and 0 deletions
175
icu4c/source/tools/genrb/gendtjar.pl
Executable file
175
icu4c/source/tools/genrb/gendtjar.pl
Executable file
|
@ -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=<directory where icu4c lives>
|
||||
--jar=<directory where jar.exe lives>
|
||||
--icu4j-root=<directory>
|
||||
--version=<ICU4C version>
|
||||
e.g:
|
||||
gendtjar.pl --icu-root=\\work\\icu --jar=\\jdk1.4.1\\bin --icu4j-root=\\work\\icu4j --version=3.0
|
||||
END
|
||||
exit(0);
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue