New package: kmod-3.
This commit is contained in:
parent
474da011cb
commit
5ffcb7c73f
13 changed files with 294 additions and 0 deletions
|
@ -940,3 +940,4 @@ libnilfscleaner.so.0 libnilfs nilfs-utils-devel
|
|||
libchicken.so.6 libchicken chicken-devel
|
||||
libmdb.so.0.0.0 libmdb mdbtools-devel
|
||||
libmdbsql.so.0 libmdb mdbtools-devel
|
||||
libkmod.so.1 libkmod libkmod-devel
|
||||
|
|
2
srcpkgs/kmod/depends
Normal file
2
srcpkgs/kmod/depends
Normal file
|
@ -0,0 +1,2 @@
|
|||
abi_depends=">=3"
|
||||
api_depends="${abi_depends}"
|
5
srcpkgs/kmod/files/depmod-search.conf
Normal file
5
srcpkgs/kmod/files/depmod-search.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
#
|
||||
# /etc/depmod.d/depmod.conf
|
||||
#
|
||||
|
||||
search updates extramodules built-in
|
2
srcpkgs/kmod/kmod.rshlibs
Normal file
2
srcpkgs/kmod/kmod.rshlibs
Normal file
|
@ -0,0 +1,2 @@
|
|||
libc.so.6
|
||||
libkmod.so.1
|
15
srcpkgs/kmod/libkmod-devel.template
Normal file
15
srcpkgs/kmod/libkmod-devel.template
Normal file
|
@ -0,0 +1,15 @@
|
|||
# Template file for 'libkmod-devel'.
|
||||
#
|
||||
short_desc="${short_desc} - development files"
|
||||
long_desc="${long_desc}
|
||||
|
||||
This package contains the files needed for developing applications
|
||||
that use libkmod."
|
||||
|
||||
Add_dependency run zlib-devel
|
||||
Add_dependency run libkmod
|
||||
|
||||
do_install() {
|
||||
vmove usr/include usr
|
||||
vmove usr/lib/pkgconfig usr/lib
|
||||
}
|
3
srcpkgs/kmod/libkmod.rshlibs
Normal file
3
srcpkgs/kmod/libkmod.rshlibs
Normal file
|
@ -0,0 +1,3 @@
|
|||
liblzma.so.5
|
||||
libz.so.1
|
||||
libc.so.6
|
11
srcpkgs/kmod/libkmod.template
Normal file
11
srcpkgs/kmod/libkmod.template
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Template file for 'libkmod'.
|
||||
#
|
||||
short_desc="${short_desc} - runtime shared library"
|
||||
long_desc="${long_desc}
|
||||
|
||||
This package provides the libkmod runtime shared library."
|
||||
|
||||
do_install() {
|
||||
vmove "lib/*.so*" lib
|
||||
vmove "usr/lib/*.so" usr/lib
|
||||
}
|
34
srcpkgs/kmod/patches/fix-error-path-when-loading-deps.patch
Normal file
34
srcpkgs/kmod/patches/fix-error-path-when-loading-deps.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
From cb0d0b72128ac566aad9a72800c5a64af66f0b6e Mon Sep 17 00:00:00 2001
|
||||
From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
|
||||
Date: Sun, 8 Jan 2012 18:08:05 -0200
|
||||
Subject: [PATCH] modprobe: fix error path when loading dependencies
|
||||
|
||||
demarchi> scenario is the following:
|
||||
demarchi> modA depends on modB and modC
|
||||
demarchi> if there's a race when trying to insert a dependency of a module, say
|
||||
modB, it will stop loading all the modules
|
||||
demarchi> it should check by "module already loaded error"
|
||||
demarchi> like it does for modA
|
||||
---
|
||||
tools/kmod-modprobe.c | 4 +++-
|
||||
1 files changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c
|
||||
index eaf9346..2cda935 100644
|
||||
--- a/tools/kmod-modprobe.c
|
||||
+++ b/tools/kmod-modprobe.c
|
||||
@@ -666,9 +666,11 @@ static int insmod_do_deps_list(struct kmod_module *parent, struct kmod_list *dep
|
||||
flags |= KMOD_INSERT_FORCE_VERMAGIC;
|
||||
|
||||
r = kmod_module_insert_module(dm, flags, opts);
|
||||
+ if (r == -EEXIST && !first_time)
|
||||
+ r = 0;
|
||||
if (r < 0) {
|
||||
WRN("could not insert '%s': %s\n",
|
||||
- dmname, strerror(-r));
|
||||
+ dmname, strerror(-r));
|
||||
goto dep_error;
|
||||
}
|
||||
}
|
||||
--
|
||||
1.7.8.1
|
30
srcpkgs/kmod/patches/return-non-zero-on-fail.patch
Normal file
30
srcpkgs/kmod/patches/return-non-zero-on-fail.patch
Normal file
|
@ -0,0 +1,30 @@
|
|||
diff --git a/tools/kmod-modinfo.c b/tools/kmod-modinfo.c
|
||||
index b6af26f..8506193 100644
|
||||
--- a/tools/kmod-modinfo.c
|
||||
+++ b/tools/kmod-modinfo.c
|
||||
@@ -279,6 +279,12 @@ static int modinfo_alias_do(struct kmod_ctx *ctx, const char *alias)
|
||||
LOG("Module alias %s not found.\n", alias);
|
||||
return err;
|
||||
}
|
||||
+
|
||||
+ if (list == NULL) {
|
||||
+ LOG("Module %s not found.\n", alias);
|
||||
+ return -ENOENT;
|
||||
+ }
|
||||
+
|
||||
kmod_list_foreach(l, list) {
|
||||
struct kmod_module *mod = kmod_module_get_module(l);
|
||||
int r = modinfo_do(mod);
|
||||
diff --git a/tools/kmod-modprobe.c b/tools/kmod-modprobe.c
|
||||
index 8286b9b..6ca94f2 100644
|
||||
--- a/tools/kmod-modprobe.c
|
||||
+++ b/tools/kmod-modprobe.c
|
||||
@@ -856,7 +856,7 @@ static int insmod_alias(struct kmod_ctx *ctx, const char *alias, const char *ext
|
||||
|
||||
if (list == NULL) {
|
||||
LOG("Module %s not found.\n", alias);
|
||||
- return err;
|
||||
+ return -ENOENT;
|
||||
}
|
||||
|
||||
if (use_blacklist) {
|
146
srcpkgs/kmod/patches/use-path-max-for-alias-names.patch
Normal file
146
srcpkgs/kmod/patches/use-path-max-for-alias-names.patch
Normal file
|
@ -0,0 +1,146 @@
|
|||
From 6daceb2f1f4d442ba04752aaa1cf43d554d5f646 Mon Sep 17 00:00:00 2001
|
||||
From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
|
||||
Date: Sun, 8 Jan 2012 01:02:29 -0200
|
||||
Subject: [PATCH] Replace NAME_MAX with PATH_MAX for module aliases
|
||||
|
||||
Module aliases can be bigger than NAME_MAX. So, replace with PATH_MAX
|
||||
that is bigger enough to hold them.
|
||||
|
||||
Technically in some places NAME_MAX would be sufficient (those using
|
||||
module names only), but they use functions that can be called with
|
||||
alias. So increase the buffers in these cases to PATH_MAX too.
|
||||
---
|
||||
libkmod/libkmod-module.c | 10 +++++-----
|
||||
libkmod/libkmod-util.c | 10 +++++-----
|
||||
libkmod/libkmod-util.h | 6 +++---
|
||||
tools/kmod-depmod.c | 4 ++--
|
||||
4 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
|
||||
index f2359a9..880bac5 100644
|
||||
--- a/libkmod/libkmod-module.c
|
||||
+++ b/libkmod/libkmod-module.c
|
||||
@@ -185,7 +185,7 @@ KMOD_EXPORT int kmod_module_new_from_name(struct kmod_ctx *ctx,
|
||||
{
|
||||
struct kmod_module *m;
|
||||
size_t namelen;
|
||||
- char name_norm[NAME_MAX];
|
||||
+ char name_norm[PATH_MAX];
|
||||
char *namesep;
|
||||
|
||||
if (ctx == NULL || name == NULL || mod == NULL)
|
||||
@@ -237,11 +237,11 @@ int kmod_module_new_from_alias(struct kmod_ctx *ctx, const char *alias,
|
||||
const char *name, struct kmod_module **mod)
|
||||
{
|
||||
int err;
|
||||
- char key[NAME_MAX];
|
||||
+ char key[PATH_MAX];
|
||||
size_t namelen = strlen(name);
|
||||
size_t aliaslen = strlen(alias);
|
||||
|
||||
- if (namelen + aliaslen + 2 > NAME_MAX)
|
||||
+ if (namelen + aliaslen + 2 > PATH_MAX)
|
||||
return -ENAMETOOLONG;
|
||||
|
||||
memcpy(key, name, namelen);
|
||||
@@ -283,7 +283,7 @@ KMOD_EXPORT int kmod_module_new_from_path(struct kmod_ctx *ctx,
|
||||
struct kmod_module *m;
|
||||
int err;
|
||||
struct stat st;
|
||||
- char name[NAME_MAX];
|
||||
+ char name[PATH_MAX];
|
||||
char *abspath;
|
||||
size_t namelen;
|
||||
|
||||
@@ -434,7 +434,7 @@ KMOD_EXPORT int kmod_module_new_from_lookup(struct kmod_ctx *ctx,
|
||||
struct kmod_list **list)
|
||||
{
|
||||
int err;
|
||||
- char alias[NAME_MAX];
|
||||
+ char alias[PATH_MAX];
|
||||
|
||||
if (ctx == NULL || given_alias == NULL)
|
||||
return -ENOENT;
|
||||
diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c
|
||||
index 75e2fea..344d94a 100644
|
||||
--- a/libkmod/libkmod-util.c
|
||||
+++ b/libkmod/libkmod-util.c
|
||||
@@ -121,11 +121,11 @@ char *underscores(struct kmod_ctx *ctx, char *s)
|
||||
return s;
|
||||
}
|
||||
|
||||
-inline int alias_normalize(const char *alias, char buf[NAME_MAX], size_t *len)
|
||||
+inline int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len)
|
||||
{
|
||||
size_t s;
|
||||
|
||||
- for (s = 0; s < NAME_MAX - 1; s++) {
|
||||
+ for (s = 0; s < PATH_MAX - 1; s++) {
|
||||
const char c = alias[s];
|
||||
switch (c) {
|
||||
case '-':
|
||||
@@ -160,12 +160,12 @@ finish:
|
||||
return 0;
|
||||
}
|
||||
|
||||
-inline char *modname_normalize(const char *modname, char buf[NAME_MAX],
|
||||
+inline char *modname_normalize(const char *modname, char buf[PATH_MAX],
|
||||
size_t *len)
|
||||
{
|
||||
size_t s;
|
||||
|
||||
- for (s = 0; s < NAME_MAX - 1; s++) {
|
||||
+ for (s = 0; s < PATH_MAX - 1; s++) {
|
||||
const char c = modname[s];
|
||||
if (c == '-')
|
||||
buf[s] = '_';
|
||||
@@ -183,7 +183,7 @@ inline char *modname_normalize(const char *modname, char buf[NAME_MAX],
|
||||
return buf;
|
||||
}
|
||||
|
||||
-char *path_to_modname(const char *path, char buf[NAME_MAX], size_t *len)
|
||||
+char *path_to_modname(const char *path, char buf[PATH_MAX], size_t *len)
|
||||
{
|
||||
char *modname;
|
||||
|
||||
diff --git a/libkmod/libkmod-util.h b/libkmod/libkmod-util.h
|
||||
index 3cd352c..e8ed5ad 100644
|
||||
--- a/libkmod/libkmod-util.h
|
||||
+++ b/libkmod/libkmod-util.h
|
||||
@@ -20,9 +20,9 @@ int read_str_ulong(int fd, unsigned long *value, int base) __must_check __attrib
|
||||
char *strchr_replace(char *s, int c, char r);
|
||||
bool path_is_absolute(const char *p) __must_check __attribute__((nonnull(1)));
|
||||
char *path_make_absolute_cwd(const char *p) __must_check __attribute__((nonnull(1)));
|
||||
-int alias_normalize(const char *alias, char buf[NAME_MAX], size_t *len) __must_check __attribute__((nonnull(1,2)));
|
||||
-char *modname_normalize(const char *modname, char buf[NAME_MAX], size_t *len) __attribute__((nonnull(1, 2)));
|
||||
-char *path_to_modname(const char *path, char buf[NAME_MAX], size_t *len) __attribute__((nonnull(2)));
|
||||
+int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) __must_check __attribute__((nonnull(1,2)));
|
||||
+char *modname_normalize(const char *modname, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(1, 2)));
|
||||
+char *path_to_modname(const char *path, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(2)));
|
||||
unsigned long long ts_usec(const struct timespec *ts);
|
||||
|
||||
#endif
|
||||
diff --git a/tools/kmod-depmod.c b/tools/kmod-depmod.c
|
||||
index 70c397c..4726522 100644
|
||||
--- a/tools/kmod-depmod.c
|
||||
+++ b/tools/kmod-depmod.c
|
||||
@@ -1249,7 +1249,7 @@ static int depmod_modules_search_file(struct depmod *depmod, size_t baselen, siz
|
||||
struct kmod_module *kmod;
|
||||
struct mod *mod;
|
||||
const char *relpath;
|
||||
- char modname[NAME_MAX];
|
||||
+ char modname[PATH_MAX];
|
||||
const struct kmod_ext *eitr;
|
||||
size_t modnamelen;
|
||||
uint8_t matches = 0;
|
||||
@@ -2101,7 +2101,7 @@ static int output_builtin_bin(struct depmod *depmod, FILE *out)
|
||||
{
|
||||
FILE *in;
|
||||
struct index_node *idx;
|
||||
- char infile[PATH_MAX], line[PATH_MAX], modname[NAME_MAX];
|
||||
+ char infile[PATH_MAX], line[PATH_MAX], modname[PATH_MAX];
|
||||
|
||||
if (out == stdout)
|
||||
return 0;
|
||||
--
|
||||
1.7.8.1
|
43
srcpkgs/kmod/template
Normal file
43
srcpkgs/kmod/template
Normal file
|
@ -0,0 +1,43 @@
|
|||
# Template file for 'kmod'
|
||||
pkgname=kmod
|
||||
version=3
|
||||
patch_args="-Np1"
|
||||
homepage="http://git.profusion.mobi/cgit.cgi/kmod.git"
|
||||
distfiles="http://packages.profusion.mobi//$pkgname/$pkgname-$version.tar.xz"
|
||||
build_style=gnu-configure
|
||||
configure_args="--with-rootprefix= --with-rootlibdir=/lib --with-zlib
|
||||
--with-xz"
|
||||
short_desc="Linux kernel module handling"
|
||||
maintainer="Juan RP <xtraeme@gmail.com>"
|
||||
license="GPL-2"
|
||||
checksum=4b32439703ab2837e81ae80f527f9e964ecb5883a9e80d1cc7518cf6e8593ad9
|
||||
long_desc="
|
||||
kmod is a set of tools to handle common tasks with Linux kernel modules like
|
||||
insert, remove, list, check properties, resolve dependencies and aliases.
|
||||
|
||||
These tools are designed on top of libkmod, a library that is shipped with kmod."
|
||||
|
||||
provides="module-init-tools-3.16"
|
||||
replaces="module-init-tools>=0"
|
||||
subpackages="libkmod libkmod-devel"
|
||||
|
||||
make_dirs="
|
||||
/etc/depmod.d 0755 root root
|
||||
/etc/modprobe.d 0755 root root
|
||||
/lib/depmod.d 0755 root root
|
||||
/lib/modprobe.d 0755 root root"
|
||||
|
||||
Add_dependency build pkg-config
|
||||
Add_dependency build zlib-devel
|
||||
Add_dependency build liblzma-devel
|
||||
|
||||
post_install() {
|
||||
vinstall ${FILESDIR}/depmod-search.conf 644 lib/depmod.d search.conf
|
||||
# add symlinks to kmod
|
||||
vmkdir bin
|
||||
vmkdir sbin
|
||||
cd ${DESTDIR}/bin && ln -sf ../usr/bin/kmod lsmod
|
||||
for tool in {ins,rm,dep}mod mod{info,probe}; do
|
||||
cd ${DESTDIR}/sbin && ln -sf ../usr/bin/kmod $tool
|
||||
done
|
||||
}
|
1
srcpkgs/libkmod
Symbolic link
1
srcpkgs/libkmod
Symbolic link
|
@ -0,0 +1 @@
|
|||
kmod
|
1
srcpkgs/libkmod-devel
Symbolic link
1
srcpkgs/libkmod-devel
Symbolic link
|
@ -0,0 +1 @@
|
|||
kmod
|
Loading…
Reference in a new issue