116 lines
3.8 KiB
Perl
Executable File
116 lines
3.8 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
BEGIN {
|
|
if ( exists $ENV{'CCM_TOOLS_HOME'} && defined $ENV{'CCM_TOOLS_HOME'} ) {
|
|
if ( -d "$ENV{'CCM_TOOLS_HOME'}/lib" ) {
|
|
push @INC, "$ENV{'CCM_TOOLS_HOME'}/lib";
|
|
} else {
|
|
print "$ENV{'CCM_TOOLS_HOME'}/lib was not found\n";
|
|
exit 1;
|
|
}
|
|
} else {
|
|
print "The CCM_TOOLS_HOME environment variable must be set first.\n";
|
|
exit 1;
|
|
}
|
|
}
|
|
|
|
use strict;
|
|
use CCM::CommandsUtil;
|
|
use CCM::Util;
|
|
use CCM::Runtime;
|
|
use Cwd;
|
|
use File::Spec;
|
|
use Getopt::Long;
|
|
|
|
my $runtime = CCM::Runtime->new();
|
|
my $CCM_CONFIG_HOME=CCM::Util::getRequiredEnvVariable('CCM_CONFIG_HOME');
|
|
my $JAVA_CMD = $runtime->getJavaCommand();
|
|
my $verbose = 0;
|
|
|
|
GetOptions('verbose+' => \$verbose);
|
|
|
|
if ( ! -r "project.xml" ) {
|
|
CCM::Util::error("No project.xml file found",2);
|
|
}
|
|
|
|
my $projectxml = &getProjectXML();
|
|
my $version = getVersion();
|
|
my $dir = getcwd;
|
|
|
|
if ( defined $version && $version eq "6.1" ) {
|
|
my $sharedlibdir = exists ($ENV{'CCM_CONFIG_LIB_DIR'}) ? $ENV{'CCM_CONFIG_LIB_DIR'} : File::Spec->catdir("usr", "share", "java");
|
|
&checkSchema();
|
|
&runxsl2("combine.xsl", "project.xml", ".tmp.project.xml");
|
|
&runxsl2("build-template.xsl", ".tmp.project.xml", "build.xml");
|
|
&runxsl2("classpath-template.xsl", "project.xml", "ccm.classpath", "-PARAM shared.lib.dist.dir \"$sharedlibdir\" -PARAM base.dir $dir");
|
|
unlink(".tmp.project.xml");
|
|
} else {
|
|
if ( ! defined $version ) {
|
|
print " WARNING: Could not find ccmVersion attribute in ccm:project tag\n";
|
|
print " of project.xml. Assuming 5x version.\n";
|
|
}
|
|
&runxsl("build-template-5x.xsl", "build.xml");
|
|
}
|
|
|
|
sub checkSchema {
|
|
print "Validating the schema of project.xml\n";
|
|
|
|
if ( $projectxml =~ m/xsi:schemaLocation/ ) {
|
|
my @cp = (File::Spec->catfile($CCM_CONFIG_HOME,"lib","xercesImpl.jar"));
|
|
push @cp, File::Spec->catfile($CCM_CONFIG_HOME,"lib","xml-apis.jar");
|
|
push @cp, File::Spec->catfile($CCM_CONFIG_HOME,"lib","xercesSamples.jar");
|
|
my $cmd = "$JAVA_CMD -cp " . CCM::Util::catpath(@cp) . " dom.Counter -s -f -v project.xml";
|
|
print("$cmd\n") if ($verbose);
|
|
my $output = CCM::CommandsUtil::runAndExitOnError($cmd);
|
|
if ( $output =~ m/Error/ ) {
|
|
print STDERR "error: $output\n";
|
|
exit 5;
|
|
}
|
|
} else {
|
|
print "WARNING: cannot validate project.xml because it is missing the xsi:schemaLocation attribute\n";
|
|
}
|
|
}
|
|
|
|
sub runxsl {
|
|
my $xslfile = shift;
|
|
my $outfile = shift;
|
|
my $params = shift || "";
|
|
|
|
print "Writing $outfile\n";
|
|
my $classpath = join (":", File::Spec->catfile($CCM_CONFIG_HOME, "lib", "xalan.jar"), File::Spec->catfile($CCM_CONFIG_HOME,"lib","xerces.jar"));
|
|
my $xsl = File::Spec->catfile ($CCM_CONFIG_HOME,"xsl",$xslfile);
|
|
CCM::CommandsUtil::runAndExitOnError("$JAVA_CMD -cp $classpath org.apache.xalan.xslt.Process -IN project.xml -XSL $xsl -OUT $outfile $params");
|
|
}
|
|
|
|
sub runxsl2 {
|
|
my $xslfile = shift;
|
|
my $infile = shift;
|
|
my $outfile = shift;
|
|
my $params = shift || "";
|
|
|
|
print "Writing $outfile\n";
|
|
my $classpath = CCM::Util::catpath(File::Spec->catfile($CCM_CONFIG_HOME, "lib", "xalan.jar"),
|
|
File::Spec->catfile($CCM_CONFIG_HOME,"lib","xercesImpl.jar"));
|
|
my $xsl = File::Spec->catfile ($CCM_CONFIG_HOME,"xsl",$xslfile);
|
|
CCM::CommandsUtil::runAndExitOnError("$JAVA_CMD -cp $classpath org.apache.xalan.xslt.Process -IN $infile -XSL $xsl -OUT $outfile $params");
|
|
}
|
|
|
|
sub getVersion {
|
|
my $version;
|
|
if ( $projectxml =~ m/ccmVersion=\"([^\"]+)\"/ ) {
|
|
$version = $1;
|
|
}
|
|
return $version;
|
|
}
|
|
|
|
sub getProjectXML {
|
|
my $projectxml;
|
|
local undef $/;
|
|
if ( ! open (IN, "< project.xml") ) {
|
|
print STDERR "could not open project.xml\n";
|
|
exit 3;
|
|
}
|
|
$projectxml = <IN>;
|
|
return $projectxml;
|
|
}
|