17 if ($#ARGV == 1 && $ARGV[0] eq "--raw") {
18 exit (optify_raw ($ARGV[1]));
19 } elsif ($#ARGV >= 0) {
26 $dir = "debian/" . $pkg;
29 optify_dir ($dir, $pkg);
31 foreach (list_packages ()) {
43 if ($debug || $verbose) {
52 find(sub { $size += -s if -f $_ }, $dir);
61 my $opt_entry = "opt/maemo/" . $entry;
62 vrb "$entry -> $opt_entry\n";
64 # mkpath seems to fail when the directory already exists, weird.
65 my $dir = dirname ($opt_entry);
67 mkpath ($dir) || die $!;
69 rename ($entry, $opt_entry) || die $!;
70 symlink ("/" . $opt_entry, $entry) || die $!;
77 # Files in /usr are always ok, but others are not.
78 return ! $entry =~ /^\/usr\//;
81 if (basename ($entry) eq $package_name) {
82 # Directories are OK if they are named after the package.
83 # But be extra extra careful here and check some well-known names
84 # that we positively never ever want to optify.
85 return $package_name eq "bin"
86 || $package_name eq "sbin"
87 || $package_name eq "lib"
88 || $package_name eq "libexec"
89 || $package_name eq "var"
90 || $package_name eq "share"
91 || $package_name eq "X11R6"
92 || $package_name eq "games"
93 || $package_name eq "local"
94 || $package_name eq "src"
95 || $package_name eq "etc"
96 || $package_name eq "boot"
97 || $package_name eq "dev"
98 || $package_name eq "home"
99 || $package_name eq "media"
100 || $package_name eq "mnt"
101 || $package_name eq "opt"
102 || $package_name eq "proc"
103 || $package_name eq "root"
104 || $package_name eq "srv"
105 || $package_name eq "sys"
106 || $package_name eq "syspart"
107 || $package_name eq "tmp";
118 my $size = du ($entry);
122 } elsif ($entry =~ /^.\/opt\//) {
123 dbg "in /opt, nope\n";
124 } elsif ($entry =~ /^.\/DEBIAN\//) {
125 dbg "in /DEBIAN, nope\n";
126 } elsif ($size >= 2048) {
127 if (!blacklisted ($entry)) {
128 dbg "yes, saved $size bytes\n";
130 $total_saved += $size;
131 optify_entry ($entry);
132 } elsif (-d $entry) {
133 dbg "not ours, recursing\n";
135 opendir(DIR, $entry);
136 while ($_ = readdir (DIR)) {
137 next if ($_ eq "." || $_ eq "..");
138 consider_entry ($entry . "/" . $_);
143 dbg "only $size bytes, nope\n";
148 my ($dir, $pkg) = @_;
150 $package_name = $pkg;
154 dbg "package: $package_name\n";
156 my $olddir = getcwd();
157 chdir ($dir) || die "Cannot chdir to $dir\n";
160 print "$pkg: /opt exists already, not optifying further.\n";
164 consider_entry (".");
166 my $total_kb_saved = int ($total_saved / 1024);
167 print "$pkg: optified $total_count entries, saving about $total_kb_saved kB.\n";
169 chdir ($olddir) || die "Can't chdir back to $olddir";
177 chdir ($dir) || die "Cannot chdir to $dir\n";
179 my $pkg = basename (getcwd ());
182 optify_dir (".", $pkg);
186 # XXX - Use some debhelper module for this maybe.
189 open IN, "<", "debian/control" or die "Can't read debian/control";
191 if (/^Package: +(.*)\n/) {
192 push (@packages, $1);
202 optify_dir ("debian/" . $pkg, $pkg);