summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/xserver/OpenSLX/Distro
diff options
context:
space:
mode:
Diffstat (limited to 'os-plugins/plugins/xserver/OpenSLX/Distro')
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm24
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm317
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10_2.pm2
-rw-r--r--os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm17
4 files changed, 39 insertions, 321 deletions
diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm
index b0fc67e3..879af5ea 100644
--- a/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Base.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -53,9 +53,27 @@ sub setupXserverScript
my $pathInfo = $self->XserverPathInfo();
my $configFile = $pathInfo->{config};
- my $script = unshiftHereDoc(<<" End-of-Here");
+ my $script = unshiftHereDoc(<<' End-of-Here');
# xserver.sh (base part)
- # written by OpenSLX-plugin 'xserver', repoPath is $repoPath
+ # written by OpenSLX-plugin 'xserver' (via xserver/Distro/Base.pm module)
+
+ 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
diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm
index 61372d54..6ceb0e91 100644
--- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2008 - OpenSLX GmbH
+# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -38,324 +38,19 @@ sub setupXserverScript
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
+ # Xorg hardware is autodetected, so no module information provided
+ sed -e "/Section \"Device\"/,/EndSection/d" -i ${xfc}
testmkd /mnt/var/lib/xkb/compiled
- testmkd /mnt/var/X11R6/bin
+ testmkd /mnt/var/lib/X11
testmkd /mnt/var/lib/xdm/authdir/authfiles 0700
- ln -s /usr/bin/Xorg /mnt/var/X11R6/bin/X
+ ln -s /usr/bin/Xorg /mnt/var/lib/X11/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_10_2.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10_2.pm
index 18d8c029..f72ba877 100644
--- a/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10_2.pm
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Suse_10_2.pm
@@ -8,7 +8,7 @@
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
-# xserver/OpenSLX/Distro/Suse.pm
+# xserver/OpenSLX/Distro/Suse_10_2.pm
# - provides SUSE-specific overrides of the Distro API for the xserver
# plugin.
# -----------------------------------------------------------------------------
diff --git a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm
index 728e6a03..e4cf1905 100644
--- a/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm
+++ b/os-plugins/plugins/xserver/OpenSLX/Distro/Ubuntu.pm
@@ -48,16 +48,21 @@ sub setupXserverScript
my $script = $self->SUPER::setupXserverScript($repoPath);
- $script .= unshiftHereDoc(<<' End-of-Here');
+ # 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 "\n${x_srvlayout}" | sed "/ Screen /d" >> ${xfc}
+
testmkd /mnt/var/run/xauth
testmkd /mnt/var/lib/xkb
ln -sf /usr/bin/Xorg /mnt/etc/X11/X
- # newer Xorgs do not need predefined configuration file, not needed if
- # XserverPathInfo gets implemented ...
- sed -e "1i# xorg.conf not needed in most cases for Xorg 1.7+" \
- /mnt/etc/X11/xorg.conf >/etc/X11/xorg.openslx 2>/dev/null
- rm /mnt/etc/X11/xorg.conf 2>/dev/null
End-of-Here
return $script;