Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openwrt/buildscripts.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'shared/make-index.pl')
-rwxr-xr-xshared/make-index.pl76
1 files changed, 76 insertions, 0 deletions
diff --git a/shared/make-index.pl b/shared/make-index.pl
new file mode 100755
index 0000000..a72b4d7
--- /dev/null
+++ b/shared/make-index.pl
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $dir = $ARGV[0];
+
+die "Usage: $0 <package directory>\n" unless -d $dir;
+
+
+sub pkg_metadata
+{
+ my $file = shift || return;
+
+ return undef unless -f $file;
+
+ my $size = -s $file;
+ my $md5sum;
+ my $sha256sum;
+
+ if (open MD5, "md5sum $file |")
+ {
+ if (defined(my $line = readline MD5))
+ {
+ ($md5sum) = $line =~ /^([0-9a-fA-F]{32})/;
+ }
+
+ close MD5;
+ }
+
+ if (open SHA256, "openssl dgst -sha256 $file |")
+ {
+ if (defined(my $line = readline SHA256))
+ {
+ ($sha256sum) = $line =~ /([0-9a-fA-f]{64})$/;
+ }
+
+ close SHA256;
+ }
+
+ return undef unless $md5sum && $sha256sum;
+
+ my $meta = '';
+
+ if (open TAR, "tar -xzOf $file ./control.tar.gz | tar -xzOf - ./control |")
+ {
+ while (defined(my $line = readline TAR))
+ {
+ if ($line =~ /^Description:/)
+ {
+ $meta .= sprintf "Size: %d\n", $size;
+ $meta .= sprintf "MD5Sum: %s\n", $md5sum;
+ $meta .= sprintf "SHA256sum: %s\n", $sha256sum;
+ }
+
+ $meta .= $line;
+ }
+
+ $meta .= "\n";
+
+ close TAR;
+ }
+
+ return $meta;
+}
+
+if (opendir D, $dir)
+{
+ while (defined(my $e = readdir D))
+ {
+ next unless -f "$dir/$e" && $e =~ m{\.ipk$};
+ print pkg_metadata("$dir/$e");
+ }
+
+ closedir D;
+}