summaryrefslogtreecommitdiffstats
path: root/remote/modules/nvidia_libs/nvidia_libs.build
diff options
context:
space:
mode:
authorJonathan Bauer2014-02-27 12:09:02 +0100
committerJonathan Bauer2014-02-27 12:09:02 +0100
commit1e42a9f149fe2e27bdee4619bfb06c0c1b93c376 (patch)
treef6c2cb7a71a287dad5afa0a559f95fcb9dc6bdb2 /remote/modules/nvidia_libs/nvidia_libs.build
parentadded chroot.inc (diff)
downloadtm-scripts-1e42a9f149fe2e27bdee4619bfb06c0c1b93c376.tar.gz
tm-scripts-1e42a9f149fe2e27bdee4619bfb06c0c1b93c376.tar.xz
tm-scripts-1e42a9f149fe2e27bdee4619bfb06c0c1b93c376.zip
uhm
Diffstat (limited to 'remote/modules/nvidia_libs/nvidia_libs.build')
-rw-r--r--remote/modules/nvidia_libs/nvidia_libs.build111
1 files changed, 20 insertions, 91 deletions
diff --git a/remote/modules/nvidia_libs/nvidia_libs.build b/remote/modules/nvidia_libs/nvidia_libs.build
index 49f78d5b..1a7e9a5b 100644
--- a/remote/modules/nvidia_libs/nvidia_libs.build
+++ b/remote/modules/nvidia_libs/nvidia_libs.build
@@ -6,92 +6,14 @@ fetch_source() {
build() {
local KERNELSRCDIR="$MODULE_DIR/../kernel/ksrc" # kernel sources
- local TEMPDIR="$MODULE_DIR/temp"
- local ROOTLOWERDIR="/"
- local ROOTUPPERDIR="$MODULE_BUILD_DIR"
- local ROOTBINDDIR="$TEMPDIR/rootbind"
- local ROOTMOUNTDIR="$TEMPDIR/rootmount"
- local BINDMOUNTS="/dev /proc /run /sys"
local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$ROOTMOUNTDIR/NVIDIA"
- local NVEXTRACTDIR="/NVIDIA" # This is relative to the chroot.
-
- make_dirs () {
- [ -d "$TEMPDIR" ] && rm -rf "$TEMPDIR"
- mkdir -p "$TEMPDIR" || perror "Could not create base directory for mount directories $TEMPDIR."
- for DIR in "$ROOTBINDDIR" "$ROOTMOUNTDIR"; do
- mkdir -p "$DIR" || perror "Could not create directory for mount directory $DIR."
- done
- }
-
- mount_dirs () {
- mount -o bind "$ROOTLOWERDIR" "$ROOTBINDDIR" || perror "Could not mount (bind) $ROOTLOWERDIR to $ROOTBINDDIR."
- mount -o remount,ro "$ROOTBINDDIR" || perror "Could not remount $ROOTBINDDIR ro read-only."
- mount -t overlayfs overlayfs -o lowerdir="$ROOTBINDDIR",upperdir="$ROOTUPPERDIR" "$ROOTMOUNTDIR" \
- || perror "Could not mount (overlayfs) $ROOTLOWERDIR, $ROOTUPPERDIR to $BINDDIR."
- for MOUNT in $BINDMOUNTS; do
- mount -o bind "$MOUNT" "$ROOTMOUNTDIR/$MOUNT" || perror "Could not mount (bind) $MOUNTS into chroot root dir."
- done
- }
-
- # We inject a bashrc to be executed later within the chroot.
- gen_bashrc () {
- local COMMON_OPTIONS=' --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent '
-
- cat >"$ROOTMOUNTDIR/$HOME/.bashrc"<<-EOF
- echo "chroot successful."
- alias ll='ls -alF' # A little convenience for debugging purposes.
- PS1='\[\e[1;33m\]chroot@\h:\w\$ \[\e[1;32m\]' # To recognize the chroot instantly when debugging (yellow on black).
- cd "$NVEXTRACTDIR"
- ./nvidia-installer $COMMON_OPTIONS --no-kernel-module # Do the work!
- exit # Out-comment this for debugging: Then script stays in chroot.
- EOF
- }
-
- unpack_nvidia () {
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
- }
-
- umount_dirs () {
- # Let's tidy the place, or at least the mounts: Otherwise these would stack up, and we do not like that, don't we.
- for MOUNT in $BINDMOUNTS; do
- umount "$ROOTMOUNTDIR/$MOUNT" || pwarning "Could not unmount $ROOTMOUNTDIR/$MOUNT!"
- done
- umount "$ROOTMOUNTDIR" || pwarning "Could not unmount $ROOTMOUNTDIR!"
- umount "$ROOTBINDDIR" || pwarning "Could not unmount $ROOTBINDDIR!"
- }
-
- handle_whiteouts () {
- local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
- rm -f -- "$WHOUTEOUT_LIST"
- mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
- pdebug "Searching for overlayfs-whiteouts ..."
- for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
- pdebug "Whiteout found: $WHITEOUT"
- echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
- rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
- done
- }
-
- clean_temp () {
- rm -rf "$TEMPDIR" || perror "Could not clean/delete temp directory $TEMPDIR."
- rm -rf "$ROOTUPPERDIR/NVIDIA"
- }
-
- # Main stuff
- pdebug "Generating temporary directories ..."
- make_dirs
- pdebug "Mounting directories ..."
- mount_dirs
-
- pdebug "Injecting .bashrc into later chroot ..."
- gen_bashrc
-
+ local NVIDIAEXTRACTDIR="$MODULE_BUILD_DIR/NVIDIA"
+
pdebug "Unpacking NVidia-Installer ..."
- unpack_nvidia
+ [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
+ sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
- pinfo "Ready to chroot - compiling may take some time."
+ pinfo "Ready to chroot - may take some time."
pdebug "--- chroot ---------------------------------------------------------------------"
pdebug "- -"
pdebug "- Notice: This may take a while! -"
@@ -102,17 +24,24 @@ build() {
pdebug "- This does _not_ mean the library module compilation was unsuccessful! -"
pdebug "- -"
pdebug "--------------------------------------------------------------------------------"
- chroot "$ROOTMOUNTDIR"
+
+ chroot_run "${MODULE_BUILD_DIR}" <<-EOF
+ /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --no-kernel-module
+ EOF
pinfo "chroot terminated, cleaning up"
- pdebug "Unmount directories ..."
- umount_dirs
-
pdebug "Handling whiteouts ..."
- handle_whiteouts
-
- pdebug "Cleaning / deleting temp directories."
- clean_temp
+ local WHITEOUT_LIST="${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
+ rm -f -- "$WHOUTEOUT_LIST"
+ mkdir -p "$(dirname "$WHITEOUT_LIST")" || perror "Could not create $(dirname "$WHITEOUT_LIST")"
+ pdebug "Searching for overlayfs-whiteouts ..."
+ for WHITEOUT in $(find "$MODULE_BUILD_DIR" -lname "(overlay-whiteout)"); do
+ pdebug "Whiteout found: $WHITEOUT"
+ echo "/./${WHITEOUT#$MODULE_BUILD_DIR}" >> "$WHITEOUT_LIST"
+ rm -f -- "$WHITEOUT" || perror "Could not delete whiteout $WHITEOUT!"
+ done
+
+ rm -rf "$MODULE_BUILD_DIR/NVIDIA"
}
post_copy() {