warn "PATCHING\n";
log::l("PATCHING\n");

use install_any;

undef *find_root_parts;
*find_root_parts = sub {
    my ($fstab, $prefix) = @_;
    map { 
	my $handle = any::inspect($_, $prefix);
	my $s = $handle && cat_("$handle->{dir}/etc/redhat-release");
	if ($s) {
	    chomp($s);
	    $s =~ s/\s+for\s+\S+//;
	    log::l("find_root_parts found $_->{device}: $s");
	    { release => $s, part => $_ };
	} else { () }
    } @$fstab;
};


use pkgs;
package pkgs;

my $old_compare_pkg = \&URPM::Package::compare_pkg;
undef *URPM::Package::compare_pkg;
*URPM::Package::compare_pkg = sub {
    my ($lpkg, $rpkg) = @_;
    my $c = ($lpkg->release =~ /mdk$/ ? 1 : 0) - ($rpkg->release =~ /mdk$/ ? 1 : 0);
    if ($c) {
	my $lpkg_ver = $lpkg->version . '-' . $lpkg->release;
	my $rpkg_ver = $rpkg->version . '-' . $rpkg->release;
	log::l($lpkg->name . ' ' . $rpkg->name . ': prefering ' . ($c == 1 ? "$lpkg_ver over $rpkg_ver" : "$rpkg_ver over $lpkg_ver"));
	return $c;
    }
    &$old_compare_pkg;
};

my $old_compare = \&URPM::Package::compare;
undef *URPM::Package::compare;
*URPM::Package::compare = sub {
    my ($lpkg, $rpkg_ver) = @_;
    my $c = ($lpkg->release =~ /mdk$/ ? 1 : 0) - ($rpkg_ver =~ /mdk$/ ? 1 : 0);
    if ($c) {
	my $lpkg_ver = $lpkg->version . '-' . $lpkg->release;
	log::l($lpkg->name . ' ' . ': prefering ' . ($c == 1 ? "$lpkg_ver over $rpkg_ver" : "$rpkg_ver over $lpkg_ver"));
	return $c;
    }
    &$old_compare;
};

use install2;
package install2;
my $old_choosePackages = \&choosePackages;
undef *choosePackages;
*choosePackages = sub {
    my @should_not_be_dirs = qw(/usr/X11R6/lib/X11/xkb /usr/share/locale/zh_TW/LC_TIME /usr/include/GL);
    my @should_be_dirs = qw(/etc/X11/xkb);
    foreach (@should_not_be_dirs) {
	my $f = "$::prefix$_";
	rm_rf($f) if !-l $f && -d $f;
    }
    foreach (@should_be_dirs) {
	my $f = "$::prefix$_";
	rm_rf($f) if -l $f || !-d $f;
    }
    unlink "$::prefix/etc/X11/XF86Config";
    unlink "$::prefix/etc/X11/XF86Config-4";

    &$old_choosePackages;
};

use fs;
package fs;

my $old = \&read_fstab;
undef *read_fstab;
*read_fstab = sub {
    my @l = &$old;

    my %label2device = map {
 	my $dev = devices::make($_->{device});
	if (my ($label) = `tune2fs -l $dev 2>/dev/null` =~ /volume name:\s*(\S+)/) {
	    log::l("device $_->{device} has label $label");
	    $label => $_->{device};
	} else {
	    ();
	}
    } fsedit::read_proc_partitions([]);

    foreach (@l) {
	my ($label) = ($_->{device_LABEL} || $_->{device}) =~ /^LABEL=(.*)/ or next;
	if ($label2device{$label}) {
	    $_->{device} = $label2device{$label};
	} else {
	    log::l("can't find label $label");
	}
    }

    @l;
};

use any;
package any;

undef *fix_broken_alternatives;
*fix_broken_alternatives = {
    #- fix bad update-alternatives that may occurs after upgrade (and sometimes for install too).
    -d "$::prefix/etc/alternatives" or return;

    foreach (all("$::prefix/etc/alternatives")) {
	log::l("setting alternative $_");
	run_program::rooted($::prefix, 'update-alternatives', '--auto', $_);
    }
};
pc</option>
<option value='topic/ia64-8_1'>topic/ia64-8_1</option>
<option value='topic/mandrakesoft'>topic/mandrakesoft</option>
<option value='topic/mlcd4'>topic/mlcd4</option>
<option value='topic/ppp'>topic/ppp</option>
<option value='topic/rp-pppoe'>topic/rp-pppoe</option>
<option value='topic/switching_to_dnf'>topic/switching_to_dnf</option>
<option value='topic/switching_to_urpmi'>topic/switching_to_urpmi</option>
<option value='topic/unlabeled-1.1.1'>topic/unlabeled-1.1.1</option>
<option value='topic/v_webmin_0_87'>topic/v_webmin_0_87</option>
<option value='topic/x86_64-branch'>topic/x86_64-branch</option>
<option value='user/animtim/designWork'>user/animtim/designWork</option>
<option value='user/colin/rescue-systemd'>user/colin/rescue-systemd</option>
<option value='user/ennael/mga6'>user/ennael/mga6</option>
<option value='user/erwan/bug-13680'>user/erwan/bug-13680</option>
<option value='user/jibz/aarch64'>user/jibz/aarch64</option>
<option value='user/martinw/mga6'>user/martinw/mga6</option>
<option value='user/pterjan/arm64'>user/pterjan/arm64</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Mageia Installer and base platform for many utilities</td><td class='sub right'>Thierry Vignaud [tv]</td></tr></table>
<table class='tabs'><tr><td>
<a href='/software/drakx/?h=18.7'>summary</a><a href='/software/drakx/refs/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>refs</a><a href='/software/drakx/log/?h=18.7'>log</a><a href='/software/drakx/tree/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>tree</a><a class='active' href='/software/drakx/commit/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>commit</a><a href='/software/drakx/diff/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>diff</a><a href='/software/drakx/stats/?h=18.7'>stats</a></td><td class='form'><form class='right' method='get' action='/software/drakx/log/'>
<input type='hidden' name='h' value='18.7'/><input type='hidden' name='id' value='1e3717adf0e46f1b5c43f503ca14d52f28b9092a'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='h' value='18.7'/><input type='hidden' name='id' value='1e3717adf0e46f1b5c43f503ca14d52f28b9092a'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>Thierry Vignaud &lt;thierry.vignaud@gmail.com&gt;</td><td class='right'>2013-09-30 21:21:41 +0200</td></tr>
<tr><th>committer</th><td>Thierry Vignaud &lt;thierry.vignaud@gmail.com&gt;</td><td class='right'>2013-09-30 21:21:41 +0200</td></tr>
<tr><th>commit</th><td colspan='2' class='sha1'><a href='/software/drakx/commit/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>1e3717adf0e46f1b5c43f503ca14d52f28b9092a</a> (<a href='/software/drakx/patch/?id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='sha1'><a href='/software/drakx/tree/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>4ed24a2cdeae035f9d6fea55fbfe3163bd180999</a></td></tr>
<tr><th>parent</th><td colspan='2' class='sha1'><a href='/software/drakx/commit/?h=18.7&amp;id=26b7b1d5fb51b346497c921adba1e0b8b0da3f1e'>26b7b1d5fb51b346497c921adba1e0b8b0da3f1e</a> (<a href='/software/drakx/diff/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a&amp;id2=26b7b1d5fb51b346497c921adba1e0b8b0da3f1e'>diff</a>)</td></tr><tr><th>download</th><td colspan='2' class='sha1'><a href='/software/drakx/snapshot/drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar'>drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar</a><br/><a href='/software/drakx/snapshot/drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar.gz'>drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar.gz</a><br/><a href='/software/drakx/snapshot/drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar.bz2'>drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar.bz2</a><br/><a href='/software/drakx/snapshot/drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar.xz'>drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.tar.xz</a><br/><a href='/software/drakx/snapshot/drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.zip'>drakx-1e3717adf0e46f1b5c43f503ca14d52f28b9092a.zip</a><br/></td></tr></table>
<div class='commit-subject'>sync with code</div><div class='commit-msg'></div><div class='diffstat-header'><a href='/software/drakx/diff/?h=18.7&amp;id=1e3717adf0e46f1b5c43f503ca14d52f28b9092a'>Diffstat</a></div><table summary='diffstat' class='diffstat'>