maemian - Maemo package checker
+=head1
+
+Maemian is the maemo version of lintian - a policy checker designed to
+assure the quality of a package uploaded into the maemo.org repositories.
+The goal of maemian is to improve quality by checking that the maemo
+packaging policy is followed. In order to do that it reads files in the
+uploaded deb. Currently maemian only looks at the .dsc file and tries to
+ascertain who uploaded it, and if they used the correct email address.
+
=head1 EXAMPLE
maemian -i file.dsc
use warnings;
use Getopt::Long;
use Carp;
+# Cannot yet pull in all of Lintian
+# unshift @INC, "/home/jeremiah/maemian/lib";
+# require Maemian::Output;
+# my $lintout = new Maemian::Output;
# --- Command line options
-my $inputfile; # --- A file passed to maemian
+my $inputfile; # --- A file passed to maemian
GetOptions ("inputfile|i=s" => \$inputfile);
-if ($inputfile && -x $inputfile) {
- print "$inputfile\n";
-} else {
- croak "Have you specified an input file?\n $!\n";
+sub file_tests {
+ use File::Basename;
+ my $path = shift;
+ if (-r $path) {
+ my ($filename, $dirs) = fileparse($path);
+ # --- maemo is a trademarked term
+ if ($filename =~ /maemo/) {
+ print "W: Any use of the word \"maemo\" is subject to trademark.\n";
+ }
+ # --- Open file into an array
+ open my $file, '<', $path or die "Cannot open file: $!\n";
+ my @lines = <$file>;
+ close $file;
+
+ my ($field, $maintainer) = map { split /: / } grep /Maintainer/, @lines;
+ chomp($maintainer);
+ if ($maintainer =~ /(ubuntu|debian)/i) {
+ print "W: Maintainer email address ($maintainer) might be the same as upstream.\n";
+ }
+ else {
+ print "N: $maintainer\n";
+ }
+ if (grep /BEGIN PGP SIGNED MESSAGE/, @lines) {
+ print "N: $filename is signed\n";
+ }
+ # print "\n$dirs\n$filename\n";
+ }
+ else {
+ croak "File not readable: $!\n";
+ }
}
+if ($inputfile) {
+ file_tests($inputfile);
+} else {
+ croak "No input file found: $!\n";
+}