/[soft]/drakx-kbd-mouse-x11/trunk/lib/Xconfig/proprietary.pm
ViewVC logotype

Contents of /drakx-kbd-mouse-x11/trunk/lib/Xconfig/proprietary.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 391 - (show annotations) (download)
Thu Feb 3 13:54:58 2011 UTC (13 years, 2 months ago) by dmorgan
File size: 3664 byte(s)
Import cleaned drakx-kbd-mouse-x11
1 package Xconfig::proprietary; # $Id: proprietary.pm 269741 2010-06-02 09:25:33Z cfergeau $
2
3 use diagnostics;
4 use strict;
5
6 use common;
7 use Xconfig::card;
8
9 my $lib = arch() =~ /x86_64/ ? "lib64" : "lib";
10
11 sub install_matrox_hal {
12 my ($prefix) = @_;
13 my $tmpdir = "$prefix/root/tmp";
14
15 my $tar = "mgadrivers-2.0.tgz";
16 my $dir_in_tar = "mgadrivers";
17 my $dest_dir = "$prefix/usr/lib/xorg/modules/drivers";
18
19 #- already installed
20 return if -e "$dest_dir/mga_hal_drv.o" || $::testing;
21
22 system("wget -O $tmpdir/$tar ftp://ftp.matrox.com/pub/mga/archive/linux/2002/$tar") if !-e "$tmpdir/$tar";
23 system("tar xzC $tmpdir -f $tmpdir/$tar");
24
25 my $src_dir = "$tmpdir/$dir_in_tar/xfree86/4.2.1/drivers";
26 foreach (all($src_dir)) {
27 my $src = "$src_dir/$_";
28 my $dest = "$dest_dir/$_";
29 rename $dest, "$dest.non_hal";
30 cp_af($src, $dest_dir);
31 }
32 rm_rf("$tmpdir/$tar");
33 rm_rf("$tmpdir/$dir_in_tar");
34 }
35
36 sub handle_DRIVER2_NO_SSE {
37 my ($card) = @_;
38
39 $card->{DRIVER2_NO_SSE} or return;
40
41 require detect_devices;
42 if (!detect_devices::has_cpu_flag('sse')) {
43 log::l("$card->{Driver2} need a processor featuring SSE, switching back to $card->{DRIVER2_NO_SSE}");
44 $card->{Driver2} = $card->{DRIVER2_NO_SSE};
45 }
46 }
47
48
49 sub pkgs_for_Driver2 {
50 my ($Driver2, $do_pkgs) = @_;
51
52 my ($pkg, $base_name) = ($Driver2 =~ /^fglrx/ || $Driver2 =~ /^nvidia/) ?
53 ("x11-driver-video-$Driver2", $Driver2) : () or return;
54
55 $do_pkgs->is_installed($pkg) || $do_pkgs->is_available($pkg) or
56 log::l("proprietary package $pkg not available"), return;
57
58 my $module_pkgs = $do_pkgs->check_kernel_module_packages($base_name) or
59 log::l("$pkg available, but no kernel module package (for installed kernels, and no dkms)"), return;
60
61 ($pkg, @$module_pkgs);
62 }
63
64 sub may_use_Driver2 {
65 my ($card) = @_;
66
67 my $modules_dir = Xconfig::card::modules_dir();
68 #- make sure everything is correct at this point, packages have really been installed
69 #- and driver and GLX extension is present.
70
71 my $check_drv = sub {
72 my ($drv, $o_subdir) = @_;
73 my @l = (if_($o_subdir, "$modules_dir/drivers/$o_subdir/$drv.so",
74 "/usr/$lib/$o_subdir/xorg/$drv.so"),
75 "$modules_dir/drivers/$drv.so",
76 "$modules_dir/drivers/$drv.o");
77 my $has = find { -e "$::prefix$_" } @l;
78 $has or log::l("proprietary $drv driver missing (we searched for: @l)");
79 $has;
80 };
81
82 my $card2 = {
83 %$card,
84 $card->{Driver2} =~ /^nvidia(.*)/ ?
85 (Driver => 'nvidia', DriverVersion => $1) :
86 $card->{Driver2} =~ /^fglrx(.*)/ ?
87 (Driver => 'fglrx', DriverVersion => $1) :
88 (Driver => $card->{Driver2}),
89 };
90
91 if ($card2->{Driver} eq 'nvidia') {
92 $check_drv->('nvidia_drv', "nvidia$card2->{DriverVersion}") or return;
93
94 my $libglx_path = "/usr/$lib/nvidia$card2->{DriverVersion}/xorg";
95 -e "$::prefix$libglx_path/libglx.so" or log::l("special NVIDIA libglx missing"), return;
96
97 log::explanations("Using specific NVIDIA driver and GLX extensions");
98 $card2->{DRI_GLX_SPECIAL} = 1;
99 $card2->{Options}{IgnoreEDID} = 1 if ($card2->{DriverVersion} eq "71xx");
100 $card2->{Options}{UseEDID} = 0 if ($card2->{DriverVersion} eq "96xx");
101 $card2;
102 } elsif ($card2->{Driver} eq 'fglrx') {
103 $check_drv->('fglrx_drv', "fglrx$card2->{DriverVersion}") or return;
104 -e "$::prefix/usr/$lib/fglrx$card2->{DriverVersion}/dri/fglrx_dri.so" ||
105 -e "$::prefix$modules_dir/dri/fglrx_dri.so" ||
106 -e "$::prefix/usr/$lib/dri/fglrx_dri.so" or
107 log::l("proprietary fglrx_dri.so missing"), return;
108
109 log::explanations("Using specific ATI fglrx and DRI drivers");
110 $card2->{DRI_GLX} = 1;
111 $card2;
112 } else {
113 undef;
114 }
115 }
116
117 1;
118

  ViewVC Help
Powered by ViewVC 1.1.30