[arch-commits] Commit in kmod/repos (10 files)

Dave Reisner dreisner at archlinux.org
Sat Oct 20 19:15:57 UTC 2012


    Date: Saturday, October 20, 2012 @ 15:15:57
  Author: dreisner
Revision: 169420

archrelease: copy trunk to testing-i686, testing-x86_64

Added:
  kmod/repos/testing-i686/
  kmod/repos/testing-i686/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch
    (from rev 169419, kmod/trunk/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch)
  kmod/repos/testing-i686/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch
    (from rev 169419, kmod/trunk/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch)
  kmod/repos/testing-i686/PKGBUILD
    (from rev 169419, kmod/trunk/PKGBUILD)
  kmod/repos/testing-i686/depmod-search.conf
    (from rev 169419, kmod/trunk/depmod-search.conf)
  kmod/repos/testing-x86_64/
  kmod/repos/testing-x86_64/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch
    (from rev 169419, kmod/trunk/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch)
  kmod/repos/testing-x86_64/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch
    (from rev 169419, kmod/trunk/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch)
  kmod/repos/testing-x86_64/PKGBUILD
    (from rev 169419, kmod/trunk/PKGBUILD)
  kmod/repos/testing-x86_64/depmod-search.conf
    (from rev 169419, kmod/trunk/depmod-search.conf)

--------------------------------------------------------------------------------+
 testing-i686/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch   |  165 ++++++++++
 testing-i686/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch   |   33 ++
 testing-i686/PKGBUILD                                                          |   66 ++++
 testing-i686/depmod-search.conf                                                |    5 
 testing-x86_64/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch |  165 ++++++++++
 testing-x86_64/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch |   33 ++
 testing-x86_64/PKGBUILD                                                        |   66 ++++
 testing-x86_64/depmod-search.conf                                              |    5 
 8 files changed, 538 insertions(+)

Copied: kmod/repos/testing-i686/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch (from rev 169419, kmod/trunk/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch)
===================================================================
--- testing-i686/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch	                        (rev 0)
+++ testing-i686/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,165 @@
+From 88c247f7f18ac25181ddcaff97fbbecbd3a29f57 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi at gmail.com>
+Date: Wed, 3 Oct 2012 16:28:24 -0300
+Subject: [PATCH] depmod: fix parsing of modules.order with compressed modules
+
+We now index the modules by uncompressed-relative-path instead of
+relative-path. This is because the file modules.order, coming from
+kernel, always comes with uncompressed paths. This fixes the issue of
+not sorting the aliases correctly due to paths not matching when using
+compressed modules.
+---
+ tools/depmod.c | 46 +++++++++++++++++++++++++++++-----------------
+ 1 file changed, 29 insertions(+), 17 deletions(-)
+
+diff --git a/tools/depmod.c b/tools/depmod.c
+index 0bf2dea..ff19d6e 100644
+--- a/tools/depmod.c
++++ b/tools/depmod.c
+@@ -39,6 +39,8 @@
+ #define DEFAULT_VERBOSE LOG_WARNING
+ static int verbose = DEFAULT_VERBOSE;
+ 
++#define KMOD_EXT_UNC 0
++
+ static const struct kmod_ext {
+ 	const char *ext;
+ 	size_t len;
+@@ -1001,6 +1003,7 @@ struct mod {
+ 	uint16_t idx; /* index in depmod->modules.array */
+ 	uint16_t users; /* how many modules depend on this one */
+ 	uint8_t dep_loop : 1;
++	char *uncrelpath; /* same as relpath but ending in .ko */
+ 	char modname[];
+ };
+ 
+@@ -1014,7 +1017,7 @@ struct depmod {
+ 	const struct cfg *cfg;
+ 	struct kmod_ctx *ctx;
+ 	struct array modules;
+-	struct hash *modules_by_relpath;
++	struct hash *modules_by_uncrelpath;
+ 	struct hash *modules_by_name;
+ 	struct hash *symbols;
+ 	unsigned int dep_loops;
+@@ -1025,6 +1028,7 @@ static void mod_free(struct mod *mod)
+ 	DBG("free %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+ 	array_free_array(&mod->deps);
+ 	kmod_module_unref(mod->kmod);
++	free(mod->uncrelpath);
+ 	free(mod);
+ }
+ 
+@@ -1066,10 +1070,10 @@ static int depmod_init(struct depmod *depmod, struct cfg *cfg,
+ 
+ 	array_init(&depmod->modules, 128);
+ 
+-	depmod->modules_by_relpath = hash_new(512, NULL);
+-	if (depmod->modules_by_relpath == NULL) {
++	depmod->modules_by_uncrelpath = hash_new(512, NULL);
++	if (depmod->modules_by_uncrelpath == NULL) {
+ 		err = -errno;
+-		goto modules_by_relpath_failed;
++		goto modules_by_uncrelpath_failed;
+ 	}
+ 
+ 	depmod->modules_by_name = hash_new(512, NULL);
+@@ -1089,8 +1093,8 @@ static int depmod_init(struct depmod *depmod, struct cfg *cfg,
+ symbols_failed:
+ 	hash_free(depmod->modules_by_name);
+ modules_by_name_failed:
+-	hash_free(depmod->modules_by_relpath);
+-modules_by_relpath_failed:
++	hash_free(depmod->modules_by_uncrelpath);
++modules_by_uncrelpath_failed:
+ 	return err;
+ }
+ 
+@@ -1100,7 +1104,7 @@ static void depmod_shutdown(struct depmod *depmod)
+ 
+ 	hash_free(depmod->symbols);
+ 
+-	hash_free(depmod->modules_by_relpath);
++	hash_free(depmod->modules_by_uncrelpath);
+ 
+ 	hash_free(depmod->modules_by_name);
+ 
+@@ -1114,7 +1118,7 @@ static void depmod_shutdown(struct depmod *depmod)
+ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ {
+ 	const struct cfg *cfg = depmod->cfg;
+-	const char *modname;
++	const char *modname, *lastslash;
+ 	size_t modnamelen;
+ 	struct mod *mod;
+ 	int err;
+@@ -1134,7 +1138,8 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ 	array_init(&mod->deps, 4);
+ 
+ 	mod->path = kmod_module_get_path(kmod);
+-	mod->baselen = strrchr(mod->path, '/') - mod->path;
++	lastslash = strrchr(mod->path, '/');
++	mod->baselen = lastslash - mod->path;
+ 	if (strncmp(mod->path, cfg->dirname, cfg->dirnamelen) == 0 &&
+ 			mod->path[cfg->dirnamelen] == '/')
+ 		mod->relpath = mod->path + cfg->dirnamelen + 1;
+@@ -1144,25 +1149,32 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ 	err = hash_add_unique(depmod->modules_by_name, mod->modname, mod);
+ 	if (err < 0) {
+ 		ERR("hash_add_unique %s: %s\n", mod->modname, strerror(-err));
+-		free(mod);
+-		return err;
++		goto fail;
+ 	}
+ 
+ 	if (mod->relpath != NULL) {
+-		err = hash_add_unique(depmod->modules_by_relpath,
+-				      mod->relpath, mod);
++		size_t uncrelpathlen = lastslash - mod->relpath + modnamelen
++				       + kmod_exts[KMOD_EXT_UNC].len;
++		mod->uncrelpath = memdup(mod->relpath, uncrelpathlen + 1);
++		mod->uncrelpath[uncrelpathlen] = '\0';
++		err = hash_add_unique(depmod->modules_by_uncrelpath,
++				      mod->uncrelpath, mod);
+ 		if (err < 0) {
+ 			ERR("hash_add_unique %s: %s\n",
+ 			    mod->relpath, strerror(-err));
+ 			hash_del(depmod->modules_by_name, mod->modname);
+-			free(mod);
+-			return err;
++			goto fail;
+ 		}
+ 	}
+ 
+ 	DBG("add %p kmod=%p, path=%s\n", mod, kmod, mod->path);
+ 
+ 	return 0;
++
++fail:
++	free(mod->uncrelpath);
++	free(mod);
++	return err;
+ }
+ 
+ static int depmod_module_del(struct depmod *depmod, struct mod *mod)
+@@ -1170,7 +1182,7 @@ static int depmod_module_del(struct depmod *depmod, struct mod *mod)
+ 	DBG("del %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+ 
+ 	if (mod->relpath != NULL)
+-		hash_del(depmod->modules_by_relpath, mod->relpath);
++		hash_del(depmod->modules_by_uncrelpath, mod->relpath);
+ 
+ 	hash_del(depmod->modules_by_name, mod->modname);
+ 
+@@ -1472,7 +1484,7 @@ static void depmod_modules_sort(struct depmod *depmod)
+ 			continue;
+ 		line[len - 1] = '\0';
+ 
+-		mod = hash_find(depmod->modules_by_relpath, line);
++		mod = hash_find(depmod->modules_by_uncrelpath, line);
+ 		if (mod == NULL)
+ 			continue;
+ 		mod->sort_idx = idx - total;
+-- 
+1.7.12.4
+

Copied: kmod/repos/testing-i686/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch (from rev 169419, kmod/trunk/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch)
===================================================================
--- testing-i686/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch	                        (rev 0)
+++ testing-i686/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,33 @@
+From 66f3228d17d66d7e2dd484427259290fbc82b2f0 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi at profusion.mobi>
+Date: Mon, 8 Oct 2012 19:04:16 -0300
+Subject: [PATCH] libkmod: Add support for '.' in module parameter on kcmdline
+
+Otherwise we fail to parse arguments in kernel command line like
+testmodule.testparam=1.5G
+
+Suggested-by: Selim T. Erdogan <selim at alumni.cs.utexas.edu>
+---
+ libkmod/libkmod-config.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
+index 70044f0..398468e 100644
+--- a/libkmod/libkmod-config.c
++++ b/libkmod/libkmod-config.c
+@@ -567,8 +567,10 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config)
+ 			modname = p + 1;
+ 			break;
+ 		case '.':
+-			*p = '\0';
+-			param = p + 1;
++			if (param == NULL) {
++				*p = '\0';
++				param = p + 1;
++			}
+ 			break;
+ 		case '=':
+ 			if (param != NULL)
+-- 
+1.7.12.4
+

Copied: kmod/repos/testing-i686/PKGBUILD (from rev 169419, kmod/trunk/PKGBUILD)
===================================================================
--- testing-i686/PKGBUILD	                        (rev 0)
+++ testing-i686/PKGBUILD	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,66 @@
+# $Id$
+# Maintainer: Dave Reisner <dreisner at archlinux.org>
+
+pkgname=kmod
+pkgver=10
+pkgrel=2
+pkgdesc="Linux kernel module handling"
+arch=('i686' 'x86_64')
+url='http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary'
+license=('GPL2')
+depends=('glibc' 'zlib')
+makedepends=('gtk-doc')
+options=('!libtool')
+provides=('module-init-tools=3.16')
+conflicts=('module-init-tools')
+replaces=('module-init-tools')
+source=("ftp://ftp.kernel.org/pub/linux/utils/kernel/$pkgname/$pkgname-$pkgver.tar.xz"
+        '0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch'
+        '0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch'
+        "depmod-search.conf")
+md5sums=('e2a883c4df15a50f78a7a61d5b64089f'
+         '47005a6e70496d429d40e3fc4fd89755'
+         'ecf5bfd4fd9ed14cf0dc1ce4025d256b'
+         'dd62cbf62bd8f212f51ef8c43bec9a77')
+
+build() {
+  cd "$pkgname-$pkgver"
+
+  # upstream commit 88c247f7f18ac25181ddcaff97fbbecbd3a29f57
+  patch -Np1 < "$srcdir/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch"
+
+  # upstream commit 66f3228d17d66d7e2dd484427259290fbc82b2f0
+  patch -Np1 < "$srcdir/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch"
+
+  ./configure \
+    --sysconfdir=/etc \
+    --enable-gtk-doc \
+    --with-zlib
+
+  make
+}
+
+check() {
+  # testsuite is broken on 32-bit because of an unhandled EEXIST on mkdir_p
+  make -C "$pkgname-$pkgver" check || :
+}
+
+package() {
+  make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install
+
+  # extra directories
+  install -dm755 "$pkgdir"/{etc,usr/lib}/{depmod,modprobe}.d "$pkgdir/sbin"
+
+  # add symlinks to kmod
+  ln -s ../usr/bin/kmod "$pkgdir/sbin/modprobe"
+  ln -s ../usr/bin/kmod "$pkgdir/sbin/depmod"
+
+  for tool in {ins,ls,rm}mod modinfo; do
+    ln -s kmod "$pkgdir/usr/bin/$tool"
+  done
+
+  # install depmod.d file for search/ dir
+  install -Dm644 "$srcdir/depmod-search.conf" "$pkgdir/usr/lib/depmod.d/search.conf"
+}
+
+# vim: ft=sh syn=sh et

Copied: kmod/repos/testing-i686/depmod-search.conf (from rev 169419, kmod/trunk/depmod-search.conf)
===================================================================
--- testing-i686/depmod-search.conf	                        (rev 0)
+++ testing-i686/depmod-search.conf	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,5 @@
+#
+# /usr/lib/depmod.d/search.conf
+#
+
+search updates extramodules built-in

Copied: kmod/repos/testing-x86_64/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch (from rev 169419, kmod/trunk/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch)
===================================================================
--- testing-x86_64/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch	                        (rev 0)
+++ testing-x86_64/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,165 @@
+From 88c247f7f18ac25181ddcaff97fbbecbd3a29f57 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi at gmail.com>
+Date: Wed, 3 Oct 2012 16:28:24 -0300
+Subject: [PATCH] depmod: fix parsing of modules.order with compressed modules
+
+We now index the modules by uncompressed-relative-path instead of
+relative-path. This is because the file modules.order, coming from
+kernel, always comes with uncompressed paths. This fixes the issue of
+not sorting the aliases correctly due to paths not matching when using
+compressed modules.
+---
+ tools/depmod.c | 46 +++++++++++++++++++++++++++++-----------------
+ 1 file changed, 29 insertions(+), 17 deletions(-)
+
+diff --git a/tools/depmod.c b/tools/depmod.c
+index 0bf2dea..ff19d6e 100644
+--- a/tools/depmod.c
++++ b/tools/depmod.c
+@@ -39,6 +39,8 @@
+ #define DEFAULT_VERBOSE LOG_WARNING
+ static int verbose = DEFAULT_VERBOSE;
+ 
++#define KMOD_EXT_UNC 0
++
+ static const struct kmod_ext {
+ 	const char *ext;
+ 	size_t len;
+@@ -1001,6 +1003,7 @@ struct mod {
+ 	uint16_t idx; /* index in depmod->modules.array */
+ 	uint16_t users; /* how many modules depend on this one */
+ 	uint8_t dep_loop : 1;
++	char *uncrelpath; /* same as relpath but ending in .ko */
+ 	char modname[];
+ };
+ 
+@@ -1014,7 +1017,7 @@ struct depmod {
+ 	const struct cfg *cfg;
+ 	struct kmod_ctx *ctx;
+ 	struct array modules;
+-	struct hash *modules_by_relpath;
++	struct hash *modules_by_uncrelpath;
+ 	struct hash *modules_by_name;
+ 	struct hash *symbols;
+ 	unsigned int dep_loops;
+@@ -1025,6 +1028,7 @@ static void mod_free(struct mod *mod)
+ 	DBG("free %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+ 	array_free_array(&mod->deps);
+ 	kmod_module_unref(mod->kmod);
++	free(mod->uncrelpath);
+ 	free(mod);
+ }
+ 
+@@ -1066,10 +1070,10 @@ static int depmod_init(struct depmod *depmod, struct cfg *cfg,
+ 
+ 	array_init(&depmod->modules, 128);
+ 
+-	depmod->modules_by_relpath = hash_new(512, NULL);
+-	if (depmod->modules_by_relpath == NULL) {
++	depmod->modules_by_uncrelpath = hash_new(512, NULL);
++	if (depmod->modules_by_uncrelpath == NULL) {
+ 		err = -errno;
+-		goto modules_by_relpath_failed;
++		goto modules_by_uncrelpath_failed;
+ 	}
+ 
+ 	depmod->modules_by_name = hash_new(512, NULL);
+@@ -1089,8 +1093,8 @@ static int depmod_init(struct depmod *depmod, struct cfg *cfg,
+ symbols_failed:
+ 	hash_free(depmod->modules_by_name);
+ modules_by_name_failed:
+-	hash_free(depmod->modules_by_relpath);
+-modules_by_relpath_failed:
++	hash_free(depmod->modules_by_uncrelpath);
++modules_by_uncrelpath_failed:
+ 	return err;
+ }
+ 
+@@ -1100,7 +1104,7 @@ static void depmod_shutdown(struct depmod *depmod)
+ 
+ 	hash_free(depmod->symbols);
+ 
+-	hash_free(depmod->modules_by_relpath);
++	hash_free(depmod->modules_by_uncrelpath);
+ 
+ 	hash_free(depmod->modules_by_name);
+ 
+@@ -1114,7 +1118,7 @@ static void depmod_shutdown(struct depmod *depmod)
+ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ {
+ 	const struct cfg *cfg = depmod->cfg;
+-	const char *modname;
++	const char *modname, *lastslash;
+ 	size_t modnamelen;
+ 	struct mod *mod;
+ 	int err;
+@@ -1134,7 +1138,8 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ 	array_init(&mod->deps, 4);
+ 
+ 	mod->path = kmod_module_get_path(kmod);
+-	mod->baselen = strrchr(mod->path, '/') - mod->path;
++	lastslash = strrchr(mod->path, '/');
++	mod->baselen = lastslash - mod->path;
+ 	if (strncmp(mod->path, cfg->dirname, cfg->dirnamelen) == 0 &&
+ 			mod->path[cfg->dirnamelen] == '/')
+ 		mod->relpath = mod->path + cfg->dirnamelen + 1;
+@@ -1144,25 +1149,32 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ 	err = hash_add_unique(depmod->modules_by_name, mod->modname, mod);
+ 	if (err < 0) {
+ 		ERR("hash_add_unique %s: %s\n", mod->modname, strerror(-err));
+-		free(mod);
+-		return err;
++		goto fail;
+ 	}
+ 
+ 	if (mod->relpath != NULL) {
+-		err = hash_add_unique(depmod->modules_by_relpath,
+-				      mod->relpath, mod);
++		size_t uncrelpathlen = lastslash - mod->relpath + modnamelen
++				       + kmod_exts[KMOD_EXT_UNC].len;
++		mod->uncrelpath = memdup(mod->relpath, uncrelpathlen + 1);
++		mod->uncrelpath[uncrelpathlen] = '\0';
++		err = hash_add_unique(depmod->modules_by_uncrelpath,
++				      mod->uncrelpath, mod);
+ 		if (err < 0) {
+ 			ERR("hash_add_unique %s: %s\n",
+ 			    mod->relpath, strerror(-err));
+ 			hash_del(depmod->modules_by_name, mod->modname);
+-			free(mod);
+-			return err;
++			goto fail;
+ 		}
+ 	}
+ 
+ 	DBG("add %p kmod=%p, path=%s\n", mod, kmod, mod->path);
+ 
+ 	return 0;
++
++fail:
++	free(mod->uncrelpath);
++	free(mod);
++	return err;
+ }
+ 
+ static int depmod_module_del(struct depmod *depmod, struct mod *mod)
+@@ -1170,7 +1182,7 @@ static int depmod_module_del(struct depmod *depmod, struct mod *mod)
+ 	DBG("del %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+ 
+ 	if (mod->relpath != NULL)
+-		hash_del(depmod->modules_by_relpath, mod->relpath);
++		hash_del(depmod->modules_by_uncrelpath, mod->relpath);
+ 
+ 	hash_del(depmod->modules_by_name, mod->modname);
+ 
+@@ -1472,7 +1484,7 @@ static void depmod_modules_sort(struct depmod *depmod)
+ 			continue;
+ 		line[len - 1] = '\0';
+ 
+-		mod = hash_find(depmod->modules_by_relpath, line);
++		mod = hash_find(depmod->modules_by_uncrelpath, line);
+ 		if (mod == NULL)
+ 			continue;
+ 		mod->sort_idx = idx - total;
+-- 
+1.7.12.4
+

Copied: kmod/repos/testing-x86_64/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch (from rev 169419, kmod/trunk/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch)
===================================================================
--- testing-x86_64/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch	                        (rev 0)
+++ testing-x86_64/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,33 @@
+From 66f3228d17d66d7e2dd484427259290fbc82b2f0 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi at profusion.mobi>
+Date: Mon, 8 Oct 2012 19:04:16 -0300
+Subject: [PATCH] libkmod: Add support for '.' in module parameter on kcmdline
+
+Otherwise we fail to parse arguments in kernel command line like
+testmodule.testparam=1.5G
+
+Suggested-by: Selim T. Erdogan <selim at alumni.cs.utexas.edu>
+---
+ libkmod/libkmod-config.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
+index 70044f0..398468e 100644
+--- a/libkmod/libkmod-config.c
++++ b/libkmod/libkmod-config.c
+@@ -567,8 +567,10 @@ static int kmod_config_parse_kcmdline(struct kmod_config *config)
+ 			modname = p + 1;
+ 			break;
+ 		case '.':
+-			*p = '\0';
+-			param = p + 1;
++			if (param == NULL) {
++				*p = '\0';
++				param = p + 1;
++			}
+ 			break;
+ 		case '=':
+ 			if (param != NULL)
+-- 
+1.7.12.4
+

Copied: kmod/repos/testing-x86_64/PKGBUILD (from rev 169419, kmod/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD	                        (rev 0)
+++ testing-x86_64/PKGBUILD	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,66 @@
+# $Id$
+# Maintainer: Dave Reisner <dreisner at archlinux.org>
+
+pkgname=kmod
+pkgver=10
+pkgrel=2
+pkgdesc="Linux kernel module handling"
+arch=('i686' 'x86_64')
+url='http://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary'
+license=('GPL2')
+depends=('glibc' 'zlib')
+makedepends=('gtk-doc')
+options=('!libtool')
+provides=('module-init-tools=3.16')
+conflicts=('module-init-tools')
+replaces=('module-init-tools')
+source=("ftp://ftp.kernel.org/pub/linux/utils/kernel/$pkgname/$pkgname-$pkgver.tar.xz"
+        '0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch'
+        '0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch'
+        "depmod-search.conf")
+md5sums=('e2a883c4df15a50f78a7a61d5b64089f'
+         '47005a6e70496d429d40e3fc4fd89755'
+         'ecf5bfd4fd9ed14cf0dc1ce4025d256b'
+         'dd62cbf62bd8f212f51ef8c43bec9a77')
+
+build() {
+  cd "$pkgname-$pkgver"
+
+  # upstream commit 88c247f7f18ac25181ddcaff97fbbecbd3a29f57
+  patch -Np1 < "$srcdir/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch"
+
+  # upstream commit 66f3228d17d66d7e2dd484427259290fbc82b2f0
+  patch -Np1 < "$srcdir/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch"
+
+  ./configure \
+    --sysconfdir=/etc \
+    --enable-gtk-doc \
+    --with-zlib
+
+  make
+}
+
+check() {
+  # testsuite is broken on 32-bit because of an unhandled EEXIST on mkdir_p
+  make -C "$pkgname-$pkgver" check || :
+}
+
+package() {
+  make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install
+
+  # extra directories
+  install -dm755 "$pkgdir"/{etc,usr/lib}/{depmod,modprobe}.d "$pkgdir/sbin"
+
+  # add symlinks to kmod
+  ln -s ../usr/bin/kmod "$pkgdir/sbin/modprobe"
+  ln -s ../usr/bin/kmod "$pkgdir/sbin/depmod"
+
+  for tool in {ins,ls,rm}mod modinfo; do
+    ln -s kmod "$pkgdir/usr/bin/$tool"
+  done
+
+  # install depmod.d file for search/ dir
+  install -Dm644 "$srcdir/depmod-search.conf" "$pkgdir/usr/lib/depmod.d/search.conf"
+}
+
+# vim: ft=sh syn=sh et

Copied: kmod/repos/testing-x86_64/depmod-search.conf (from rev 169419, kmod/trunk/depmod-search.conf)
===================================================================
--- testing-x86_64/depmod-search.conf	                        (rev 0)
+++ testing-x86_64/depmod-search.conf	2012-10-20 19:15:57 UTC (rev 169420)
@@ -0,0 +1,5 @@
+#
+# /usr/lib/depmod.d/search.conf
+#
+
+search updates extramodules built-in




More information about the arch-commits mailing list