summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/display_release_notes.pl
blob: 21ac5bcdcd233cf8a94148750f32d6d40db5d23a (plain)
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
#!/usr/bin/perl

# DrakBoot
# Copyright (C) 2009 Mandriva
# Thierry Vignaud
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
use lib qw(/usr/lib/libDrakX);
use interactive;
use any;
use MDK::Common;
use lang;

my $in = 'interactive'->vnew('su');
# so that we popup above drakx:
any::set_wm_hints_if_needed($in);

# Fake enough $o for retrieving the proper translation:
$::o = $in;
$::o->{locale}{lang} = $ENV{LC_ALL};
# must have a value so that we look at locale_special/ :
$::prefix = '/';
lang::set($::o->{locale});

# not very safe but we run in a restricted environment anyway:
my $release_notes = cat_utf8('/tmp/release_notes.html');
any::display_release_notes($in, $release_notes);
gt; 'readline', 'libstdc++-libc6.1-2.so' => 'libstdc++', 'libstdc++.so' => 'libstdc++-compat', 'libutil.so' => 'glibc', 'libz.so' => 'zlib', 'smtpdaemon' => 'postfix', ); sub gendepslist_crypto { my ($dir) = @_; my %depslist; #- get information about each rpm. local *DIR; opendir DIR, $dir or die "cannot open directory: $!\n"; while ($_ = readdir DIR) { my ($key) = /(.*)\..*\.rpm$/ or next; my ($name) = /(.*)-[^-]*-[^-]*-/; my $size = `rpm -qp --queryformat="%{SIZE}" $dir/$_`; my @filelist = split "\n", `rpm -qpl $dir/$_`; my @requires = split "\n", `rpm -qpR $dir/$_`; $depslist{$key} = { key => $key, size => $size, filelist => \@filelist, requires => \@requires, deps => [], }; foreach (@filelist) { $resolver{$_} = $name; m|.*/([^/]*)$| and $resolver{$1} = $name; } } close DIR; #- resolve the dependancies. foreach my $pkg (values %depslist) { foreach (@{$pkg->{requires}}) { $resolver{$_} and push(@{$pkg->{deps}}, $resolver{$_}), next; m|^([^\s\(]*)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next; m|^.*/([^/\s\(]*)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next; m|^([^\s\(]*\.so)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next; m|^.*/([^\s\(]*\.so)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next; m|^([\w-]*)(?:\s+.*)$| and push(@{$pkg->{deps}}, $1); #- last and default to package name. } } #- build depslist-crypto file. local *F; open F, ">$dir/depslist-crypto" or die "cannot open depslist-crypto file for writing: $!\n"; foreach (values %depslist) { my %deps; @deps{@{$_->{deps}}} = (); print F "$_->{key} $_->{size} ", join(" ", keys %deps), "\n"; } close F; } sub main { my ($dir) = @_; -d $dir or die "usage: gencryptofiles <crypto_dir>\n"; -x "/usr/bin/genhdlist_cz2" or die "I need rpmtools to work (ie /usr/bin/genhdlist_cz2)\n"; print `genhdlist_cz2 -o $dir/hdlist-crypto.cz2 $dir`; gendepslist_crypto($dir); } main(@ARGV);