Browse Source

use strings instead of modinfo for a portable way

Idea from Phil to have a portable method to find
the kernel module dependencies. make-module-ipkgs.sh
uses associative arrays, so check for bash version 4.
Waldemar Brodkorb 8 years ago
parent
commit
7f58f90b8f
3 changed files with 37 additions and 23 deletions
  1. 2 1
      scripts/make-module-ipkgs.sh
  2. 35 21
      scripts/prereq.sh
  3. 0 1
      target/config/Config.in.tools

+ 2 - 1
scripts/make-module-ipkgs.sh

@@ -28,6 +28,7 @@ BUILD_DIR="$3"
 PKG_BUILD="$4"
 PACKAGE_DIR="$5"
 
+# declare associative arrays
 declare -A modpaths moddeps modlevels
 
 # recursively find a level for given module which is high enough so all
@@ -48,7 +49,7 @@ pkgname() { # (modname)
 
 for modpath in $(find ${BUILD_DIR}/modules -name \*.ko | xargs); do
 	modname="$(basename $modpath .ko)"
-	moddep="$(modinfo $modpath | awk '/^depends:/{print $2}' | sed 's/,/ /g')"
+	moddep="$(strings $modpath | awk -F= '/^depends=/{print $2}' | sed 's/,/ /g')"
 	modpaths[$modname]="$modpath"
 	moddeps[$modname]="$moddep"
 done

+ 35 - 21
scripts/prereq.sh

@@ -206,28 +206,33 @@ done
 printf " --->  checking if bash is installed.. "
 if which bash >/dev/null; then
   printf "found\n"
-else
-  # we need to build GNU bash
-  printf "not found\n"
-  printf " --->  compiling missing GNU bash.. "
-  cd dl
-  $FETCHCMD bash-${bashver}.tar.gz $mirror/bash-${bashver}.tar.gz
-  if [ $? -ne 0 ]; then
-    printf "ERROR: failed to download make from $mirror\n"
-    exit 1
+  printf " --->  checking if it is bash 4.x.. "
+  bash --version 2>/dev/null| grep "Version 4" >/dev/null
+  if [ $? -eq 0 ]; then
+    printf "yes\n"
+  else
+    # we need to build GNU bash 4.x
+    printf "not found\n"
+    printf " --->  compiling missing GNU bash.. "
+    cd dl
+    $FETCHCMD bash-${bashver}.tar.gz $mirror/bash-${bashver}.tar.gz
+    if [ $? -ne 0 ]; then
+      printf "ERROR: failed to download make from $mirror\n"
+      exit 1
+    fi
+    cd ..
+    mkdir tmp
+    cd tmp
+    tar xzf ../dl/bash-${bashver}.tar.gz
+    cd bash-${bashver}
+    ./configure --prefix=$topdir/host_$gnu_host_name/
+    make
+    make install
+    cd ..
+    cd ..
+    rm -rf tmp
+    printf " done\n"
   fi
-  cd ..
-  mkdir tmp
-  cd tmp
-  tar xzf ../dl/bash-${bashver}.tar.gz
-  cd bash-${bashver}
-  ./configure --prefix=$topdir/host_$gnu_host_name/
-  make
-  make install
-  cd ..
-  cd ..
-  rm -rf tmp
-  printf " done\n"
 fi
 
 # skip the script if distclean / cleandir
@@ -237,6 +242,15 @@ if [ "$target" = "distclean" -o "$target" = "cleandir" ]; then
   exit 0
 fi
 
+printf " --->  checking if strings is installed.. "
+if ! which strings >/dev/null 2>&1; then
+  echo You must install strings to continue.
+  echo
+  out=1
+  printf "not found\n"
+fi
+printf "found\n"
+
 printf " --->  checking if perl is installed.. "
 if ! which perl >/dev/null 2>&1; then
   echo You must install perl to continue.

+ 0 - 1
target/config/Config.in.tools

@@ -218,7 +218,6 @@ config ADK_HOST_BUILD_PCRE
 
 config ADK_HOST_BUILD_KMOD
 	bool
-	default y if ADK_HOST_LINUX
 	default n
 
 source "target/config/Config.in.prereq"