summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/ChangeLog10
-rw-r--r--perl-install/Xconfigurator.pm40
-rw-r--r--perl-install/install_steps.pm19
-rw-r--r--perl-install/install_steps_interactive.pm4
-rw-r--r--perl-install/network.pm2
-rw-r--r--perl-install/printer.pm7
-rw-r--r--perl-install/printerdrake.pm2
-rwxr-xr-xperl-install/standalone/printerdrake9
8 files changed, 57 insertions, 36 deletions
diff --git a/perl-install/ChangeLog b/perl-install/ChangeLog
index 2cd256f53..974ed80da 100644
--- a/perl-install/ChangeLog
+++ b/perl-install/ChangeLog
@@ -1,3 +1,13 @@
+2000-09-01 François Pons <fpons@mandrakesoft.com>
+
+ * Xconfigurator.pm: fixes to configure XF86Config-4 when XFree-3.3
+ is installed, make 16bits by default on 3D hardware acceleration,
+ fixed selection of hardware for hardware acceleration.
+ * install_steps.pm: add cups for printer configuration, used for
+ auto_install. added new function to add packages only if requires
+ are already satisfied.
+ * standalone/printerdrake: updated.
+
2000-08-31 dam's <damien@mandrakesoft.com>
* moved many things to network.pm and any.pm
diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm
index 30c8cdedf..ebabc5830 100644
--- a/perl-install/Xconfigurator.pm
+++ b/perl-install/Xconfigurator.pm
@@ -183,20 +183,21 @@ sub cardConfiguration(;$$$) {
add2hash($card, { vendor => "Unknown", board => "Unknown" });
#- 3D acceleration configuration for XFree 3.3 using Utah-GLX.
- $card->{Utah_glx} = ($card->{identifier} =~ /MGA G[24]00/ ||
+ $card->{Utah_glx} = ($card->{identifier} =~ /MGA G[24]00/ || #- 8bpp does not work.
$card->{identifier} =~ /3D Rage Pro AGP/ || #- by default only such card are supported, with AGP ?
- $card->{type} =~ /RIVA TNT/ ||
+ $card->{type} =~ /RIVA TNT/ || $card->{type} =~ /RIVA128/ || $card->{type} =~ /GeForce 256/ ||
#- $card->{type} =~ /SiS / || #- EXPERIMENTAL
- #- $card->{type} =~ /S3 ViRGE/ || #- EXPERIMENTAL
+ #- $card->{type} =~ /S3 ViRGE/ || #- EXPERIMENTAL, 15bits only (!).
+ #- $card->{type} =~ /S3 Savage3D/ || #- EXPERIMENTAL, use no_pixmap_cache, 16bit only.
$card->{type} =~ /Intel 810/);
#- 3D acceleration configuration for XFree 4.0 using DRI.
- $card->{DRI_glx} = ($card->{type} =~ /Voodoo3 / || $card->{type} =~ /Voodoo Banshee / ||
- $card->{identified} =~ /MGA G[24]00/ ||
- $card->{type} =~ /Intel 810/ ||
- $card->{type} =~ /ATI Rage 128/);
+ $card->{DRI_glx} = ($card->{identifier} =~ /Voodoo [35]/ || #- 16bit only #- NOT YET $card->{identifier} =~ /Voodoo Banshee/ ||
+ $card->{identifier} =~ /MGA G[24]00/ || #- prefer 16bit (24bit not well tested according to DRI)
+ $card->{type} =~ /Intel 810/ || #- 16bit
+ $card->{type} =~ /ATI Rage 128/); #- 16 and 32 bits, prefer 16bit as no DMA.
#- check to use XFree 4.0 or XFree 3.3.
- !$::force_xf3 && $card->{driver} && !$card->{flags}{unsupported} or $card->{driver} = ''; #- disable XFree 4.0
+ $card->{use_xf4} = !$::force_xf3 && $card->{driver} && !$card->{flags}{unsupported};
#- ask the expert user if he want 3D acceleration.
if ($::expert && ($card->{Utah_glx} || $card->{DRI_glx})) {
@@ -206,19 +207,19 @@ sub cardConfiguration(;$$$) {
#- try to figure if 3D acceleration is supported
#- by XFree 3.3 but not XFree 4.0 then ask user to keep XFree 3.3 ?
- if ($card->{driver} && $card->{Utah_glx} && !$card->{DRI_glx}) {
+ if ($card->{use_xf4} && $card->{Utah_glx} && !$card->{DRI_glx}) {
$::beginner || $in->ask_yesorno('',
_("Your card can have 3D acceleration but only with XFree 3.3.
-Do You want to use XFree 3.3 instead of XFree 4.0?"), 1) and $card->{driver} = '';
+Do You want to use XFree 3.3 instead of XFree 4.0?"), 1) and $card->{use_xf4} = '';
}
- $card->{prog} = "/usr/X11R6/bin/" . ($card->{driver} ? 'XFree86' : $card->{server} =~ /Sun (.*)/x ?
+ $card->{prog} = "/usr/X11R6/bin/" . ($card->{use_xf4} ? 'XFree86' : $card->{server} =~ /Sun (.*)/x ?
"Xsun$1" : "XF86_$card->{server}");
-x "$prefix$card->{prog}" or $install && do {
$in->suspend if ref($in) =~ /newt/;
- &$install($card->{server}, $card->{Utah_glx} ? 'Mesa' : ()) if !$card->{driver};
- &$install('server') if $card->{driver}; #- add XFree86-libs-DRI here if using DRI (future split of XFree86 TODO)
+ &$install($card->{server}, $card->{Utah_glx} ? 'Mesa' : ()) if !$card->{use_xf4};
+ &$install('server') if $card->{use_xf4}; #- add XFree86-libs-DRI here if using DRI (future split of XFree86 TODO)
$in->resume if ref($in) =~ /newt/;
};
-x "$prefix$card->{prog}" or die "server $card->{server} is not available (should be in $prefix$card->{prog})";
@@ -252,7 +253,7 @@ Do You want to use XFree 3.3 instead of XFree 4.0?"), 1) and $card->{driver} = '
if (!$::isStandalone && $card->{driver} eq "i810") {
require modules;
- modules::load("agpgart"); eval { modules::load("i810"); };
+ modules::load("agpgart"); };
}
$card;
}
@@ -313,7 +314,7 @@ sub testConfig($) {
unlink "/tmp/.X9-lock";
#- restart_xfs;
- my $f = $tmpconfig . ($o->{card}{driver} && "-4");
+ my $f = $tmpconfig . ($o->{card}{use_xf4} && "-4");
local *F;
open F, "$prefix$o->{card}{prog} :9 -probeonly -pn -xf86config $f 2>&1 |";
foreach (<F>) {
@@ -350,7 +351,7 @@ sub testFinalConfig($;$$) {
#- needed for bad cards not restoring cleanly framebuffer
my $bad_card = $o->{card}{identifier} =~ /i740|ViRGE/;
$bad_card ||= $o->{card}{identifier} eq "ATI|3D Rage P/M Mobility AGP 2x";
- $bad_card ||= $o->{card}{driver}; #- TODO obsoleted to check, when using fbdev of XFree 4.0!
+ $bad_card ||= $o->{card}{use_xf4}; #- TODO obsoleted to check, when using fbdev of XFree 4.0!
log::l("the graphic card does not like X in framebuffer") if $bad_card;
my $mesg = _("Do you want to test the configuration?");
@@ -380,7 +381,7 @@ sub testFinalConfig($;$$) {
open STDERR, ">$f_err";
chroot $prefix if $prefix;
exec $o->{card}{prog},
- ($o->{card}{prog} !~ /Xsun/ ? ("-xf86config", ($::testing ? $tmpconfig : $f) . ($o->{card}{driver} && "-4")) : ()),
+ ($o->{card}{prog} !~ /Xsun/ ? ("-xf86config", ($::testing ? $tmpconfig : $f) . ($o->{card}{use_xf4} && "-4")) : ()),
":9" or c::_exit(0);
}
@@ -473,9 +474,8 @@ sub autoDefaultDepth($$) {
my ($card, $wres_wanted) = @_;
my ($best, $depth);
- return 24 if $card->{identifier} =~ /SiS/;
-
- return 16 if $card->{type} =~ /Voodoo (?!5)/x;
+ return 24 if $card->{identifier} =~ /SiS/; #- assume 24 bit event for 3D acceleration (not enabled currently).
+ return 16 if $card->{Utah_glx} || $card->{DRI_glx}; #- assume 16bit as most of them need 16.
for ($card->{server}) {
/FBDev/ and return 16; #- this should work by default, FBDev is allowed only if install currently uses it at 16bpp.
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index e21957845..2d1cd8aa1 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -521,16 +521,23 @@ sub configureServices {
#------------------------------------------------------------------------------
sub configurePrinter {
my($o) = @_;
- if ($o->{printer}{configured}) {
- require pkgs;
- pkgs::selectPackage($o->{packages}, pkgs::packageByName($o->{packages}, 'rhs-printfilters'));
- $o->installPackages($o->{packages});
+ my ($use_cups, $use_lpr) = (0, 0);
+ foreach (values %{$o->{printer}{configured} || {}}) {
+ for ($_->{mode}) {
+ /cups/ and $use_cups++;
+ /lpr/ and $use_lpr++;
+ }
+ }
+ #- if at least one queue is configured, configure it.
+ if ($use_cups || $use_lpr) {
+ $o->pkg_install(($use_cups ? ('cups-drivers') : ()), ($use_lpr ? ('rhs-printfilters') : ()));
require printer;
eval { add2hash($o->{printer}, printer::getinfo($o->{prefix})) }; #- get existing configuration.
- printer::read_printer_db(); #- load printer db, else configuration will fails.
+ $use_cups and printer::poll_ppd_base();
+ $use_lpr and printer::read_printer_db();
foreach (keys %{$o->{printer}{configured} || {}}) {
- log::l("configuring printer queue $_->{queue}");
+ log::l("configuring printer queue $_->{queue} for $_->{mode}");
printer::copy_printer_params($_, $o->{printer});
#- setup all configured queues, which is not the case interactively where
#- only the working queue is setup on configuration.
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 09ed55085..2ed1858c1 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -578,7 +578,9 @@ sub configurePrinter {
}
$o->{printer}{PAPERSIZE} = $o->{lang} eq 'en' ? 'letter' : 'a4';
- printerdrake::main($o->{printer}, $o, sub { $o->pkg_install($_[0]) }, sub { install_interactive::upNetwork($o, 'pppAvoided') });
+ printerdrake::main($o->{printer}, $o, sub { $o->pkg_install(@_) }, sub { install_interactive::upNetwork($o, 'pppAvoided') });
+
+ $o->pkg_install_if_requires_satisfied('xpp', 'kups');
}
#------------------------------------------------------------------------------
diff --git a/perl-install/network.pm b/perl-install/network.pm
index 7b9558e44..d099ec309 100644
--- a/perl-install/network.pm
+++ b/perl-install/network.pm
@@ -117,7 +117,7 @@ sub add2hosts {
local *F;
if (-e $file) {
open F, $file or die "cannot open $file: $!";
- /\s*(\S+)(.*)/ and $l{$1} = $2 foreach <F>;
+ /\s*(\S+)(.*)/ and $l{$1} ||= $2 foreach <F>;
}
log::l("writing host information to $file");
open F, ">$file" or die "cannot write $file: $!";
diff --git a/perl-install/printer.pm b/perl-install/printer.pm
index ad6e46359..40c034282 100644
--- a/perl-install/printer.pm
+++ b/perl-install/printer.pm
@@ -129,6 +129,7 @@ sub read_configured_queue($) {
if (/^##PRINTTOOL3##\s+$p\s+$p\s+$p\s+$p\s+$p\s+$p\s+$p(?:\s+$p)?/) {
&$flush_current;
$current = {
+ mode => 'lpr',
TYPE => $1 || $2,
GSDRIVER => $3 || $4,
RESOLUTION => $5 || $6,
@@ -238,8 +239,8 @@ sub read_configured_queue($) {
}
}
- #- assume this printing system.
- $printer->{mode} ||= 'lpr';
+ #- assume this printing system, but only if some queue are defined.
+ scalar(keys %{$printer->{configured}}) > 0 and $printer->{mode} ||= 'lpr';
}
sub read_printer_db(;$) {
@@ -320,7 +321,7 @@ sub read_printers_conf {
foreach (<PRINTERS>) {
chomp;
/^\s*#/ and next;
- if (/^\s*<(?:DefaultPrinter|Printer)\s+([^>]*)>/) { $current = { QUEUE => $1, } }
+ if (/^\s*<(?:DefaultPrinter|Printer)\s+([^>]*)>/) { $current = { mode => 'cups', QUEUE => $1, } }
elsif (/\s*<\/Printer>/) { $current->{QUEUE} && $current->{DeviceURI} or next; #- minimal check of synthax.
add2hash($printer->{configured}{$current->{QUEUE}} ||= {}, $current); $current = undef }
elsif (/\s*(\S*)\s+(.*)/) { $current->{$1} = $2 }
diff --git a/perl-install/printerdrake.pm b/perl-install/printerdrake.pm
index cd8ee038b..f7bbb254a 100644
--- a/perl-install/printerdrake.pm
+++ b/perl-install/printerdrake.pm
@@ -346,7 +346,7 @@ You can add some more or change the existing ones."),
#- switch according to what is being installed: cups, lpr or other.
for ($printer->{mode}) {
- /cups/ && do { &$install('cups') unless $::testing;
+ /cups/ && do { &$install('cups-drivers') unless $::testing;
printer::poll_ppd_base(); last };
/lpr/ && do { &$install('rhs-printfilters') unless $::testing;
printer::read_printer_db(); last };
diff --git a/perl-install/standalone/printerdrake b/perl-install/standalone/printerdrake
index 4903e3bc4..14715e8e3 100755
--- a/perl-install/standalone/printerdrake
+++ b/perl-install/standalone/printerdrake
@@ -37,12 +37,13 @@ $::skiptest = /-skiptest/;
$::testing = /-testing/;
$::isStandalone = 1;
-my $f = "/usr/lib/rhs/rhs-printfilters";
--e $f or system("urpmi --auto rhs-printfilters");
--e $f or die "install rhs-printfilters first!\n";
+my $printer; eval { $printer = printer::getinfo('') };
+/-lpr/ and $printer->{mode} = 'lpr';
+/-cups/ and $printer->{mode} = 'cups';
+$printer->{mode} ||= 'cups'; #- assume this default if nothing found.
my $in = vnew interactive('su');
-printerdrake::main(eval { printer::getinfo('') } || {}, $in, sub { `urpmi --auto $_[0]` });
+printerdrake::main(eval { printer::getinfo('') } || {}, $in, sub { my $l = join(' ', @_); `urpmi --auto $l` });
$in->exit(0);