summaryrefslogtreecommitdiffstats
path: root/core/modules
diff options
context:
space:
mode:
authorSimon Rettberg2019-04-26 11:24:14 +0200
committerroot2019-04-26 11:24:14 +0200
commit24fb4ad142f7cb932a5e47ee80c9bbfc10a758c0 (patch)
tree5873fcbd617e6ea13f1c1bdc6145211441fbf764 /core/modules
parentSupport multi-target targets with @ syntax (diff)
downloadmltk-24fb4ad142f7cb932a5e47ee80c9bbfc10a758c0.tar.gz
mltk-24fb4ad142f7cb932a5e47ee80c9bbfc10a758c0.tar.xz
mltk-24fb4ad142f7cb932a5e47ee80c9bbfc10a758c0.zip
[nvidia*/rfs-s31] Support shipping multiple driver versions
Diffstat (limited to 'core/modules')
-rw-r--r--core/modules/kdm/data/etc/systemd/system/kdm.service2
-rw-r--r--core/modules/lightdm/data/etc/systemd/system/lightdm.service2
-rw-r--r--core/modules/nvidia-common/module.build16
-rw-r--r--core/modules/nvidia-common/module.conf3
-rw-r--r--core/modules/nvidia-kernel/module.build12
-rw-r--r--core/modules/nvidia-kernel/module.conf9
-rwxr-xr-xcore/modules/nvidia-libs/data/addon-init (renamed from core/modules/nvidia_libs/data/addon-init)0
-rw-r--r--core/modules/nvidia-libs/module.build11
-rw-r--r--core/modules/nvidia-libs/module.conf (renamed from core/modules/nvidia_libs/module.conf)7
-rw-r--r--core/modules/nvidia-libs/module.conf.ubuntu (renamed from core/modules/nvidia_libs/module.conf.ubuntu)0
-rw-r--r--core/modules/nvidia_kernel/module.build97
-rw-r--r--core/modules/nvidia_kernel/module.conf12
-rw-r--r--core/modules/nvidia_libs/module.build47
13 files changed, 48 insertions, 170 deletions
diff --git a/core/modules/kdm/data/etc/systemd/system/kdm.service b/core/modules/kdm/data/etc/systemd/system/kdm.service
index e77d1cbd..97749a16 100644
--- a/core/modules/kdm/data/etc/systemd/system/kdm.service
+++ b/core/modules/kdm/data/etc/systemd/system/kdm.service
@@ -1,7 +1,7 @@
[Unit]
Description=KDM Display Manager
Conflicts=getty@tty7.service
-After=systemd-user-sessions.service getty@tty7.service setup-slx-addon@nvidia_libs.service setup-slx-addon@vmware.service
+After=systemd-user-sessions.service getty@tty7.service load-gfx-driver.service setup-slx-addon@vmware.service setup-slx-addon@virtualbox.service
[Service]
ExecStartPre=-/opt/openslx/bin/killall fbsplash
diff --git a/core/modules/lightdm/data/etc/systemd/system/lightdm.service b/core/modules/lightdm/data/etc/systemd/system/lightdm.service
index 898367fd..6acaaeb7 100644
--- a/core/modules/lightdm/data/etc/systemd/system/lightdm.service
+++ b/core/modules/lightdm/data/etc/systemd/system/lightdm.service
@@ -2,7 +2,7 @@
Description=LightDM Display Manager
Conflicts=getty@tty7.service
Requires=dev-tty7.device
-After=dev-tty7.device systemd-user-sessions.service setup-slx-addon@nvidia_libs.service setup-slx-addon@vmware.service
+After=dev-tty7.device systemd-user-sessions.service load-gfx-driver.service setup-slx-addon@vmware.service setup-slx-addmon@virtualbox.service
[Service]
ExecStart=/usr/sbin/lightdm
diff --git a/core/modules/nvidia-common/module.build b/core/modules/nvidia-common/module.build
index d43ce83f..9bf73af8 100644
--- a/core/modules/nvidia-common/module.build
+++ b/core/modules/nvidia-common/module.build
@@ -39,6 +39,10 @@ build() {
/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 \
--kernel-source-path "/$KERNEL_HEADERS_DIR"
+ grep -qF '.ko failed to build' /var/log/nvidia-installer.log \
+ || /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
exit 0 # Fake it since it will try to load the module and probably fail
EOF
if grep -qF '.ko failed to build' "${builddir}/var/log/nvidia-installer.log"; then
@@ -47,14 +51,14 @@ build() {
fi
pinfo "chroot terminated, cleaning up"
- # move whiteout list to its /opt/openslx/etc/nvidia.whiteout
+ # move whiteout list to its /opt/openslx/etc/nvidia.whiteout (inside $builddir, for lib target)
if [ -e "${builddir}/overlay.whiteout.list" ]; then
mkdir -p "${builddir}/opt/openslx/etc"
mv "${builddir}/overlay.whiteout.list" "${builddir}/opt/openslx/etc/nvidia.whiteout"
fi
-# SNIP
- NVIDIA_MODULES="${builddir}/lib/modules/nvidia/${version}"
+ # Kernel related - outside of version subdir ($builddir)
+ NVIDIA_MODULES="${MODULE_BUILD_DIR}/lib/modules/nvidia/${version}"
mkdir -p "$NVIDIA_MODULES"
pinfo "Copying kernel modules..."
for file in nvidia.ko nvidia-uvm.ko nvidia-modeset.ko nvidia-drm.ko; do
@@ -65,10 +69,10 @@ build() {
cp "$RESULT" "$NVIDIA_MODULES" || perror "Could not copy $file"
done
- mkdir -p "${builddir}/drm.cfg.d"
- drmfile="${builddir}/drm.cfg.d/$(( filenum++ ))-nvidia"
+ mkdir -p "${MODULE_BUILD_DIR}/drm.cfg.d"
+ drmfile="${MODULE_BUILD_DIR}/drm.cfg.d/$(( filenum++ ))-nvidia-$version"
cat > "$drmfile" <<-BLOFF
- @nvidia-${version} acpi_ipmi nvidia-$version/nvidia.ko nvidia-$version/nvidia-uvm.ko nvidia-$version/nvidia-modeset.ko nvidia-$version/nvidia-drm.ko
+ @nvidia-${version} acpi_ipmi nvidia/$version/nvidia.ko nvidia/$version/nvidia-uvm.ko nvidia/$version/nvidia/modeset.ko nvidia-$version/nvidia/drm.ko
@nvidia-${version}_fallback nouveau
BLOFF
if ! [ -s "${builddir}/supportedchips.html" ]; then
diff --git a/core/modules/nvidia-common/module.conf b/core/modules/nvidia-common/module.conf
index 7645cb2e..f1327ca8 100644
--- a/core/modules/nvidia-common/module.conf
+++ b/core/modules/nvidia-common/module.conf
@@ -2,9 +2,6 @@
REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/%VERSION%/NVIDIA-Linux-x86_64-%VERSION%.run"
REQUIRED_HTML="http://download.nvidia.com/XFree86/Linux-x86_64/%VERSION%/README/supportedchips.html"
-# Here? No REQUIRED_ prefix so it won't get cleaned...
-:; NVIDIA_VERSIONS="418.56 390.116"
-
REQUIRED_MODULES="
kernel
"
diff --git a/core/modules/nvidia-kernel/module.build b/core/modules/nvidia-kernel/module.build
new file mode 100644
index 00000000..38c96a75
--- /dev/null
+++ b/core/modules/nvidia-kernel/module.build
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+module_load() {
+ [ -z "$NVIDIA_VERSIONS" ] && perror "No NVIDIA_VERSIONS set in config"
+ local version
+ for version in $NVIDIA_VERSIONS; do
+ [ -d "${ROOT_DIR}/tmp/work/nvidia-common/build/${version}" ] || perror "nvidia-common did not build $version"
+ done
+ # XXX Now we change out build dir to that of nvidia-common
+ MODULE_BUILD_DIR="${ROOT_DIR}/tmp/work/nvidia-common/build"
+}
+
diff --git a/core/modules/nvidia-kernel/module.conf b/core/modules/nvidia-kernel/module.conf
new file mode 100644
index 00000000..193994e3
--- /dev/null
+++ b/core/modules/nvidia-kernel/module.conf
@@ -0,0 +1,9 @@
+#!/bin/bash
+REQUIRED_DIRECTORIES="
+ /lib/modules/nvidia
+ /drm.cfg.d
+"
+REQUIRED_MODULES="
+ kernel
+ nvidia-common
+"
diff --git a/core/modules/nvidia_libs/data/addon-init b/core/modules/nvidia-libs/data/addon-init
index 061bff6b..061bff6b 100755
--- a/core/modules/nvidia_libs/data/addon-init
+++ b/core/modules/nvidia-libs/data/addon-init
diff --git a/core/modules/nvidia-libs/module.build b/core/modules/nvidia-libs/module.build
new file mode 100644
index 00000000..b35e6fd2
--- /dev/null
+++ b/core/modules/nvidia-libs/module.build
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+module_load() {
+ [ -z "$VERSION" ] && perror "Not run from an @ target"
+ local SRC
+ SRC="${ROOT_DIR}/tmp/work/nvidia-common/build/$VERSION"
+ [ -d "$SRC" ] || perror "nvidia-common did not build $VERSION"
+ # XXX Now we override the MODULE_BUILD_DIR, where mltk will then grab alle the required files from
+ MODULE_BUILD_DIR="$SRC"
+}
+
diff --git a/core/modules/nvidia_libs/module.conf b/core/modules/nvidia-libs/module.conf
index ccb1e3ed..f5ca87eb 100644
--- a/core/modules/nvidia_libs/module.conf
+++ b/core/modules/nvidia-libs/module.conf
@@ -1,7 +1,4 @@
#!/bin/bash
-REQUIRED_VERSION="410.93"
-REQUIRED_NVIDIA="NVIDIA-Linux-x86_64-$REQUIRED_VERSION.run"
-REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/$REQUIRED_NVIDIA"
REQUIRED_FILES="
/etc/OpenCL/vendors/nvidia.icd
@@ -19,3 +16,7 @@ REQUIRED_DIRECTORIES="
/usr/share/X11
"
+REQUIRED_MODULES="
+ nvidia-common
+"
+
diff --git a/core/modules/nvidia_libs/module.conf.ubuntu b/core/modules/nvidia-libs/module.conf.ubuntu
index 5135d91e..5135d91e 100644
--- a/core/modules/nvidia_libs/module.conf.ubuntu
+++ b/core/modules/nvidia-libs/module.conf.ubuntu
diff --git a/core/modules/nvidia_kernel/module.build b/core/modules/nvidia_kernel/module.build
deleted file mode 100644
index 3c8baa8d..00000000
--- a/core/modules/nvidia_kernel/module.build
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/bash
-fetch_source() {
- local url="$REQUIRED_URL_BASE/$REQUIRED_VERSION/$REQUIRED_NVIDIA"
- mkdir -p src 2>/dev/null
- cd src || perror "Could not change into src directory."
- download "$REQUIRED_URL_BASE/$REQUIRED_VERSION/README/supportedchips.html"
- download "$url"
-}
-
-build() {
- local ROOTUPPERDIR="$MODULE_WORK_DIR/rootupper"
-
- local NVIDIA="$MODULE_WORK_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA"
-
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- pinfo "Unpacking NVidia archive ($NVIDIA) ..."
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
-
- pinfo "Ready to chroot - compiling may take some time."
- pdebug "--- chroot ---------------------------------------------------------------------"
- pdebug "- -"
- pdebug "- Notice: This may take a while! -"
- pdebug "- -"
- pdebug "- Please keep note the Nvidia installer _will_ complain about -"
- pdebug "- several warnings and errors. It will do this in any case. -"
- pdebug "- -"
- pdebug "- This does _not_ mean the kernel module compilation was unsuccessful! -"
- pdebug "- -"
- pdebug "--------------------------------------------------------------------------------"
-
-
- chroot_run "$ROOTUPPERDIR" <<-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 --kernel-source-path /"$KERNEL_HEADERS_DIR" # Do the work!
- # fake success since the installer will exit with an error due to the module not loading properly.
- exit 0
- EOF
- pinfo "chroot terminated."
-
- local file
- local RESULT
- local NVIDIA_MODULES="$MODULE_BUILD_DIR/lib/modules/nvidia/"
- mkdir -p "$NVIDIA_MODULES"
- pinfo "Copying kernel modules..."
- for file in nvidia.ko nvidia-uvm.ko nvidia-modeset.ko nvidia-drm.ko; do
- RESULT=$(find "$ROOTUPPERDIR/NVIDIA/kernel" -name "$file" | head -n 1)
- [ -z "$RESULT" ] && perror "Could not find built module $file in ./NVIDIA/kernel"
- pinfo "Fetching ${file}..."
- strip -g "$RESULT" || pwarning "Could not strip $file"
- cp "$RESULT" "$NVIDIA_MODULES" || perror "Could not copy $file"
- done
-
- rm -rf "$MODULE_BUILD_DIR/NVIDIA"
-
- mkdir -p "$MODULE_BUILD_DIR/drm.cfg.d"
- local drmfile="$MODULE_BUILD_DIR/drm.cfg.d/00-nvidia"
- cat > "$drmfile" <<-BLOFF
- @nvidia acpi_ipmi nvidia/nvidia.ko nvidia/nvidia-uvm.ko nvidia/nvidia-modeset.ko nvidia/nvidia-drm.ko
- @nvidia_fallback nouveau
-BLOFF
- if ! [ -s "$MODULE_WORK_DIR/src/supportedchips.html" ]; then
- pwarning "No supportedchips.html -- using wildcard drm.cfg"
- echo "10de @nvidia" >> "$drmfile"
- else
- local mode line name dev version
- pinfo "Creating drm.cfg"
- mode=0
- version=
- while read -r line; do
- if [[ "$line" =~ '<a name="legacy_' ]]; then
- version=$(echo "$line" | sed -r 's/^.*name="legacy_([^"]+)".*$/\1/')
- break # For now, we stop here; later on we could support legacy drivers
- # By appending $version below and then having different locations for
- # the modules, and in stage3.2 load different sqfs containers
- elif [[ "$mode" = 0 ]] && [[ "$line" =~ ^'<tr' ]]; then
- mode=1
- elif [[ "$mode" = 1 ]] && [[ "$line" =~ ^'<td' ]]; then
- mode=2
- name=$(echo "$line" | sed -r 's/^.*<td[^>]*>([^<]+)<.*$/\1/')
- elif [[ "$mode" = 2 ]] && [[ "$line" =~ ^'<td'[^'>']*'>'[0-9A-F]{4}'<' ]]; then
- mode=0
- dev=$(echo "$line" | sed -r 's/^.*<td[^>]*>([0-9A-Fa-f]{4})<.*$/\1/' | tr 'A-Z' 'a-z')
- echo "10de:$dev @nvidia$version"
- else
- mode=0
- name=
- dev=
- fi
- done < "$MODULE_WORK_DIR/src/supportedchips.html" >> "$drmfile"
- fi
-
-}
-
-post_copy() {
- :
-}
-
diff --git a/core/modules/nvidia_kernel/module.conf b/core/modules/nvidia_kernel/module.conf
deleted file mode 100644
index 26d5a160..00000000
--- a/core/modules/nvidia_kernel/module.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-REQUIRED_VERSION="410.93"
-REQUIRED_NVIDIA="NVIDIA-Linux-x86_64-$REQUIRED_VERSION.run"
-REQUIRED_URL_BASE="http://download.nvidia.com/XFree86/Linux-x86_64"
-
-REQUIRED_DIRECTORIES="
- /lib/modules/nvidia
- /drm.cfg.d
-"
-REQUIRED_MODULES="
- kernel
-"
diff --git a/core/modules/nvidia_libs/module.build b/core/modules/nvidia_libs/module.build
deleted file mode 100644
index f7dfcda9..00000000
--- a/core/modules/nvidia_libs/module.build
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-fetch_source() {
- mkdir -p src
- cd src || perror "Could not change into src directory."
- download "$REQUIRED_URL"
- cd ..
-}
-
-build() {
- local NVIDIA="${MODULE_WORK_DIR}/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$MODULE_BUILD_DIR/NVIDIA"
-
- pdebug "Unpacking NVidia-Installer ..."
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
-
- pinfo "Ready to chroot - may take some time."
- pdebug "--- chroot ---------------------------------------------------------------------"
- pdebug "- -"
- pdebug "- Notice: This may take a while! -"
- pdebug "- -"
- pdebug "- Please keep note the Nvidia installer _will_ complain about -"
- pdebug "- several warnings and errors. It will do this in any case. -"
- pdebug "- -"
- pdebug "- This does _not_ mean the library module compilation was unsuccessful! -"
- pdebug "- -"
- pdebug "--------------------------------------------------------------------------------"
-
- 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"
-
- # move whiteout list to its /opt/openslx/etc/nvidia.whiteout
- if [ -e "${MODULE_BUILD_DIR}/overlay.whiteout.list" ]; then
- mkdir -p "${MODULE_BUILD_DIR}/opt/openslx/etc"
- mv "${MODULE_BUILD_DIR}/overlay.whiteout.list" "${MODULE_BUILD_DIR}/opt/openslx/etc/nvidia.whiteout"
- fi
-
-
- rm -rf "$MODULE_BUILD_DIR/NVIDIA"
-}
-
-post_copy() {
- :
-}
-