From: Jan Kratochvil Date: Sat, 5 Sep 2020 06:14:47 +0000 (+0200) Subject: dtneededsize: SYMLINK fixes. X-Git-Url: https://git.jankratochvil.net/?p=massrebuild.git;a=commitdiff_plain;h=2d73156f688891ca057e8e151633826bd3b85d76;hp=cd952a82538c21d1d2db61fceee5ea2012c0e8ed dtneededsize: SYMLINK fixes. --- diff --git a/dtneededsize b/dtneededsize index da07789..0b15cc5 100755 --- a/dtneededsize +++ b/dtneededsize @@ -56,17 +56,25 @@ find { if (-l $binfn) { my $target=readlink $binfn or die $binfn; $binfn=~s{^[.]}{}; - my $ref=\$SYMLINK{$binfn}; - die if $$ref; + my $final; if ($target=~m{^/}) { - $$ref=$target; + $final=$target; #warn "$binfn,target=rel=$$ref\n"; } else { my $base=dirname(".$binfn"); my $abs=File::Spec->rel2abs($target,$base); - $$ref="/".File::Spec->abs2rel($abs); + $final="/".File::Spec->abs2rel($abs); #warn "$binfn,base=$base,target=$target,abs=$abs,rel=$$ref\n"; } + 1 while $final=~s{/[^/]+/[.][.]/}{/}; + 1 while $final=~s{/[^/]+/[.][.]$}{}; + if ($final=~m{/[.][.]}) { + warn "$binfn,target=$target,final=$final\n"; + return; + } + my $ref=\$SYMLINK{$binfn}; + die if $$ref; + $$ref=$final; return; } return if !-f $binfn; @@ -179,5 +187,5 @@ warn "$binfn: ".Dumper(\%dwzcommons); $dtsizeall+=$dtsizetot; # warn "$binfn done\n".Dumper([sort keys(%l)]); } -print "dwzsizeall=$dwzsizeall dtsizeall=$dtsizeall\n"; +print "dwzsizeall=$dwzsizeall dtsizeall=$dtsizeall =".$dwzsizeall/$dtsizeall."\n"; print "computed=$computed of DEBUG=".(0+@DEBUG)."\n";