summaryrefslogtreecommitdiff
path: root/solenv/bin
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin')
-rwxr-xr-x[-rw-r--r--]solenv/bin/build.pl412
-rwxr-xr-xsolenv/bin/checkdll.sh10
-rw-r--r--solenv/bin/createpdbrelocators.pl5
-rw-r--r--solenv/bin/cws.pl90
-rwxr-xr-xsolenv/bin/deliver.pl27
-rw-r--r--solenv/bin/mhids.pl7
-rw-r--r--solenv/bin/modules/CreatePDBRelocators.pm128
-rw-r--r--solenv/bin/modules/SourceConfig.pm42
-rw-r--r--solenv/bin/modules/installer/globals.pm11
-rw-r--r--solenv/bin/modules/installer/javainstaller.pm1
-rw-r--r--solenv/bin/modules/installer/windows/idtglobal.pm10
-rw-r--r--solenv/bin/modules/installer/windows/registry.pm35
-rw-r--r--solenv/bin/modules/installer/xpdinstaller.pm16
-rw-r--r--solenv/bin/modules/installer/ziplist.pm3
-rwxr-xr-xsolenv/bin/modules/osarch.pm9
-rwxr-xr-xsolenv/bin/receditor2
16 files changed, 488 insertions, 320 deletions
diff --git a/solenv/bin/build.pl b/solenv/bin/build.pl
index 40c310929eaa..cc0677220777 100644..100755
--- a/solenv/bin/build.pl
+++ b/solenv/bin/build.pl
@@ -96,18 +96,12 @@
$modules_number++;
$perl = "";
$remove_command = "";
- if ( $^O eq 'MSWin32' ) {
- $perl = "$ENV{PERL}";
- $remove_command = "rmdir /S /Q";
- $nul = '> NULL';
- } else {
- use Cwd 'chdir';
- $perl = 'perl';
- $remove_command = 'rm -rf';
- $nul = '> /dev/null';
- };
+ use Cwd 'chdir';
+ $perl = 'perl';
+ $remove_command = 'rm -rf';
+ $nul = '> /dev/null';
- $QuantityToBuild = 0;
+ $processes_to_run = 0;
# delete $pid when not needed
%projects_deps_hash = (); # hash of projects with no dependencies,
# that could be built now
@@ -117,7 +111,7 @@
%running_children = ();
$dependencies_hash = 0;
$cmd_file = '';
- $BuildAllParents = 0;
+ $build_all_parents = 0;
$show = 0;
$checkparents = 0;
$deliver = 0;
@@ -135,7 +129,7 @@
@broken_modules_names = (); # array of modules, which cannot be built further
@dmake_args = ();
%dead_parents = ();
- $CurrentPrj = '';
+ $initial_module = '';
$all_dependent = 1; # a flag indicating if the hash has independent keys
$build_from_with_branches = '';
$build_all_cont = '';
@@ -207,12 +201,15 @@
my %module_paths = (); # hash with absolute module paths
my %active_modules = ();
my $generate_config = 0;
+ my $add_modules_to_config = 0;
my %add_to_config = ();
my %remove_from_config = ();
my $clear_config = 0;
my $finisched_children = 0;
my $debug = 0;
%module_deps_hash_pids = ();
+ my @argv = @ARGV;
+ my $source_config_file;
### main ###
get_options();
@@ -234,11 +231,11 @@
$deliver_env{'L10N_framework'}++;
};
- if ($generate_config) {
+ if ($generate_config && ($clear_config || (scalar keys %remove_from_config)||(scalar keys %add_to_config))) {
generate_config_file();
exit 0;
}
- $StandDir = get_stand_dir(); # This also sets $CurrentPrj
+ $StandDir = get_stand_dir(); # This also sets $initial_module
get_module_and_buildlist_paths();
provide_consistency() if (defined $ENV{CWS_WORK_STAMP} && defined($ENV{COMMON_ENV_TOOLS}));
@@ -278,14 +275,14 @@
start_interactive() if ($interactive);
if ($checkparents) {
- GetParentDeps( $CurrentPrj, \%global_deps_hash );
+ get_parent_deps( $initial_module, \%global_deps_hash );
} else {
- BuildAll();
+ build_all();
}
if (scalar keys %broken_build) {
cancel_build();
# } elsif (!$custom_job && $post_custom_job) {
-# do_post_custom_job(CorrectPath($StandDir.$CurrentPrj));
+# do_post_custom_job(CorrectPath($StandDir.$initial_module));
};
print_warnings();
if (scalar keys %active_modules) {
@@ -294,11 +291,10 @@
};
};
if (scalar keys %dead_parents) {
- my ($DeadPrj);
print $new_line.$new_line;
print $echo."WARNING! Project(s):\n";
- foreach $DeadPrj (keys %dead_parents) {
- print $echo."$DeadPrj\n";
+ foreach (keys %dead_parents) {
+ print $echo."$_\n";
};
print $new_line;
print $echo."not found and couldn't be built. Dependencies on that module(s) ignored. Maybe you should correct build lists.\n";
@@ -352,7 +348,7 @@ sub rename_file {
sub generate_config_file {
my $source_config = SourceConfig -> new();
- my $source_config_file = $source_config->get_config_file_path();
+ $source_config_file = $source_config->get_config_file_path();
my $temp_config_file = File::Temp::tmpnam($ENV{TMP});
my @config_content_new = ();
my $addition_message;
@@ -364,7 +360,6 @@ sub generate_config_file {
close SOURCE_CONFIG_FILE;
my ($module_section, $repository_section);
foreach (@config_content) {
- $line++;
if ((!/^\S+/)||(/^\s*#+/)) {
push(@config_content_new, $_);
next;
@@ -422,8 +417,7 @@ sub generate_config_file {
};
print_warnings();
print $addition_message if ($addition_message);
- print "Module(s) $removal_message removed from $source_config_file\n" if ($removal_message);
- exit(0);
+ print "Module(s):\n$removal_message\nremoved from $source_config_file\n" if ($removal_message);
};
#
@@ -437,50 +431,25 @@ sub add_modules_to_source_config {
$message .= "$_ ";
};
if ($message) {
- return 'Module(s) ' .$message . 'are added to the ' . $source_config_file . "\n\n";
+ return "Module(s):\n" .$message . "\nare added to the " . $source_config_file . "\n\n";
} else {
return '';
};
};
sub start_interactive {
- if ( $^O eq 'MSWin32' ) {
- my $posix_sys_wait = 'POSIX ":sys_wait_h"';
- eval "use $posix_sys_wait";
- die "couldn't use $posix_sys_wait: $!\n" if ($@);
-
- pipe(FROM_PARENT, TO_CHILD) or die "pipe: $!";
- pipe(HTML_PIPE, TO_PARENT) or die "pipe: $!";
-
+ $pid = open(HTML_PIPE, "-|");
+ print "Pipe is open\n";
- if (my $pid = fork()) {
- $html_listener_pid = 1;
- close FROM_PARENT;
- close TO_PARENT;
- ioctl(HTML_PIPE, 0x8004667e, 1);
- return;
- } else {
- close HTML_PIPE;
- close TO_CHILD;
- select TO_PARENT;
- $|++;
- $parent_process = 0;
- start_html_listener();
- }
- } else {
- $pid = open(HTML_PIPE, "-|");
- print "Pipe is open\n";
-
- if ($pid) { # parent
- # make file handle non-bloking
- my $flags = '';
- fcntl(HTML_PIPE, F_GETFL, $flags);
- $flags |= O_NONBLOCK;
- fcntl(HTML_PIPE, F_SETFL, $flags);
- } else { # child
- $parent_process = 0;
- start_html_listener();
- };
+ if ($pid) { # parent
+ # make file handle non-bloking
+ my $flags = '';
+ fcntl(HTML_PIPE, F_GETFL, $flags);
+ $flags |= O_NONBLOCK;
+ fcntl(HTML_PIPE, F_SETFL, $flags);
+ } else { # child
+ $parent_process = 0;
+ start_html_listener();
};
};
@@ -516,7 +485,6 @@ sub start_html_message_trigger {
if ($child_id) {
# parent
- $html_message_trigger{$child_id}++;
# print "started listener trigger\n";
} else {
my $buffer_size = 1024;
@@ -673,20 +641,20 @@ sub get_build_list_path {
#
# Get dependencies hash of the current and all parent projects
#
-sub GetParentDeps {
+sub get_parent_deps {
my (%parents_deps_hash, $module, $parent);
my $prj_dir = shift;
my $deps_hash = shift;
- my @UnresolvedParents = get_parents_array($prj_dir);
- $parents_deps_hash{$_}++ foreach (@UnresolvedParents);
+ my @unresolved_parents = get_parents_array($prj_dir);
+ $parents_deps_hash{$_}++ foreach (@unresolved_parents);
$$deps_hash{$prj_dir} = \%parents_deps_hash;
- while ($module = pop(@UnresolvedParents)) {
+ while ($module = pop(@unresolved_parents)) {
my %parents_deps_hash = ();
$parents_deps_hash{$_}++ foreach (get_parents_array($module));
$$deps_hash{$module} = \%parents_deps_hash;
foreach $Parent (keys %parents_deps_hash) {
if (!defined($$deps_hash{$Parent})) {
- push (@UnresolvedParents, $Parent);
+ push (@unresolved_parents, $Parent);
};
};
};
@@ -743,19 +711,16 @@ sub reverse_dependensies {
#
# Build everything that should be built
#
-sub BuildAll {
- if ($BuildAllParents) {
+sub build_all {
+ if ($build_all_parents) {
my ($Prj, $PrjDir, $orig_prj);
- GetParentDeps( $CurrentPrj, \%global_deps_hash);
+ get_parent_deps( $initial_module, \%global_deps_hash);
if (scalar keys %active_modules) {
- $active_modules{$CurrentPrj}++;
- $modules_types{$CurrentPrj} = 'mod';
+ $active_modules{$initial_module}++;
+ $modules_types{$initial_module} = 'mod';
};
modules_classify(keys %global_deps_hash);
store_weights(\%global_deps_hash);
- if (keys %active_modules && ($build_from || $incompatible)) {
- print_error("There are active module in $source_config_file. Please remove these modules to proceed.\n");
- };
prepare_build_from(\%global_deps_hash) if ($build_from);
prepare_incompatible_build(\%global_deps_hash) if ($incompatible);
if ($build_all_cont || $build_since) {
@@ -763,12 +728,25 @@ sub BuildAll {
push (@warnings, "\nThere are active module in $source_config_file. Inactive modules are skipped.\n\n");
prepare_build_all_cont(\%global_deps_hash);
};
+ if ($generate_config) {
+ %add_to_config = %global_deps_hash;
+ generate_config_file();
+ exit 0;
+ } elsif (keys %incompatibles) {
+ my @missing_modules = ();
+ foreach (keys %global_deps_hash) {
+ push(@missing_modules, $_) if (!defined $active_modules{$_});
+ };
+ if (scalar @missing_modules) {
+ print_error("There are modules:\n@missing_modules\n\nthat should be built, but they are not activated. Please, verify your $source_config_file.\n");
+ };
+ };
backup_deps_hash(\%global_deps_hash, \%global_deps_hash_backup);
expand_dependencies (\%global_deps_hash_backup);
reverse_dependensies(\%global_deps_hash_backup);
$modules_number = scalar keys %global_deps_hash;
initialize_html_info($_) foreach (keys %global_deps_hash);
- if ($QuantityToBuild) {
+ if ($processes_to_run) {
build_multiprocessing();
return;
};
@@ -789,7 +767,7 @@ sub BuildAll {
my $info_hash = $html_info{$Prj};
$$info_hash{DIRS} = check_deps_hash(\%LocalDepsHash, $Prj);
$module_by_hash{\%LocalDepsHash} = $Prj;
- BuildDependent(\%LocalDepsHash);
+ build_dependent(\%LocalDepsHash);
print $check_error_string;
};
@@ -797,16 +775,16 @@ sub BuildAll {
$build_is_finished{$Prj}++;
};
} else {
- store_build_list_content($CurrentPrj);
- get_module_dep_hash($CurrentPrj, \%LocalDepsHash);
- initialize_html_info($CurrentPrj);
- my $info_hash = $html_info{$CurrentPrj};
- $$info_hash{DIRS} = check_deps_hash(\%LocalDepsHash, $CurrentPrj);
- $module_by_hash{\%LocalDepsHash} = $CurrentPrj;
+ store_build_list_content($initial_module);
+ get_module_dep_hash($initial_module, \%LocalDepsHash);
+ initialize_html_info($initial_module);
+ my $info_hash = $html_info{$initial_module};
+ $$info_hash{DIRS} = check_deps_hash(\%LocalDepsHash, $initial_module);
+ $module_by_hash{\%LocalDepsHash} = $initial_module;
if ($server_mode) {
run_server();
} else {
- BuildDependent(\%LocalDepsHash);
+ build_dependent(\%LocalDepsHash);
};
};
};
@@ -884,7 +862,8 @@ sub dmake_dir {
};
_exit(0);
} elsif ($error_code && ($error_code != -1)) {
- print_error("Error $? occurred while making $BuildDir");
+ return $error_code;
+# print_error("Error $? occurred while making $BuildDir");
};
};
@@ -1075,7 +1054,7 @@ sub get_deps_hash {
if (scalar @errors) {
my $message = "$module_to_build/prj/build.lst has wrongly written string(s):\n";
$message .= "$_\n" foreach(@errors);
- if ($QuantityToBuild) {
+ if ($processes_to_run) {
$broken_build{$module_to_build} = $message;
$dependencies_hash = undef;
return;
@@ -1097,7 +1076,7 @@ sub get_deps_hash {
add_prerequisite_job($dependencies_hash, $module_to_build, $pre_custom_job);
add_prerequisite_job($dependencies_hash, $module_to_build, $pre_job);
add_dependent_job($dependencies_hash, $module_to_build, $custom_job);
- add_dependent_job($dependencies_hash, $module_to_build, $post_job) if ($module_to_build ne $CurrentPrj);
+ add_dependent_job($dependencies_hash, $module_to_build, $post_job) if ($module_to_build ne $initial_module);
add_dependent_job($dependencies_hash, $module_to_build, $post_custom_job);
};
store_weights($dependencies_hash);
@@ -1163,11 +1142,7 @@ sub mark_platform {
#
sub CorrectPath {
$_ = shift;
- if ( ($^O eq 'MSWin32') && (!defined $ENV{SHELL})) {
- s/\//\\/g;
- } else {;
- s/\\/\//g;
- };
+ s/\\/\//g;
return $_;
};
@@ -1232,7 +1207,7 @@ sub get_stand_dir {
do {
foreach (@possible_build_lists) {# ('build.lst', 'build.xlist');
if (-e $StandDir . '/prj/'.$_) {
- $CurrentPrj = File::Basename::basename($StandDir);
+ $initial_module = File::Basename::basename($StandDir);
$StandDir = File::Basename::dirname($StandDir);
return $StandDir;
} elsif ($StandDir eq $previous_dir) {
@@ -1381,9 +1356,9 @@ sub find_indep_prj {
my ($Dependencies, $i);
my @candidates = ();
$all_dependent = 1;
- handle_dead_children(0) if ($QuantityToBuild);
+ handle_dead_children(0) if ($processes_to_run);
my $children = children_number();
- return '' if (!$server_mode && $children && ($children >= $QuantityToBuild));
+ return '' if (!$server_mode && $children && ($children >= $processes_to_run));
$Dependencies = shift;
if (scalar keys %$Dependencies) {
foreach my $job (keys %$Dependencies) {
@@ -1500,7 +1475,7 @@ sub print_error {
sub usage {
print STDERR "\nbuild\n";
- print STDERR "Syntax: build [--all|-a[:prj_name]]|[--from|-f prj_name1[:prj_name2] [prj_name3 [...]]]|[--since|-c prj_name] [--with_branches|-b]|[--prepare|-p][:platform] [--deliver|-d [--dlv_switch deliver_switch]]] [-P processes|--server [--setenvstring \"string\"] [--client_timeout MIN] [--port port1[:port2:...:portN]]] [--show|-s] [--help|-h] [--file|-F] [--ignore|-i] [--version|-V] [--mode|-m OOo[,SO[,EXT]] [--html [--html_path html_file_path] [--dontgraboutput]] [--pre_job=pre_job_sring] [--job=job_string|-j] [--post_job=post_job_sring] [--stoponerror] [--genconf [--removeall|--clear|--remove|--add module1,module2[,...,moduleN]]] [--interactive]\n";
+ print STDERR "Syntax: build [--all|-a[:prj_name]]|[--from|-f prj_name1[:prj_name2] [prj_name3 [...]]]|[--since|-c prj_name] [--with_branches|-b]|[--prepare|-p][:platform] [--deliver|-d [--dlv_switch deliver_switch]]] [-P processes|--server [--setenvstring \"string\"] [--client_timeout MIN] [--port port1[:port2:...:portN]]] [--show|-s] [--help|-h] [--file|-F] [--ignore|-i] [--version|-V] [--mode|-m OOo[,SO[,EXT]] [--html [--html_path html_file_path] [--dontgraboutput]] [--pre_job=pre_job_sring] [--job=job_string|-j] [--post_job=post_job_sring] [--stoponerror] [--genconf [--removeall|--clear|--remove|--add [module1,module2[,...,moduleN]]]] [--interactive]\n";
print STDERR "Example1: build --from sfx2\n";
print STDERR " - build all projects dependent from sfx2, starting with sfx2, finishing with the current module\n";
print STDERR "Example2: build --all:sfx2\n";
@@ -1555,10 +1530,10 @@ sub usage {
sub get_options {
my ($arg, $dont_grab_output);
while ($arg = shift @ARGV) {
- $arg =~ /^-P$/ and $QuantityToBuild = shift @ARGV and next;
- $arg =~ /^-P(\d+)$/ and $QuantityToBuild = $1 and next;
- $arg =~ /^--all$/ and $BuildAllParents = 1 and next;
- $arg =~ /^-a$/ and $BuildAllParents = 1 and next;
+ $arg =~ /^-P$/ and $processes_to_run = shift @ARGV and next;
+ $arg =~ /^-P(\d+)$/ and $processes_to_run = $1 and next;
+ $arg =~ /^--all$/ and $build_all_parents = 1 and next;
+ $arg =~ /^-a$/ and $build_all_parents = 1 and next;
$arg =~ /^--show$/ and $show = 1 and next;
$arg =~ /^--checkmodules$/ and $checkparents = 1 and $ignore = 1 and next;
$arg =~ /^-s$/ and $show = 1 and next;
@@ -1571,17 +1546,17 @@ sub get_options {
$arg =~ /^--file$/ and $cmd_file = shift @ARGV and next;
$arg =~ /^-F$/ and $cmd_file = shift @ARGV and next;
- $arg =~ /^--with_branches$/ and $BuildAllParents = 1
+ $arg =~ /^--with_branches$/ and $build_all_parents = 1
and $build_from_with_branches = shift @ARGV and next;
- $arg =~ /^-b$/ and $BuildAllParents = 1
+ $arg =~ /^-b$/ and $build_all_parents = 1
and $build_from_with_branches = shift @ARGV and next;
- $arg =~ /^--all:(\S+)$/ and $BuildAllParents = 1
+ $arg =~ /^--all:(\S+)$/ and $build_all_parents = 1
and $build_all_cont = $1 and next;
- $arg =~ /^-a:(\S+)$/ and $BuildAllParents = 1
+ $arg =~ /^-a:(\S+)$/ and $build_all_parents = 1
and $build_all_cont = $1 and next;
if ($arg =~ /^--from$/ || $arg =~ /^-f$/) {
- $BuildAllParents = 1;
+ $build_all_parents = 1;
get_incomp_projects();
next;
};
@@ -1589,11 +1564,11 @@ sub get_options {
$arg =~ /^-p$/ and $prepare = 1 and next;
$arg =~ /^--prepare:/ and $prepare = 1 and $only_platform = $' and next;
$arg =~ /^-p:/ and $prepare = 1 and $only_platform = $' and next;
- $arg =~ /^--since$/ and $BuildAllParents = 1
+ $arg =~ /^--since$/ and $build_all_parents = 1
and $build_since = shift @ARGV and next;
- $arg =~ /^-c$/ and $BuildAllParents = 1
+ $arg =~ /^-c$/ and $build_all_parents = 1
and $build_since = shift @ARGV and next;
- $arg =~ /^-s$/ and $BuildAllParents = 1
+ $arg =~ /^-s$/ and $build_all_parents = 1
and $build_since = shift @ARGV and next;
$arg =~ /^--help$/ and usage() and do_exit(0);
$arg =~ /^-h$/ and usage() and do_exit(0);
@@ -1601,10 +1576,14 @@ sub get_options {
$arg =~ /^--genconf$/ and $generate_config = 1 and next;
if ($arg =~ /^--add$/) {
get_list_of_modules(\%add_to_config);
+ $add_modules_to_config++;
next;
};
if ($arg =~ /^--remove$/) {
get_list_of_modules(\%remove_from_config);
+ if (!scalar %remove_from_config) {
+ print_error('No module list supplied!!');
+ };
next;
};
($arg =~ /^--clear$/ || $arg =~ /^--removeall$/) and $clear_config = 1 and next;
@@ -1637,7 +1616,7 @@ sub get_options {
# print_error('Please prepare the workspace on one of UNIX platforms') if ($prepare && ($ENV{GUI} ne 'UNX'));
print_error('Switches --with_branches and --since collision') if ($build_from_with_branches && $build_since);
if ($show) {
- $QuantityToBuild = 0;
+ $processes_to_run = 0;
$cmd_file = '';
};
print_error('Switches --job and --deliver collision') if ($custom_job && $deliver);
@@ -1647,7 +1626,7 @@ sub get_options {
if ($prepare) {
print_error("--prepare is for use with --from switch only!\n") if (!$incompatible);
};
- if ($QuantityToBuild) {
+ if ($processes_to_run) {
if ($ignore && !$html) {
print_error("Cannot ignore errors in multiprocessing build");
};
@@ -1675,8 +1654,8 @@ sub get_options {
if ((scalar %add_to_config) || (scalar %remove_from_config)) {
print_error('"--add" or/and "--remove"' . $error_message);
};
- } elsif ((!scalar %add_to_config) && !$clear_config && (!scalar %remove_from_config)){
- print_error('Please supply necessary switch for "--genconf" (--add|--remove|--removeall)');
+ } elsif ((!scalar %add_to_config) && !$clear_config && (!scalar %remove_from_config) && !$build_all_parents){
+ print_error('Please supply necessary switch for "--genconf" (--add|--remove|--removeall). --add can be used with --from and such');
};
if ($only_platform) {
@@ -1698,7 +1677,7 @@ sub get_options {
sub get_module_and_buildlist_paths {
my $source_config = SourceConfig -> new($StandDir);
- my $source_config_file = $source_config->get_config_file_path();
+ $source_config_file = $source_config->get_config_file_path();
$active_modules{$_}++ foreach ($source_config->get_active_modules());
my %active_modules_copy = %active_modules;
foreach ($source_config->get_all_modules()) {
@@ -1744,33 +1723,37 @@ sub get_switch_options {
#
sub cancel_build {
# close_server_socket();
- $modules_number -= scalar keys %global_deps_hash;
my $broken_modules_number = scalar @broken_modules_names;
+ my $message_part = 'build ';
+ if (scalar keys %incompatibles) {
+ my @incompatible_modules = keys %incompatibles;
+ if ($stop_build_on_error) {
+ $message_part .= "--from @incompatible_modules:@broken_modules_names\n";
+ } else {
+ $message_part .= "--from @broken_modules_names\n";
+ };
+ } else {
+ $message_part .= "--all:@broken_modules_names\n";
+ };
if ($broken_modules_number) {
- $modules_number -= $broken_modules_number;
print "\n";
print $broken_modules_number;
print " module(s): ";
foreach (@broken_modules_names) {
print "\n\t$_";
-# RemoveFromDependencies($_, \%global_deps_hash);
};
print "\nneed(s) to be rebuilt\n\nReason(s):\n\n";
foreach (keys %broken_build) {
print "ERROR: error " . $broken_build{$_} . " occurred while making $_\n";
};
- print "\nAttention: if you build and deliver the above module(s) you may prolongue your the build issuing command \"build --from @broken_modules_names\"\n";
+ print "\nAttention: if you fix the errors in above module(s) you may prolongue your the build issuing command:\n\n\t" . $message_part;
} else {
-# if ($ENV{GUI} eq 'WNT') {
- while (children_number()) {
- handle_dead_children(1);
- }
- foreach (keys %broken_build) {
- print "ERROR: error " . $broken_build{$_} . " occurred while making $_\n";
- };
-# } else {
-# kill 9 => -$$;
-# };
+ while (children_number()) {
+ handle_dead_children(1);
+ }
+ foreach (keys %broken_build) {
+ print "ERROR: error " . $broken_build{$_} . " occurred while making $_\n";
+ };
};
print "\n";
do_exit(1);
@@ -1827,9 +1810,9 @@ sub handle_dead_children {
};
};
};
- sleep 1 if (children_number() >= $QuantityToBuild || ($force_wait && ($running_children == children_number())));
+ sleep 1 if (children_number() >= $processes_to_run || ($force_wait && ($running_children == children_number())));
} else {
- if (children_number() >= $QuantityToBuild ||
+ if (children_number() >= $processes_to_run ||
($force_wait && ($running_children == children_number()))) {
$pid = wait();
} else {
@@ -1845,7 +1828,7 @@ sub handle_dead_children {
$finisched_children++;
};
};
- } while(children_number() >= $QuantityToBuild);
+ } while(children_number() >= $processes_to_run);
};
sub give_second_chance {
@@ -1881,38 +1864,44 @@ sub clear_from_child {
#
# Build the entire project according to queue of dependencies
#
-sub BuildDependent {
+sub build_dependent {
$dependencies_hash = shift;
my $pid = 0;
my $child_nick = '';
$running_children{$dependencies_hash} = 0 if (!defined $running_children{$dependencies_hash});
while ($child_nick = pick_prj_to_build($dependencies_hash)) {
- if ($QuantityToBuild) {
+ if ($processes_to_run) {
do {
if (defined $modules_with_errors{$dependencies_hash} && !$ignore) {
- return 0 if ($BuildAllParents);
+ return 0 if ($build_all_parents);
last;
};
# start current child & all
# that could be started now
- start_child($child_nick, $dependencies_hash) if ($child_nick);
- return 1 if ($BuildAllParents);
+ if ($child_nick) {
+ start_child($child_nick, $dependencies_hash);
+ return 1 if ($build_all_parents);
+ } else {
+ return 0 if ($build_all_parents);
+ if (scalar keys %$dependencies_hash) {
+ handle_dead_children(1);
+ };
+ };
$child_nick = pick_prj_to_build($dependencies_hash);
} while (scalar keys %$dependencies_hash || $child_nick);
while (children_number()) {
-# print "#### 1902: Starting waiting for dead child\n";
handle_dead_children(1);
};
-# if (defined $last_module) {
-# $build_is_finished{$last_module}++ if (!defined $modules_with_errors{$last_module});
-# };
if (defined $modules_with_errors{$dependencies_hash}) {
cancel_build();
}
mp_success_exit();
} else {
- dmake_dir($child_nick);
+ if (dmake_dir($child_nick)) {
+ push(@broken_modules_names, $module_by_hash{$dependencies_hash});
+ cancel_build();
+ };
};
$child_nick = '';
};
@@ -2010,7 +1999,7 @@ sub build_multiprocessing {
sub mp_success_exit {
# close_server_socket();
# if (!$custom_job && $post_custom_job) {
-# do_post_custom_job(CorrectPath($StandDir.$CurrentPrj));
+# do_post_custom_job(CorrectPath($StandDir.$initial_module));
# };
print "\nMultiprocessing build is finished\n";
print "Maximal number of processes run: $maximal_processes\n";
@@ -2045,7 +2034,7 @@ sub build_actual_queue {
delete $$build_queue{$Prj};
next;
};
- $started_children =+ BuildDependent($projects_deps_hash{$Prj});
+ $started_children =+ build_dependent($projects_deps_hash{$Prj});
if ((!scalar keys %{$projects_deps_hash{$Prj}}) &&
!$running_children{$projects_deps_hash{$Prj}}) {
if (!defined $modules_with_errors{$projects_deps_hash{$Prj}} || $ignore)
@@ -2142,7 +2131,7 @@ sub print_announce {
$prj_type = $modules_types{$Prj} if (defined $modules_types{$Prj});
my $text;
if ($prj_type eq 'lnk') {
- if (scalar keys %active_modules && (!defined $active_modules{$Prj})) {
+ if (!defined $active_modules{$Prj}) {
$text = "Skipping module $Prj\n";
} else {
$text = "Skipping link to $Prj\n";
@@ -2193,7 +2182,7 @@ sub modules_classify {
next;
};
if (( $module_paths{$module} =~ /\.lnk$/) || ($module_paths{$module} =~ /\.link$/)
- || (scalar keys %active_modules && (!defined $active_modules{$module}))) {
+ || (!defined $active_modules{$module})) {
$modules_types{$module} = 'lnk';
next;
};
@@ -2224,19 +2213,10 @@ sub provide_consistency {
#
sub get_workspace_lst
{
- my $home;
- if ( $^O eq 'MSWin32' ) {
- $home = $ENV{TEMP};
- }
- else {
- $home = $ENV{HOME};
- }
- my $inifile = "$home/localini/stand.lst";
+ my $home = $ENV{HOME};
+ my $inifile = $ENV{HOME}. '/localini/stand.lst';
if (-f $inifile) {
return $inifile;
-# } else {
-# $inifile = get_globalini() . "/stand.lst";
-# return $inifile if (-f $inifile);
};
return '';
}
@@ -2391,7 +2371,11 @@ sub prepare_incompatible_build {
delete $$deps_hash{$build_all_cont};
};
@modules_built = keys %$deps_hash;
- clear_delivered() if ($prepare);
+ %add_to_config = %$deps_hash;
+ if ($prepare) {
+ generate_config_file();
+ clear_delivered();
+ }
my $old_output_tree = '';
foreach $prj (sort keys %$deps_hash) {
if ($prepare) {
@@ -2416,7 +2400,7 @@ sub prepare_incompatible_build {
if ($old_output_tree) {
push(@warnings, 'Some module(s) contain old output tree(s)!');
};
- if (scalar @warnings) {
+ if (!$generate_config && scalar @warnings) {
print "WARNING(S):\n";
print STDERR "$_\n" foreach (@warnings);
print "\nATTENTION: If you are performing an incompatible build, please break the build with Ctrl+C and prepare the workspace with \"--prepare\" switch!\n\n" if (!$prepare);
@@ -2439,7 +2423,7 @@ sub prepare_build_from {
my ($prj, $deps_hash);
$deps_hash = shift;
my %from_deps_hash = (); # hash of dependencies of the -from project
- GetParentDeps($build_from_with_branches, \%from_deps_hash);
+ get_parent_deps($build_from_with_branches, \%from_deps_hash);
foreach $prj (keys %from_deps_hash) {
delete $$deps_hash{$prj};
RemoveFromDependencies($prj, $deps_hash);
@@ -2508,9 +2492,9 @@ sub get_list_of_modules {
};
};
};
- if (!scalar %$hash_ref) {
- print_error('No module list supplied!!');
- };
+# if (!scalar %$hash_ref) {
+# print_error('No module list supplied!!');
+# };
};
sub get_incomp_projects {
@@ -2530,6 +2514,26 @@ sub get_incomp_projects {
};
};
+sub get_workspace_platforms {
+ my $workspace_patforms = shift;
+ my $solver_path = $ENV{SOLARVERSION};
+ opendir(SOLVERDIR, $solver_path);
+ @dir_list = readdir(SOLVERDIR);
+ close SOLVERDIR;
+ foreach (@dir_list) {
+ next if /^common/;
+ next if /^\./;
+ if (open(LS, "ls $solver_path/$_/inc/*minor.mk 2>$nul |")) {
+ foreach my $string (<LS>) {
+ chomp $string;
+ if ($string =~ /minor.mk$/) {
+ $$workspace_patforms{$_}++
+ };
+ };
+ close LS;
+ };
+ };
+};
sub get_platforms {
my $platforms_ref = shift;
@@ -2542,17 +2546,22 @@ sub get_platforms {
my $workspace_lst = get_workspace_lst();
if ($workspace_lst) {
- my $workspace_db = GenInfoParser->new();
- my $success = $workspace_db->load_list($workspace_lst);
- if ( !$success ) {
- print_error("Can't load workspace list '$workspace_lst'.", 4);
- }
- my $access_path = $ENV{WORK_STAMP} . '/Environments';
- my @platforms_available = $workspace_db->get_keys($access_path);
- my $solver = $ENV{SOLARVERSION};
- foreach (@platforms_available) {
- my $s_path = $solver . '/' . $_;
- $$platforms_ref{$_}++ if (-d $s_path);
+ my $workspace_db;
+ eval { $workspace_db = GenInfoParser->new(); };
+ if (!$@) {
+ my $success = $workspace_db->load_list($workspace_lst);
+ if ( !$success ) {
+ print_error("Can't load workspace list '$workspace_lst'.", 4);
+ }
+ my $access_path = $ENV{WORK_STAMP} . '/Environments';
+ my @platforms_available = $workspace_db->get_keys($access_path);
+ my $solver = $ENV{SOLARVERSION};
+ foreach (@platforms_available) {
+ my $s_path = $solver . '/' . $_;
+ $$platforms_ref{$_}++ if (-d $s_path);
+ };
+ } else {
+ get_workspace_platforms(\%platforms);
};
};
@@ -2621,12 +2630,8 @@ sub read_ssolar_vars {
my ($setsolar, $tmp_file);
$setsolar = $ENV{ENV_ROOT} . '/etools/setsolar.pl';
my ($platform, $solar_vars) = @_;
- if ( $^O eq 'MSWin32' ) {
- $tmp_file = $ENV{TEMP} . "\\solar.env.$$.tmp";
- } else {
- $setsolar = '/net/jumbo2.germany/buildenv/r/etools/setsolar.pl' if ! -e $setsolar;
- $tmp_file = $ENV{HOME} . "/.solar.env.$$.tmp";
- };
+ $setsolar = '/net/jumbo2.germany/buildenv/r/etools/setsolar.pl' if ! -e $setsolar;
+ $tmp_file = $ENV{HOME} . "/.solar.env.$$.tmp";
if (!-e $setsolar) {
print STDERR "There is no setsolar found. Falling back to current platform settings\n";
return;
@@ -2663,14 +2668,8 @@ sub get_solar_vars {
next if(!/^\w+\s+(\w+)/o);
next if (!defined $deliver_env{$1});
$var = $1;
- if ( $^O eq 'MSWin32' ) {
- my $string_tail = $';
- $string_tail =~ /=(\S+)$/o;
- $value = $1;
- } else {
- /\'(\S+)\'$/o;
- $value = $1;
- };
+ /\'(\S+)\'$/o;
+ $value = $1;
$$solar_vars{$var} = $value;
};
close SOLARTABLE;
@@ -2691,8 +2690,8 @@ sub get_current_module {
if ( ! $result ) {
print_error("Cannot rename $module_name: $!\n");
}
- if ( $CurrentPrj eq $link_name) {
- $CurrentPrj = $module_name;
+ if ( $initial_module eq $link_name) {
+ $initial_module = $module_name;
}
chdir $module_name;
getcwd();
@@ -2700,26 +2699,17 @@ sub get_current_module {
sub check_dir {
my $start_dir = getcwd();
- my @dir_entries = split(/[\\\/]/, $start_dir);
+ my @dir_entries = split(/[\\\/]/, $ENV{PWD});
my $current_module = $dir_entries[$#dir_entries];
- $current_module = $` if (($current_module =~ /(\.lnk)$/) || ($current_module =~ /(\.link)$/));
- my $link_name = $ENV{SOLARSRC}.'/'.$current_module.$1;
- if ( $^O eq 'MSWin32' ) {
- $start_dir =~ s/\\/\//go;
- $link_name =~ s/\\/\//go;
- if (lc($start_dir) eq lc($link_name)) {
- get_current_module($current_module);
- };
- } elsif ((-l $link_name) && (chdir $link_name)) {
- if ($start_dir eq getcwd()) {
- # we're dealing with link => fallback to SOLARSRC under UNIX
- $StandDir = $ENV{SOLARSRC}.'/';
- get_current_module($current_module);
- return;
- } else {
- chdir $start_dir;
- getcwd();
- };
+ if (($current_module =~ /(\.lnk)$/) || ($current_module =~ /(\.link)$/)) {
+ $current_module = $`;
+ # we're dealing with a link => fallback to SOLARSRC under UNIX
+ $StandDir = $ENV{SOLARSRC}.'/';
+ get_current_module($current_module);
+ return;
+ } else {
+ chdir $start_dir;
+ getcwd();
};
};
@@ -2836,7 +2826,7 @@ sub generate_html_file {
print HTML 'document.write(" </ul>");' . "\n";
print HTML 'document.write(" </div>");' . "\n";
};
- if ($BuildAllParents) {
+ if ($build_all_parents) {
print HTML 'document.write("<table valign=top cellpadding=0 hspace=0 vspace=0 cellspacing=0 border=0>");' . "\n";
print HTML 'document.write(" <tr>");' . "\n";
print HTML 'document.write(" <td><a id=ErroneousModules href=\"javascript:top.Error(\'\', \'';
@@ -2874,7 +2864,7 @@ sub generate_html_file {
foreach (@modules_order) {
next if ($modules_types{$_} eq 'lnk');
- next if (scalar keys %active_modules && (!defined $active_modules{$_}));
+ next if (!defined $active_modules{$_});
my ($errors_info_line, $dirs_info_line, $errors_number, $successes_percent, $errors_percent, $time) = get_html_info($_);
#<one module>
print HTML 'document.write(" <tr>");' . "\n";
@@ -3517,7 +3507,7 @@ sub get_job_string {
my $build_queue = shift;
my $job = $dmake;
my ($job_dir, $dependencies_hash);
- if ($BuildAllParents) {
+ if ($build_all_parents) {
fill_modules_queue($build_queue);
do {
($job_dir, $dependencies_hash) = pick_jobdir($build_queue);
diff --git a/solenv/bin/checkdll.sh b/solenv/bin/checkdll.sh
index 0400f461666e..e64b8fd2aa4c 100755
--- a/solenv/bin/checkdll.sh
+++ b/solenv/bin/checkdll.sh
@@ -60,16 +60,6 @@ if [ -x $checkdll ]; then
*) DYLD_LIBRARY_PATH=$libpath;;
esac
export DYLD_LIBRARY_PATH;;
- IRIX) case "${LD_LIBRARYN32_PATH+X}" in
- X) LD_LIBRARYN32_PATH=$libpath:$LD_LIBRARYN32_PATH;;
- *) LD_LIBRARYN32_PATH=$libpath;;
- esac
- export LD_LIBRARYN32_PATH;;
- IRIX64) case "${LD_LIBRARYN32_PATH+X}" in
- X) LD_LIBRARYN32_PATH=$libpath:$LD_LIBRARYN32_PATH;;
- *) LD_LIBRARYN32_PATH=$libpath;;
- esac
- export LD_LIBRARYN32_PATH;;
*) case "${LD_LIBRARY_PATH+X}" in
X) LD_LIBRARY_PATH=$libpath:$LD_LIBRARY_PATH;;
*) LD_LIBRARY_PATH=$libpath;;
diff --git a/solenv/bin/createpdbrelocators.pl b/solenv/bin/createpdbrelocators.pl
index 66c4301be61e..8b6218adbab2 100644
--- a/solenv/bin/createpdbrelocators.pl
+++ b/solenv/bin/createpdbrelocators.pl
@@ -62,6 +62,7 @@ print "$script_name -- version: $script_rev\n";
my $inpath = $ENV{INPATH};
my $milestone = $ENV{UPDMINOR};
+my $milestoneext = $ENV{UPDMINOREXT};
if ( $ARGV[0] ) {
if ( $milestone && ( $milestone ne $ARGV[0] ) ) {
@@ -74,8 +75,8 @@ if ( !$inpath || !$milestone ) {
print STDERR "$script_name: INAPTH or UPDMINOR not set!\n";
exit(1);
}
-
-my $rc = CreatePDBRelocators::create_pdb_relocators($inpath, $milestone, "");
+my $relocators = CreatePDBRelocators->new();
+my $rc = $relocators->create_pdb_relocators($inpath, $milestoneext, "");
if ( !$rc ) {
print STDERR "$script_name: creating PDB relocators failed!\n";
diff --git a/solenv/bin/cws.pl b/solenv/bin/cws.pl
index 96ea6610fa67..801d62add78c 100644
--- a/solenv/bin/cws.pl
+++ b/solenv/bin/cws.pl
@@ -59,9 +59,11 @@ use Cws;
#### globals ####
-# TODO: replace dummy vales with actual SVN->hg migration milestones
+# TODO: replace dummy vales with actual SVN->hg and source_config migration milestones
my $dev300_migration_milestone = 'm64';
+my $dev300_source_config_milestone = 'm65';
my $ooo320_migration_milestone = 'm999';
+my $ooo320_source_config_milestone = 'm999';
# valid command with possible abbreviations
my @valid_commands = (
@@ -101,6 +103,9 @@ for (@valid_commands) {
# set by --debug switch
my $debug = 0;
+# set by --profile switch
+my $profile = 0;
+
#### main ####
@@ -126,6 +131,7 @@ sub parse_command_line
'migration',
'childworkspace|child|c=s',
'debug',
+ 'profile',
'commit|C',
'switch|s',
'platforms|p=s',
@@ -195,6 +201,10 @@ sub verify_options
$debug = 1;
next;
}
+ if ( /profile/ ) {
+ $profile = 1;
+ next;
+ }
if (!exists $valid_command_options_hash{$_}) {
print_error("can't use option '--$_' with subcommand '$command'.", 1);
}
@@ -576,7 +586,7 @@ sub hg_local_clone_repository
hg_strip($dest, $revision);
}
my $t2 = Benchmark->new();
- print_time_elapsed($t1, $t2);
+ print_time_elapsed($t1, $t2) if $profile;
}
sub hg_lan_clone_repository
@@ -589,7 +599,7 @@ sub hg_lan_clone_repository
print_message("... clone LAN repository '$lan_source' to '$dest'");
hg_clone($lan_source, $dest, "-U -r $milestone_tag");
my $t2 = Benchmark->new();
- print_time_elapsed($t1, $t2);
+ print_time_elapsed($t1, $t2) if $profile;
}
sub hg_remote_pull_repository
@@ -601,7 +611,7 @@ sub hg_remote_pull_repository
print_message("... pull from REMOTE repository '$remote_source' to '$dest'");
hg_pull($dest, $remote_source);
my $t2 = Benchmark->new();
- print_time_elapsed($t1, $t2);
+ print_time_elapsed($t1, $t2) if $profile;
}
sub hg_update_repository
@@ -612,7 +622,7 @@ sub hg_update_repository
print_message("... update repository '$dest'");
hg_update($dest);
my $t2 = Benchmark->new();
- print_time_elapsed($t1, $t2);
+ print_time_elapsed($t1, $t2) if $profile;
}
# Check if clone source and destination are on the same filesystem,
@@ -1312,10 +1322,11 @@ sub relink_workspace {
sub update_solver
{
- my $platform = shift;
- my $source = shift;
- my $solver = shift;
- my $milestone = shift;
+ my $platform = shift;
+ my $source = shift;
+ my $solver = shift;
+ my $milestone = shift;
+ my $source_config = shift;
my @zip_sub_dirs = ('bin', 'doc', 'idl', 'inc', 'lib', 'par', 'pck', 'pdb', 'pus', 'rdb', 'res', 'xml', 'sdf');
@@ -1344,6 +1355,7 @@ sub update_solver
my $nzips = @zips;
print_message("... unzipping $nzips zip archives for platform '$platform'");
+
foreach(@zips) {
my $zip = Archive::Zip->new();
unless ( $zip->read( "$platform_source/$_" ) == AZ_OK ) {
@@ -1351,7 +1363,8 @@ sub update_solver
}
# TODO: check for erorrs
foreach (@zip_sub_dirs) {
- unless ( $zip->extractTree($_, "$platform_solver/$_.$milestone") == AZ_OK ) {
+ my $extract_destination = $source_config ? "$platform_solver/$_" : "$platform_solver/$_.$milestone";
+ unless ( $zip->extractTree($_, $extract_destination) == AZ_OK ) {
print_error("Can't extract stream from zip file '$platform_source/$_': $!.", 44);
}
}
@@ -1453,11 +1466,40 @@ sub get_scm_for_milestone
}
}
else {
- $scm = 'SVN'
+ $scm = 'SVN';
}
return $scm;
}
+# TODO: special provisions for "source_config" migration, remove this
+# some time after migration
+sub get_source_config_for_milestone
+{
+ my $masterws = shift;
+ my $milestone = shift;
+
+ my $milestone_sequence_number = extract_milestone_sequence_number($milestone);
+ my $dev300_migration_sequence_number = extract_milestone_sequence_number($dev300_source_config_milestone);
+ my $ooo320_migration_sequence_number = extract_milestone_sequence_number($ooo320_source_config_milestone);
+
+ my $source_config = 0;
+
+ if ( $masterws eq 'DEV300' ) {
+ if ( $milestone_sequence_number >= $dev300_migration_sequence_number ) {
+ $source_config = 1;
+ }
+ }
+ elsif ( $masterws eq 'OOO320' ) {
+ if ( $milestone_sequence_number >= $ooo320_migration_sequence_number ) {
+ $source_config = '1';
+ }
+ }
+ else {
+ $source_config = 0;
+ }
+ return $source_config;
+}
+
sub extract_milestone_sequence_number
{
my $milestone = shift;
@@ -2264,11 +2306,24 @@ sub do_fetch
hg_clone_repository('ooo', $cws, "$work_master/ooo", $clone_milestone_only);
hg_clone_repository('so', $cws, "$work_master/sun", $clone_milestone_only);
}
- my $linkdir = "$work_master/src.$milestone";
- if ( !mkdir($linkdir) ) {
- print_error("Can't create directory '$linkdir': $!.", 8);
+ if ( get_source_config_for_milestone($masterws, $milestone) ) {
+ # write source_config file
+ my $source_config_file = "$work_master/source_config";
+ if ( !open(SOURCE_CONFIG, ">$source_config_file") ) {
+ print_error("Can't create source_config file '$source_config_file': $!.", 8);
+ }
+ print SOURCE_CONFIG "[repositories]\n";
+ print SOURCE_CONFIG "ooo=active\n";
+ print SOURCE_CONFIG "sun=active\n";
+ close(SOURCE_CONFIG);
+ }
+ else {
+ my $linkdir = "$work_master/src.$milestone";
+ if ( !mkdir($linkdir) ) {
+ print_error("Can't create directory '$linkdir': $!.", 8);
+ }
+ relink_workspace($linkdir);
}
- relink_workspace($linkdir);
}
else {
if ( $scm eq 'SVN' ) {
@@ -2294,12 +2349,13 @@ sub do_fetch
print_error("Can't create directory '$solver': $!.", 8);
}
}
+ my $source_config = get_source_config_for_milestone($masterws, $milestone);
foreach(@platforms) {
my $time_solver_start = Benchmark->new();
print_message("... copying platform solver '$_'.");
- update_solver($_, $prebuild_dir, $solver, $milestone);
+ update_solver($_, $prebuild_dir, $solver, $milestone, $source_config);
my $time_solver_stop = Benchmark->new();
- print_time_elapsed($time_solver_start, $time_solver_stop);
+ print_time_elapsed($time_solver_start, $time_solver_stop) if $profile;
}
}
my $time_fetch_stop = Benchmark->new();
diff --git a/solenv/bin/deliver.pl b/solenv/bin/deliver.pl
index 611a08a47f62..0d6c8b27afa4 100755
--- a/solenv/bin/deliver.pl
+++ b/solenv/bin/deliver.pl
@@ -100,7 +100,6 @@ $files_copied = 0; # statistics
$files_unchanged = 0; # statistics
$opt_force = 0; # option force copy
-$opt_minor = 0; # option deliver in minor
$opt_check = 0; # do actually execute any action
$opt_zip = 0; # create an additional zip file
$opt_silent = 0; # be silent, only report errors
@@ -402,7 +401,6 @@ sub parse_options
my $dontdeletecommon = 0;
while ( $arg = shift @ARGV ) {
$arg =~ /^-force$/ and $opt_force = 1 and next;
- $arg =~ /^-minor$/ and $opt_minor = 1 and next;
$arg =~ /^-check$/ and $opt_check = 1 and $opt_verbose = 1 and next;
$arg =~ /^-quiet$/ and $opt_silent = 1 and next;
$arg =~ /^-verbose$/ and $opt_verbose = 1 and next;
@@ -462,6 +460,7 @@ sub init_globals
my $solarversion = $ENV{'SOLARVERSION'};
my $updater = $ENV{'UPDATER'};
my $updminor = $ENV{'UPDMINOR'};
+ my $updminorext = $ENV{'UPDMINOREXT'};
my $work_stamp = $ENV{'WORK_STAMP'};
# special security check for release engineers
@@ -483,14 +482,8 @@ sub init_globals
}
$ext = "";
- if ( ($opt_minor || $updminor) && !$dest ) {
- if ( $updminor ) {
- $ext = ".$updminor";
- }
- else {
- print_error("can't determine UPDMINOR", 0);
- exit(3);
- }
+ if ( ($updminor) && !$dest ) {
+ $ext = "$updminorext";
}
# Do we have common trees?
@@ -559,7 +552,7 @@ sub get_base
}
if ( $#field == -1 ) {
- print_error("can't determine module");
+ print_error("can't find d.lst");
exit(2);
}
else {
@@ -668,6 +661,7 @@ sub glob_line
my @file_list = glob($from);
foreach $file ( @file_list ) {
+ next if ( -d $file); # we only copy files, not directories
my ($fname, $dir) = fileparse($file);
my $copy = ($replace) ? $to_dir . $fname : $to . '/' . $fname;
push(@globbed_files, [$file, $copy]);
@@ -1123,7 +1117,7 @@ sub push_on_ziplist
return if ( $opt_check );
# strip $dest from path since we don't want to record it in zip file
if ( $file =~ s#^\Q$dest\E/##o ) {
- if ( $opt_minor ){
+ if ( $updminor ){
# strip minor from path
my $ext = "%_EXT%";
$ext = expand_macros($ext);
@@ -1131,7 +1125,7 @@ sub push_on_ziplist
}
push(@zip_list, $file);
} elsif ( $file =~ s#^\Q$common_dest\E/##o ) {
- if ( $opt_minor ){
+ if ( $updminor ){
# strip minor from path
my $ext = "%_EXT%";
$ext = expand_macros($ext);
@@ -1529,23 +1523,22 @@ sub cleanup_and_die
sub usage
{
my $exit_code = shift;
- print STDERR "Usage:\ndeliver [OPTION]... [DESTINATION-PATH]\n";
+ print STDERR "Usage:\ndeliver [OPTIONS] [DESTINATION-PATH]\n";
print STDERR "Options:\n";
print STDERR " -check just print what would happen, no actual copying of files\n";
print STDERR " -checkdlst be verbose about (possible) d.lst bugs\n";
print STDERR " -delete delete files (undeliver), use with care\n";
print STDERR " -deloutput remove the output tree after copying\n";
- print STDERR " -force copy even if not newer\n";
print STDERR " -dontdeletecommon do not delete common files (for -delete option)\n";
+ print STDERR " -force copy even if not newer\n";
print STDERR " -help print this message\n";
if ( !defined($ENV{GUI}) || $ENV{GUI} ne 'WNT' ) {
print STDERR " -link hard link files into the solver to save disk space\n";
}
- print STDERR " -minor deliver into minor (milestone)\n";
print STDERR " -quiet be quiet, only report errors\n";
print STDERR " -verbose be verbose\n";
print STDERR " -zip additionally create zip files of delivered content\n";
- print STDERR "Option '-zip' and a destination-path are mutually exclusive.\n";
+ print STDERR "Options '-zip' and a destination-path are mutually exclusive.\n";
print STDERR "Options '-check' and '-quiet' are mutually exclusive.\n";
exit($exit_code);
}
diff --git a/solenv/bin/mhids.pl b/solenv/bin/mhids.pl
index c6fc230cabd4..52a62ef70040 100644
--- a/solenv/bin/mhids.pl
+++ b/solenv/bin/mhids.pl
@@ -88,6 +88,8 @@ sub setcompiler
$outobj_flag = "-Fo";
$objext = ".obj";
$preprocess_flag = "-EP"; # preprocess to stdout
+ $solarincludes =~ s/\/stl/\/xstlx/g;
+ $defs =~ s/\/stl/\/xstlx/g;
} elsif ( "$whichcom" eq "C52" ) {
$appext = ""; # windows for now
$compiler = "cc";
@@ -154,7 +156,10 @@ $filename =~ s/\\/\//g;
$filebase = $filename;
$filebase =~ s/.*[\\\/]//;
$filebase =~ s/\..*?$//;
-$workfile = "$tmpdir/${filebase}_".$$;
+# now stript it to something that doesn't togger vista execution prevention :(
+$flbs = $filebase;
+$flbs =~ s/[aeiou]//g;
+$workfile = "$tmpdir/${flbs}_".$$;
#$workfile =~ s/setup/set_up/;
# now get $workfile ready for shell usage...
diff --git a/solenv/bin/modules/CreatePDBRelocators.pm b/solenv/bin/modules/CreatePDBRelocators.pm
index e279cf7daeb9..0b57e748b486 100644
--- a/solenv/bin/modules/CreatePDBRelocators.pm
+++ b/solenv/bin/modules/CreatePDBRelocators.pm
@@ -35,7 +35,7 @@
# PDB relocator files are used to find debug infos
# for analysis of creash reports
#
-# usage: create_pdb_relocators($inpath, $milestone, $pre);
+# usage: create_pdb_relocators($inpath, $milestoneext, $pre);
#
#*************************************************************************
@@ -43,32 +43,57 @@ package CreatePDBRelocators;
use strict;
use File::Basename;
+use SourceConfig;
-sub create_pdb_relocators
+sub new
{
- my $inpath = shift;
- my $milestone = shift;
- my $pre = shift;
+ my $Object = shift;
+ my $solarversion = shift;
+ my $self = {};
+ my @repositories;
- my $solarversion = $ENV{SOLARVERSION};
+ if (!defined ($solarversion)) {
+ $solarversion = $ENV{SOLARVERSION};
+ }
if ( !$solarversion ) {
print STDERR "can't determine SOLARVERSION.\n";
- return undef;
+ exit (1);
}
- my $o = $ENV{SRC_ROOT};
- if ( !$o ) {
- print STDERR "can't determine SOLAR_SRC.\n";
- return undef;
+ $self->{SOLARVERSION} = $solarversion;
+
+ my $SourceConfigObj = SourceConfig->new();
+ @repositories = $SourceConfigObj->get_repositories();
+
+ if (!scalar @repositories) {
+ print STDERR "no repository and no working directory found.\n";
+ exit (2);
}
+ $self->{REPOSITORIES} = \@repositories;
+ bless($self, $Object);
+ return $self;
+}
+sub create_pdb_relocators
+{
+ my $self = shift;
+ my $inpath = shift;
+ my $milestoneext = shift;
+ my $pre = shift;
+
+ my $solarversion = $self->{SOLARVERSION};
my $root_dir = "$solarversion/$inpath";
# sanitize path
$root_dir =~ s/\\/\//g;
- $o =~ s/\\/\//g;
- my $pdb_dir = $root_dir . "/pdb.$pre$milestone";
- my $pdb_so_dir = $root_dir . "/pdb.$pre$milestone/so";
+ my $o =~ s/\\/\//g;
+ my $premilestoneext = $milestoneext;
+ if ( $pre ne "" ) {
+ $premilestoneext = ~ s/^\.//;
+ $premilestoneext = ".pre$premilestoneext";
+ }
+ my $pdb_dir = $root_dir . "/pdb$premilestoneext";
+ my $pdb_so_dir = $root_dir . "/pdb$premilestoneext/so";
# create pdb directories if necessary
if ( ! -d $pdb_dir ) {
@@ -86,42 +111,60 @@ sub create_pdb_relocators
# collect files
my @pdb_files;
- collect_files( $o, $inpath, \@pdb_files);
-
- foreach (@pdb_files) {
- my $relocator = basename($_) . ".location";
- /$o\/(.*)/i;
-
- my $src_location = $1;
-
- my $location = "";
- my $target = "";
- if ( $src_location =~ /\/so\// )
- {
- $location = "../../../src.$milestone/" . $src_location;
- $target = "$pdb_dir/so/$relocator";
- }
- else
- {
- $location = "../../src.$milestone/" . $src_location;
- $target = "$pdb_dir/$relocator";
- }
+ foreach my $repository (@{$self->{REPOSITORIES}}) {
+ my $o = $self->{SOLARVERSION} . "/$repository";
+ $repository =~ s/(.*?)\.(.*)/$1/;
+ $self->collect_files( $o, $inpath, \@pdb_files);
+
+ foreach (@pdb_files) {
+ my $relocator = basename($_) . ".location";
+ /$o\/(.*)/i;
+
+ my $src_location = $1;
+
+ my $location = "";
+ my $target = "";
+ if ( $src_location =~ /\/so\// )
+ {
+ $location = "../../../$repository$milestoneext/" . $src_location;
+ $target = "$pdb_dir/so/$relocator";
+ }
+ else
+ {
+ $location = "../../$repository$milestoneext/" . $src_location;
+ $target = "$pdb_dir/$relocator";
+ }
- if ( !open(RELOCATOR, ">$target") ) {
- print STDERR "can't write file '$target'\n";
- return undef;
+ if ( !open(RELOCATOR, ">$target") ) {
+ print STDERR "can't write file '$target'\n";
+ return undef;
+ }
+ print RELOCATOR "$location\n";
+ close(RELOCATOR);
}
- print RELOCATOR "$location\n";
- close(RELOCATOR);
}
return 1;
}
+sub collect_files_from_all_repositories
+{
+ my $self = shift;
+ my ($platform, $filesref) = @_;
+ my $repository;
+ my $ret;
+ foreach $repository (@{$self->{REPOSITORIES}}) {
+ my $srcdir = $self->{SOLARVERSION} . "/$repository";
+ $ret |= $self->collect_files ($srcdir, $platform, $filesref);
+ }
+ return $ret;
+}
+
sub collect_files
{
+ my $self = shift;
my ($srcdir, $platform, $filesref) = @_;
my $template = "$srcdir/*/$platform";
- if ( $^O eq 'MSWin32' ) {
+ if ( $ENV{GUI} eq "WNT" ) {
# collect all pdb files on o:
# regular glob does not work with two wildcard on WNT
my @bin = glob("$template/bin/*.pdb");
@@ -145,8 +188,8 @@ sub collect_files
my @mac_lib = glob("$template/lib/*.dylib*");
my @mac_lib_so = glob("$template/lib/so/*.dylib*");
# collect all binary executables on o:
- my @bin = find_binary_execs("$template/bin");
- my @bin_so = find_binary_execs("$template/bin/so");
+ my @bin = $self->find_binary_execs("$template/bin");
+ my @bin_so = $self->find_binary_execs("$template/bin/so");
@$filesref = (@lib, @lib_so, @mac_lib, @mac_lib_so, @bin, @bin_so);
}
return 1;
@@ -154,6 +197,7 @@ sub collect_files
sub find_binary_execs
{
+ my $self = shift;
my $path = shift;
my @files = glob("$path/*");
my @execs = grep(-x $_, @files);
diff --git a/solenv/bin/modules/SourceConfig.pm b/solenv/bin/modules/SourceConfig.pm
index 23d89d882bb8..e43b1f50a990 100644
--- a/solenv/bin/modules/SourceConfig.pm
+++ b/solenv/bin/modules/SourceConfig.pm
@@ -44,6 +44,10 @@ use strict;
use constant SOURCE_CONFIG_FILE_NAME => 'source_config';
use Carp;
+use Cwd;
+use File::Basename;
+
+my $debug = 0;
##### profiling #####
@@ -64,8 +68,9 @@ sub new {
$self->{REPOSITORIES} = {};
$self->{MODULE_PATHS} = {};
$self->{MODULE_BUILD_LIST_PATHS} = {};
- $self->{ACTIVE_MODULES} = {};
+ $self->{ACTIVATED_MODULES} = {};
$self->{MODULE_REPOSITORY} = {};
+ $self->{REAL_MODULES} = {};
$self->{SOURCE_CONFIG_FILE} = get_config_file($source_root);
$self->{SOURCE_CONFIG_DEFAULT} = Cwd::realpath($source_root) .'/'.SOURCE_CONFIG_FILE_NAME;
read_config_file($self);
@@ -110,7 +115,7 @@ sub get_module_path {
if (defined ${$self->{MODULE_PATHS}}{$module}) {
return ${$self->{MODULE_PATHS}}{$module};
} else {
- Carp::cluck("No path for module $module in active repositories!!\n");
+ Carp::cluck("No path for module $module in active repositories!!\n") if ($debug);
return undef;
};
}
@@ -135,13 +140,26 @@ sub get_all_modules
return sort keys %{$self->{MODULE_PATHS}};
};
-
sub get_active_modules
{
my $self = shift;
- return sort keys %{$self->{ACTIVE_MODULES}};
+ if (scalar keys %{$self->{ACTIVATED_MODULES}}) {
+ return sort keys %{$self->{ACTIVATED_MODULES}};
+ }
+ $self -> get_module_paths() if (!scalar keys %{$self->{MODULE_PATHS}});
+ return sort keys %{$self->{REAL_MODULES}};
}
+sub is_active
+{
+ my $self = shift;
+ my $module = shift;
+ if (scalar keys %{$self->{ACTIVATED_MODULES}}) {
+ return exists ($self->{ACTIVATED_MODULES}{$module});
+ }
+ $self -> get_module_paths() if (!scalar keys %{$self->{MODULE_PATHS}});
+ return exists ($self->{REAL_MODULES}{$module});
+}
##### private methods #####
@@ -163,10 +181,11 @@ sub get_module_paths {
my $repository_path = ${$self->{REPOSITORIES}}{$repository};
if (opendir DIRHANDLE, $repository_path) {
foreach my $module (readdir(DIRHANDLE)) {
- next if ($module =~ /^\.+/);
+ next if (($module =~ /^\.+/) || (!-d "$repository_path/$module"));
my $module_entry = $module;
- $module =~ s/\.lnk$//;
- $module =~ s/\.link$//;
+ if (($module !~ s/\.lnk$//) && ($module !~ s/\.link$//)) {
+ $self->{REAL_MODULES}{$module}++;
+ }
my $possible_path = "$repository_path/$module_entry";
if (-d $possible_path) {
if (defined ${$self->{MODULE_PATHS}}{$module}) {
@@ -182,6 +201,7 @@ sub get_module_paths {
croak("Cannot read $_ repository content");
};
};
+ croak("No modules found!") if (!scalar keys %{$self->{MODULE_PATHS}});
};
sub get_config_file {
@@ -227,7 +247,7 @@ sub read_config_file {
next;
}
if ($module_section) {
- ${$self->{ACTIVE_MODULES}}{$1}++;
+ ${$self->{ACTIVATED_MODULES}}{$1}++;
next;
};
};
@@ -308,6 +328,11 @@ SourceConfig::get_config_file_default_path()
Returns default path for source configuration file
+SourceConfig::is_active()
+
+Returns 1 (TRUE) if a module is active
+Returns 0 (FALSE) if a module is not active
+
=head2 EXPORT
SourceConfig::new()
@@ -319,6 +344,7 @@ SourceConfig::get_module_build_list($module)
SourceConfig::get_module_repository($module)
SourceConfig::get_config_file_path()
SourceConfig::get_config_file_default_path()
+SourceConfig::is_active($module)
=head1 AUTHOR
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index cde8204972f9..8579e67ed970 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -82,8 +82,15 @@ BEGIN
"dgo",
"kok",
"mni",
- "sat"
-
+ "sat",
+ "ug",
+ "om",
+ "si",
+ "or",
+ "oc",
+ "ml",
+ "as",
+ "ast"
);
@items_at_modules = ("Files", "Dirs", "Unixlinks");
@asianlanguages = ("ja", "ko", "zh-CN", "zh-TW");
diff --git a/solenv/bin/modules/installer/javainstaller.pm b/solenv/bin/modules/installer/javainstaller.pm
index 980b48dcbc0a..b9735e5aee29 100644
--- a/solenv/bin/modules/installer/javainstaller.pm
+++ b/solenv/bin/modules/installer/javainstaller.pm
@@ -461,7 +461,6 @@ sub set_classpath_for_install_sdk
else { installer::exiter::exit_program("ERROR: Environment variable \"INPATH\" not set!", "set_classpath_for_install_sdk"); }
if ( defined( $ENV{ 'UPDMINOREXT' } ) ) { $updMinorExt = $ENV{'UPDMINOREXT'}; }
- else { installer::exiter::exit_program("ERROR: Environment variable \"UPDMINOREXT\" not set!", "set_classpath_for_install_sdk") if ( ! $ENV{UPDATER} ); }
$installsdk = $solarVersion . $installer::globals::separator . $inPath . $installer::globals::separator . "bin" . $updMinorExt;
$installsdk = $installsdk . $installer::globals::separator . "javainstaller";
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index 991f0025e714..e9ad0c73d249 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -484,6 +484,16 @@ sub write_idt_header
push(@{$idtref}, $oneline);
}
+ if ( $definestring eq "reg64" )
+ {
+ $oneline = "Registry\tRoot\tKey\tName\tValue\tComponent_\n";
+ push(@{$idtref}, $oneline);
+ $oneline = "s72\ti2\tl255\tL255\tL0\ts72\n";
+ push(@{$idtref}, $oneline);
+ $oneline = "Reg64\tRegistry\n";
+ push(@{$idtref}, $oneline);
+ }
+
if ( $definestring eq "createfolder" )
{
$oneline = "Directory_\tComponent_\n";
diff --git a/solenv/bin/modules/installer/windows/registry.pm b/solenv/bin/modules/installer/windows/registry.pm
index 832fd213a9f0..9f9da9485677 100644
--- a/solenv/bin/modules/installer/windows/registry.pm
+++ b/solenv/bin/modules/installer/windows/registry.pm
@@ -216,6 +216,27 @@ sub get_registry_value
}
##############################################################
+# Returning 64 bit value for registry table.
+##############################################################
+
+sub get_registry_val64
+{
+ my ($registry, $allvariableshashref) = @_;
+
+ my $value = "";
+
+ if ( $registry->{'Val64'} ) { $value = $registry->{'Val64'}; }
+
+ $value =~ s/\\\"/\"/g; # no more masquerading of '"'
+ $value =~ s/\<progpath\>/\[OFFICEINSTALLLOCATION\]/;
+ $value =~ s/\[OFFICEINSTALLLOCATION\]\\/\[OFFICEINSTALLLOCATION\]/; # removing "\" after "[OFFICEINSTALLLOCATION]"
+
+ if ( $value =~ /\%/ ) { $value = installer::worker::replace_variables_in_string($value, $allvariableshashref); }
+
+ return $value;
+}
+
+##############################################################
# Returning component for registry table.
##############################################################
@@ -286,8 +307,10 @@ sub create_registry_table
my $onelanguage = ${$languagesarrayref}[$m];
my @registrytable = ();
+ my @reg64table = ();
installer::windows::idtglobal::write_idt_header(\@registrytable, "registry");
+ installer::windows::idtglobal::write_idt_header(\@reg64table, "reg64");
for ( my $i = 0; $i <= $#{$registryref}; $i++ )
{
@@ -306,6 +329,7 @@ sub create_registry_table
$registry{'Key'} = get_registry_key($oneregistry, $allvariableshashref);
$registry{'Name'} = get_registry_name($oneregistry, $allvariableshashref);
$registry{'Value'} = get_registry_value($oneregistry, $allvariableshashref);
+ $registry{'Val64'} = get_registry_val64($oneregistry, $allvariableshashref);
$registry{'Component_'} = get_registry_component($oneregistry, $allvariableshashref);
# Collecting all components
@@ -343,7 +367,11 @@ sub create_registry_table
my $oneline = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t"
. $registry{'Name'} . "\t" . $registry{'Value'} . "\t" . $registry{'Component_'} . "\n";
- push(@registrytable, $oneline);
+ my $oneline64 = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t"
+ . $registry{'Name'} . "\t" . $registry{'Val64'} . "\t" . $registry{'Component_'} . "\n";
+
+ if ( ! ( $style =~ /\bX64_ONLY\b/ )) { push(@registrytable, $oneline); } # standard registry table for 32 Bit
+ if (( $style =~ /\bX64\b/ ) || ( $style =~ /\bX64_ONLY\b/ )) { push(@reg64table , $oneline64); }
}
# If there are added user registry keys for files collected in
@@ -360,6 +388,11 @@ sub create_registry_table
installer::files::save_file($registrytablename ,\@registrytable);
my $infoline = "Created idt file: $registrytablename\n";
push(@installer::globals::logfileinfo, $infoline);
+
+ $registrytablename = $basedir . $installer::globals::separator . "Reg64.idt" . "." . $onelanguage;
+ installer::files::save_file($registrytablename ,\@reg64table );
+ my $infoline = "Created idt file: $registrytablename\n";
+ push(@installer::globals::logfileinfo, $infoline);
}
}
diff --git a/solenv/bin/modules/installer/xpdinstaller.pm b/solenv/bin/modules/installer/xpdinstaller.pm
index f18853dbdcdd..e81380807a87 100644
--- a/solenv/bin/modules/installer/xpdinstaller.pm
+++ b/solenv/bin/modules/installer/xpdinstaller.pm
@@ -449,6 +449,21 @@ sub get_forceintoupdate_value
}
###################################################
+# Substituting all occurences of "<" by "&lt;"
+# and all occurences of ">" by "&gt;"
+###################################################
+
+sub replace_brackets_in_string
+{
+ my ( $string ) = @_;
+
+ if ( $string =~ /\</ ) { $string =~ s/\</\&lt\;/g; }
+ if ( $string =~ /\>/ ) { $string =~ s/\>/\&gt\;/g; }
+
+ return $string;
+}
+
+###################################################
# Substituting all occurences of "\uUXYZ" by
# "&#xUXYZ;", because the use xml saxparser does
# not know anything about this encoding. Therfore
@@ -506,6 +521,7 @@ sub collect_lang_values
if ( $write_line )
{
my $value = $module->{$key};
+ $value = replace_brackets_in_string($value);
$value = replace_javaencoding_in_string($value);
my $line = $indent . "<" . $saveentry . " lang=" . "\"" . $javalanguage . "\"" . ">" . $value . "<\/" . $saveentry . ">" . "\n";
push(@{$xpdfile}, $line);
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index c1f1efbf98a8..3232daf2138f 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -493,7 +493,8 @@ sub replace_minor_in_pathes
{
my $line = ${$patharrayref}[$i];
- if ( $installer::globals::minor )
+ if ( ! defined $ENV{CWS_WORK_STAMP} and defined $ENV{UPDMINOR} )
+# if ( $installer::globals::minor )
{
$line =~ s/\{minor\}/$installer::globals::minor/g;
# no difference for minor and minornonpre (ToDo ?)
diff --git a/solenv/bin/modules/osarch.pm b/solenv/bin/modules/osarch.pm
index 8c3a87e4ddc5..205e4c933193 100755
--- a/solenv/bin/modules/osarch.pm
+++ b/solenv/bin/modules/osarch.pm
@@ -27,8 +27,7 @@ chop( $m_str, $s_str );
# "SCO_SV", "scouw21",
"Darwin", "macosxp",
"Mac OS", "macosxp",
- "SINIX-N", "sinix",
- "IRIX", "irix"
+ "SINIX-N", "sinix"
);
%osDefTable = ("SunOS", "-DSYSV -DSOLARIS",
@@ -42,8 +41,7 @@ chop( $m_str, $s_str );
# "SCO_SV", "-DSYSV -DSCO -DSCO_UW21",
"Darwin", "-DBSD -DMACOSX",
"Mac OS", "-DBSD -DMACOSX",
- "SINIX-N", "-DSYSV -DSINIX",
- "IRIX", "-DSYSV -DIRIX"
+ "SINIX-N", "-DSYSV -DSINIX"
);
%osDosTable = ("SunOS", "sol",
@@ -56,8 +54,7 @@ chop( $m_str, $s_str );
"SCO_SV", "sco",
"Darwin", "macx",
"Mac OS", "macx",
- "SINIX-N", "sni",
- "IRIX", "irx"
+ "SINIX-N", "sni"
);
%archTable = ("sun4c", "sparc",
diff --git a/solenv/bin/receditor b/solenv/bin/receditor
index f5d00bfb23fa..1011aeb5d826 100755
--- a/solenv/bin/receditor
+++ b/solenv/bin/receditor
@@ -3,4 +3,4 @@ if [ x${SOLARENV}x = xx ]; then
echo No environment found, please use 'configure' or 'setsolar'
exit 1
fi
-exec java -DSOLARSRC=${SOLARSRC} -DWORK_STAMP=${WORK_STAMP} -DUSE_SHELL= -jar ${SOLARVER}/${INPATH}/bin.${UPDMINOR}/receditor.jar
+exec java -DSOLARSRC=${SOLARSRC} -DWORK_STAMP=${WORK_STAMP} -DUSE_SHELL= -jar ${SOLARVER}/${INPATH}/bin${UPDMINOREXT}/receditor.jar