summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--lib/Xconfig/card.pm33
-rw-r--r--lib/Xconfig/proprietary.pm8
3 files changed, 24 insertions, 18 deletions
diff --git a/NEWS b/NEWS
index 97ca1d7..96b0c27 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,4 @@
+- ask "Do you wish to use proprietary driver" before installing the needed packages
- don't use 1280x1024 prefered resolution
(using prefered resolution only when adding explicit gtf modelines)
- handle new intel driver (including migration from "i810")
diff --git a/lib/Xconfig/card.pm b/lib/Xconfig/card.pm
index 2e40890..029416b 100644
--- a/lib/Xconfig/card.pm
+++ b/lib/Xconfig/card.pm
@@ -242,8 +242,8 @@ sub configure_auto_install {
};
}
- install_server($card, $options, $do_pkgs) or return;
- $card = choose_Driver2_or_not($card, undef);
+ install_server($card, $options, $do_pkgs, undef) or return;
+ $card = configure_Driver2($card, undef);
Xconfig::various::various_auto_install($raw_X, $card, $old_X);
set_glx_restrictions($card);
@@ -274,9 +274,9 @@ sub configure {
my $card = multi_head_choose($in, $auto, @cards) or return;
- install_server($card, $options, $do_pkgs) or goto card_config__not_listed;
+ install_server($card, $options, $do_pkgs, $in) or goto card_config__not_listed;
- $card = choose_Driver2_or_not($card, $in);
+ $card = configure_Driver2($card, $in);
Xconfig::various::various($in, $raw_X, $card, $options, $auto);
set_glx_restrictions($card);
@@ -296,7 +296,7 @@ sub configure {
}
sub install_server {
- my ($card, $options, $do_pkgs) = @_;
+ my ($card, $options, $do_pkgs, $o_in) = @_;
my @packages;
my @must_have = "x11-driver-video-$card->{Driver}";
@@ -307,7 +307,13 @@ sub install_server {
if ($card->{Driver2}) {
require Xconfig::proprietary;
- push @packages, Xconfig::proprietary::pkgs_for_Driver2($card, $do_pkgs);
+ my @pkgs = Xconfig::proprietary::pkgs_for_Driver2($card, $do_pkgs);
+ if (@pkgs && (!$o_in || $o_in->ask_yesorno('', formatAlaTeX(N("There is a proprietary driver available for your video card which may support additional features.
+Do you wish to use it?")), 1))) {
+ push @packages, @pkgs;
+ } else {
+ delete $card->{Driver2};
+ }
}
$do_pkgs->ensure_are_installed([ @must_have, @packages ], 1) or
@@ -321,18 +327,17 @@ sub install_server {
1;
}
-sub choose_Driver2_or_not {
+sub configure_Driver2 {
my ($card, $o_in) = @_;
- my $card2;
if ($card->{Driver2}) {
require Xconfig::proprietary;
- $card2 = Xconfig::proprietary::may_use_Driver2($card);
- }
-
- if ($card2) {
- !$o_in || $o_in->ask_yesorno('', formatAlaTeX(N("There is a proprietary driver available for your video card which may support additional features.
-Do you wish to use it?")), 1) and $card = $card2;
+ if (my $card2 = Xconfig::proprietary::may_use_Driver2($card) && 0) {
+ $card = $card2;
+ } else {
+ $o_in && $o_in->ask_warn('', formatAlaTeX(N("The proprietary driver was not properly installed, defaulting to free software driver.")));
+ log::l("defaulting to free software driver");
+ }
}
libgl_config_and_more($card);
diff --git a/lib/Xconfig/proprietary.pm b/lib/Xconfig/proprietary.pm
index 3fae5f9..381da9e 100644
--- a/lib/Xconfig/proprietary.pm
+++ b/lib/Xconfig/proprietary.pm
@@ -44,7 +44,7 @@ sub pkgs_for_Driver2 {
my $pkg = pkg_name_for_Driver2($card);
- $pkg && $do_pkgs->is_available($pkg) or return;
+ $pkg && $do_pkgs->is_available($pkg) or log::l("proprietary package $pkg not available"), return;
my $module_pkgs = $do_pkgs->check_kernel_module_packages($pkg) or
log::l("$pkg available, but no kernel module package (for installed kernels, and no dkms)"), return;
@@ -65,7 +65,7 @@ sub may_use_Driver2 {
"$modules_dir/drivers/$drv.so",
"$modules_dir/drivers/$drv.o");
my $has = find { -e "$::prefix$_" } @l;
- $has or log::l("proprietary $drv driver missing, defaulting to free software driver (we searched for: @l)");
+ $has or log::l("proprietary $drv driver missing (we searched for: @l)");
$has;
};
@@ -80,7 +80,7 @@ sub may_use_Driver2 {
$check_drv->('nvidia_drv', "nvidia$card2->{DriverVersion}") or return;
my $libglx_path = Xconfig::card::modules_dir() . "/extensions/nvidia$card2->{DriverVersion}";
- -e "$::prefix$libglx_path/libglx.so" or log::l("special NVIDIA libglx missing, defaulting to free software driver"), return;
+ -e "$::prefix$libglx_path/libglx.so" or log::l("special NVIDIA libglx missing"), return;
log::explanations("Using specific NVIDIA driver and GLX extensions");
$card2->{DRI_GLX_SPECIAL} = $libglx_path;
@@ -89,7 +89,7 @@ sub may_use_Driver2 {
} elsif ($card2->{Driver} eq 'fglrx') {
$check_drv->('fglrx_drv') or return;
-e "$::prefix$modules_dir/dri/fglrx_dri.so" || -e "$::prefix/usr/$lib/dri/fglrx_dri.so" or
- log::l("proprietary fglrx_dri.so missing, defaulting to free software driver"), return;
+ log::l("proprietary fglrx_dri.so missing"), return;
log::explanations("Using specific ATI fglrx and DRI drivers");
$card2->{DRI_GLX} = 1;