summaryrefslogtreecommitdiffstats
path: root/move/make_live
blob: 4ad68b71342264a7a3879a7223783b2b00775523 (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/perl

use lib "../perl-install";
use common;
use pkgs;

my @langs = map { /^../; $& } split /\s/, (cat_('move.pm') =~ /ALLOWED_LANGS = qw\((.*)\)/)[0];

@ARGV <= 1 or die "usage: make_live [live_location=/tmp/live_tree]\n";

sub installPackages {
    rename "/etc/rpm/macros", "/etc/rpm/macros.";
    output_p("/etc/rpm/macros", "%_install_langs " . join(":", @langs) . "\n");

    mkdir_p("$::prefix/var/lib/rpm");
    mkdir_p("$::prefix/root/drakx");


    undef *install_any::setDefaultPackages;
    *install_any::setDefaultPackages = sub {};

    undef *install_any::getFile;
    *install_any::getFile = sub {
	my ($f, $o_method) = @_;
	log::l("getFile $f:$o_method");
	open(my $F, '/export/' . install_any::relGetFile($f)) or return;
	$F;
    };
    install_any::setPackages(my $o = $::o = { 
					     prefix => $::prefix, 
					     meta_class => 'desktop', 
					     default_packages => [
                                 qw(XFree86-server XFree86-xfs XFree86-FBDev),
				 qw(alsa-utils),
                                 qw(acpi acpid), #- so that removing acpi=ht will work
				 qw(mountloop),	#- crypted folders
				 qw(dnotify),	#- notification of /etc changes
				 qw(mandrake_doc-en),	#- doesn't get installed by DOCS :/
				 qw(zcip dhcp-client dhcpcd ppp kdenetwork-kppp rp-pppoe pptp-adsl speedtouch speedtouch_mgmt nfs-utils-clients samba-client tmdns wireless-tools adiusbadsl), #- network conf
                                 qw(cups cups-drivers foomatic-db gimpprint hpoj libnet-snmp mtools mtoolsfm nmap printer-filters printer-testpages printer-utils scli xojpanel xpp), #- printer stuff
                                 qw(perl-Term-Readline-Gnu),  #- allow debugging move
                                                                 ],
					    });

    my %compssUsersChoice = map { $_ => 1 } map { @{$_->{flags}} } values %{$o->{compssUsers}};
    $compssUsersChoice{$_} = 1 foreach 'SYSTEM', 'DVD', 'USB', 'SOUND', 'BURNER', 'UTF8', 'DOCS', 'TV', '3D', 'INSTALL';
    $compssUsersChoice{qq(LOCALES"$_")} = 1 foreach @langs;

    pkgs::setSelectedFromCompssList($o->{packages}, \%compssUsersChoice, 4, 0);

    my @toInstall = pkgs::packagesToInstall($o->{packages});
    local $ENV{DURING_INSTALL} = 1;
    $ENV{LD_LIBRARY_PATH} = "/lib:/usr/lib:/usr/X11R6/lib:/usr/lib/qt3/lib";
    pkgs::install($::prefix, 0, \@toInstall, $o->{packages});

    eval { fs::umount("$::prefix/proc") };

    unlink "/etc/rpm/macros";
    rename "/etc/rpm/macros.", "/etc/rpm/macros";
}

my $cwd = chomp_(`pwd`);
$::prefix = $ARGV[0] || '/tmp/live_tree';
print "Making live in $::prefix directory.\n";

{
    eval { fs::umount("$::prefix/proc") };
#    eval { rm_rf($::prefix) };
    output_p("$::prefix/etc/fstab", "none /proc proc defaults 0 0\n");
    installPackages();
    run_program::rooted($::prefix, 'ldconfig');
    touch("$::prefix/etc/menu/enable_simplified");
    run_program::rooted($::prefix, 'update-menus', '-n');
    run_program::rooted($::prefix, 'fc-cache');  #- generate cache in all directories mentioned in config file
    run_program::rooted($::prefix, 'kbuildsycoca', '--global');
    eval { rm_rf("$::prefix/dev") }; # we don't need it, we use devfs
    eval { rm_rf("$::prefix/lib/i686") }; # de-complexify, use the default on any arch

    unlink "$::prefix/usr/share/autostart/$_.desktop" foreach 'klipper', 'korgac', 'kalarmd.autostart';
}

update_gnomekderc("$::prefix/usr/share/config/kdesktoprc", ScreenSaver => (Lock => 'true'));

symlinkf('/var/lib/xkb', "$::prefix/etc/X11/xkb/compiled"); # don't want the relative path, prefering the absolute path

substInFile {
    #- /lib is ro, for the moment we don't save, we'll see later if we may want to save (using /var/dev-state for example)
    s|.*lib/dev-state.*||;
} "$::prefix/etc/devfsd.conf";

substInFile {
    #- don't use shadow passwords since pwconv overwrites /etc/shadow hence contents will be lost for usb key
    s|\s*shadow||;
} "$::prefix/etc/pam.d/system-auth";

substInFile {
    s|Mandrake Linux release (\S+) \(.*\)|Mandrake Move release $1 (Moyoto)|;
} "$::prefix/etc/mandrake-release";