summaryrefslogtreecommitdiffstats
path: root/perl-install/patch/patch-nforce.pl
blob: 35587ec750631d3e3898b7c29c95f5a8ecebd250 (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
use install_steps;
use common;

package install_steps;

my $old_afterInstallPackages = \&afterInstallPackages;
undef *afterInstallPackages;
*afterInstallPackages = sub {
    &$old_afterInstallPackages;

    my ($o) = @_;

    # workaround nforce stuff.
    #
    # modules.pm uses /lib/modules/VERSION/modules*map to know which
    # sound drivers to use : this'll cause i810_audio to override
    # nvaudio since it exports the nvforce audio pci ids
    #
    # the right solution is to :
    #
    # - remove the nforce ids from i810_audio until the oss driver got
    #   fixes implemented in alsa driver for nforce (snd-intel8x0.o)
    #
    # - ask nvidia to declare which pci ids they use and export them
    #   for depmod :
    #   MODULE_DEVICE_TABLE (pci, <name_of_the struct pci_device_id variable>);

    #- try to workaround nforce stuff.
    foreach (keys %{$o->{packages}{provides}{kernel}}) {
	my $p = $o->{packages}{depslist}[$_];
	my ($ext, $version, $release) = $p->name =~ /^kernel-([^\d\-]*)-?([^\-]*)\.([^\-\.]*)$/ or next;
	-s "$o->{prefix}/lib/modules/$version-$release$ext/kernel/drivers/sound/nvaudio.o.gz" and
	  run_program::rooted($o->{prefix}, "cp -f /lib/modules/$version-$release$ext/kernel/drivers/sound/nvaudio.o.gz /lib/modules/$version-$release$ext/kernel/drivers/sound/i810_audio.o.gz");
    }
};