summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2018-04-05 16:58:50 +0200
committerRobert Hensing <robert@roberthensing.nl>2018-04-05 17:00:00 +0200
commit30bff42231ae088d7f567bda5b9af9a3905999bf (patch)
tree14669b9e7c940208f1bfbf7bda564a6bee072f1b
parent59ddb3ebfbe43625a36d4863739280cedf88c404 (diff)
downloadnixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.tar
nixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.tar.gz
nixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.tar.bz2
nixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.tar.lz
nixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.tar.xz
nixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.tar.zst
nixpkgs-30bff42231ae088d7f567bda5b9af9a3905999bf.zip
linux module handling: support kernels without modules
-rw-r--r--pkgs/build-support/kernel/modules-closure.sh14
-rw-r--r--pkgs/os-specific/linux/kmod/aggregator.nix6
2 files changed, 20 insertions, 0 deletions
diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh
index 8287c1672d0..9a49d42cdc1 100644
--- a/pkgs/build-support/kernel/modules-closure.sh
+++ b/pkgs/build-support/kernel/modules-closure.sh
@@ -1,5 +1,19 @@
 source $stdenv/setup
 
+# When no modules are built, the $out/lib/modules directory will not
+# exist. Because the rest of the script assumes it does exist, we
+# handle this special case first.
+if ! test -d "$out/lib/modules"; then
+    if test -z "$rootModules" || test -n "$allowMissing"; then
+        mkdir -p "$out"
+        exit 0
+    else
+        echo "Required modules: $rootModules"
+        echo "Can not derive a closure of kernel modules because no modules were provided."
+        exit 1
+    fi
+fi
+
 version=$(cd $kernel/lib/modules && ls -d *)
 
 echo "kernel version is $version"
diff --git a/pkgs/os-specific/linux/kmod/aggregator.nix b/pkgs/os-specific/linux/kmod/aggregator.nix
index 9bd7c8480c1..7d46a13f356 100644
--- a/pkgs/os-specific/linux/kmod/aggregator.nix
+++ b/pkgs/os-specific/linux/kmod/aggregator.nix
@@ -9,6 +9,12 @@ buildEnv {
     ''
       source ${stdenv}/setup
 
+      if ! test -d "$out/lib/modules"; then
+        echo "No modules found."
+        # To support a kernel without modules
+        exit 0
+      fi
+
       kernelVersion=$(cd $out/lib/modules && ls -d *)
       if test "$(echo $kernelVersion | wc -w)" != 1; then
          echo "inconsistent kernel versions: $kernelVersion"