generate list of license information for packages
authorJohn Crispin <john@openwrt.org>
Sun, 26 Oct 2014 16:57:33 +0000 (16:57 +0000)
committerJohn Crispin <john@openwrt.org>
Sun, 26 Oct 2014 16:57:33 +0000 (16:57 +0000)
Many packages define already metadata about their license (PKG_LICENSE),
but this is only included in the ipk files.

This change allows to create the information also on the build-host,
to get an overview on the used licenses.
In the full list, also all packages without this info are shown

Signed-off-by: Thomas Langer <thomas.langer@lantiq.com>
SVN-Revision: 43070

include/package-dumpinfo.mk
scripts/metadata.pl
scripts/metadata.pm

index 26c8d31..b6e2f0f 100644 (file)
@@ -45,7 +45,9 @@ Title: $(TITLE)
 Maintainer: $(MAINTAINER)
 $(if $(USERID),Require-User: $(USERID)
 )Source: $(PKG_SOURCE)
-Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))
+$(if $(PKG_LICENSE),License: $(PKG_LICENSE)
+)$(if $(PKG_LICENSE_FILES),LicenseFiles: $(PKG_LICENSE_FILES)
+)Type: $(if $(Package/$(1)/targets),$(Package/$(1)/targets),$(if $(PKG_TARGETS),$(PKG_TARGETS),ipkg))
 $(if $(KCONFIG),Kernel-Config: $(KCONFIG)
 )$(if $(BUILDONLY),Build-Only: $(BUILDONLY)
 )$(if $(HIDDEN),Hidden: $(HIDDEN)
index 366e61c..f3d04db 100755 (executable)
@@ -871,6 +871,28 @@ sub gen_package_feeds() {
        }
 }
 
+sub gen_package_license($) {
+       my $level = shift;
+       parse_package_metadata($ARGV[0]) or exit 1;
+       foreach my $name (sort {uc($a) cmp uc($b)} keys %package) {
+               my $pkg = $package{$name};
+               if ($pkg->{name}) {
+                       if ($pkg->{license}) {
+                               print "$pkg->{name}: ";
+                               print "$pkg->{license}\n";
+                               if ($pkg->{licensefiles} && $level == 0) {
+                                       print "\tFiles: $pkg->{licensefiles}\n";
+                               }
+                       } else {
+                               if ($level == 1) {
+                                       print "$pkg->{name}: Missing license! ";
+                                       print "Please fix $pkg->{makefile}\n";
+                               }
+                       }
+               }
+       }
+}
+
 sub parse_command() {
        my $cmd = shift @ARGV;
        for ($cmd) {
@@ -880,6 +902,8 @@ sub parse_command() {
                /^kconfig/ and return gen_kconfig_overrides();
                /^package_source$/ and return gen_package_source();
                /^package_feeds$/ and return gen_package_feeds();
+               /^package_license$/ and return gen_package_license(0);
+               /^package_licensefull$/ and return gen_package_license(1);
        }
        print <<EOF
 Available Commands:
@@ -889,6 +913,8 @@ Available Commands:
        $0 kconfig [file] [config]      Kernel config overrides
        $0 package_source [file]        Package source file information
        $0 package_feeds [file]         Package feed information in makefile format
+       $0 package_license [file]       Package license information
+       $0 package_licensefull [file]   Package license information (full list)
 
 EOF
 }
index 16acb8e..fc86573 100644 (file)
@@ -97,6 +97,8 @@ sub parse_package_metadata($) {
                /^Submenu: \s*(.+)\s*$/ and $pkg->{submenu} = $1;
                /^Submenu-Depends: \s*(.+)\s*$/ and $pkg->{submenudep} = $1;
                /^Source: \s*(.+)\s*$/ and $pkg->{source} = $1;
+               /^License: \s*(.+)\s*$/ and $pkg->{license} = $1;
+               /^LicenseFiles: \s*(.+)\s*$/ and $pkg->{licensefiles} = $1;
                /^Default: \s*(.+)\s*$/ and $pkg->{default} = $1;
                /^Provides: \s*(.+)\s*$/ and do {
                        my @vpkg = split /\s+/, $1;