summaryrefslogtreecommitdiff
path: root/debian/collect_copyright.pl
diff options
context:
space:
mode:
Diffstat (limited to 'debian/collect_copyright.pl')
-rwxr-xr-xdebian/collect_copyright.pl45
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;
+}