summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Yao <ryao@gentoo.org>2013-07-14 11:49:46 +0000
committerRichard Yao <ryao@gentoo.org>2013-07-14 11:49:46 +0000
commitfb1fde31543de26170b637198b241e9f824b170c (patch)
treec9d63b540de3ddc514db53f39f16e76982f17219 /sys-kernel/spl
parentAdd workaround for bug 473974 (diff)
downloadgentoo-2-fb1fde31543de26170b637198b241e9f824b170c.tar.gz
gentoo-2-fb1fde31543de26170b637198b241e9f824b170c.tar.bz2
gentoo-2-fb1fde31543de26170b637198b241e9f824b170c.zip
Linux 3.10 compatibility; Fix kernel builtin support
(Portage version: 2.2.0_alpha187/cvs/Linux x86_64, signed Manifest commit with key 0xBEE84C64)
Diffstat (limited to 'sys-kernel/spl')
-rw-r--r--sys-kernel/spl/ChangeLog9
-rw-r--r--sys-kernel/spl/files/spl-0.6.1-builtin-fix.patch28
-rw-r--r--sys-kernel/spl/files/spl-0.6.1-linux-3.10-compat.patch426
-rw-r--r--sys-kernel/spl/spl-0.6.1-r1.ebuild115
-rw-r--r--sys-kernel/spl/spl-0.6.1-r3.ebuild (renamed from sys-kernel/spl/spl-0.6.1-r2.ebuild)11
-rw-r--r--sys-kernel/spl/spl-0.6.1.ebuild113
6 files changed, 471 insertions, 231 deletions
diff --git a/sys-kernel/spl/ChangeLog b/sys-kernel/spl/ChangeLog
index 50621f00c1eb..ba52590ad6ba 100644
--- a/sys-kernel/spl/ChangeLog
+++ b/sys-kernel/spl/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for sys-kernel/spl
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/ChangeLog,v 1.59 2013/05/29 02:00:17 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/ChangeLog,v 1.60 2013/07/14 11:49:46 ryao Exp $
+
+*spl-0.6.1-r3 (14 Jul 2013)
+
+ 14 Jul 2013; Richard Yao <ryao@gentoo.org> +files/spl-0.6.1-builtin-fix.patch,
+ +files/spl-0.6.1-linux-3.10-compat.patch, +spl-0.6.1-r3.ebuild,
+ -spl-0.6.1-r1.ebuild, -spl-0.6.1-r2.ebuild, -spl-0.6.1.ebuild:
+ Linux 3.10 compatibility; Fix kernel builtin support
29 May 2013; Richard Yao <ryao@gentoo.org> spl-0.6.1-r2.ebuild,
spl-0.6.1.ebuild:
diff --git a/sys-kernel/spl/files/spl-0.6.1-builtin-fix.patch b/sys-kernel/spl/files/spl-0.6.1-builtin-fix.patch
new file mode 100644
index 000000000000..6be0c6d06ffe
--- /dev/null
+++ b/sys-kernel/spl/files/spl-0.6.1-builtin-fix.patch
@@ -0,0 +1,28 @@
+From 991857cac5929fa149820722b8e8cd90f874670c Mon Sep 17 00:00:00 2001
+From: Matthew Thode <mthode@mthode.org>
+Date: Fri, 21 Jun 2013 14:55:07 -0400
+Subject: [PATCH] Copy spl.release.in to kernel dir
+
+Required when compiling ZFS in the kernel.
+
+Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Closes #253
+---
+ copy-builtin | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/copy-builtin b/copy-builtin
+index 3277270..cd98b7a 100755
+--- a/copy-builtin
++++ b/copy-builtin
+@@ -33,6 +33,7 @@ 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/"
++cp spl.release.in "$KERNEL_DIR/"
+
+ adjust_obj_paths()
+ {
+--
+1.8.1.6
+
diff --git a/sys-kernel/spl/files/spl-0.6.1-linux-3.10-compat.patch b/sys-kernel/spl/files/spl-0.6.1-linux-3.10-compat.patch
new file mode 100644
index 000000000000..aac1c926bbb4
--- /dev/null
+++ b/sys-kernel/spl/files/spl-0.6.1-linux-3.10-compat.patch
@@ -0,0 +1,426 @@
+diff --git a/config/spl-build.m4 b/config/spl-build.m4
+index 8a8e3ba..da179e3 100644
+--- a/config/spl-build.m4
++++ b/config/spl-build.m4
+@@ -33,6 +33,8 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
+ SPL_AC_TASK_CURR
+ SPL_AC_CTL_UNNUMBERED
+ SPL_AC_CTL_NAME
++ SPL_AC_VMALLOC_INFO
++ SPL_AC_PDE_DATA
+ SPL_AC_FLS64
+ SPL_AC_DEVICE_CREATE
+ SPL_AC_5ARGS_DEVICE_CREATE
+@@ -1358,6 +1360,43 @@ AC_DEFUN([SPL_AC_GET_VMALLOC_INFO],
+ ])
+
+ dnl #
++dnl # 3.10 API change,
++dnl # struct vmalloc_info is now declared in linux/vmalloc.h
++dnl #
++AC_DEFUN([SPL_AC_VMALLOC_INFO], [
++ AC_MSG_CHECKING([whether struct vmalloc_info is declared])
++ SPL_LINUX_TRY_COMPILE([
++ #include <linux/vmalloc.h>
++ struct vmalloc_info { void *a; };
++ ],[
++ return 0;
++ ],[
++ AC_MSG_RESULT(no)
++ ],[
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(HAVE_VMALLOC_INFO, 1, [yes])
++ ])
++])
++
++dnl #
++dnl # 3.10 API change,
++dnl # PDE is replaced by PDE_DATA
++dnl #
++AC_DEFUN([SPL_AC_PDE_DATA], [
++ AC_MSG_CHECKING([whether PDE_DATA() is available])
++ SPL_LINUX_TRY_COMPILE_SYMBOL([
++ #include <linux/proc_fs.h>
++ ], [
++ PDE_DATA(NULL);
++ ], [PDE_DATA], [], [
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(HAVE_PDE_DATA, 1, [yes])
++ ],[
++ AC_MSG_RESULT(no)
++ ])
++])
++
++dnl #
+ dnl # 2.6.17 API change
+ dnl # The helper functions first_online_pgdat(), next_online_pgdat(), and
+ dnl # next_zone() are introduced to simplify for_each_zone(). These symbols
+diff --git a/include/linux/proc_compat.h b/include/linux/proc_compat.h
+index 434ffa3..7b044e7 100644
+--- a/include/linux/proc_compat.h
++++ b/include/linux/proc_compat.h
+@@ -43,9 +43,6 @@
+ #endif
+
+ extern struct proc_dir_entry *proc_spl_kstat;
+-struct proc_dir_entry *proc_dir_entry_find(struct proc_dir_entry *root,
+- const char *str);
+-int proc_dir_entries(struct proc_dir_entry *root);
+
+ int spl_proc_init(void);
+ void spl_proc_fini(void);
+diff --git a/include/sys/kstat.h b/include/sys/kstat.h
+index 9275c1e..da3c589 100644
+--- a/include/sys/kstat.h
++++ b/include/sys/kstat.h
+@@ -83,6 +83,13 @@ struct kstat_s;
+ typedef int kid_t; /* unique kstat id */
+ typedef int kstat_update_t(struct kstat_s *, int); /* dynamic update cb */
+
++typedef struct kstat_module {
++ char ksm_name[KSTAT_STRLEN+1]; /* module name */
++ struct list_head ksm_module_list; /* module linkage */
++ struct list_head ksm_kstat_list; /* list of kstat entries */
++ struct proc_dir_entry *ksm_proc; /* proc entry */
++} kstat_module_t;
++
+ typedef struct kstat_s {
+ int ks_magic; /* magic value */
+ kid_t ks_kid; /* unique kstat ID */
+@@ -102,6 +109,7 @@ typedef struct kstat_s {
+ void *ks_private; /* private data */
+ kmutex_t ks_lock; /* kstat data lock */
+ struct list_head ks_list; /* kstat linkage */
++ kstat_module_t *ks_owner; /* kstat module linkage */
+ } kstat_t;
+
+ typedef struct kstat_named_s {
+diff --git a/include/sys/vmsystm.h b/include/sys/vmsystm.h
+index 9c52d28..34aea2b 100644
+--- a/include/sys/vmsystm.h
++++ b/include/sys/vmsystm.h
+@@ -74,10 +74,12 @@ extern size_t vmem_size(vmem_t *vmp, int typemask);
+ #ifndef HAVE_GET_VMALLOC_INFO
+ #ifdef CONFIG_MMU
+
++#ifndef HAVE_VMALLOC_INFO
+ struct vmalloc_info {
+ unsigned long used;
+ unsigned long largest_chunk;
+ };
++#endif
+
+ typedef void (*get_vmalloc_info_t)(struct vmalloc_info *);
+ extern get_vmalloc_info_t get_vmalloc_info_fn;
+diff --git a/module/spl/spl-kstat.c b/module/spl/spl-kstat.c
+index b7e4b94..4e900c0 100644
+--- a/module/spl/spl-kstat.c
++++ b/module/spl/spl-kstat.c
+@@ -33,9 +33,12 @@
+ #endif
+
+ #define SS_DEBUG_SUBSYS SS_KSTAT
++#ifndef HAVE_PDE_DATA
++#define PDE_DATA(x) (PDE(x)->data)
++#endif
+
+-static spinlock_t kstat_lock;
+-static struct list_head kstat_list;
++static kmutex_t kstat_module_lock;
++static struct list_head kstat_module_list;
+ static kid_t kstat_id;
+
+ static void
+@@ -348,6 +351,47 @@ static struct seq_operations kstat_seq_ops = {
+ .stop = kstat_seq_stop,
+ };
+
++static kstat_module_t *
++kstat_find_module(char *name)
++{
++ kstat_module_t *module;
++
++ list_for_each_entry(module, &kstat_module_list, ksm_module_list)
++ if (strncmp(name, module->ksm_name, KSTAT_STRLEN) == 0)
++ return (module);
++
++ return (NULL);
++}
++
++static kstat_module_t *
++kstat_create_module(char *name)
++{
++ kstat_module_t *module;
++ struct proc_dir_entry *pde;
++
++ pde = proc_mkdir(name, proc_spl_kstat);
++ if (pde == NULL)
++ return (NULL);
++
++ module = kmem_alloc(sizeof (kstat_module_t), KM_SLEEP);
++ module->ksm_proc = pde;
++ strlcpy(module->ksm_name, name, KSTAT_STRLEN+1);
++ INIT_LIST_HEAD(&module->ksm_kstat_list);
++ list_add_tail(&module->ksm_module_list, &kstat_module_list);
++
++ return (module);
++
++}
++
++static void
++kstat_delete_module(kstat_module_t *module)
++{
++ ASSERT(list_empty(&module->ksm_kstat_list));
++ remove_proc_entry(module->ksm_name, proc_spl_kstat);
++ list_del(&module->ksm_module_list);
++ kmem_free(module, sizeof(kstat_module_t));
++}
++
+ static int
+ proc_kstat_open(struct inode *inode, struct file *filp)
+ {
+@@ -359,7 +403,7 @@ proc_kstat_open(struct inode *inode, struct file *filp)
+ return rc;
+
+ f = filp->private_data;
+- f->private = PDE(inode)->data;
++ f->private = PDE_DATA(inode);
+
+ return rc;
+ }
+@@ -390,10 +434,10 @@ __kstat_create(const char *ks_module, int ks_instance, const char *ks_name,
+ if (ksp == NULL)
+ return ksp;
+
+- spin_lock(&kstat_lock);
++ mutex_enter(&kstat_module_lock);
+ ksp->ks_kid = kstat_id;
+ kstat_id++;
+- spin_unlock(&kstat_lock);
++ mutex_exit(&kstat_module_lock);
+
+ ksp->ks_magic = KS_MAGIC;
+ mutex_init(&ksp->ks_lock, NULL, MUTEX_DEFAULT, NULL);
+@@ -456,71 +500,64 @@ EXPORT_SYMBOL(__kstat_create);
+ void
+ __kstat_install(kstat_t *ksp)
+ {
+- struct proc_dir_entry *de_module, *de_name;
++ kstat_module_t *module;
+ kstat_t *tmp;
+- int rc = 0;
+- SENTRY;
+-
+- spin_lock(&kstat_lock);
+
+- /* Item may only be added to the list once */
+- list_for_each_entry(tmp, &kstat_list, ks_list) {
+- if (tmp == ksp) {
+- spin_unlock(&kstat_lock);
+- SGOTO(out, rc = -EEXIST);
+- }
+- }
++ ASSERT(ksp);
+
+- list_add_tail(&ksp->ks_list, &kstat_list);
+- spin_unlock(&kstat_lock);
++ mutex_enter(&kstat_module_lock);
+
+- de_module = proc_dir_entry_find(proc_spl_kstat, ksp->ks_module);
+- if (de_module == NULL) {
+- de_module = proc_mkdir(ksp->ks_module, proc_spl_kstat);
+- if (de_module == NULL)
+- SGOTO(out, rc = -EUNATCH);
++ module = kstat_find_module(ksp->ks_module);
++ if (module == NULL) {
++ module = kstat_create_module(ksp->ks_module);
++ if (module == NULL)
++ goto out;
+ }
+
+- de_name = create_proc_entry(ksp->ks_name, 0444, de_module);
+- if (de_name == NULL)
+- SGOTO(out, rc = -EUNATCH);
++ /*
++ * Only one entry by this name per-module, on failure the module
++ * shouldn't be deleted because we know it has at least one entry.
++ */
++ list_for_each_entry(tmp, &module->ksm_kstat_list, ks_list)
++ if (strncmp(tmp->ks_name, ksp->ks_name, KSTAT_STRLEN) == 0)
++ goto out;
++
++ list_add_tail(&ksp->ks_list, &module->ksm_kstat_list);
+
+ mutex_enter(&ksp->ks_lock);
+- ksp->ks_proc = de_name;
+- de_name->proc_fops = &proc_kstat_operations;
+- de_name->data = (void *)ksp;
++ ksp->ks_owner = module;
++ ksp->ks_proc = proc_create_data(ksp->ks_name, 0444,
++ module->ksm_proc, &proc_kstat_operations, (void *)ksp);
++ if (ksp->ks_proc == NULL) {
++ list_del_init(&ksp->ks_list);
++ if (list_empty(&module->ksm_kstat_list))
++ kstat_delete_module(module);
++ }
+ mutex_exit(&ksp->ks_lock);
+ out:
+- if (rc) {
+- spin_lock(&kstat_lock);
+- list_del_init(&ksp->ks_list);
+- spin_unlock(&kstat_lock);
+- }
+-
+- SEXIT;
++ mutex_exit(&kstat_module_lock);
+ }
+ EXPORT_SYMBOL(__kstat_install);
+
+ void
+ __kstat_delete(kstat_t *ksp)
+ {
+- struct proc_dir_entry *de_module;
++ kstat_module_t *module = ksp->ks_owner;
+
+- spin_lock(&kstat_lock);
+- list_del_init(&ksp->ks_list);
+- spin_unlock(&kstat_lock);
++ mutex_enter(&kstat_module_lock);
++ list_del_init(&ksp->ks_list);
++ mutex_exit(&kstat_module_lock);
+
+- if (ksp->ks_proc) {
+- de_module = ksp->ks_proc->parent;
+- remove_proc_entry(ksp->ks_name, de_module);
++ if (ksp->ks_proc) {
++ remove_proc_entry(ksp->ks_name, module->ksm_proc);
+
+- /* Remove top level module directory if it's empty */
+- if (proc_dir_entries(de_module) == 0)
+- remove_proc_entry(de_module->name, de_module->parent);
++ /* Remove top level module directory if it's empty */
++ if (list_empty(&module->ksm_kstat_list))
++ kstat_delete_module(module);
+ }
+
+ if (!(ksp->ks_flags & KSTAT_FLAG_VIRTUAL))
+- kmem_free(ksp->ks_data, ksp->ks_data_size);
++ kmem_free(ksp->ks_data, ksp->ks_data_size);
+
+ mutex_destroy(&ksp->ks_lock);
+ kmem_free(ksp, sizeof(*ksp));
+@@ -533,8 +570,8 @@ int
+ spl_kstat_init(void)
+ {
+ SENTRY;
+- spin_lock_init(&kstat_lock);
+- INIT_LIST_HEAD(&kstat_list);
++ mutex_init(&kstat_module_lock, NULL, MUTEX_DEFAULT, NULL);
++ INIT_LIST_HEAD(&kstat_module_list);
+ kstat_id = 0;
+ SRETURN(0);
+ }
+@@ -543,7 +580,8 @@ void
+ spl_kstat_fini(void)
+ {
+ SENTRY;
+- ASSERT(list_empty(&kstat_list));
++ ASSERT(list_empty(&kstat_module_list));
++ mutex_destroy(&kstat_module_lock);
+ SEXIT;
+ }
+
+diff --git a/module/spl/spl-proc.c b/module/spl/spl-proc.c
+index cd4fa1b..b8379d0 100644
+--- a/module/spl/spl-proc.c
++++ b/module/spl/spl-proc.c
+@@ -1120,39 +1120,6 @@ static struct ctl_table spl_root[] = {
+ { 0 }
+ };
+
+-static int
+-proc_dir_entry_match(int len, const char *name, struct proc_dir_entry *de)
+-{
+- if (de->namelen != len)
+- return 0;
+-
+- return !memcmp(name, de->name, len);
+-}
+-
+-struct proc_dir_entry *
+-proc_dir_entry_find(struct proc_dir_entry *root, const char *str)
+-{
+- struct proc_dir_entry *de;
+-
+- for (de = root->subdir; de; de = de->next)
+- if (proc_dir_entry_match(strlen(str), str, de))
+- return de;
+-
+- return NULL;
+-}
+-
+-int
+-proc_dir_entries(struct proc_dir_entry *root)
+-{
+- struct proc_dir_entry *de;
+- int i = 0;
+-
+- for (de = root->subdir; de; de = de->next)
+- i++;
+-
+- return i;
+-}
+-
+ int
+ spl_proc_init(void)
+ {
+@@ -1174,11 +1141,11 @@ spl_proc_init(void)
+ if (proc_spl_kmem == NULL)
+ SGOTO(out, rc = -EUNATCH);
+
+- proc_spl_kmem_slab = create_proc_entry("slab", 0444, proc_spl_kmem);
++ proc_spl_kmem_slab = proc_create_data("slab", 0444,
++ proc_spl_kmem, &proc_slab_operations, NULL);
+ if (proc_spl_kmem_slab == NULL)
+ SGOTO(out, rc = -EUNATCH);
+
+- proc_spl_kmem_slab->proc_fops = &proc_slab_operations;
+ #endif /* DEBUG_KMEM */
+
+ proc_spl_kstat = proc_mkdir("kstat", proc_spl);
+diff --git a/module/splat/splat-atomic.c b/module/splat/splat-atomic.c
+index df3b38f..f702196 100644
+--- a/module/splat/splat-atomic.c
++++ b/module/splat/splat-atomic.c
+@@ -26,6 +26,7 @@
+
+ #include <sys/atomic.h>
+ #include <sys/thread.h>
++#include <linux/slab.h>
+ #include "splat-internal.h"
+
+ #define SPLAT_ATOMIC_NAME "atomic"
+diff --git a/module/splat/splat-thread.c b/module/splat/splat-thread.c
+index a1e70db..e55acd0 100644
+--- a/module/splat/splat-thread.c
++++ b/module/splat/splat-thread.c
+@@ -26,6 +26,7 @@
+
+ #include <sys/thread.h>
+ #include <sys/random.h>
++#include <linux/slab.h>
+ #include "splat-internal.h"
+
+ #define SPLAT_THREAD_NAME "thread"
+diff --git a/module/splat/splat-time.c b/module/splat/splat-time.c
+index ca60c45..cd513c9 100644
+--- a/module/splat/splat-time.c
++++ b/module/splat/splat-time.c
+@@ -25,6 +25,7 @@
+ \*****************************************************************************/
+
+ #include <sys/time.h>
++#include <linux/slab.h>
+ #include "splat-internal.h"
+
+ #define SPLAT_TIME_NAME "time"
diff --git a/sys-kernel/spl/spl-0.6.1-r1.ebuild b/sys-kernel/spl/spl-0.6.1-r1.ebuild
deleted file mode 100644
index b486ba7e4bac..000000000000
--- a/sys-kernel/spl/spl-0.6.1-r1.ebuild
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-0.6.1-r1.ebuild,v 1.1 2013/04/25 20:30:50 ryao Exp $
-
-EAPI="4"
-AUTOTOOLS_AUTORECONF="1"
-
-inherit flag-o-matic linux-info linux-mod autotools-utils
-
-if [[ ${PV} == "9999" ]] ; then
- inherit git-2
- EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git"
-else
- inherit eutils versionator
- MY_PV=$(replace_version_separator 3 '-')
- SRC_URI="https://github.com/zfsonlinux/${PN}/archive/${PN}-${MY_PV}.tar.gz"
- S="${WORKDIR}/${PN}-${PN}-${MY_PV}"
- KEYWORDS="~amd64"
-fi
-
-DESCRIPTION="The Solaris Porting Layer is a Linux kernel module which provides many of the Solaris kernel APIs"
-HOMEPAGE="http://zfsonlinux.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="custom-cflags debug debug-log"
-RESTRICT="test"
-
-COMMON_DEPEND="dev-lang/perl
- virtual/awk"
-
-DEPEND="${COMMON_DEPEND}"
-
-RDEPEND="${COMMON_DEPEND}
- !sys-devel/spl"
-
-AT_M4DIR="config"
-AUTOTOOLS_IN_SOURCE_BUILD="1"
-
-pkg_setup() {
- linux-info_pkg_setup
- CONFIG_CHECK="
- !DEBUG_LOCK_ALLOC
- !GRKERNSEC_HIDESYM
- MODULES
- KALLSYMS
- !PAX_KERNEXEC_PLUGIN_METHOD_OR
- ZLIB_DEFLATE
- ZLIB_INFLATE
- "
-
- kernel_is ge 2 6 26 || die "Linux 2.6.26 or newer required"
-
- [ ${PV} != "9999" ] && \
- { kernel_is le 3 9 || die "Linux 3.9 is the latest supported version."; }
-
- check_extra_config
-}
-
-src_prepare() {
- # Workaround for hard coded path
- sed -i "s|/sbin/lsmod|/bin/lsmod|" scripts/check.sh || die
-
- if [ ${PV} != "9999" ]
- then
- # Be more like FreeBSD and Illumos when handling hostids
- epatch "${FILESDIR}/${PN}-0.6.0_rc14-simplify-hostid-logic.patch"
-
- if kernel_is ge 3 8
- then
- epatch "${FILESDIR}/${PN}-0.6.1-constify-ctl_table.patch"
- fi
- fi
-
- # splat is unnecessary unless we are debugging
- use debug || sed -e 's/^subdir-m += splat$//' -i "${S}/module/Makefile.in"
-
- autotools-utils_src_prepare
-}
-
-src_configure() {
- use custom-cflags || strip-flags
- filter-ldflags -Wl,*
-
- set_arch_to_kernel
- local myeconfargs=(
- --bindir="${EPREFIX}/bin"
- --sbindir="${EPREFIX}/sbin"
- --with-config=all
- --with-linux="${KV_DIR}"
- --with-linux-obj="${KV_OUT_DIR}"
- $(use_enable debug)
- $(use_enable debug-log)
- )
- autotools-utils_src_configure
-}
-
-src_install() {
- autotools-utils_src_install
- dodoc AUTHORS DISCLAIMER README.markdown
-}
-
-pkg_postinst() {
- linux-mod_pkg_postinst
-
- # Remove old modules
- if [ -d "${EROOT}lib/modules/${KV_FULL}/addon/spl" ]
- then
- ewarn "${PN} now installs modules in ${EROOT}lib/modules/${KV_FULL}/extra/spl"
- ewarn "Old modules were detected in ${EROOT}lib/modules/${KV_FULL}/addon/spl"
- ewarn "Automatically removing old modules to avoid problems."
- rm -r "${EROOT}lib/modules/${KV_FULL}/addon/spl" || die "Cannot remove modules"
- rmdir --ignore-fail-on-non-empty "${EROOT}lib/modules/${KV_FULL}/addon"
- fi
-}
diff --git a/sys-kernel/spl/spl-0.6.1-r2.ebuild b/sys-kernel/spl/spl-0.6.1-r3.ebuild
index 42bac7bba7a6..fa5c4e161224 100644
--- a/sys-kernel/spl/spl-0.6.1-r2.ebuild
+++ b/sys-kernel/spl/spl-0.6.1-r3.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-0.6.1-r2.ebuild,v 1.4 2013/05/29 02:00:17 ryao Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-0.6.1-r3.ebuild,v 1.1 2013/07/14 11:49:46 ryao Exp $
EAPI="4"
AUTOTOOLS_AUTORECONF="1"
@@ -54,7 +54,7 @@ pkg_setup() {
kernel_is ge 2 6 26 || die "Linux 2.6.26 or newer required"
[ ${PV} != "9999" ] && \
- { kernel_is le 3 9 || die "Linux 3.9 is the latest supported version."; }
+ { kernel_is le 3 10 || die "Linux 3.10 is the latest supported version."; }
check_extra_config
}
@@ -71,6 +71,13 @@ src_prepare() {
# Block tasks properly
epatch "${FILESDIR}/${PN}-0.6.1-fix-delay.patch"
+ # Linux 3.10 Compatibility
+ epatch "${FILESDIR}/${PN}-0.6.1-linux-3.10-compat.patch"
+
+ # Fix kernel builtin support
+ epatch "${FILESDIR}/${PN}-0.6.1-builtin-fix.patch"
+
+ # Support recent hardened kernels
if kernel_is ge 3 8
then
epatch "${FILESDIR}/${PN}-0.6.1-constify-ctl_table.patch"
diff --git a/sys-kernel/spl/spl-0.6.1.ebuild b/sys-kernel/spl/spl-0.6.1.ebuild
deleted file mode 100644
index 32a9db81824a..000000000000
--- a/sys-kernel/spl/spl-0.6.1.ebuild
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-kernel/spl/spl-0.6.1.ebuild,v 1.2 2013/04/17 13:26:26 ryao Exp $
-
-EAPI="4"
-AUTOTOOLS_AUTORECONF="1"
-
-inherit flag-o-matic linux-info linux-mod autotools-utils
-
-if [[ ${PV} == "9999" ]] ; then
- inherit git-2
- EGIT_REPO_URI="git://github.com/zfsonlinux/${PN}.git"
-else
- inherit eutils versionator
- MY_PV=$(replace_version_separator 3 '-')
- SRC_URI="https://github.com/zfsonlinux/${PN}/archive/${PN}-${MY_PV}.tar.gz"
- S="${WORKDIR}/${PN}-${PN}-${MY_PV}"
- KEYWORDS="~amd64"
-fi
-
-DESCRIPTION="The Solaris Porting Layer is a Linux kernel module which provides many of the Solaris kernel APIs"
-HOMEPAGE="http://zfsonlinux.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="custom-cflags debug debug-log"
-RESTRICT="test"
-
-COMMON_DEPEND="dev-lang/perl
- virtual/awk"
-
-DEPEND="${COMMON_DEPEND}"
-
-RDEPEND="${COMMON_DEPEND}
- !sys-devel/spl"
-
-AT_M4DIR="config"
-AUTOTOOLS_IN_SOURCE_BUILD="1"
-
-pkg_setup() {
- linux-info_pkg_setup
- CONFIG_CHECK="
- !DEBUG_LOCK_ALLOC
- !GRKERNSEC_HIDESYM
- MODULES
- KALLSYMS
- !PAX_KERNEXEC_PLUGIN_METHOD_OR
- ZLIB_DEFLATE
- ZLIB_INFLATE
- "
-
- kernel_is ge 2 6 26 || die "Linux 2.6.26 or newer required"
-
- [ ${PV} != "9999" ] && \
- { kernel_is le 3 9 || die "Linux 3.9 is the latest supported version."; }
-
- check_extra_config
-}
-
-src_prepare() {
- # Workaround for hard coded path
- sed -i "s|/sbin/lsmod|/bin/lsmod|" scripts/check.sh || die
-
- if [ ${PV} != "9999" ]
- then
- # Be more like FreeBSD and Illumos when handling hostids
- epatch "${FILESDIR}/${PN}-0.6.0_rc14-simplify-hostid-logic.patch"
- fi
-
- # splat is unnecessary unless we are debugging
- use debug || sed -e 's/^subdir-m += splat$//' -i "${S}/module/Makefile.in"
-
- autotools-utils_src_prepare
-}
-
-src_configure() {
- use custom-cflags || strip-flags
- filter-ldflags -Wl,*
-
- set_arch_to_kernel
- local myeconfargs=(
- --bindir="${EPREFIX}/bin"
- --sbindir="${EPREFIX}/sbin"
- --with-config=all
- --with-linux="${KV_DIR}"
- --with-linux-obj="${KV_OUT_DIR}"
- $(use_enable debug)
- $(use_enable debug-log)
- )
- autotools-utils_src_configure
-}
-
-src_install() {
- autotools-utils_src_install
- dodoc AUTHORS DISCLAIMER README.markdown
-
- # Provide /usr/src/spl symlink for lustre
- dosym "$(basename $(echo "${ED}/usr/src/spl-"*))/${KV_FULL}" /usr/src/spl
-}
-
-pkg_postinst() {
- linux-mod_pkg_postinst
-
- # Remove old modules
- if [ -d "${EROOT}lib/modules/${KV_FULL}/addon/spl" ]
- then
- ewarn "${PN} now installs modules in ${EROOT}lib/modules/${KV_FULL}/extra/spl"
- ewarn "Old modules were detected in ${EROOT}lib/modules/${KV_FULL}/addon/spl"
- ewarn "Automatically removing old modules to avoid problems."
- rm -r "${EROOT}lib/modules/${KV_FULL}/addon/spl" || die "Cannot remove modules"
- rmdir --ignore-fail-on-non-empty "${EROOT}lib/modules/${KV_FULL}/addon"
- fi
-}