diff options
Diffstat (limited to 'os-plugins/plugins/xserver/OpenSLX')
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm | 212 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm | 50 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm | 89 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm | 63 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm | 360 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm | 361 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm | 53 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm | 96 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm | 73 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm | 30 | ||||
-rw-r--r-- | os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm | 396 |
11 files changed, 0 insertions, 1783 deletions
diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm deleted file mode 100644 index 51c1c60b..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Base.pm -# - provides base implementation of the Distro API for the xserver plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Base; - -use strict; -use warnings; - -our $VERSION = 1.01; # API-version . implementation-version - -use File::Basename; -use File::Path; -use Scalar::Util qw( weaken ); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ -sub new -{ - my $class = shift; - my $self = {}; - return bless $self, $class; -} - -sub initialize -{ - my $self = shift; - $self->{engine} = shift; - weaken($self->{engine}); - # avoid circular reference between plugin and its engine - - return 1; -} - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $pathInfo = $self->XserverPathInfo(); - my $configFile = $pathInfo->{config}; - - my $script = unshiftHereDoc(<<' End-of-Here'); - # xserver.sh (base part) - # written by OpenSLX-plugin 'xserver' (via xserver/Distro/Base.pm module) - - # generating the base configuration file (might be split into several - # files for newer Xorg servers) - echo -e "# ${xfc#/mnt*}\n# autogenerated X hardware configuration by \ - the xserver plugin in OpenSLX stage3\n# DO NOT EDIT THIS FILE BUT THE PLUGIN \ - INSTEAD" >${xfc} - # using variables defined in XX_xserver.sh - echo -e "${x_modpath}\n${x_srvflags}\n${x_modules}" >>${xfc} - echo -e "${x_keyboard}\n${x_mouse}\n${x_videocard}" >>${xfc} - echo -e "${x_monitor}\n${x_screen}\n${x_srvlayout}\n${x_dri}" >>${xfc} - # if no module was detected, stick to vesa module - if [ -n "$xmodule" ] ; then - sed "s/vesa/$xmodule/;s/\"us\"/\"${XKEYBOARD}\"/" -i ${xfc} - else - sed "s/\"us\"/\"${XKEYBOARD}\"/" -i ${xfc} - fi - if [ -n "${BUSID}" ]; then - sed -e "s,^#.*BusID .*, BusID \"${BUSID}\",g" -i ${xfc} - fi - # end of base xorg.conf generation - - End-of-Here - - return $script; -} - -# not used yet, kept as example -sub XserverPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/X11/xorg.conf', - paths => [ - '/usr/bin', - ], - }; - - return $pathInfo; -} - - -# looks for the NVIDIA-installer and extracts it -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my @paths = glob $repopath.$pkgpath."/NVIDIA-Linux-x86*\n"; - my $paths = @paths; - - if ($paths > 1) - { - print "Found more than one NVIDIA-Linux-x86 installer. Taking first one.\n"; - } - if ($paths == 0) - { - print "Found no NVIDIA-Linux-x86 installer. Quitting NVIDIA installation!\n"; - return "error"; - } - - if ( ! -X $paths[0] ) - { - system("chmod +x ".$paths[0]); - } - system($paths[0]." -x --target $repopath/nvidia/temp >/dev/null 2>&1"); - - if($? == -1 ) - { - print "Failed to execute ".$paths[0]."\n"; - return "error"; - } - - system("mv $repopath/nvidia/temp/usr/src $repopath/nvidia/temp/"); - system("mv $repopath/nvidia/temp/usr/ $repopath/nvidia/"); - rmtree("$repopath/nvidia/usr/share/"); - - return "$repopath/nvidia/temp/src/nv"; -} - - -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my @paths = glob $repopath."/".$pkgpath."/ati-driver-installer*"; - my $paths = @paths; - - if ($paths > 1) - { - print "Found more than one ati-driver-installer. Taking first one.\n"; - } - if ($paths == 0) - { - print "Found no ati-driver-installer. Quitting ATI installation!\n"; - return "error"; - } - - if ( ! -X $paths[0] ) - { - system("chmod +x ".$paths[0]); - } - system($paths[0]." --extract $repopath/ati/temp >/dev/null 2>&1"); - - if($? == -1 ) - { - print "Failed to execute ".$paths[0]."\n"; - return "error"; - } - - # TODO: allow x86_64 driver installation (libs) - my $arch = "x86"; - - rmtree("$repopath/ati/usr"); - system("mv $repopath/ati/temp/common/usr $repopath/ati/"); - if (!-d "$repopath/ati/usr/lib" ) { - mkdir "$repopath/ati/usr/lib"; - } - system("mv $repopath/ati/temp/arch/$arch/usr/X11R6/lib/* $repopath/ati/usr/lib/"); - system("mv $repopath/ati/temp/arch/$arch/usr/lib/* $repopath/ati/usr/lib/"); - rmtree("$repopath/ati/usr/share/"); - - my $cmd='gcc --version | head -n 1 | sed -e "s/[^0-9. ]//g;s/^ *//;s/^\(.\)\..*$/\1/"'; - my $gcc_ver_maj =`$cmd`; - chomp($gcc_ver_maj); - - system("mv $repopath/ati/temp/arch/$arch/lib/modules/fglrx/build_mod/libfglrx_ip.a.GCC$gcc_ver_maj $repopath/ati/temp/common/lib/modules/fglrx/build_mod/"); - - - return "$repopath/ati/temp/common/lib/modules/fglrx/build_mod"; -} - -# get dkms with wget/tar and put it into /sbin -sub getdkms -{ - if( !-f "/sbin/dkms") { - if(!-f "dkms-2.0.21.1.tar.gz" ) { - system("wget http://linux.dell.com/dkms/permalink/dkms-2.0.21.1.tar.gz >/dev/null 2>&1"); - die("Could not download dkms tarball! Exiting!") if($? > 0 ); - } - if(!-f "dkms-2.0.21.1/dkms" ) { - system("tar -zxvf dkms-2.0.21.1.tar.gz dkms-2.0.21.1/dkms >/dev/null 2>&1"); - die("Could not extract dkms script from tarball! Exiting!") if($? > 0 ); - } - copyFile("dkms-2.0.21.1/dkms","/sbin"); - chmod 0755, "/sbin/dkms"; - } -} - - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm deleted file mode 100644 index 29156e60..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Debian.pm +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2008 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Debian.pm -# - provides Debian-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Debian; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # Debian specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb - End-of-Here - - return $script; -} - -# stage3 script might need to add special path /var/X11R6/bin to the PATH variable -# # fixme!! add path directly to /etc/profile!? -# #[ "x$addpath" != "x" ] && \ -# # echo -e "# added path component by $0: $date\n\ -# #PATH=\"\$PATH:/var/X11R6/bin\"" >>/mnt/etc/profile - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm deleted file mode 100644 index 7a706019..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - # add stuff to the script generated via Base.pm - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/etc/X11/xorg.conf.d - # Add InputClass to proper setup the keyboard and other input - echo 'Section "InputClass" - Identifier "evdev pointer catchall" - MatchIsPointer "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev keyboard catchall" - MatchIsKeyboard "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev touchpad catchall" - MatchIsTouchpad "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev tablet catchall" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection - Section "InputClass" - Identifier "evdev touchscreen catchall" - MatchIsTouchscreen "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" - EndSection' >/mnt/etc/X11/xorg.conf.d/10-evdev.conf - # Xorg hardware is autodetected, so no module information provided - [ -z "${xmodule}" ] && \ - sed "/Section \"Device\"/,/EndSection/d" -i ${xfc} - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/lib/X11 - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/lib/X11/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm deleted file mode 100644 index f0c3ebb8..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10.pm +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_10.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_10; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # suse specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/X11R6/bin - ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - # use the old kbd keyboard driver instead of evdev - sed "s/\"evdev\"/,/\"kbd\"/" -i ${xfc} - # relevant for older xservers only: check for kind of xorg module used - # and patch the i8,9XX VGA BIOS if needed - #if strinfile '"i810"' $xfc && [ -f /etc/hwinfo.display ] ; then - # highres=$(sort -run /etc/hwinfo.display|grep -i x -m 1) - # 915resolution -l|sed -n "s/Mode //;/32 bits/p" > /tmp/915res - # strinfile ${highres} /tmp/915res || { - # 915resolution $(grep -i x -m 1 /tmp/915res|sed "s/\ :.*//") $(echo \ - # $highres|sed "s/x/\ /") 2>&1 >/dev/null; - # # for some reason the above does not work for a Dell laptop with Intel - # # 855 chipset, so add another mode too - # 915resolution 3c $(echo $highres|sed "s/x/\ /") 2>&1 >/dev/null; } - #fi - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm deleted file mode 100644 index 4117c421..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_0.pm +++ /dev/null @@ -1,360 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_11_0.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_11_0; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/X11R6/bin - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -# This function needs wget installed -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/nvidia/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "ftp://download.nvidia.com/opensuse/$version/$chost"; - - print " * Downloading NVIDIA rpm from ftp://download.nvidia.com/opensuse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/nvidia-gfxG01-kmp-$ksuffix* >/dev/null 2>&1"); - - if($? > 0) { - print "Could not download nvidia kernel module rpm!\n"; - } - - my @rpm = glob "$tmpdir/nvidia-gfxG01*.rpm"; - my $rpm = @rpm; - $rpm[0] =~ /nvidia-gfxG01-kmp-$ksuffix-(.*?)_(.*?)-.*?\.$chost.rpm/; - - my $nv_kver = $2; - $nv_kver =~ s/_/-/g; - - if($rpm == 0) { - print "Could not download nvidia kernel module rpm!"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/nvidia/modules/") - { - mkdir("$repopath/nvidia/modules/"); - } - - - # since kernel 2.6.25.20-0.1 there has to be a call to ld - # ld -r -m elf_i386 -o ../modules/nvidia.ko lib/modules/2.6.25.20-0.4-pae/updates/{nv-kernel,nv-linux}.o - - my $nv_path = glob "$tmpdir/lib/modules/*-$ksuffix/updates/"; - if ( -f "$nv_path/nv-kernel.o" ) { - # we have to link our kernel module here - system("ld -r -m elf_i386 -o $nv_path/nvidia.ko $nv_path/{nv-kernel,nv-linux}.o"); - } - - copyFile("$nv_path/nvidia.ko", "$repopath/nvidia/modules"); - - - my @versions = split(/-/, $rpm[0]); - my @nv_versions = split('_',$versions[5]); - my $nv_version = $nv_versions[0]; - - system("wget -P $tmpdir -t2 -T2 $url/x11-video-nvidiaG01-$nv_version* >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-nvidiaG01-$nv_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print "Could not download x11-video-nvidiaG01-$nv_version*.rpm!\n"; - print "Exiting nvidia driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/nvidia/"); - - rmtree($tmpdir); - -} - -# this function needs wget -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/ati/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "http://www2.ati.com/suse/$version/"; - - print " * Downloading ATI rpm from http://www2.ati.com/suse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/repodata/primary.xml.gz >/dev/null 2>&1"); - - my $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$kver_ati.*?$chost.rpm"`; - chomp($url2); - - if($url2 eq '') { - # Taking more general kernel version (minus local suse version) - my $newkernvers = ''; - if($kver_ati =~ /(.*)_(.*?)$/) { - # if we have a match here - $newkernvers = $1; - } - else { - # just try the old method - $newkernvers = substr $kver_ati, 0, -4; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - else { - # Minus local Suse version number - hoping, there was no ABI change - if($newkernvers =~ /(.*).(.*?)$/) { - # here we try with yet another older kernel version - $newkernvers = $1; - } - else { - $newkernvers = substr $kver_ati, 0, -7; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - - } - } - -# print "KVER = $kver; CHOST = $chost; ksuffix=$ksuffix\n"; -# system("bash"); - - if($url2 eq '') { - print "No ATI module rpm for the chosen kernel version ($kver) found! Exiting!\n"; - return; - } - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - my @rpm = glob "$tmpdir/ati-fglrxG01-kmp-$ksuffix*$chost.rpm"; - my $rpm = @rpm; - - if($rpm == 0) { - print "Could not download ATI kernel module rpm (for kernel $kver)!\n"; - print "Consider downgrading your Kernel! \nTrying package-install!\n"; - $self->installAtiOldStyle(@_); - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/ati/modules/") - { - mkdir("$repopath/ati/modules/"); - } - copyFile("$tmpdir/lib/modules/$kver*-$ksuffix/updates/fglrx.ko", - "$repopath/ati/modules"); - - my @versions = split(/-/, $rpm[0]); - my @ati_versions = split('_',$versions[5]); - my $ati_version = $ati_versions[0]; - - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/x11-video-fglrxG01-$ati_version-.*?.$chost.rpm"`; - chomp($url2); - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-fglrxG01-$ati_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print " Could not download x11-video-fglrxG01-$ati_version*.rpm!\n"; - print " Exiting ATI driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/ati/"); - system("mv $tmpdir/etc $repopath/ati/"); - if( ! -d "/usr/X11R6/lib/modules/dri/" ) { - system("mkdir -p /usr/X11R6/lib/modules/dri/"); - } - symlink("$repopath/ati/usr/lib/dri/fglrx_dri.so","/usr/X11R6/lib/modules/dri/fglrx_dri.so"); - - rmtree($tmpdir); -} - - - -sub installAtiOldStyle -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - - my $ret = $self->SUPER::installAti(@_); - - if($ret =~ /^error$/) { - print "Something went wrong installing ATI files!\n"; - return; - } - - $self->SUPER::getdkms(); - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - # here we have to compile the kernel modules for all kernels - # - my $ati_version = `head $repopath/$pkgpath/ati-driver-installer-*.run | grep -P -o '[0-9]+\.[0-9]{3}' | tail -n1`; - chomp($ati_version); - - system("mv $ret /usr/src/fglrx-$ati_version >/dev/null 2>&1"); - - open FH,">/usr/src/fglrx-$ati_version/dkms.conf"; - print FH "DEST_MODULE_LOCATION=/updates\n"; - print FH "PACKAGE_NAME=fglrx\n"; - print FH "PACKAGE_VERSION=$ati_version\n"; - close FH; - - my $cmd = "#============= Executing following command =============\n". - "/sbin/dkms ". - " -m fglrx -v $ati_version ". - " -k $kver-$ksuffix ". - " --kernelsourcedir /usr/src/linux-$kver-obj/i586/$ksuffix ". - " --no-prepare-kernel ". - " --no-clean-kernel ". - " build >/dev/null 2>&1 \n". - "#=========================================================="; - -#print $cmd; - if(!-f "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - system("/sbin/dkms add -m fglrx -v $ati_version >/dev/null 2>&1"); - system($cmd); - #if ($? > 0) { - # print "\n\nCould not compile module! Exit with Ctrl-D\n"; - # system("/bin/bash"); - #} - } - - - if(!-d "$repopath/ati/modules/") - { - mkdir( "$repopath/ati/modules/" ); - } - - if( -e "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - copyFile("/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko", - "$repopath/ati/modules"); - } - else { - print "Could not install ati driver via pkg-installer!\n"; - rmtree($repopath."/ati"); - return; - } - rmtree("$repopath/ati/temp"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm deleted file mode 100644 index ab543549..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_1.pm +++ /dev/null @@ -1,361 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_11_1.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_11_1; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/X11R6/bin - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -# This function needs wget installed -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/nvidia/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "ftp://download.nvidia.com/opensuse/$version/$chost"; - - print " * Downloading NVIDIA rpm from ftp://download.nvidia.com/opensuse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/nvidia-gfxG01-kmp-$ksuffix* >/dev/null 2>&1"); - - if($? > 0) { - print "Could not download nvidia kernel module rpm!\n"; - } - - my @rpm = glob "$tmpdir/nvidia-gfxG01*.rpm"; - my $rpm = @rpm; - $rpm[0] =~ /nvidia-gfxG01-kmp-$ksuffix-(.*?)_(.*?)-.*?\.$chost.rpm/; - - my $nv_kver = $2; - $nv_kver =~ s/_/-/g; - - if($rpm == 0) { - print "Could not download nvidia kernel module rpm!"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/nvidia/modules/") - { - mkdir("$repopath/nvidia/modules/"); - } - - - # since kernel 2.6.25.20-0.1 there has to be a call to ld - # ld -r -m elf_i386 -o ../modules/nvidia.ko lib/modules/2.6.25.20-0.4-pae/updates/{nv-kernel,nv-linux}.o - - my $nv_path = glob "$tmpdir/lib/modules/*-$ksuffix/updates/"; - if ( -f "$nv_path/nv-kernel.o" ) { - # we have to link our kernel module here - system("ld -r -m elf_i386 -o $nv_path/nvidia.ko $nv_path/{nv-kernel,nv-linux}.o"); - } - - copyFile("$nv_path/nvidia.ko", "$repopath/nvidia/modules"); - - - my @versions = split(/-/, $rpm[0]); - my @nv_versions = split('_',$versions[5]); - my $nv_version = $nv_versions[0]; - - system("wget -P $tmpdir -t2 -T2 $url/x11-video-nvidiaG01-$nv_version* >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-nvidiaG01-$nv_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print "Could not download x11-video-nvidiaG01-$nv_version*.rpm!\n"; - print "Exiting nvidia driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/nvidia/"); - - rmtree($tmpdir); - -} - - -# this function needs wget -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $tmpdir = "$repopath/ati/temp"; - if( !-d $tmpdir ) { - mkdir( $tmpdir ); - } - else { - system("rm -rf $tmpdir/*"); - } - - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - my $url = "http://www2.ati.com/suse/$version/"; - - print " * Downloading ATI rpm from http://www2.ati.com/suse/$version\n"; - - system("wget -P $tmpdir -t2 -T2 $url/repodata/primary.xml.gz >/dev/null 2>&1"); - - my $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$kver_ati.*?$chost.rpm"`; - chomp($url2); - - if($url2 eq '') { - # Taking more general kernel version (minus local suse version) - my $newkernvers = ''; - if($kver_ati =~ /(.*)_(.*?)$/) { - # if we have a match here - $newkernvers = $1; - } - else { - # just try the old method - $newkernvers = substr $kver_ati, 0, -4; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - else { - # Minus local Suse version number - hoping, there was no ABI change - if($newkernvers =~ /(.*).(.*?)$/) { - # here we try with yet another older kernel version - $newkernvers = $1; - } - else { - $newkernvers = substr $kver_ati, 0, -7; - } - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/ati-fglrxG01-kmp-$ksuffix.*?$newkernvers.*?$chost.rpm"`; - chomp($url2); - if(! $url2 eq '') { - $kver = $newkernvers; - } - - } - } - -# print "KVER = $kver; CHOST = $chost; ksuffix=$ksuffix\n"; -# system("bash"); - - if($url2 eq '') { - print "No ATI module rpm for the chosen kernel version ($kver) found! Exiting!\n"; - return; - } - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - my @rpm = glob "$tmpdir/ati-fglrxG01-kmp-$ksuffix*$chost.rpm"; - my $rpm = @rpm; - - if($rpm == 0) { - print "Could not download ATI kernel module rpm (for kernel $kver)!\n"; - print "Consider downgrading your Kernel! \nTrying package-install!\n"; - $self->installAtiOldStyle(@_); - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - if(!-d "$repopath/ati/modules/") - { - mkdir("$repopath/ati/modules/"); - } - copyFile("$tmpdir/lib/modules/$kver*-$ksuffix/updates/fglrx.ko", - "$repopath/ati/modules"); - - my @versions = split(/-/, $rpm[0]); - my @ati_versions = split('_',$versions[5]); - my $ati_version = $ati_versions[0]; - - $url2 = `zcat $tmpdir/primary.xml.gz | grep -P -o "$chost/x11-video-fglrxG01-$ati_version-.*?.$chost.rpm"`; - chomp($url2); - system("wget -P $tmpdir -t2 -T2 $url/$url2 >/dev/null 2>&1"); - - @rpm = glob "$tmpdir/x11-video-fglrxG01-$ati_version*"; - $rpm = @rpm; - - if($rpm == 0) - { - print " Could not download x11-video-fglrxG01-$ati_version*.rpm!\n"; - print " Exiting ATI driver installation!\n"; - return; - } - - system("cd $tmpdir; rpm2cpio $rpm[0] | cpio -idv >/dev/null 2>&1"); - - rmtree("$tmpdir/usr/share"); - system("mv $tmpdir/usr $repopath/ati/"); - system("mv $tmpdir/etc $repopath/ati/"); - if( ! -d "/usr/X11R6/lib/modules/dri/" ) { - system("mkdir -p /usr/X11R6/lib/modules/dri/"); - } - symlink("$repopath/ati/usr/lib/dri/fglrx_dri.so","/usr/X11R6/lib/modules/dri/fglrx_dri.so"); - - rmtree($tmpdir); -} - - - -sub installAtiOldStyle -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - - my $ret = $self->SUPER::installAti(@_); - - if($ret =~ /^error$/) { - print "Something went wrong installing ATI files!\n"; - return; - } - - $self->SUPER::getdkms(); - my $mykernel = getKernelVersionForDistro("/boot"); - my $kver = $mykernel->{'version'}; - my $kver_ati = $kver; - $kver_ati =~ s/-/_/; - - my $ksuffix = $mykernel->{'suffix'}; - - my $srinfo = `head -n1 /etc/SuSE-release`; - my @data = split (/ /, $srinfo); - chomp(@data); - - my $version = $data[1]; - my $chost = substr($data[2],1,-1); - - # here we have to compile the kernel modules for all kernels - # - my $ati_version = `head $repopath/$pkgpath/ati-driver-installer-*.run | grep -P -o '[0-9]+\.[0-9]{3}' | tail -n1`; - chomp($ati_version); - - system("mv $ret /usr/src/fglrx-$ati_version >/dev/null 2>&1"); - - open FH,">/usr/src/fglrx-$ati_version/dkms.conf"; - print FH "DEST_MODULE_LOCATION=/updates\n"; - print FH "PACKAGE_NAME=fglrx\n"; - print FH "PACKAGE_VERSION=$ati_version\n"; - close FH; - - my $cmd = "#============= Executing following command =============\n". - "/sbin/dkms ". - " -m fglrx -v $ati_version ". - " -k $kver-$ksuffix ". - " --kernelsourcedir /usr/src/linux-$kver-obj/i586/$ksuffix ". - " --no-prepare-kernel ". - " --no-clean-kernel ". - " build >/dev/null 2>&1 \n". - "#=========================================================="; - -#print $cmd; - if(!-f "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - system("/sbin/dkms add -m fglrx -v $ati_version >/dev/null 2>&1"); - system($cmd); - #if ($? > 0) { - # print "\n\nCould not compile module! Exit with Ctrl-D\n"; - # system("/bin/bash"); - #} - } - - - if(!-d "$repopath/ati/modules/") - { - mkdir( "$repopath/ati/modules/" ); - } - - if( -e "/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko") { - copyFile("/var/lib/dkms/fglrx/$ati_version/$kver-$ksuffix/$chost/module/fglrx.ko", - "$repopath/ati/modules"); - } - else { - print "Could not install ati driver via pkg-installer!\n"; - rmtree($repopath."/ati"); - return; - } - rmtree("$repopath/ati/temp"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm deleted file mode 100644 index 5cddcef0..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_11_2.pm +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (c) 2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Suse_11_2.pm -# - provides SUSE-specific overrides of the Distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Suse_11_2; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use File::Path; - -use OpenSLX::Basics; -use OpenSLX::Utils; -use OpenSLX::DistroUtils; - -use Data::Dumper; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # SuSE specific extension to stage3 xserver.sh - testmkd /mnt/var/lib/xkb/compiled - testmkd /mnt/var/lib/X11 - testmkd /mnt/var/lib/xdm/authdir/authfiles 0700 - ln -s /usr/bin/Xorg /mnt/var/lib/X11/X - rm /mnt/etc/X11/xdm/SuSEconfig.xdm - End-of-Here - - return $script; -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm deleted file mode 100644 index 057cf138..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Ubuntu.pm -# - provides Ubuntu-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Ubuntu; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -# needs to be implemented ... -sub XserverPathInfo -{ - my $self = shift; - - my $pathInfo = { - config => '/etc/X11/xorg.openslx', - paths => [ - '/usr/bin', - ], - }; - - return $pathInfo; -} - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - # overwriting script part from Base.pm - $script = unshiftHereDoc(<<' End-of-Here'); - # Ubuntu specific extension to stage3 xserver.sh - echo -e "# ${xfc#/mnt*}\n# autogenerated X hardware configuration by \ - the xserver plugin in OpenSLX stage3\n# DO NOT EDIT THIS FILE BUT THE PLUGIN \ - INSTEAD" >${xfc} - # using variables defined in XX_xserver.sh - echo -e "${x_modpath}\n${x_srvflags}\n${x_modules}" >>${xfc} - echo "${x_keyboard}" | sed "s/kbd/evdev/" >>${xfc} - echo -e "${x_mouse}\n${x_monitor}\n${x_screen}" >>${xfc} - echo "${x_srvlayout}" | sed "/ Screen /d" >>${xfc} - testmkd /mnt/etc/X11/xorg.conf.d - testmkd /mnt/var/run/xauth - testmkd /mnt/var/lib/xkb - ln -sf /usr/bin/Xorg /mnt/etc/X11/X - End-of-Here - - return $script; -} - - -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh nvidia $distroName"); - -} - -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh ati $distroName"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm deleted file mode 100644 index 1fa88446..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_8.pm +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Ubuntu_8.pm -# - provides Ubuntu-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Ubuntu_8; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - -sub setupXserverScript -{ - my $self = shift; - my $repoPath = shift; - - my $script = $self->SUPER::setupXserverScript($repoPath); - - $script .= unshiftHereDoc(<<' End-of-Here'); - # Ubuntu specific extension to stage3 xserver.sh - # use the old kbd keyboard driver instead of evdev - sed "s/\"evdev\"/,/\"kbd\"/" -i ${xfc} - testmkd /mnt/var/run/xauth - testmkd /mnt/var/lib/xkb - ln -sf /usr/bin/Xorg /mnt/etc/X11/X - End-of-Here - - return $script; -} - - -sub installNvidia -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh nvidia $distroName"); - -} - -sub installAti -{ - my $self = shift; - my $repopath = shift || "/opt/openslx/plugin-repo/xserver/"; - my $pkgpath = shift || "packages"; - - my $distroName = $self->{engine}->distroName(); - - system($repopath."/ubuntu-gfx-install.sh ati $distroName"); - -} - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm deleted file mode 100644 index 80dccbc9..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu_9.pm +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2008..2010 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver/OpenSLX/Distro/Ubuntu_9.pm -# - provides Ubuntu-specific overrides of the distro API for the xserver -# plugin. -# ----------------------------------------------------------------------------- -package xserver::OpenSLX::Distro::Ubuntu_9; - -use strict; -use warnings; - -use base qw(xserver::OpenSLX::Distro::Ubuntu_8); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -################################################################################ -### interface methods -################################################################################ - - -1; diff --git a/os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm b/os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm deleted file mode 100644 index b172dc22..00000000 --- a/os-plugins/plugins/xserver/OpenSLX/OSPlugin/xserver.pm +++ /dev/null @@ -1,396 +0,0 @@ -# Copyright (c) 2008 - OpenSLX GmbH -# -# This program is free software distributed under the GPL version 2. -# See http://openslx.org/COPYING -# -# If you have any feedback please consult http://openslx.org/feedback and -# send your suggestions, praise, or complaints to feedback@openslx.org -# -# General information about OpenSLX can be found at http://openslx.org/ -# ----------------------------------------------------------------------------- -# xserver.pm -# ----------------------------------------------------------------------------- -package OpenSLX::OSPlugin::xserver; - -use strict; -use warnings; - -use base qw(OpenSLX::OSPlugin::Base); - -use OpenSLX::Basics; -use OpenSLX::Utils; - -use File::Basename; - -################################################################################ -# if you have any questions regarding the concept of OS-plugins and their -# implementation, please drop a mail to: ot@openslx.com, or join the IRC-channel -# '#openslx' (on freenode). -################################################################################ -sub new -{ - my $class = shift; - - my $self = { - name => 'xserver', - }; - - return bless $self, $class; -} - -sub getInfo -{ - my $self = shift; - - return { - description => unshiftHereDoc(<<' End-of-Here'), - This plugin tries to configure the local Xorg-Server and - integrates binary graphics drivers (closed sourced) into the system. - Notice that you need to have kernel-headers installed to work properly. - in some cases. You need to download the driver packages yourself and - supply the download folder into the pkgpath option. - End-of-Here - precedence => 80, - }; -} - -sub getAttrInfo -{ # returns a hash-ref with information about all attributes supported - # by this specific plugin - my $self = shift; - - # This default configuration will be added as attributes to the default - # system, such that it can be overruled for any specific system by means - # of slxconfig. - return { - # attribute 'active' is mandatory for all plugins - 'xserver::active' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin be executed during boot? - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '1 means active - 0 means inactive', - default => '1', - }, - 'xserver::ddcinfo' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin use the ddcinfo (if available) for - the monitor/tft setup? Might help in scenarios with resolutions - configured much lower than physically possible. (0 ignore, 1 use) - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '0 ignore ddcinfo, 1 use ddcinfo if available', - default => '0', - }, - 'xserver::driver' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - force to use defined driver - End-of-Here - content_regex => undef, - content_descr => 'force to use defined driver', - default => undef, - }, - 'xserver::prefnongpl' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin use the non-gpl drivers for some graphic - adaptors if available (0 prefer gpl, 1 use the nongpl) - End-of-Here - content_regex => qr{^(0|1)$}, - content_descr => '0 prefer gpl, 1 use the nongpl', - default => '0', - }, - 'xserver::multihead' => { - applies_to_systems => 1, - applies_to_clients => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the 'xserver'-plugin configure multi-head setups of Xorg - for different scenarios and dynamically added displays - (not implemented yet) - End-of-Here - content_regex => undef, - content_descr => '', - default => '1', - }, - - # plugin specific attributes start here ... - - # stage1 - # Currently not needed in scenarios where distro specific packages are - # available, but for example in SUSE 10.2 we use this method - # -> provide downloaded packages here. - 'xserver::pkgpath' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - Path to downloaded ATI or Nvidia package - End-of-Here - content_regex => qr{^.+$}, # not empty - content_descr => 'Path to Nvidia or ATI packages', - default => '/root/xserver-pkgs', - }, - 'xserver::ati' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the non-gpl ATI drivers be available (installed in vendor-OS - not implemented yet)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1"', - default => '0', - }, - 'xserver::nvidia' => { - applies_to_vendor_os => 1, - description => unshiftHereDoc(<<' End-of-Here'), - should the non-gpl NVidia drivers be available (installed in vendor-OS - not implemented yet)? - End-of-Here - content_regex => qr{^0|1$}, - content_descr => '"0", "1"', - default => '0', - }, - #'xserver::matrox' => { - # applies_to_vendor_os => 1, - # description => unshiftHereDoc(<<' End-of-Here'), - # should the non-gpl Matrox drivers (e.g. for the Parhelia) be - # available (installed in vendor-OS)? - # End-of-Here - # content_regex => qr{^0|1$}, - # content_descr => '"0", "1"', - # default => '0', - #}, - }; -} - - -sub preInstallationPhase() -{ - my $self = shift; - my $info = shift; - - $self->{pluginRepositoryPath} = $info->{'plugin-repo-path'}; - $self->{pluginTempPath} = $info->{'plugin-temp-path'}; - $self->{openslxBasePath} = $info->{'openslx-base-path'}; - $self->{openslxConfigPath} = $info->{'openslx-config-path'}; - $self->{attrs} = $info->{'plugin-attrs'}; - $self->{vendorOsPath} = $info->{'vendor-os-path'}; - - - my $pkgpath = $self->{attrs}->{'xserver::pkgpath'}; - $pkgpath ||= ""; - my $installAti = $self->{attrs}->{'xserver::ati'}; - my $installNvidia = $self->{attrs}->{'xserver::nvidia'}; - - if (! -d $pkgpath && ($installAti == 1 || $installNvidia == 1)) { - print "\n\n * xserver::pkgpath: no such directory!\n"; - print " * xserver plugin can only install ATI or Nvidia driver\n"; - print " via operating system packaging (e.g. != SuSE-10.2)!\n"; - # exit 1 => xserver plugin is not getting installed because ati - # or nvidia where selected but are not installable! - # exit 1; - } - - if (-d $pkgpath && ($installNvidia == 1 || $installAti == 1)) { - system("cp -r $pkgpath $self->{pluginRepositoryPath}/packages"); - } - -} - - -sub installationPhase -{ # called while chrooted to the vendor-OS root in order to give the plugin - # a chance to install required files into the vendor-OS. - my $self = shift; - my $info = shift; - - # ehh... every plugin has it's own different installationPhase - # variable definition? - my $pluginRepoPath = $info->{'plugin-repo-path'}; - # The folder where the stage1-plugin should store all files - # required by the corresponding stage3 runlevel script. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $pluginTempPath = $info->{'plugin-temp-path'}; - # A temporary playground that will be cleaned up automatically. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $openslxBasePath = $info->{'openslx-base-path'}; - # the openslx base path (/opt/openslx) bind-mounted into the chroot - my $openslxConfigPath = $info->{'openslx-config-path'}; - # the openslx config path (/etc/opt/openlsx) bind-mounted into the - # chroot - my $attrs = $info->{'plugin-attrs'}; - # attributes in effect for this installation - my $vendorOSName = $self->{'os-plugin-engine'}->{'vendor-os-name'}; - - # write the distro specific extension (inclusion) of XX_xserver.sh - my $script = $self->{distro}->setupXserverScript($pluginRepoPath); - spitFile("$pluginRepoPath/xserver.sh", $script); - - # if defined: build nvidia or ati binarys - my $pluginFilesPath = - "$openslxBasePath/lib/plugins/$self->{'name'}/files"; - my $installationPath = "$pluginRepoPath/"; - my $binDrivers = 0; - my $engine = $self->{'os-plugin-engine'}; - - # removeLinks is to remove Links to the files - # TODO: In future versions this call can be removed - deprecated version - $self->removeLinks(); - - if ($attrs->{'xserver::nvidia'} == 1 || $attrs->{'xserver::ati'} == 1 ) { - if($vendorOSName =~ /.*?ubuntu.*?/i) - { - if($vendorOSName =~ /.*?8.10|9.04|9.10.*?/i) - { - copyFile("$pluginFilesPath/ubuntu-ng-gfx-install.sh", - "$installationPath"); - rename("$installationPath/ubuntu-ng-gfx-install.sh", - "$installationPath/ubuntu-gfx-install.sh"); - } - else - { - copyFile("$pluginFilesPath/ubuntu-gfx-install.sh", "$installationPath"); - } - } - $binDrivers = 1; - } - if ($attrs->{'xserver::ati'} == 1 ) { - $self->{distro}->installAti($pluginRepoPath,"packages"); - } - if ($attrs->{'xserver::nvidia'} == 1 ) { - $self->{distro}->installNvidia($pluginRepoPath,"packages"); - } - - if ($binDrivers == 1) { - $self->ldconf($info); - system("chmod -R 755 $installationPath"); - } - - return; -} - -sub removalPhase -{ # called while chrooted to the vendor-OS root in order to give the plugin - # a chance to uninstall no longer required files from the vendor-OS. - my $self = shift; - my $info = shift; - - my $pluginRepoPath = $info->{'plugin-repo-path'}; - # The folder where the stage1-plugin should store all files - # required by the corresponding stage3 runlevel script. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - my $pluginTempPath = $info->{'plugin-temp-path'}; - # A temporary playground that will be cleaned up automatically. - # As this method is being executed while chrooted into the vendor-OS, - # this path is relative to that root (i.e. directly usable). - - - # TODO (in far future): Remove - linking is deprecated - # Make sure nobody has installed the old plugin version - $self->removeLinks(); - - return; -} - - - -# Create ld.so.conf for the binary drivers -sub ldconf -{ - my $self = shift; - my $info = shift; - - my $attrs = $info->{'plugin-attrs'}; - my $ldincl = $info->{'plugin-repo-path'}.'/'; - my $ldpl = "/etc/ld.conf.preload"; - my $ldconf = "/etc/ld.so.conf"; - my $ldcache = ""; - - if( -d $ldincl.'nvidia/') { - - ## WRITE ld.so.conf ## - - open(IN,'>'.$ldincl.'nvidia/ld.so.conf'); - print IN $ldincl."nvidia/usr/lib\n".$ldincl.'nvidia/usr/X11R6/lib'; - close(IN); - - ## CREATE DIFFERENT 'ld.so.cache' ## - - $ldcache = $ldincl.'/nvidia/ld.so.cache'; - system('sed -e "1s,^,include '.$ldincl.'nvidia/ld.so.conf\n,g" -i '.$ldconf); - #print "Calling ldconfig to create $ldcache ... Please Wait\n"; - system('ldconfig -C '.$ldcache); - system('sed -e "1d" -i '.$ldconf); - } - - - if( -d $ldincl.'ati/') { - open(IN,'>'.$ldincl.'ati/ld.so.conf'); - print IN $ldincl."ati/usr/lib\n".$ldincl.'ati/usr/X11R6/lib'; - close(IN); - - $ldcache = $ldincl.'/ati/ld.so.cache'; - system('sed -e "1s,^,include '.$ldincl.'ati/ld.so.conf\n,g" -i '.$ldconf); - #print "Calling ldconfig to create $ldcache ... Please Wait\n"; - system('ldconfig -C '.$ldcache); - system('sed -e "1d" -i '.$ldconf); - } -} - - -# deprecated -# removes linked libraries from /usr/lib/ -sub removeLinks -{ - my $instFolders = "/usr/lib"; - if(-d "/usr/X11R6/lib") { - $instFolders .= " /usr/X11R6/lib"; - } - my $divertFolder = "/var/X11R6/lib"; - my $pluginFolder = "/opt/openslx/plugin-repo/xserver"; - - # get all previously installed links - my @linkedFiles = - `find $instFolders -lname "$divertFolder*" -o -lname "$pluginFolder*" `; - - - # also remove _MESA backup files - my @backupFiles = - `find $instFolders -name "*_MESA.so*"`; - my $origfile = ''; - for my $file (@backupFiles) { - $origfile = $file; - $file =~ s/_MESA//; - rename($origfile,$file); - } - unlink "/usr/lib/libGL.so", "/usr/lib/libGL.so.1"; - symlink "/usr/lib/libGL.so.1.2", "/usr/lib/libGL.so.1"; - symlink "/usr/lib/libGL.so.1.2", "/usr/lib/libGL.so"; - - - foreach my $file (@linkedFiles) { - chomp($file); - unlink $file; - } - - # this should not print any file at all ;-( - my @files = `find $instFolders -lname "$divertFolder*" -o -lname "$pluginFolder*" `; - if ( $#files > 0 ) { - print "Links were not removed properly! Exiting!\n"; - my $bla; - foreach (@files) { - chomp($bla = $_); - print $bla; - } - exit(1); - } - return; -} - -1; |