diff options
author | Paul Sherwood <paul.sherwood@codethink.co.uk> | 2015-09-25 08:47:49 +0000 |
---|---|---|
committer | Paul Sherwood <paul.sherwood@codethink.co.uk> | 2015-09-26 08:27:41 +0100 |
commit | 3a2f641e4e70e76ffa77629c6208970c1a7af667 (patch) | |
tree | e6635788976c616017c05b5ea93432f9b2dc769e /baserock/strata/foundation/kmod.morph | |
parent | c844667a718e8640d9ae2b7640a3b0dc0fb53b0e (diff) | |
download | definitions-3a2f641e4e70e76ffa77629c6208970c1a7af667.tar.gz |
Proposed re-org of definitions repobaserock/ps/reorganise-definitions
Diffstat (limited to 'baserock/strata/foundation/kmod.morph')
-rw-r--r-- | baserock/strata/foundation/kmod.morph | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/baserock/strata/foundation/kmod.morph b/baserock/strata/foundation/kmod.morph new file mode 100644 index 00000000..8f158e8e --- /dev/null +++ b/baserock/strata/foundation/kmod.morph @@ -0,0 +1,49 @@ +name: kmod +kind: chunk +configure-commands: +- rm -rf libkmod/docs +- sed -i -e'/SUBDIRS/{s/\S*doc\S*//;s/\S*man\S*//}' Makefile.am +- sed -i -e'/AC_CONFIG_FILES(\[/,/])/{/docs/d}' configure.ac +- autoreconf -fiv +- | + ./configure --prefix="$PREFIX" --bindir="$PREFIX"/bin \ + --libdir="$PREFIX"/lib --sysconfdir=/etc \ + --without-xz --with-zlib \ + --disable-manpages --enable-python +build-commands: +- make +install-commands: +- make DESTDIR="$DESTDIR" pkgconfigdir="$PREFIX"/lib/pkgconfig install + +# WARNING with the following command: +# if the staging area when kmod is built is sufficiently different to the +# staging area that kmod is included in, then these symlinks may not work. +# +# i.e. if /sbin isn't a symlink when this is built (fhs-dirs isn't included or +# doesn't symlink /sbin to /usr/bin) then we get symlinks in /sbin which point +# to ../usr/bin, but if /sbin is itself a symlink to /usr/bin, then the symlinks +# would end up in /usr/bin, which would point to ../usr/bin, which would evaluate +# to /usr/usr/bin. +# +# The alternatives to this are: +# +# 1. Use hardlinks instead, which has the problem of ssh-rsync upgrades duplicating +# the binary +# +# 2. Use an absolute path for the symlink, which makes things interesting when +# inspecting a chroot +# +# 3. Use a wrapper script to invoke kmod with a different name, which isn't +# possible in busybox ash without making a temporary directory, which means +# you need an extra process to hang around to clean that directory up. +- | + if [ -h /sbin ]; then + for app in modprobe lsmod rmmod insmod modinfo depmod; do + ln -sf kmod "$DESTDIR$PREFIX/bin/$app" + done + else + install -d "$DESTDIR"/sbin + for app in modprobe lsmod rmmod insmod modinfo depmod; do + ln -sf ../"$PREFIX"/bin/kmod "$DESTDIR/sbin/$app" + done + fi |