[Libreoffice-commits] .: Branch 'libreoffice-3-4' - solenv/bin
Michael Meeks
mmeeks at kemper.freedesktop.org
Tue Apr 5 09:19:01 PDT 2011
solenv/bin/relocate | 66 ++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 54 insertions(+), 12 deletions(-)
New commits:
commit e63a7449a5ba2b572dbc822b489727cb60956e9f
Author: Michael Meeks <michael.meeks at novell.com>
Date: Tue Apr 5 17:17:56 2011 +0100
fix relocate to re-write the new dependency files
diff --git a/solenv/bin/relocate b/solenv/bin/relocate
index 3fa6300..d6ecaf4 100755
--- a/solenv/bin/relocate
+++ b/solenv/bin/relocate
@@ -34,6 +34,8 @@
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
+# written substantially, if not entirely by non-Sun volunteers
+#
#*************************************************************************
sub sniff_set($)
@@ -105,30 +107,63 @@ sub rewrite_set($$$)
sed_file ("$new_root/$set", \&rewrite_value, \%state);
}
-sub find_old_root($$)
+sub read_set($$)
{
my $new_root = shift;
my $set = shift;
my $fname = "$new_root/$set";
- my $old_root;
my $file;
+ my %env_keys;
open ($file, $fname) || die "Can't open $fname: $!";
-
+
while (<$file>) {
if (/\s*([^=]+)\s*=\s*\"([^\"]+)\"/) {
my ($name, $value) = ($1, $2);
- if ($name eq 'SRC_ROOT') {
- $old_root = $value;
- last;
- }
+ $env_keys{$name} = $value;
}
}
-
+
close ($file) || die "Failed to close $fname: $!";
- return $old_root;
+ return \%env_keys;
+}
+
+sub sed_file_no_touch($$$)
+{
+ my ($new_root, $old_root, $file) = @_;
+ my ($fin, $fout);
+
+ ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+ $atime,$mtime,$ctime,$blksize,$blocks) = stat ($file);
+
+ open ($fin, $file) || die "Can't open $fin: $!";
+ open ($fout, ">$file.sed.bak") || die "Can't open $file.sed.bak: $!";
+ while (<$fin>) {
+ s/$old_root/$new_root/g;
+ print $fout $_;
+ }
+ close ($fin);
+ close ($fout);
+ rename ("$file.sed.bak", $file);
+# print "rename $file.sed.bak to $file\n";
+
+ utime $atime, $mtime, $file;
+}
+
+sub sed_no_touch_recursive ($$$)
+{
+ my ($new_root, $old_root, $dir) = @_;
+ my $dh;
+ opendir ($dh, $dir) || die "Can't open dir: $dir: $!";
+ while (my $entry = readdir ($dh)) {
+ $entry =~ /^\./ && next;
+ my $path = "$dir/$entry";
+ sed_no_touch_recursive ($new_root, $old_root, $path) if (-d $path);
+ sed_file_no_touch ($new_root, $old_root, $path) if (-f $path);
+ }
+ closedir ($dh);
}
sub rewrite_product_deps($$$)
@@ -144,8 +179,8 @@ sub rewrite_product_deps($$$)
while ($name = readdir ($misc_dir)) {
# Should try re-writing these - but perhaps this would
# screw with timestamps ?
- if ($name =~ m/\.dpcc$/ || $name =~ m/\.dpslo$/ || $name =~ m/\.dpobj$/) {
- unlink ("$path/$name");
+ if ($name =~ m/\.dpcc$/ || $name =~ m/\.dpslo$/ || $name =~ m/\.dpobj$/) {
+ sed_file_no_touch ($new_root, $old_root, "$path/$name");
}
}
closedir ($misc_dir);
@@ -177,6 +212,7 @@ sub rewrite_dpcc($$)
closedir ($sub_dir);
}
closedir ($top_dir);
+ print "\n";
}
sub rewrite_bootstrap($$)
@@ -210,7 +246,9 @@ substr ($OOO_BUILD, 0, 1) eq '/' || die "relocate requires absolute paths";
my $set;
$set = sniff_set($OOO_BUILD) || die "Can't find env. set";
-$OLD_ROOT = find_old_root($OOO_BUILD, $set);
+my $env_keys = read_set ($OOO_BUILD, $set);
+$OLD_ROOT = $env_keys->{'SRC_ROOT'};
+my $solver = $env_keys->{SOLARVER} . "/" . $env_keys->{INPATH};
print "Relocate: $OLD_ROOT -> $OOO_BUILD\n";
@@ -223,4 +261,8 @@ print "re-writing dependencies:\n";
rewrite_dpcc($OOO_BUILD, $OLD_ROOT);
+print "re-writing new dependencies:\n";
+
+sed_no_touch_recursive ($OOO_BUILD, $OLD_ROOT, "$solver/workdir/Dep");
+
print "done.\n";
More information about the Libreoffice-commits
mailing list