X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=copy-builtin;h=1dcfcb961ee8025d08e0d842affb2f05da1f9edd;hb=e065034563c8ea34d647c83c22717d72315ca580;hp=3277270d92e808ab54700443427c142cf53623ce;hpb=c167aadb27d51b7be9ee7bd582e2795061a68480;p=mirror_zfs.git diff --git a/copy-builtin b/copy-builtin index 3277270d9..1dcfcb961 100755 --- a/copy-builtin +++ b/copy-builtin @@ -12,78 +12,71 @@ usage() KERNEL_DIR="$(readlink --canonicalize-existing "$1")" MODULES=() +MODULES+="spl" for MODULE_DIR in module/* do [ -d "$MODULE_DIR" ] || continue + [ "spl" = "${MODULE_DIR##*/}" ] && continue MODULES+=("${MODULE_DIR##*/}") done -if ! [ -e 'spl_config.h' ] +if ! [ -e 'zfs_config.h' ] then echo >&2 - echo " $0: you did not run configure, or you're not in the SPL source directory." >&2 + echo " $0: you did not run configure, or you're not in the ZFS source directory." >&2 echo " $0: run configure with --with-linux=$KERNEL_DIR and --enable-linux-builtin." >&2 echo >&2 exit 1 fi make clean || true +scripts/make_gitrev.sh || true -rm -rf "$KERNEL_DIR/include/spl" "$KERNEL_DIR/spl" -cp --recursive include "$KERNEL_DIR/include/spl" -cp --recursive module "$KERNEL_DIR/spl" -cp spl_config.h "$KERNEL_DIR/" - -adjust_obj_paths() -{ - local FILE="$1" - local LINE OBJPATH - - while IFS='' read -r LINE - do - OBJPATH="${LINE#\$(MODULE)-objs += }" - if [ "$OBJPATH" = "$LINE" ] - then - echo "$LINE" - else - echo "\$(MODULE)-objs += ${OBJPATH##*/}" - fi - done < "$FILE" > "$FILE.new" - mv "$FILE.new" "$FILE" -} +rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs" +cp --recursive include "$KERNEL_DIR/include/zfs" +cp --recursive module "$KERNEL_DIR/fs/zfs" +cp zfs_config.h "$KERNEL_DIR/include/zfs/" for MODULE in "${MODULES[@]}" do - adjust_obj_paths "$KERNEL_DIR/spl/$MODULE/Makefile" + sed -i.bak '/obj =/d' "$KERNEL_DIR/fs/zfs/$MODULE/Makefile" + sed -i.bak '/src =/d' "$KERNEL_DIR/fs/zfs/$MODULE/Makefile" done -cat > "$KERNEL_DIR/spl/Kconfig" <<"EOF" -config SPL - tristate "Solaris Porting Layer (SPL)" +cat > "$KERNEL_DIR/fs/zfs/Kconfig" <<"EOF" +config ZFS + tristate "ZFS filesystem support" + depends on EFI_PARTITION + select ZLIB_INFLATE + select ZLIB_DEFLATE help - This is the SPL library from the ZFS On Linux project. + This is the ZFS filesystem from the ZFS On Linux project. See http://zfsonlinux.org/ - To compile this library as a module, choose M here. + To compile this file system support as a module, choose M here. If unsure, say N. EOF { cat <<-"EOF" - SPL_MODULE_CFLAGS = -I$(srctree)/include/spl - SPL_MODULE_CFLAGS += -include $(srctree)/spl_config.h - export SPL_MODULE_CFLAGS - - obj-$(CONFIG_SPL) := + ZFS_MODULE_CFLAGS = -I$(srctree)/include/zfs + ZFS_MODULE_CFLAGS += -I$(srctree)/include/zfs/spl + ZFS_MODULE_CFLAGS += -include $(srctree)/include/zfs/zfs_config.h + ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement + ZFS_MODULE_CPPFLAGS = -D_KERNEL + ZFS_MODULE_CPPFLAGS += -UDEBUG -DNDEBUG + export ZFS_MODULE_CFLAGS ZFS_MODULE_CPPFLAGS + + obj-$(CONFIG_ZFS) := EOF for MODULE in "${MODULES[@]}" do - echo 'obj-$(CONFIG_SPL) += ' "$MODULE/" + echo 'obj-$(CONFIG_ZFS) += ' "$MODULE/" done -} > "$KERNEL_DIR/spl/Kbuild" +} > "$KERNEL_DIR/fs/zfs/Kbuild" add_after() { @@ -110,13 +103,11 @@ add_after() mv "$FILE.new" "$FILE" } -add_after "$KERNEL_DIR/Kconfig" 'source "arch/$SRCARCH/Kconfig"' 'source "spl/Kconfig"' -# We must take care to build SPL before ZFS, else module initialization order will be wrong -sed -i 's#kernel/ mm/ fs/#kernel/ mm/ spl/ fs/#' "$KERNEL_DIR/Makefile" +add_after "$KERNEL_DIR/fs/Kconfig" 'if BLOCK' 'source "fs/zfs/Kconfig"' +add_after "$KERNEL_DIR/fs/Makefile" 'endif' 'obj-$(CONFIG_ZFS) += zfs/' echo >&2 echo " $0: done." >&2 -echo " $0: now you can build the kernel with SPL support." >&2 -echo " $0: make sure you enable SPL support (CONFIG_SPL) before building." >&2 +echo " $0: now you can build the kernel with ZFS support." >&2 +echo " $0: make sure you enable ZFS support (CONFIG_ZFS) before building." >&2 echo >&2 -