1*eda14cbcSMatt Macy#!/usr/bin/env bash 2*eda14cbcSMatt Macy 3*eda14cbcSMatt Macyset -e 4*eda14cbcSMatt Macy 5*eda14cbcSMatt Macyusage() 6*eda14cbcSMatt Macy{ 7*eda14cbcSMatt Macy echo "usage: $0 <kernel source tree>" >&2 8*eda14cbcSMatt Macy exit 1 9*eda14cbcSMatt Macy} 10*eda14cbcSMatt Macy 11*eda14cbcSMatt Macy[ "$#" -eq 1 ] || usage 12*eda14cbcSMatt MacyKERNEL_DIR="$(readlink --canonicalize-existing "$1")" 13*eda14cbcSMatt Macy 14*eda14cbcSMatt Macyif ! [ -e 'zfs_config.h' ] 15*eda14cbcSMatt Macythen 16*eda14cbcSMatt Macy echo >&2 17*eda14cbcSMatt Macy echo " $0: you did not run configure, or you're not in the ZFS source directory." >&2 18*eda14cbcSMatt Macy echo " $0: run configure with --with-linux=$KERNEL_DIR and --enable-linux-builtin." >&2 19*eda14cbcSMatt Macy echo >&2 20*eda14cbcSMatt Macy exit 1 21*eda14cbcSMatt Macyfi 22*eda14cbcSMatt Macy 23*eda14cbcSMatt Macymake clean || true 24*eda14cbcSMatt Macymake gitrev 25*eda14cbcSMatt Macy 26*eda14cbcSMatt Macyrm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs" 27*eda14cbcSMatt Macycp --recursive include "$KERNEL_DIR/include/zfs" 28*eda14cbcSMatt Macycp --recursive module "$KERNEL_DIR/fs/zfs" 29*eda14cbcSMatt Macycp zfs_config.h "$KERNEL_DIR/include/zfs/" 30*eda14cbcSMatt Macy 31*eda14cbcSMatt Macycat > "$KERNEL_DIR/fs/zfs/Kconfig" <<"EOF" 32*eda14cbcSMatt Macyconfig ZFS 33*eda14cbcSMatt Macy tristate "ZFS filesystem support" 34*eda14cbcSMatt Macy depends on EFI_PARTITION 35*eda14cbcSMatt Macy select ZLIB_INFLATE 36*eda14cbcSMatt Macy select ZLIB_DEFLATE 37*eda14cbcSMatt Macy help 38*eda14cbcSMatt Macy This is the ZFS filesystem from the ZFS On Linux project. 39*eda14cbcSMatt Macy 40*eda14cbcSMatt Macy See https://zfsonlinux.org/ 41*eda14cbcSMatt Macy 42*eda14cbcSMatt Macy To compile this file system support as a module, choose M here. 43*eda14cbcSMatt Macy 44*eda14cbcSMatt Macy If unsure, say N. 45*eda14cbcSMatt MacyEOF 46*eda14cbcSMatt Macy 47*eda14cbcSMatt Macyadd_after() 48*eda14cbcSMatt Macy{ 49*eda14cbcSMatt Macy local FILE="$1" 50*eda14cbcSMatt Macy local MARKER="$2" 51*eda14cbcSMatt Macy local NEW="$3" 52*eda14cbcSMatt Macy local LINE 53*eda14cbcSMatt Macy 54*eda14cbcSMatt Macy while IFS='' read -r LINE 55*eda14cbcSMatt Macy do 56*eda14cbcSMatt Macy echo "$LINE" 57*eda14cbcSMatt Macy 58*eda14cbcSMatt Macy if [ -n "$MARKER" -a "$LINE" = "$MARKER" ] 59*eda14cbcSMatt Macy then 60*eda14cbcSMatt Macy echo "$NEW" 61*eda14cbcSMatt Macy MARKER='' 62*eda14cbcSMatt Macy if IFS='' read -r LINE 63*eda14cbcSMatt Macy then 64*eda14cbcSMatt Macy [ "$LINE" != "$NEW" ] && echo "$LINE" 65*eda14cbcSMatt Macy fi 66*eda14cbcSMatt Macy fi 67*eda14cbcSMatt Macy done < "$FILE" > "$FILE.new" 68*eda14cbcSMatt Macy 69*eda14cbcSMatt Macy mv "$FILE.new" "$FILE" 70*eda14cbcSMatt Macy} 71*eda14cbcSMatt Macy 72*eda14cbcSMatt Macyadd_after "$KERNEL_DIR/fs/Kconfig" 'if BLOCK' 'source "fs/zfs/Kconfig"' 73*eda14cbcSMatt Macyadd_after "$KERNEL_DIR/fs/Makefile" 'endif' 'obj-$(CONFIG_ZFS) += zfs/' 74*eda14cbcSMatt Macy 75*eda14cbcSMatt Macyecho >&2 76*eda14cbcSMatt Macyecho " $0: done." >&2 77*eda14cbcSMatt Macyecho " $0: now you can build the kernel with ZFS support." >&2 78*eda14cbcSMatt Macyecho " $0: make sure you enable ZFS support (CONFIG_ZFS) before building." >&2 79*eda14cbcSMatt Macyecho >&2 80