Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 499ac55ad3d8cdb86b9eac891756c0b9 > files > 37

draklive-config-One-0.1-0.20080403.1.1mdv2008.1.noarch.rpm

#!/usr/bin/perl

use MDK::Common;
use Getopt::Long;
use lib qw(/usr/lib/libDrakX);
use run_program;

# alleged i18n packages for french (useful to spot missing requires on locales-fr)
# rpm -qa \*-fr\* --qf '%{name}\n' | perl -n -e '/^(.*)-fr(_.+)?$/ and print "$1\n"' | sort -u
# my @packages = (
#  aspell
#  kde-i18n
#  locales
#  mozilla-firefox
#  myspell
#  myspell-hyph
#  openoffice.org-l10n
# ); 

my ($prefix, $ooo_version);
GetOptions(
    "prefix=s" => \$prefix,
    "ooo=s" => \$ooo_version,
);

my @misowned_dirs = qw(
/usr/lib/ooo-${ooo_version}
/usr/lib/ooo-${ooo_version}/help
/usr/share/apps
/usr/share/apps/khangman
/usr/share/apps/khangman/data
/usr/share/apps/ktuberling
/usr/share/apps/ktuberling/sounds
/usr/share/doc/HTML
/usr/share/locale
);

my @dirs = qw(
/usr/share/man
/usr/share/doc/HTML
);

my @files = qw(
/usr/lib/ooo-${ooo_version}/share/dict/ooo/$L.*
/usr/lib/ooo-${ooo_version}/share/dict/ooo/$L_comb.*
/usr/lib/ooo-${ooo_version}/share/dict/ooo/hyph_$L.*
/usr/lib/ooo-${ooo_version}/share/dict/ooo/th_$L.*
/usr/lib/ooo-${ooo_version}/share/dict/ooo/th_$L_v2.*
);

my @locale_packages = run_program::rooted_get_stdout($prefix, 'rpm', '-qa', 'locales-*', '--qf', '%{name}\n');
my @locales = sort(map { s/^locales-//; chomp; $_ } @locale_packages);

foreach my $l (@locales) {
    my @list;
    my $locale_pkg = "locales-$l";
    #my $l_pattern = qr/^$l([_.@].+)?$/;
    #my @l_packages = map { ("$_-$l", "$_-${l}_*") } @packages;
    my @l_packages = chomp_(run_program::rooted_get_stdout($prefix, 'rpm', '-q', '--qf', '%{name}\n', '--whatrequires', $locale_pkg));
    unshift @l_packages, $locale_pkg;
    my @list = chomp_(run_program::rooted_get_stdout($prefix, 'rpm', '-ql', @l_packages));
    my @all_locales = map { m!^/usr/share/locale/([^/]+)$! } chomp_(run_program::rooted_get_stdout($prefix, 'rpm', '-ql', $locale_pkg));
    # skip misowned directories such as /usr/share/locale
    @list = grep { ! -d $prefix . $_ || member(basename($_), @all_locales) } @list;
    #@list = difference2(\@list, \@misowned_dirs);
    foreach my $l2 (@all_locales) {
	foreach my $d (@dirs) {
	    my $l_d = $d . '/' . $l2;
	    push @list, $l_d if -e $prefix . $l_d;
	}
	foreach my $f (@files) {
	    my $p = $f;
	    $p =~ s/\$L/$l2/;
	    push @list, map { s/^$prefix//; $_ } grep { -e $_ } glob($prefix . $p);
	}
    }
    output_p($prefix . "/root/drakx/i18n-$l.lst", map { "$_\n" } sort(@list));
}