Line 82... |
Line 82... |
##############################################################################
|
##############################################################################
|
##
|
##
|
##############################################################################
|
##############################################################################
|
|
|
my $home = cwd();
|
my $home = cwd();
|
my $index_filename = "./tools/yp/index.xml";
|
|
|
|
|
|
|
|
|
|
|
my $projects_dir = $ARGV[0];
|
|
chomp($projects_dir);
|
|
$projects_dir = "/${projects_dir}";
|
|
|
|
|
|
|
|
|
|
use BerkeleyDB;
|
|
|
|
|
|
$repo_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/repo.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
$component_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/component.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
$design_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/design.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
$busDefinition_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/busDefinition.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
$abstractionDefinition_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/abstractionDefinition.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
$libraryConfiguration_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/libraryConfiguration.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
$componentConfiguration_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/componentConfiguration.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
|
|
|
|
|
open OUTFILE,">$index_filename" or die "unable to open $index_filename";
|
|
|
|
print OUTFILE "\n";
|
|
print OUTFILE "\n";
|
|
|
|
|
|
|
|
|
|
|
|
Line 109... |
Line 122... |
#/ */
|
#/ */
|
#/ */
|
#/ */
|
#/*********************************************************************************************/
|
#/*********************************************************************************************/
|
|
|
my $parser = XML::LibXML->new();
|
my $parser = XML::LibXML->new();
|
$root = "${home}/projects";
|
$root = "${home}${projects_dir}";
|
&link_dir( "$root" );
|
&link_dir( "$root" );
|
|
|
print OUTFILE " \n";
|
|
|
|
|
|
#/*********************************************************************************************/
|
#/*********************************************************************************************/
|
#/ */
|
#/ */
|
#/ */
|
#/ */
|
Line 154... |
Line 166... |
if(/${home}(\S+)/) { $t_local = $1; }
|
if(/${home}(\S+)/) { $t_local = $1; }
|
|
|
my $xml_file = $parser->parse_file("${home}${t_local}/${t_name}.xml");
|
my $xml_file = $parser->parse_file("${home}${t_local}/${t_name}.xml");
|
eval {$xml_file-> findnodes('//socgen:componentConfiguration');}; #/ check for socgen namespace
|
eval {$xml_file-> findnodes('//socgen:componentConfiguration');}; #/ check for socgen namespace
|
|
|
# print ("Name ${t_local}/${t_name}.xml \n");
|
|
|
|
if($@) #/ Nope, must be spirit namespace
|
if($@) #/ Nope, must be spirit namespace
|
{
|
{
|
foreach my $comp ($xml_file->findnodes('//spirit:component'))
|
foreach my $comp ($xml_file->findnodes('//spirit:component'))
|
{
|
{
|
$vendor = $comp->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $comp->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $comp->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $comp->findnodes('./spirit:library/text()')->to_literal ;
|
$type = "spirit:component";
|
$type = "spirit:component";
|
$name = $comp->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $comp->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $comp->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $comp->findnodes('./spirit:version/text()')->to_literal ;
|
$lib_sw_dir = "";
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:design'))
|
foreach my $design ($xml_file->findnodes('//spirit:design'))
|
{
|
{
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$type = "spirit:design";
|
$type = "spirit:design";
|
$lib_sw_dir = "";
|
|
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:designConfiguration'))
|
|
{
|
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
|
$type = "spirit:designConfiguration";
|
|
$lib_sw_dir = "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:abstractionDefinition'))
|
foreach my $design ($xml_file->findnodes('//spirit:abstractionDefinition'))
|
{
|
{
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$type = "spirit:abstractionDefinition";
|
$type = "spirit:abstractionDefinition";
|
$lib_sw_dir = "";
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:busDefinition'))
|
foreach my $design ($xml_file->findnodes('//spirit:busDefinition'))
|
{
|
{
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$type = "spirit:busDefinition";
|
$type = "spirit:busDefinition";
|
$lib_sw_dir = "";
|
|
}
|
}
|
}
|
}
|
|
|
else #/ socgen namespace
|
else #/ socgen namespace
|
|
|
Line 229... |
Line 226... |
$vendor = $design->findnodes('./socgen:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./socgen:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./socgen:library/text()')->to_literal ;
|
$library = $design->findnodes('./socgen:library/text()')->to_literal ;
|
$name = $design->findnodes('./socgen:component/text()')->to_literal ;
|
$name = $design->findnodes('./socgen:component/text()')->to_literal ;
|
$version = "";
|
$version = "";
|
$type = "socgen:componentConfiguration";
|
$type = "socgen:componentConfiguration";
|
$lib_sw_dir = "";
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//socgen:libraryConfiguration'))
|
foreach my $design ($xml_file->findnodes('//socgen:libraryConfiguration'))
|
{
|
{
|
$vendor = $design->findnodes('./socgen:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./socgen:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./socgen:name/text()')->to_literal ;
|
$library = $design->findnodes('./socgen:name/text()')->to_literal ;
|
$name = "";
|
$name = "";
|
$version = "";
|
$version = "";
|
$type = "socgen:libraryConfiguration";
|
$type = "socgen:libraryConfiguration";
|
$lib_sw_dir = $design->findnodes('./socgen:lib_sw_dir/text()')->to_literal ;
|
|
}
|
}
|
|
|
foreach my $comp ($xml_file->findnodes('//spirit:component'))
|
foreach my $comp ($xml_file->findnodes('//spirit:component'))
|
{
|
{
|
$vendor = $comp->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $comp->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $comp->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $comp->findnodes('./spirit:library/text()')->to_literal ;
|
$type = "spirit:component";
|
$type = "spirit:component";
|
$name = $comp->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $comp->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $comp->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $comp->findnodes('./spirit:version/text()')->to_literal ;
|
$lib_sw_dir = "";
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:design'))
|
foreach my $design ($xml_file->findnodes('//spirit:design'))
|
{
|
{
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$type = "spirit:design";
|
$type = "spirit:design";
|
$lib_sw_dir = "";
|
|
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:designConfiguration'))
|
|
{
|
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
|
$type = "spirit:designConfiguration";
|
|
$lib_sw_dir = "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:abstractionDefinition'))
|
foreach my $design ($xml_file->findnodes('//spirit:abstractionDefinition'))
|
{
|
{
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$type = "spirit:abstractionDefinition";
|
$type = "spirit:abstractionDefinition";
|
$lib_sw_dir = "";
|
|
}
|
}
|
|
|
|
|
foreach my $design ($xml_file->findnodes('//spirit:busDefinition'))
|
foreach my $design ($xml_file->findnodes('//spirit:busDefinition'))
|
{
|
{
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$vendor = $design->findnodes('./spirit:vendor/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$library = $design->findnodes('./spirit:library/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$name = $design->findnodes('./spirit:name/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$version = $design->findnodes('./spirit:version/text()')->to_literal ;
|
$type = "spirit:busDefinition";
|
$type = "spirit:busDefinition";
|
$lib_sw_dir = "";
|
|
}
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
$vendor_match = "/${vendor}/";
|
|
$library_match = "/${library}/";
|
|
$name_match = "/${name}/";
|
|
|
|
$_ = $t_local;
|
|
if(/\S+($vendor_match)(\S+)/) { $vendor_path = $2; }
|
|
else { $vendor_path = ""; }
|
|
if(/\S+($library_match)(\S+)/) { $library_path = $2; }
|
|
else { $library_path = ""; }
|
|
if(/\S+($library_match)(\S+)($name_match)(\S+)/) { $lib_comp_sep = "/${2}/"; }
|
|
else { $lib_comp_sep = "/"; }
|
|
if(/(\S+)($name_match)(\S+)/)
|
|
{
|
|
$component_path = "/${3}";
|
|
$environment_path = $1;
|
|
}
|
|
else { $component_path = "/"; }
|
|
|
|
|
|
|
|
|
|
|
|
$V_L_N_V = "${vendor}__${library}_${name}_${version}" ;
|
|
|
|
|
|
|
|
if($type eq "spirit:component")
|
|
{
|
|
|
|
my $V = "${vendor}" ;
|
|
my @repo_info = ("vendor","$vendor","$vendor_path" );
|
|
$repo_db->db_put( $V, join(':', @repo_info) );
|
|
|
|
|
|
my $V_L = "${vendor}__${library}" ;
|
|
@repo_info = ("library","$library","$library_path" );
|
|
$repo_db->db_put( $V_L, join(':', @repo_info) );
|
|
|
|
|
|
|
|
my $V_L_N = "${vendor}__${library}_${name}" ;
|
|
@repo_info = ("component","$name","$lib_comp_sep" );
|
|
$repo_db->db_put( $V_L_N, join(':', @repo_info) );
|
|
|
|
|
|
|
|
my @comp_info = (".${t_local}/${t_name}.xml","${component_path}","${version}" );
|
|
$component_db->db_put( $V_L_N_V, join(':', @comp_info) );
|
|
|
|
# print "${vendor}__${library}_${name}_${version} \n";
|
|
# print " .${t_local}/${t_name}.xml , ${component_path} \n ";
|
|
|
|
|
}
|
}
|
|
|
|
|
$vendor_match = "/${vendor}/";
|
$V_L_N_V = "${vendor}__${library}_${name}_${version}" ;
|
$library_match = "/${library}/";
|
|
$name_match = "/${name}/";
|
|
|
|
|
if($type eq "spirit:design")
|
|
{
|
|
@info = (".${t_local}/${t_name}.xml","${component_path}","${version}" );
|
|
$design_db->db_put( $V_L_N_V, join(':', @info) );
|
|
}
|
|
|
|
|
|
elsif($type eq "spirit:abstractionDefinition")
|
|
{
|
|
@info = (".${t_local}/${t_name}.xml","${component_path}","${version}" );
|
|
$abstractionDefinition_db->db_put( $V_L_N_V, join(':', @info) );
|
|
}
|
|
|
|
|
|
elsif($type eq "spirit:busDefinition")
|
|
{
|
|
@info = (".${t_local}/${t_name}.xml","${component_path}","${version}" );
|
|
$busDefinition_db->db_put( $V_L_N_V, join(':', @info) );
|
|
}
|
|
|
|
|
|
if($type eq "socgen:libraryConfiguration")
|
|
{
|
|
$V_L = "${vendor}__${library}" ;
|
|
@info = (".${t_local}/${t_name}.xml" );
|
|
$libraryConfiguration_db->db_put( $V_L, join(':', @info) );
|
|
}
|
|
|
|
|
|
if($type eq "socgen:componentConfiguration")
|
|
{
|
|
my $V_L_N = "${vendor}__${library}_${name}" ;
|
|
@info = (".${t_local}/${t_name}.xml" );
|
|
$componentConfiguration_db->db_put( $V_L_N, join(':', @info) );
|
|
}
|
|
|
|
|
|
|
|
|
$_ = $t_local;
|
|
if(/\S+($vendor_match)(\S+)/) { $vendor_path = $2; }
|
|
else { $vendor_path = ""; }
|
|
if(/\S+($library_match)(\S+)/) { $library_path = $2; }
|
|
else { $library_path = ""; }
|
|
if(/\S+($library_match)(\S+)($name_match)(\S+)/) { $lib_comp_sep = $2; }
|
|
else { $lib_comp_sep = ""; }
|
|
if(/\S?($name_match)(\S+)/) { $component_path = $2; }
|
|
else { $component_path = ""; }
|
|
|
|
|
|
|
|
print OUTFILE " \n";
|
|
print OUTFILE " ${type}\n";
|
|
print OUTFILE " ${vendor}\n";
|
|
print OUTFILE " ${library}\n";
|
|
print OUTFILE " ${name}\n";
|
|
print OUTFILE " ${version}\n";
|
|
print OUTFILE " ${t_name}.xml\n";
|
|
print OUTFILE " ${t_local}\n";
|
|
print OUTFILE " ${vendor_path}\n";
|
|
print OUTFILE " ${library_path}\n";
|
|
print OUTFILE " ${component_path}\n";
|
|
print OUTFILE " ${lib_comp_sep}\n";
|
|
print OUTFILE " ${lib_sw_dir}\n";
|
|
print OUTFILE " \n\n";
|
|
|
|
}
|
}
|
|
|
&link_dir("$src/$item" );
|
&link_dir("$src/$item" );
|
}
|
}
|
Line 358... |
Line 400... |
|
|
}
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$repo_db->db_close();
|
|
$component_db->db_close();
|
|
$design_db->db_close();
|
|
$abstractionDefinition_db->db_close();
|
|
$busDefinition_db->db_close();
|
|
$libraryConfiguration_db->db_close();
|
|
$componentConfiguration_db->db_close();
|