xref: /openbmc/linux/scripts/depmod.sh (revision 8937e897)
1fc4da9a3SMichal Marek#!/bin/sh
2fc4da9a3SMichal Marek#
3fc4da9a3SMichal Marek# A depmod wrapper used by the toplevel Makefile
4fc4da9a3SMichal Marek
58937e897SJames Hoganif test $# -ne 3; then
68937e897SJames Hogan	echo "Usage: $0 /sbin/depmod <kernelrelease> <symbolprefix>" >&2
7fc4da9a3SMichal Marek	exit 1
8fc4da9a3SMichal Marekfi
9fc4da9a3SMichal MarekDEPMOD=$1
10fc4da9a3SMichal MarekKERNELRELEASE=$2
118937e897SJames HoganSYMBOL_PREFIX=$3
12fc4da9a3SMichal Marek
13fc4da9a3SMichal Marekif ! test -r System.map -a -x "$DEPMOD"; then
14fc4da9a3SMichal Marek	exit 0
15fc4da9a3SMichal Marekfi
168937e897SJames Hogan
178937e897SJames Hogan# older versions of depmod don't support -P <symbol-prefix>
188937e897SJames Hogan# support was added in module-init-tools 3.13
198937e897SJames Hoganif test -n "$SYMBOL_PREFIX"; then
208937e897SJames Hogan	release=$("$DEPMOD" --version)
218937e897SJames Hogan	package=$(echo "$release" | cut -d' ' -f 1)
228937e897SJames Hogan	if test "$package" = "module-init-tools"; then
238937e897SJames Hogan		version=$(echo "$release" | cut -d' ' -f 2)
248937e897SJames Hogan		later=$(printf '%s\n' "$version" "3.13" | sort -V | tail -n 1)
258937e897SJames Hogan		if test "$later" != "$version"; then
268937e897SJames Hogan			# module-init-tools < 3.13, drop the symbol prefix
278937e897SJames Hogan			SYMBOL_PREFIX=""
288937e897SJames Hogan		fi
298937e897SJames Hogan	fi
308937e897SJames Hogan	if test -n "$SYMBOL_PREFIX"; then
318937e897SJames Hogan		SYMBOL_PREFIX="-P $SYMBOL_PREFIX"
328937e897SJames Hogan	fi
338937e897SJames Hoganfi
348937e897SJames Hogan
35bfe5424aSMichal Marek# older versions of depmod require the version string to start with three
36bfe5424aSMichal Marek# numbers, so we cheat with a symlink here
37bfe5424aSMichal Marekdepmod_hack_needed=true
388fc62e59SMichal Marektmp_dir=$(mktemp -d ${TMPDIR:-/tmp}/depmod.XXXXXX)
398fc62e59SMichal Marekmkdir -p "$tmp_dir/lib/modules/$KERNELRELEASE"
408fc62e59SMichal Marekif "$DEPMOD" -b "$tmp_dir" $KERNELRELEASE 2>/dev/null; then
418fc62e59SMichal Marek	if test -e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep" -o \
428fc62e59SMichal Marek		-e "$tmp_dir/lib/modules/$KERNELRELEASE/modules.dep.bin"; then
43bfe5424aSMichal Marek		depmod_hack_needed=false
44bfe5424aSMichal Marek	fi
45bfe5424aSMichal Marekfi
468fc62e59SMichal Marekrm -rf "$tmp_dir"
47bfe5424aSMichal Marekif $depmod_hack_needed; then
48bfe5424aSMichal Marek	symlink="$INSTALL_MOD_PATH/lib/modules/99.98.$KERNELRELEASE"
49bfe5424aSMichal Marek	ln -s "$KERNELRELEASE" "$symlink"
50bfe5424aSMichal Marek	KERNELRELEASE=99.98.$KERNELRELEASE
51bfe5424aSMichal Marekfi
52bfe5424aSMichal Marek
53fc4da9a3SMichal Marekset -- -ae -F System.map
54fc4da9a3SMichal Marekif test -n "$INSTALL_MOD_PATH"; then
55fc4da9a3SMichal Marek	set -- "$@" -b "$INSTALL_MOD_PATH"
56fc4da9a3SMichal Marekfi
578937e897SJames Hogan"$DEPMOD" "$@" "$KERNELRELEASE" $SYMBOL_PREFIX
58bfe5424aSMichal Marekret=$?
59bfe5424aSMichal Marek
60bfe5424aSMichal Marekif $depmod_hack_needed; then
61bfe5424aSMichal Marek	rm -f "$symlink"
62bfe5424aSMichal Marekfi
63bfe5424aSMichal Marek
64bfe5424aSMichal Marekexit $ret
65