diff options
Diffstat (limited to 'perl-install/patch')
-rw-r--r-- | perl-install/patch/patch-oem-hp.pl | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/perl-install/patch/patch-oem-hp.pl b/perl-install/patch/patch-oem-hp.pl deleted file mode 100644 index 0a5b0b51e..000000000 --- a/perl-install/patch/patch-oem-hp.pl +++ /dev/null @@ -1,323 +0,0 @@ -use modules; -package modules; -my $old_load_raw = \&load_raw; -undef *load_raw; -*load_raw = sub { - &$old_load_raw; - - my @l = map { my ($i, @i) = @$_; [ $i, \@i ] } grep { $_->[0] !~ /ignore/ } @_; - foreach (@l) { - if ($_->[0] eq 'ehci-hcd') { - add_alias('usb-interface1', $_->[0]); - } - } - - if (get_alias("usb-interface") || get_alias("usb-interface1")) { - unless (-e "/proc/bus/usb/devices") { - require fs; fs::mount('/proc/bus/usb', '/proc/bus/usb', 'usbdevfs'); - #- ensure keyboard is working, the kernel must do the job the BIOS was doing - sleep 4; - load_multi("usbkbd", "keybdev") if detect_devices::usbKeyboards(); - } - } -}; - -my $old_load = \&load; -undef *load; -*load = sub { - &$old_load; - - #- hack to get back usb-interface (even if already loaded by stage1) - #- NOTE load_multi is not used for that so not overloaded to fix that too. - if ($_[0] =~ /usb-[uo]hci/ && !get_alias("usb-interface")) { - add_alias('usb-interface', $_[0]); - } elsif ($_[0] eq 'ehci-hcd' && !get_alias("usb-interface1")) { - add_alias('usb-interface1', $_[0]); - } - - if (get_alias("usb-interface") || get_alias("usb-interface1")) { - unless (-e "/proc/bus/usb/devices") { - require fs; fs::mount('/proc/bus/usb', '/proc/bus/usb', 'usbdevfs'); - #- ensure keyboard is working, the kernel must do the job the BIOS was doing - sleep 4; - load_multi("usbkbd", "keybdev") if detect_devices::usbKeyboards(); - } - } -}; - -#- ensure it is loaded using this patch. -$::noauto or modules::load_thiskind("usb"); -sleep 2; - -use install_steps; -package install_steps; - -my $old_beforeInstallPackages = \&beforeInstallPackages; -undef *beforeInstallPackages; -*beforeInstallPackages = sub { - &$old_beforeInstallPackages; - - my ($o) = @_; - mkdir "$o->{prefix}$_" foreach qw(/boot /usr /usr/share /usr/share/mdk); - install_any::getAndSaveFile("Mandrake/base/oem-message-graphic", "$o->{prefix}/boot/oem-message-graphic"); - install_any::getAndSaveFile("Mandrake/base/oem-background.png", "$o->{prefix}/usr/share/mdk/oem-background.png"); -}; - -my $old_afterInstallPackages = \&afterInstallPackages; -undef *afterInstallPackages; -*afterInstallPackages = sub { - &$old_afterInstallPackages; - - my ($o) = @_; - - #- lilo image. - rename "$o->{prefix}/boot/lilo-graphic/message", "$o->{prefix}/boot/lilo-graphic/message.orig"; - system "chroot", $o->{prefix}, "cp", "-f", "/boot/oem-message-graphic", "/boot/lilo-graphic/message"; - - #- KDE desktop background. - if (-e "$o->{prefix}/usr/share/config/kdesktoprc") { - update_gnomekderc("$o->{prefix}/usr/share/config/kdesktoprc", "Desktop0", - MultiWallpaperMode => "NoMulti", - Wallpaper => "/usr/share/mdk/oem-background.png", - WallpaperMode => "Scaled", - ); - } - #- GNOME desktop background. - if (-e "$o->{prefix}/etc/gnome/config/Background") { - update_gnomekderc("$o->{prefix}/etc/gnome/config/Background", "Default", - wallpaper => "/usr/share/mdk/oem-background.png", - wallpaperAlign => "3", - ); - } - - #- make sure no error can be forwarded, test staroffice installed and OpenOffice.org, - #- remove the first if the second is installed. - eval { - if (!$o->{isUpgrade} && -e "$o->{prefix}/usr/lib/openoffice/program/soffice.bin" && grep { -e "$o->{prefix}/usr/lib/office60_$_/program/soffice.bin" } qw(de en es fr it)) { - require run_program; - log::l("removing OpenOffice.org as staroffice is installed"); - run_program::rooted($o->{prefix}, "rpm", "-e", "OpenOffice.org"); - } - }; -}; - -use install_any; -package install_any; - -undef *copy_advertising; -*copy_advertising = sub { - my ($o) = @_; - - return if $::rootwidth < 800; - - my $f; - my $source_dir = "Mandrake/share/advertising"; - foreach ("." . $o->{lang}, "." . substr($o->{lang},0,2), '') { - $f = getFile("$source_dir$_/list") or next; - $source_dir = "$source_dir$_"; - } - if (my @files = <$f>) { - my $dir = "$o->{prefix}/tmp/drakx-images"; - mkdir $dir; - unlink glob_("$dir/*"); - foreach (@files) { - chomp; - getAndSaveFile("$source_dir/$_", "$dir/$_"); - s/\.png/\.pl/; - getAndSaveFile("$source_dir/$_", "$dir/$_"); - s/\.pl/_icon\.png/; - getAndSaveFile("$source_dir/$_", "$dir/$_"); - s/_icon\.png/\.png/; - } - @advertising_images = map { $_ && -e "$dir/$_" ? ("$dir/$_") : () } @files; - } -}; - -#undef *allowNVIDIA_rpms; -#*allowNVIDIA_rpms = sub { -# my ($packages) = @_; -# require pkgs; -# if (pkgs::packageByName($packages, "NVIDIA_GLX")) { -# #- at this point, we can allow using NVIDIA 3D acceleration packages. -# my @rpms; -# foreach (keys %{$packages->{names}}) { -# my ($ext, $version, $release) = /kernel[^-]*(-smp|-enterprise|-secure)?(?:-(\d.*?)\.(\d+\.\d+mdk))?$/ or next; -# my $p = pkgs::packageByName($packages, $_); -# pkgs::packageSelectedOrInstalled($p) or next; -# $version or ($version, $release) = (pkgs::packageVersion($p), pkgs::packageRelease($p)); -# my $name = "NVIDIA_kernel-$version-$release$ext"; -# pkgs::packageByName($packages, $name) or return; -# push @rpms, $name; -# } -# @rpms > 0 or return; -# return [ @rpms, "NVIDIA_GLX" ]; -# } -#}; - -use detect_devices; -package detect_devices; - -undef *usbMice; -*usbMice = sub { grep { ($_->{media_type} =~ /\|Mouse/ || $_->{driver} =~ /Mouse:USB/) && - $_->{driver} !~ /Tablet:wacom/} usb_probe() }; - -use Xconfigurator; -package Xconfigurator; - -undef *cardConfigurationAuto; -*cardConfigurationAuto = sub { - my @cards; - if (my @c = grep { $_->{driver} =~ /(Card|Server):/ } detect_devices::probeall()) { - @c >= 2 && $c[0]{description} eq $c[1]{description} && $c[0]{description} =~ /82830 CGC/ and shift @c; - foreach my $i (0..$#c) { - local $_ = $c[$i]->{driver}; - my $card = { identifier => ($c[$i]{description} . (@c > 1 && " $i")) }; - $card->{type} = $1 if /Card:(.*)/; - $card->{server} = $1 if /Server:(.*)/; - $card->{driver} = $1 if /Driver:(.*)/; - $card->{flags}{needVideoRam} = /86c368|S3 Inc|Tseng.*ET6\d00/; - $card->{busid} = "PCI:$c[$i]{pci_bus}:$c[$i]{pci_device}:$c[$i]{pci_function}"; - push @{$card->{lines}}, @{$lines{$card->{identifier}} || []}; - push @cards, $card; - } - } - #- take a default on sparc if nothing has been found. - if (arch() =~ /^sparc/ && !@cards) { - log::l("Using probe with /proc/fb as nothing has been found!"); - local $_ = cat_("/proc/fb"); - if (/Mach64/) { push @cards, { server => "Mach64" } } - elsif (/Permedia2/) { push @cards, { server => "3DLabs" } } - else { push @cards, { server => "Sun24" } } - } - #- special case for dual head card using only one busid. - @cards = map { my $dup = $_->{identifier} =~ /MGA G[45]50/ ? 2 : 1; - if ($dup > 1) { - my @result; - my $orig = $_; - foreach (1..$dup) { - my $card = {}; - add2hash($card, $orig); - push @result, $card; - } - @result; - } else { - ($_); - } - } @cards; - #- make sure no type are already used, duplicate both screen - #- and rename type (because used as id). - if (@cards > 1) { - my $card = 1; - foreach (@cards) { - updateCardAccordingName($_, $_->{type}) if $_->{type}; - $_->{type} = "$_->{type} $card"; - $card++; - } - } - #- in case of only one cards, remove all busid reference, this will avoid - #- need of change of it if the card is moved. - #- on many PPC machines, card is on-board, busid is important, leave? - @cards == 1 and delete $cards[0]{busid} if arch() !~ /ppc/; - @cards; -}; - -use mouse; -package mouse; -undef *detect; -*detect = sub { - if (arch() =~ /^sparc/) { - return fullname2mouse("sunmouse|Sun - Mouse"); - } - if (arch() eq "ppc") { - return fullname2mouse(detect_devices::hasMousePS2("usbmouse") ? - "USB|1 button" : - #- No need to search for an ADB mouse. If I did, the PPC kernel would - #- find one whether or not I had one installed! So.. default to it. - "busmouse|1 button"); - } - - my @wacom; - my $fast_mouse_probe = sub { - my $auxmouse = detect_devices::hasMousePS2("psaux") && fullname2mouse("PS/2|Standard", unsafe => 1); - - if (modules::get_alias("usb-interface")) { - if (my (@l) = detect_devices::usbMice()) { - log::l("found usb mouse $_->{driver} $_->{description} ($_->{type})") foreach @l; - eval { modules::load($_) foreach qw(hid mousedev usbmouse) }; - if (!$@ && detect_devices::tryOpen("usbmouse")) { - my $mouse = fullname2mouse($l[0]{driver} =~ /Mouse:(.*)/ ? $1 : "USB|Generic"); - $auxmouse and $mouse->{auxmouse} = $auxmouse; #- for laptop, we kept the PS/2 as secondary (symbolic). - return $mouse; - } - eval { modules::unload($_) foreach qw(usbmouse mousedev hid) }; - } - } - $auxmouse; - }; - - if (modules::get_alias("usb-interface")) { - my $keep_mouse; - if (my (@l) = detect_devices::usbWacom()) { - log::l("found usb wacom $_->{driver} $_->{description} ($_->{type})") foreach @l; - eval { modules::load("wacom"); modules::load("evdev"); }; - unless ($@) { - foreach (0..$#l) { - detect_devices::tryOpen("input/event$_") and $keep_mouse = 1, push @wacom, "input/event$_"; - } - } - $keep_mouse or eval { modules::unload("evdev"); modules::unload("wacom"); }; - } - } - - #- at this level, not all possible mice are detected so avoid invoking serial_probe - #- which takes a while for its probe. - if ($::isStandalone) { - my $mouse = $fast_mouse_probe->(); - $mouse and return ($mouse, @wacom); - } - - #- probe serial device to make sure a wacom has been detected. - eval { modules::load("serial") }; - my ($r, @serial_wacom) = mouseconfig(); push @wacom, @serial_wacom; - - if (!$::isStandalone) { - my $mouse = $fast_mouse_probe->(); - $r && $mouse and $r->{auxmouse} = $mouse; #- we kept the auxilliary mouse as PS/2. - $r and return ($r, @wacom); - $mouse and return ($mouse, @wacom); - } else { - $r and return ($r, @wacom); - } - - #- in case only a wacom has been found, assume an inexistant mouse (necessary). - @wacom and return { CLASS => 'MOUSE', - nbuttons => 2, - device => "nothing", - MOUSETYPE => "Microsoft", - XMOUSETYPE => "Microsoft"}, @wacom; - - if (!modules::get_alias("usb-interface") && detect_devices::is_a_recent_computer() && $::isInstall && !$::noauto) { - #- special case for non detected usb interface on a box with no mouse. - #- we *must* find out if there really is no usb, otherwise the box may - #- not be accessible via the keyboard (if the keyboard is USB) - #- the only way to know this is to make a full pci probe - modules::load_thiskind("usb", '', 'unsafe'); - if (my $mouse = $fast_mouse_probe->()) { - return $mouse; - } - } - - if (modules::get_alias("usb-interface")) { - eval { modules::load($_) foreach qw(hid mousedev usbmouse) }; - sleep 1; - if (!$@ && detect_devices::tryOpen("usbmouse")) { - #- defaults to generic USB mouse on usbmouse. - log::l("defaulting to usb generic mouse"); - return fullname2mouse("USB|Generic", unsafe => 1); - } - } - - #- defaults to generic serial mouse on ttyS0. - #- Oops? using return let return a hash ref, if not using it, it return a list directly :-) - return fullname2mouse("serial|Generic 2 Button Mouse", unsafe => 1); -}; |