-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathcompile-repo
63 lines (46 loc) · 1.3 KB
/
compile-repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env perl
# Author: Patrick Muff <muff.pa@gmail.com>
# Purpose: Compiles a Cydia repository
use Digest::MD5;
sub md5sum {
my $file = shift;
my $digest = "";
eval {
open(FILE, $file) or die "Can't find file $file\n";
my $ctx = Digest::MD5->new;
$ctx->addfile(*FILE);
$digest = $ctx->hexdigest;
close(FILE);
};
if ($@) {
print $@;
return "";
}
return $digest;
}
# scan the packages and write output to file Packages
system("dpkg-scanpackages deb / > Packages");
# bzip2 it to a new file
system("bzip2 -fks Packages");
# gzip it
system("gzip -f Packages");
# scan again because we zipped the original file
system("dpkg-scanpackages deb / > Packages");
# calculate the hashes and write to Release
system("cp Release-Template Release");
open(RLS, ">>Release");
@files = ("Packages", "Packages.gz", "Packages.bz2");
my $output = "";
foreach (@files) {
my $fname = $_;
my $md5 = md5sum($fname);
my $size = -s $fname;
$output = $output.$md5." ".$size." ".$fname."\n"." "; # 每行末尾换行符后追加一个空格
};
print RLS " ".$output; # md5值前面预留一个空格
close(RLS);
# remove Release.gpg
system("rm Release.gpg");
# generate Release.gpg
system("gpg -abs -o Release.gpg Release");
exit 0;