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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2395 - (hide annotations) (download)
Mon Dec 12 19:54:44 2011 UTC (12 years, 4 months ago) by tv
File size: 3647 byte(s)
(pkgs_for_Driver2) simplify
1 dmorgan 391 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 tv 2395 my ($pkg, $base_name) = ($Driver2 =~ /^fglrx|^nvidia/) ?
53 dmorgan 391 ("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