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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#!/usr/bin/perl
# $Id$
use strict;
use warnings;
use File::Find;
use Getopt::Long;
use Pod::Usage;
GetOptions(
'all-name' => \my $allname,
'with-gnome' => \my $withgnome,
'with-kde' => \my $withkde,
'with-html' => \my $withhtml,
'without-mo' => \my $withoutmo,
'with-man' => \my $withman,
) or pod2usage();
my ($buildroot, @searchname) = @ARGV;
my ($pkgname) = @searchname or die "Main name to find missing\n";
$buildroot or die "No buildroot given\n";
my %finallist; # filename => attr, easy way to perform uniq
File::Find::find(
sub {
my $file = substr($File::Find::name, length($buildroot));
my ($pkg, $lang, $parent);
if ($file =~ m:^((.*/share/locale)/([^/_@]+)[^/]*).*/([^/]+)\.mo:) {
if ($withoutmo) {
return;
}
($pkg, $lang, $parent) = ($4, $3, $2);
} elsif ($file =~ m:^(.*/gnome/help/([^/_@]+))[^/]*/([^/]+)$:) {
if (!$withgnome) {
return;
}
($pkg, $lang, $parent) = ($2, $3, $1);
} elsif ($file =~ m:^(.*/doc/kde/HTML)/([^/_@]+)[^/]*/([^/]+)$:) {
if (!$withkde) {
return;
}
($pkg, $lang, $parent) = ($2, $3, $1);
} elsif ($file =~ m:^(.*/doc/HTML)/([^/_@]+)[^/]*/([^/]+)$:) {
if (!$withhtml) {
return;
}
($pkg, $lang, $parent) = ($3, $2, $1);
} elsif ($file =~ m:^(/usr/share/man)/([^/_@\.]+)[^/]*/man[^/]+/([^/.]+)\.\d\.[^/]+$:) {
if (!$withman) {
return;
}
($pkg, $lang, $parent) = ($3, $2, $1);
} else {
return;
}
if (!((grep { $_ eq $pkg } @searchname) || $allname)) {
return;
}
my $rpmlang = $lang eq 'C' ? "" : "%lang($lang)";
parent_to_own($parent, $file, $rpmlang);
$finallist{$file} = "$rpmlang ";
},
$buildroot || '/'
);
open(my $hlang, ">", "$pkgname.lang") or die "canno't open $pkgname.lang\n";
foreach (sort keys %finallist) {
print $hlang "$finallist{$_}$_\n";
}
close($hlang);
exit(0);
sub parent_to_own {
my ($parent, $file, $lang) = @_;
my @subdir = grep { $_ } split('/', substr($file, length($parent)));
pop(@subdir);
#$finallist{$parent} = "$lang %dir";
while (my $part = shift(@subdir)) {
$parent .= "/$part";
$finallist{$parent} = "$lang %dir ";
}
}
|