summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/xserver/files/nvidia-install.sh
blob: b07cd45726a9b454a7b2c48f0b5b7796fc2d87e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/sh

##########################################################
# Installs NVIDIA binary drivers into openslx plugin-repo
##########################################################
PLUGIN_PATH="/opt/openslx/plugin-repo/xserver"
TMP_FOLDER="/opt/openslx/plugin-repo/xserver/nvidia/temp"
PKG_FOLDER="/opt/openslx/plugin-repo/xserver/packages"
MODULES_FOLDER="/opt/openslx/plugin-repo/xserver/modules"

#TODO: check if we still have .../xserver/nvidia folder

mkdir -p ${TMP_FOLDER} ${MODULES_FOLDER}
cd ${PKG_FOLDER}
FILE=$(ls NVIDIA-Linux-*|sort|tail -n 1)

echo "  * extracting package"
cd ${TMP_FOLDER}
${PKG_FOLDER}/${FILE} -x > /dev/null
#todo: check if it extracted like it should...

FILEPATH=$(echo ${FILE}|sed 's/.run//')
NVPATH="${TMP_FOLDER}/${FILEPATH}"
mv "${NVPATH}/usr" "${PLUGIN_PATH}/nvidia"

echo "  * prepare kernel module"
UNAME_R=$(find /lib/modules/2.6* -maxdepth 0|sed 's,/lib/modules/,,g'|sort|tail -n1)
cd ${PLUGIN_PATH}/nvidia/usr/src/nv/
# dont load module
sed -e '/.* modprobe .*/d' \
 -i ${PLUGIN_PATH}/nvidia/usr/src/nv/Makefile.kbuild \
 -i ${PLUGIN_PATH}/nvidia/usr/src/nv/Makefile.nvidia \
 -i ${PLUGIN_PATH}/nvidia/usr/src/nv/makefile
# fake kernel
# Bastian: the SYSSRC way didnt work in chroot!
sed -e "s/..shell uname -r./${UNAME_R}/" \
 -i ${PLUGIN_PATH}/nvidia/usr/src/nv/Makefile.kbuild \
 -i ${PLUGIN_PATH}/nvidia/usr/src/nv/Makefile.nvidia \
 -i ${PLUGIN_PATH}/nvidia/usr/src/nv/makefile

echo "  * compile kernel module"
make module > /dev/null 2&>1

# somehow $? isn't trustworthy...
if [ -e nvidia.ko ]; then
  echo "  * Successfully built module nvidia.ko!"
  mv nvidia.ko ${MODULES_FOLDER}
else
  echo -e "\n\n  * Something went wrong while building nvidia.ko module!\n\n\n"
  #TODO: handle this error => mark plugin as not installed
fi

#TODO: remove comment
#echo "  * cleanup"
#rm -rf ${TMP_FOLDER} ${PLUGIN_PATH}/nvidia/usr/src

# TODO: perhaps we don't need this part! - it's very slow
#/./${TEMP_FOLDER}/nvidia-files/nvidia-installer -s --x-prefix=${TEMP_FOLDER} \
# --no-runlevel-check --no-abi-note --no-x-check\
# --no-rpms --no-recursion \
# --x-module-path=${TEMP_FOLDER}/usr/lib/xorg/modules\
# --x-library-path=${TEMP_FOLDER}/usr/lib\
# --opengl-prefix=${TEMP_FOLDER}/usr\
# --opengl-libdir=lib\
# --utility-prefix=${TEMP_FOLDER}/usr\
# --utility-libdir=lib\
# --documentation-prefix=${TEMP_FOLDER}/usr\
# --no-kernel-module \
## --kernel-install-path=${TEMP_FOLDER}/lib/modules/${KVERS}/video \
# 2>&1 > /dev/null

#mv ${TEMP_FOLDER}/src/usr/src ${TEMP_FOLDER}/usr/
#rm -rf ${TEMP_FOLDER}/usr/share ${TEMP_FOLDER}/src/