#!/usr/bin/perl # XFdrake # Copyright (C) 1999 MandrakeSoft (pixel@mandrakesoft.com) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. use lib qw(/usr/lib/libDrakX); use standalone; #- warning, standalone must be loaded very first, for 'explanations' use interactive; use modules; use Xconfigurator; use Xconfig; use c; $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/; local $_ = join '', @ARGV; /-h/ and die "usage: XFdrake [--xf3] [--beginner] [--expert] [--auto] [--noauto] [--skiptest] [--testing]\n"; my $X = {}; $::force_xf3 = /-xf3/; $::beginner = /-beginner/; $::expert = /-expert/; $::auto = /-auto/; $::noauto = /-noauto/; $::testing = /-testing/; $X->{skiptest} = /-skiptest/; my $in = 'interactive'->vnew('su', 'X'); -r '/etc/modules.conf' and modules::mergein_conf('/etc/modules.conf'); my $f = "/usr/X11R6/lib/X11/rgb.txt"; #- this one is on all platform (instead of Cards ?) $in->do_pkgs->install('XFree86', 'XFree86-75dpi-fonts') if !-e $f; -e $f or die "install XFree86 first!\n"; `pidof xfs` > 0 or system("/etc/rc.d/init.d/xfs start") if !$X->{skiptest}; system("mount /proc 2>/dev/null"); # ensure /proc is mounted for pci probing begin: Xconfig::getinfo($X); Xconfig::getinfoFromXF86Config($X); #- take default from here at least. my $allowNVIDIA_rpms; { my (%list, %select); eval { require urpm; my $urpm = new urpm; $urpm->read_config(nocheck_access => 1); foreach (grep { !$_->{ignore} } @{$urpm->{media} || []}) { $urpm->parse_synthesis($_); } foreach (@{$urpm->{depslist} || []}) { $_->name =~ /NVIDIA/ and $list->{$_->name} = 1; } }; if ($list{NVIDIA_GLX}) { eval { my ($version, $release, $ext) = c::kernel_version() =~ /([^-]*)-([^-]*mdk)(\S*)/; $ext and $ext = "-$ext"; $list{"NVIDIA_kernel-$version-$release$ext"} or die "no NVIDIA kernel for current kernel"; $select{"NVIDIA_kernel-$version-$release$ext"} = 1; foreach (`rpm -qa kernel-2* kernel-smp-2* kernel-enterprise-2* kernel-secure-2* kernel kernel-smp kernel-entreprise kernel22 kernel22-smp kernel22-secure`) { ($ext, $version, $release) = /kernel[^-]*(-\D[^-]*)-([^-]*)-([^-]*mdk)?/; $release or ($version, $release) = $version =~ /(.*?)\.(\d+mdk)/; $list{"NVIDIA_kernel-$version-$release$ext"} and $select{"NVIDIA_kernel-$version-$release$ext"} = 1; } $allowNVIDIA_rpms = [ keys(%select), "NVIDIA_GLX" ]; } } if (!$allowNVIDIA_rpms) { $allowNVIDIA_rpms = system("modprobe NVdriver 2>/dev/null") == 0 && []; #- empty list but true. } } $::isEmbedded and kill USR2, $::CCPID; Xconfigurator::main($X, $in, $in->do_pkgs, { allowFB => $::expert, allowNVIDIA_rpms => $allowNVIDIA_rpms }); !$::isEmbedded and $in->exit(0); kill USR1, $::CCPID; goto begin;