diff options
Diffstat (limited to 'debian/collect_copyright.pl')
-rwxr-xr-x | debian/collect_copyright.pl | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/debian/collect_copyright.pl b/debian/collect_copyright.pl new file mode 100755 index 0000000..5556d87 --- /dev/null +++ b/debian/collect_copyright.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl + +use v5.36; + +sub slurp($file){ + open(my $fh, "<", $file) or die; + local $/; + $/ = "\n" if(wantarray); + <$fh> +} + +my $root = $ENV{DPKG_ROOT} // ""; + +my %pkg; +my $pkg; +for(slurp("$root/var/lib/dpkg/status")){ + $pkg = $1 if(/^Package:\s*([^\s]*)/); + if(/^Source:\s*([^\s(]*)/){ + my $src = $1; + next if($src eq $pkg); + $pkg{$src} //= []; + push $pkg{$src}->@*, $pkg; + } +} + +my @deps; +for(@ARGV){ + push @deps, map{s/^\s*//; s/\s*$//r} + map{s/.*?.?=//; split(/, */)} + grep{/^misc:Static-Built-Using.?=/} + slurp($_); +} + +DEP: for my $namev(@deps){ + my $name = $namev =~ s/\s*\(.*//r; + for($name, $pkg{$name}->@*){ + if(-f "$root/usr/share/doc/$_/copyright"){ + print("Package: $namev\n"); + print(slurp("/usr/share/doc/$_/copyright")); + print("\n"); + next DEP; + } + } + die; +} |