mirror of
https://git.yoctoproject.org/poky
synced 2026-06-02 01:19:52 +00:00
kmod: upgrade 29 -> 30
(From OE-Core rev: 3f2084c3b6f2e9b251f87339e0fd60f9b1005f8c) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
5374f51c6b
commit
7865eeae06
-172
@@ -1,172 +0,0 @@
|
|||||||
From f50e2d67575ac5f256fb853ca9d29aeac92d9a57 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Saul Wold <saul.wold@windriver.com>
|
|
||||||
Date: Thu, 31 Mar 2022 14:56:28 -0700
|
|
||||||
Subject: [PATCH] depmod: Add support for excluding a directory
|
|
||||||
|
|
||||||
This adds support to depmod to enable a new exclude directive in
|
|
||||||
the depmod.d/*.conf configuration file. Currently depmod
|
|
||||||
already excludes directories named source or build. This change
|
|
||||||
will allow additional directories like .debug to be excluded also
|
|
||||||
via a new exclude directive.
|
|
||||||
|
|
||||||
depmod.d/exclude.conf example:
|
|
||||||
exclude .debug
|
|
||||||
|
|
||||||
Upstream-Status: Accepted
|
|
||||||
|
|
||||||
Signed-off-by: Saul Wold <saul.wold@windriver.com>
|
|
||||||
[ Fix warnings and make should_exclude_dir() return bool ]
|
|
||||||
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
|
|
||||||
---
|
|
||||||
man/depmod.d.xml | 14 ++++++++++
|
|
||||||
tools/depmod.c | 66 +++++++++++++++++++++++++++++++++++++++++++++---
|
|
||||||
2 files changed, 76 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/man/depmod.d.xml b/man/depmod.d.xml
|
|
||||||
index b315e93..76548e9 100644
|
|
||||||
--- a/man/depmod.d.xml
|
|
||||||
+++ b/man/depmod.d.xml
|
|
||||||
@@ -131,6 +131,20 @@
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
</varlistentry>
|
|
||||||
+ <varlistentry>
|
|
||||||
+ <term>exclude <replaceable>excludedir</replaceable>
|
|
||||||
+ </term>
|
|
||||||
+ <listitem>
|
|
||||||
+ <para>
|
|
||||||
+ This specifies the trailing directories that will be excluded
|
|
||||||
+ during the search for kernel modules.
|
|
||||||
+ </para>
|
|
||||||
+ <para>
|
|
||||||
+ The <replaceable>excludedir</replaceable> is the trailing directory
|
|
||||||
+ to exclude
|
|
||||||
+ </para>
|
|
||||||
+ </listitem>
|
|
||||||
+ </varlistentry>
|
|
||||||
</variablelist>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
diff --git a/tools/depmod.c b/tools/depmod.c
|
|
||||||
index 07a35ba..4117dd1 100644
|
|
||||||
--- a/tools/depmod.c
|
|
||||||
+++ b/tools/depmod.c
|
|
||||||
@@ -458,6 +458,11 @@ struct cfg_external {
|
|
||||||
char path[];
|
|
||||||
};
|
|
||||||
|
|
||||||
+struct cfg_exclude {
|
|
||||||
+ struct cfg_exclude *next;
|
|
||||||
+ char exclude_dir[];
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
struct cfg {
|
|
||||||
const char *kversion;
|
|
||||||
char dirname[PATH_MAX];
|
|
||||||
@@ -469,6 +474,7 @@ struct cfg {
|
|
||||||
struct cfg_override *overrides;
|
|
||||||
struct cfg_search *searches;
|
|
||||||
struct cfg_external *externals;
|
|
||||||
+ struct cfg_exclude *excludes;
|
|
||||||
};
|
|
||||||
|
|
||||||
static enum search_type cfg_define_search_type(const char *path)
|
|
||||||
@@ -580,6 +586,30 @@ static void cfg_external_free(struct cfg_external *ext)
|
|
||||||
free(ext);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int cfg_exclude_add(struct cfg *cfg, const char *path)
|
|
||||||
+{
|
|
||||||
+ struct cfg_exclude *exc;
|
|
||||||
+ size_t len = strlen(path);
|
|
||||||
+
|
|
||||||
+ exc = malloc(sizeof(struct cfg_exclude) + len + 1);
|
|
||||||
+ if (exc == NULL) {
|
|
||||||
+ ERR("exclude add: out of memory\n");
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+ memcpy(exc->exclude_dir, path, len + 1);
|
|
||||||
+
|
|
||||||
+ DBG("exclude add: %s\n", path);
|
|
||||||
+
|
|
||||||
+ exc->next = cfg->excludes;
|
|
||||||
+ cfg->excludes = exc;
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void cfg_exclude_free(struct cfg_exclude *exc)
|
|
||||||
+{
|
|
||||||
+ free(exc);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int cfg_kernel_matches(const struct cfg *cfg, const char *pattern)
|
|
||||||
{
|
|
||||||
regex_t re;
|
|
||||||
@@ -657,6 +687,11 @@ static int cfg_file_parse(struct cfg *cfg, const char *filename)
|
|
||||||
}
|
|
||||||
|
|
||||||
cfg_external_add(cfg, dir);
|
|
||||||
+ } else if (streq(cmd, "exclude")) {
|
|
||||||
+ const char *sp;
|
|
||||||
+ while ((sp = strtok_r(NULL, "\t ", &saveptr)) != NULL) {
|
|
||||||
+ cfg_exclude_add(cfg, sp);
|
|
||||||
+ }
|
|
||||||
} else if (streq(cmd, "include")
|
|
||||||
|| streq(cmd, "make_map_files")) {
|
|
||||||
INF("%s:%u: command %s not implemented yet\n",
|
|
||||||
@@ -857,6 +892,12 @@ static void cfg_free(struct cfg *cfg)
|
|
||||||
cfg->externals = cfg->externals->next;
|
|
||||||
cfg_external_free(tmp);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ while (cfg->excludes) {
|
|
||||||
+ struct cfg_exclude *tmp = cfg->excludes;
|
|
||||||
+ cfg->excludes = cfg->excludes->next;
|
|
||||||
+ cfg_exclude_free(tmp);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1229,6 +1270,25 @@ add:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static bool should_exclude_dir(const struct cfg *cfg, const char *name)
|
|
||||||
+{
|
|
||||||
+ struct cfg_exclude *exc;
|
|
||||||
+
|
|
||||||
+ if (name[0] == '.' && (name[1] == '\0' ||
|
|
||||||
+ (name[1] == '.' && name[2] == '\0')))
|
|
||||||
+ return true;
|
|
||||||
+
|
|
||||||
+ if (streq(name, "build") || streq(name, "source"))
|
|
||||||
+ return true;
|
|
||||||
+
|
|
||||||
+ for (exc = cfg->excludes; exc != NULL; exc = exc->next) {
|
|
||||||
+ if (streq(name, exc->exclude_dir))
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int depmod_modules_search_dir(struct depmod *depmod, DIR *d, size_t baselen, struct scratchbuf *s_path)
|
|
||||||
{
|
|
||||||
struct dirent *de;
|
|
||||||
@@ -1240,11 +1300,9 @@ static int depmod_modules_search_dir(struct depmod *depmod, DIR *d, size_t basel
|
|
||||||
size_t namelen;
|
|
||||||
uint8_t is_dir;
|
|
||||||
|
|
||||||
- if (name[0] == '.' && (name[1] == '\0' ||
|
|
||||||
- (name[1] == '.' && name[2] == '\0')))
|
|
||||||
- continue;
|
|
||||||
- if (streq(name, "build") || streq(name, "source"))
|
|
||||||
+ if (should_exclude_dir(depmod->cfg, name))
|
|
||||||
continue;
|
|
||||||
+
|
|
||||||
namelen = strlen(name);
|
|
||||||
if (scratchbuf_alloc(s_path, baselen + namelen + 2) < 0) {
|
|
||||||
err = -ENOMEM;
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
||||||
@@ -15,12 +15,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
|
|||||||
"
|
"
|
||||||
inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives
|
inherit autotools bash-completion gtk-doc pkgconfig manpages update-alternatives
|
||||||
|
|
||||||
SRCREV = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1"
|
SRCREV = "5d46434a63ae0160150a0efdde1914873697e273"
|
||||||
|
|
||||||
SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git;branch=master \
|
SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git;branch=master \
|
||||||
file://depmod-search.conf \
|
file://depmod-search.conf \
|
||||||
file://avoid_parallel_tests.patch \
|
file://avoid_parallel_tests.patch \
|
||||||
file://0001-depmod-Add-support-for-excluding-a-directory.patch \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
Reference in New Issue
Block a user