summaryrefslogtreecommitdiffstats
path: root/perl-install/live_install2
blob: b5a2ea877ea390f2533e0a5e5da283836c7c9b04 (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
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
#!/usr/bin/perl

my $dir = `pwd`;
chomp $dir;
$dir .= "/../../..";

#- allow devfsd to enable a faster upgrade.
system "modprobe loop";
my $devfsd_pid = `/sbin/pidof devfsd`;
$devfsd_pid > 0 and kill 15, $devfsd_pid;

#- perl version of the install, we use directly the version we found,
#- this means there SHOULD BE no module compiled for an older version of perl
#- which will be used by DrakX.
my ($version, $arch) = (glob "$dir/usr/lib/perl5/*/*/CORE/libperl.so")[0] =~ m|$dir/usr/lib/perl5/([^/]*)/([^/]*)/CORE/libperl.so|;

#- keep it mind the ELF loader to use.
$ENV{LD_LOADER} = "$dir/lib/ld-linux.so.2";

$ENV{LOCPATH}="$dir/usr/share/locale";
$ENV{GCONV_PATH}="$dir/usr/lib/gconv";
$ENV{PERL5LIB} = join ":", map { "$dir/usr/lib/perl5/$_" } ("$version/$arch",
							    "$version",
							    "site_perl/$version/$arch",
							    "site_perl/$version",
							    "site_perl",
							    "vendor_perl/$version/$arch",
							    "vendor_perl/$version",
							    "vendor_perl",
							   );
$ENV{LD_LIBRARY_PATH} = "$dir/usr/bin:$dir/bin:$dir/sbin:$dir/usr/sbin:$dir/usr/X11R6/bin:$dir/lib:$dir/usr/lib:$dir/usr/lib/perl5/$version/$arch/CORE";
$ENV{PATH} = join(":", map { "$dir/$_" } split ":", "/usr/bin:/bin:/sbin:/usr/sbin:/usr/X11R6/bin") . ":$ENV{PATH}";
$ENV{SHARE_PATH} = "$dir/usr/share";
$ENV{RPMRC_FILE} = "$dir/usr/lib/rpm/rpmrc";
$ENV{GTK_DATA_PREFIX} = "$dir/usr";
$ENV{GTK_EXE_PREFIX} = "$dir/usr";
$ENV{GDK_IMLIB_PATH} = "$dir/usr/lib";

system $ENV{LD_LOADER}, "../perl", "-i", "-pe", "s,^(.*macrofiles[^/]*)(.*),\$1$dir/usr/lib/rpm/macros:\$2,", $ENV{RPMRC_FILE};
system $ENV{LD_LOADER}, "../perl", "./install2", "--live", @ARGV;

#- at this point, unwind above else they will not run correctly (wrong ld-linux.so.2)
delete $ENV{GTK_EXE_PREFIX};
delete $ENV{RPMRC_FILE};
delete $ENV{LOCPATH};
delete $ENV{SHARE_PATH};
delete $ENV{PATH};
delete $ENV{LD_LIBRARY_PATH};
delete $ENV{PERL5LIB};
delete $ENV{LD_LOADER};

$ENV{DISPLAY} and system "xset", "-fp", "/tmp/drakx/mdkinst/usr/X11R6/lib/X11/fonts/";
foreach (qw(misc PEX Speedo Type1 mdk 75dpi 100dpi cyrillic)) {
    -d "/usr/X11R6/lib/X11/fonts/$_" or next;
    -e "/usr/X11R6/lib/X11/fonts/$_/fonts.dir" and next;
    chdir "/usr/X11R6/lib/X11/fonts/$_";
    system "mkfontdir";
}
$ENV{DISPLAY} and system "xset", "fp", "rehash";

system "/bin/rm", "-rf", "/tmp/drakx";
system "/bin/rm", "-rf", "/tmp/rhimage";

#- restore devfsd if it was running.
$devfsd_pid > 0 and system "/sbin/devfsd /dev";

exec "/bin/sync";