remove sys-apps/kmod

mhiretskiy
Alexander Tratsevskiy 3 years ago
parent ce57130891
commit 51867a408f

@ -1,2 +0,0 @@
DIST kmod-26.tar.xz 552032 BLAKE2B 3e596d06b48599bf4919346475a036b058fb18a7b19d39953e24fa943b95fdbe34a29a5062f6b4fe3510e667ae873d3b9ae03b72350fa85ddbb40ca6a7730b34 SHA512 3ca276c6fc13c2dd2220ec528b8dc4ab4edee5d2b22e16b6f945c552e51f74342c01c33a53740e6af8c893d42bd4d6f629cd8fa6e15ef8bd8da30cb003ef0865
DIST kmod-27.tar.xz 548924 BLAKE2B 9f12bf5792d4c867e28e0776c279369c063e84269212e3f699ae6e5e69b8b2b466b5033e43e17ac64d6101592edcf3c34881916afb6ae676b49dc8838dfe1396 SHA512 e0513094935333fca1fb4c3e3493b232507a579ab00a6457cc9ed3e928363d05aad80634fb65a8287a336bf9895194c7be8ddc41bb088a6c2cca44fc1bfbdb6c

@ -1,143 +0,0 @@
From 628677e066198d8658d7edd5511a5bb27cd229f5 Mon Sep 17 00:00:00 2001
From: Stefan Strogin <steils@gentoo.org>
Date: Sun, 19 May 2019 03:42:01 +0300
Subject: [PATCH] libkmod-signature: use PKCS#7 instead of CMS
Linux uses either PKCS #7 or CMS for signing modules (see
scripts/sign-file.c). CMS is not supported by LibreSSL or older OpenSSL,
so PKCS #7 is used on systems with these libcrypto providers.
CMS and PKCS #7 formats are very similar. CMS is newer but is as much as
possible backward compatible with PKCS #7 [1]. PKCS #7 is supported in
the latest OpenSSL as well as CMS. The fields used for signing kernel
modules are supported both in PKCS #7 and CMS.
For now modinfo uses CMS with no alternative requiring OpenSSL 1.1.0 or
newer.
Use PKCS #7 for parsing module signature information, so that modinfo
could be used both with OpenSSL and LibreSSL.
[1] https://tools.ietf.org/html/rfc5652#section-1.1
Changes v1->v2:
- Don't use ifdefs for keeping redundant CMS code, just use PKCS #7 both
with OpenSSL and LibreSSL.
Upstream-Status: Accepted
[https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/commit/?id=628677e066198d8658d7edd5511a5bb27cd229f5]
Signed-off-by: Stefan Strogin <steils@gentoo.org>
---
libkmod/libkmod-signature.c | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c
index 48d0145..4e8748c 100644
--- a/libkmod/libkmod-signature.c
+++ b/libkmod/libkmod-signature.c
@@ -20,7 +20,7 @@
#include <endian.h>
#include <inttypes.h>
#ifdef ENABLE_OPENSSL
-#include <openssl/cms.h>
+#include <openssl/pkcs7.h>
#include <openssl/ssl.h>
#endif
#include <stdio.h>
@@ -122,7 +122,7 @@ static bool fill_default(const char *mem, off_t size,
#ifdef ENABLE_OPENSSL
struct pkcs7_private {
- CMS_ContentInfo *cms;
+ PKCS7 *pkcs7;
unsigned char *key_id;
BIGNUM *sno;
};
@@ -132,7 +132,7 @@ static void pkcs7_free(void *s)
struct kmod_signature_info *si = s;
struct pkcs7_private *pvt = si->private;
- CMS_ContentInfo_free(pvt->cms);
+ PKCS7_free(pvt->pkcs7);
BN_free(pvt->sno);
free(pvt->key_id);
free(pvt);
@@ -197,11 +197,10 @@ static bool fill_pkcs7(const char *mem, off_t size,
struct kmod_signature_info *sig_info)
{
const char *pkcs7_raw;
- CMS_ContentInfo *cms;
- STACK_OF(CMS_SignerInfo) *sis;
- CMS_SignerInfo *si;
- int rc;
- ASN1_OCTET_STRING *key_id;
+ PKCS7 *pkcs7;
+ STACK_OF(PKCS7_SIGNER_INFO) *sis;
+ PKCS7_SIGNER_INFO *si;
+ PKCS7_ISSUER_AND_SERIAL *is;
X509_NAME *issuer;
ASN1_INTEGER *sno;
ASN1_OCTET_STRING *sig;
@@ -220,31 +219,33 @@ static bool fill_pkcs7(const char *mem, off_t size,
in = BIO_new_mem_buf(pkcs7_raw, sig_len);
- cms = d2i_CMS_bio(in, NULL);
- if (cms == NULL) {
+ pkcs7 = d2i_PKCS7_bio(in, NULL);
+ if (pkcs7 == NULL) {
BIO_free(in);
return false;
}
BIO_free(in);
- sis = CMS_get0_SignerInfos(cms);
+ sis = PKCS7_get_signer_info(pkcs7);
if (sis == NULL)
goto err;
- si = sk_CMS_SignerInfo_value(sis, 0);
+ si = sk_PKCS7_SIGNER_INFO_value(sis, 0);
if (si == NULL)
goto err;
- rc = CMS_SignerInfo_get0_signer_id(si, &key_id, &issuer, &sno);
- if (rc == 0)
+ is = si->issuer_and_serial;
+ if (is == NULL)
goto err;
+ issuer = is->issuer;
+ sno = is->serial;
- sig = CMS_SignerInfo_get0_signature(si);
+ sig = si->enc_digest;
if (sig == NULL)
goto err;
- CMS_SignerInfo_get0_algs(si, NULL, NULL, &dig_alg, &sig_alg);
+ PKCS7_SIGNER_INFO_get0_algs(si, NULL, &dig_alg, &sig_alg);
sig_info->sig = (const char *)ASN1_STRING_get0_data(sig);
sig_info->sig_len = ASN1_STRING_length(sig);
@@ -277,7 +278,7 @@ static bool fill_pkcs7(const char *mem, off_t size,
if (pvt == NULL)
goto err3;
- pvt->cms = cms;
+ pvt->pkcs7 = pkcs7;
pvt->key_id = key_id_str;
pvt->sno = sno_bn;
sig_info->private = pvt;
@@ -290,7 +291,7 @@ err3:
err2:
BN_free(sno_bn);
err:
- CMS_ContentInfo_free(cms);
+ PKCS7_free(pkcs7);
return false;
}
--
2.21.0

@ -1,53 +0,0 @@
From 53b30aeba2dedae9f5558f560231d9462e063dfc Mon Sep 17 00:00:00 2001
From: Lucas De Marchi <lucas.demarchi@intel.com>
Date: Thu, 5 Mar 2020 13:33:10 -0800
Subject: depmod: do not output .bin to stdout
index_write() relies on fseek/ftell to manage the position to which we
are write and thus needs the file stream to support it.
Right now when trying to write the index to stdout we fail with:
depmod: tools/depmod.c:416: index_write: Assertion `initial_offset >= 0' failed.
Aborted (core dumped)
We have no interest in outputting our index to stdout, so just skip it
like is done with other indexes.
While at it, add/remove some newlines to improve readability.
Reported-by: Yanko Kaneti <yaneti@declera.com>
Fix: b866b2165ae6 ("Lookup aliases in the modules.builtin.modinfo")
---
tools/depmod.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/depmod.c b/tools/depmod.c
index fbbce10..875e314 100644
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -2408,8 +2408,10 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
struct index_node *idx;
struct kmod_list *l, *builtin = NULL;
- idx = index_create();
+ if (out == stdout)
+ return 0;
+ idx = index_create();
if (idx == NULL) {
ret = -ENOMEM;
goto fail;
@@ -2456,7 +2458,9 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
if (count)
index_write(idx, out);
+
index_destroy(idx);
+
fail:
if (builtin)
kmod_module_unref_list(builtin);
--
cgit 1.2.3-1.el7

@ -1,18 +0,0 @@
#!/sbin/openrc-run
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
description="Create list of required static device nodes for the current kernel"
depend() {
after dev-mount
before tmpfiles.dev dev
keyword -lxc -systemd-nspawn
}
start() {
ebegin "Creating list of required static device nodes for the current kernel"
checkpath -q -d /run/tmpfiles.d
kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf
eend $?
}

@ -1,187 +0,0 @@
diff --git a/Makefile.am b/Makefile.am
index 8eadb99..a471c55 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -90,7 +90,7 @@ libkmod_libkmod_la_DEPENDENCIES = \
${top_srcdir}/libkmod/libkmod.sym
libkmod_libkmod_la_LIBADD = \
shared/libshared.la \
- ${liblzma_LIBS} ${zlib_LIBS} ${libcrypto_LIBS}
+ ${libzstd_LIBS} ${liblzma_LIBS} ${zlib_LIBS} ${libcrypto_LIBS}
noinst_LTLIBRARIES += libkmod/libkmod-internal.la
libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES)
diff --git a/configure.ac b/configure.ac
index 4a65d6b..30aaa1d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -83,6 +83,17 @@ AC_ARG_WITH([rootlibdir],
[], [with_rootlibdir=$libdir])
AC_SUBST([rootlibdir], [$with_rootlibdir])
+AC_ARG_WITH([zstd],
+ AS_HELP_STRING([--with-zstd], [handle Zstd-compressed modules @<:@default=disabled@:>@]),
+ [], [with_zstd=no])
+AS_IF([test "x$with_zstd" != "xno"], [
+ PKG_CHECK_MODULES([libzstd], [libzstd >= 1.4.4])
+ AC_DEFINE([ENABLE_ZSTD], [1], [Enable Zstd for modules.])
+], [
+ AC_MSG_NOTICE([Zstd support not requested])
+])
+CC_FEATURE_APPEND([with_features], [with_zstd], [ZSTD])
+
AC_ARG_WITH([xz],
AS_HELP_STRING([--with-xz], [handle Xz-compressed modules @<:@default=disabled@:>@]),
[], [with_xz=no])
@@ -307,7 +318,7 @@ AC_MSG_RESULT([
tools: ${enable_tools}
python bindings: ${enable_python}
logging: ${enable_logging}
- compression: xz=${with_xz} zlib=${with_zlib}
+ compression: zstd=${with_zstd} xz=${with_xz} zlib=${with_zlib}
debug: ${enable_debug}
coverage: ${enable_coverage}
doc: ${enable_gtk_doc}
diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c
index 5eeba6a..2575b01 100644
--- a/libkmod/libkmod-file.c
+++ b/libkmod/libkmod-file.c
@@ -32,7 +32,9 @@
#ifdef ENABLE_ZLIB
#include <zlib.h>
#endif
-
+#ifdef ENABLE_ZSTD
+#include <zstd.h>
+#endif
#include <shared/util.h>
#include "libkmod.h"
@@ -45,6 +47,9 @@ struct file_ops {
};
struct kmod_file {
+#ifdef ENABLE_ZSTD
+ bool zstd_used;
+#endif
#ifdef ENABLE_XZ
bool xz_used;
#endif
@@ -60,6 +65,79 @@ struct kmod_file {
struct kmod_elf *elf;
};
+#ifdef ENABLE_ZSTD
+static int zstd_uncompress(ZSTD_DStream *strm, struct kmod_file *file) {
+ uint8_t in_buf[BUFSIZ], out_buf[BUFSIZ];
+ ZSTD_outBuffer output = { out_buf, sizeof(out_buf), 0 };
+ ZSTD_inBuffer input = { in_buf, 0, 0 };
+ void *p = NULL;
+ int ret = 0;
+ size_t total = 0;
+
+ while(true) {
+ size_t sz;
+ if (input.pos == input.size) {
+ ssize_t rdret = read(file->fd, in_buf, sizeof(in_buf));
+ if (rdret < 0) {
+ ret = -errno;
+ goto out;
+ }
+ input.size = rdret;
+ input.pos = 0;
+ }
+ if (input.size == 0) {
+ break;
+ }
+ sz = ZSTD_decompressStream(strm, &output, &input);
+ if (ZSTD_isError(sz)) {
+ ret = -1;
+ goto out;
+ }
+ if (output.pos == output.size || sz == 0) {
+ size_t write_size = output.pos;
+ char *tmp = realloc(p, total + write_size);
+ if (tmp == NULL) {
+ ret = -errno;
+ goto out;
+ }
+ memcpy(tmp + total, out_buf, write_size);
+ total += write_size;
+ p = tmp;
+ if (output.pos == output.size) {
+ output.pos = 0;
+ }
+ }
+ }
+ file->zstd_used = true;
+ file->memory = p;
+ file->size = total;
+ return 0;
+out:
+ free(p);
+ return ret;
+}
+
+static int load_zstd(struct kmod_file *file)
+{
+ ZSTD_DStream* strm = ZSTD_createDStream();
+ int ret;
+ ZSTD_initDStream(strm);
+
+ ret = zstd_uncompress(strm, file);
+ ZSTD_freeDStream(strm);
+ return ret;
+}
+
+static void unload_zstd(struct kmod_file *file)
+{
+ if (!file->zstd_used)
+ return;
+ free(file->memory);
+}
+
+static const char magic_zstd[] = {0x28, 0xb5, 0x2f, 0xfd};
+#endif
+
#ifdef ENABLE_XZ
static void xz_uncompress_belch(struct kmod_file *file, lzma_ret ret)
{
@@ -238,6 +316,9 @@ static const struct comp_type {
const char *magic_bytes;
const struct file_ops ops;
} comp_types[] = {
+#ifdef ENABLE_ZSTD
+ {sizeof(magic_zstd), magic_zstd, {load_zstd, unload_zstd}},
+#endif
#ifdef ENABLE_XZ
{sizeof(magic_xz), magic_xz, {load_xz, unload_xz}},
#endif
diff --git a/shared/util.c b/shared/util.c
index fd2028d..b487b5f 100644
--- a/shared/util.c
+++ b/shared/util.c
@@ -45,6 +45,9 @@ static const struct kmod_ext {
#endif
#ifdef ENABLE_XZ
{".ko.xz", sizeof(".ko.xz") - 1},
+#endif
+#ifdef ENABLE_ZSTD
+ {".ko.zst", sizeof(".ko.zst") - 1},
#endif
{ }
};
diff --git a/testsuite/test-util.c b/testsuite/test-util.c
index 5e25e58..621446b 100644
--- a/testsuite/test-util.c
+++ b/testsuite/test-util.c
@@ -156,6 +156,9 @@ static int test_path_ends_with_kmod_ext(const struct test *t)
#endif
#ifdef ENABLE_XZ
{ "/bla.ko.xz", true },
+#endif
+#ifdef ENABLE_ZSTD
+ { "/bla.ko.zst", true },
#endif
{ "/bla.ko.x", false },
{ "/bla.ko.", false },

@ -1,187 +0,0 @@
diff --git a/Makefile.am b/Makefile.am
index 47505c1..155456f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -89,7 +89,7 @@ libkmod_libkmod_la_DEPENDENCIES = \
${top_srcdir}/libkmod/libkmod.sym
libkmod_libkmod_la_LIBADD = \
shared/libshared.la \
- ${liblzma_LIBS} ${zlib_LIBS} ${openssl_LIBS}
+ ${libzstd_LIBS} ${liblzma_LIBS} ${zlib_LIBS} ${openssl_LIBS}
noinst_LTLIBRARIES += libkmod/libkmod-internal.la
libkmod_libkmod_internal_la_SOURCES = $(libkmod_libkmod_la_SOURCES)
diff --git a/configure.ac b/configure.ac
index e885d79..a286159 100644
--- a/configure.ac
+++ b/configure.ac
@@ -83,6 +83,17 @@ AC_ARG_WITH([rootlibdir],
[], [with_rootlibdir=$libdir])
AC_SUBST([rootlibdir], [$with_rootlibdir])
+AC_ARG_WITH([zstd],
+ AS_HELP_STRING([--with-zstd], [handle Zstd-compressed modules @<:@default=disabled@:>@]),
+ [], [with_zstd=no])
+AS_IF([test "x$with_zstd" != "xno"], [
+ PKG_CHECK_MODULES([libzstd], [libzstd >= 1.4.4])
+ AC_DEFINE([ENABLE_ZSTD], [1], [Enable Zstd for modules.])
+], [
+ AC_MSG_NOTICE([Zstd support not requested])
+])
+CC_FEATURE_APPEND([with_features], [with_zstd], [ZSTD])
+
AC_ARG_WITH([xz],
AS_HELP_STRING([--with-xz], [handle Xz-compressed modules @<:@default=disabled@:>@]),
[], [with_xz=no])
@@ -307,7 +318,7 @@ AC_MSG_RESULT([
tools: ${enable_tools}
python bindings: ${enable_python}
logging: ${enable_logging}
- compression: xz=${with_xz} zlib=${with_zlib}
+ compression: zstd=${with_zstd} xz=${with_xz} zlib=${with_zlib}
debug: ${enable_debug}
coverage: ${enable_coverage}
doc: ${enable_gtk_doc}
diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c
index 5eeba6a..2575b01 100644
--- a/libkmod/libkmod-file.c
+++ b/libkmod/libkmod-file.c
@@ -32,7 +32,9 @@
#ifdef ENABLE_ZLIB
#include <zlib.h>
#endif
-
+#ifdef ENABLE_ZSTD
+#include <zstd.h>
+#endif
#include <shared/util.h>
#include "libkmod.h"
@@ -45,6 +47,9 @@ struct file_ops {
};
struct kmod_file {
+#ifdef ENABLE_ZSTD
+ bool zstd_used;
+#endif
#ifdef ENABLE_XZ
bool xz_used;
#endif
@@ -60,6 +65,79 @@ struct kmod_file {
struct kmod_elf *elf;
};
+#ifdef ENABLE_ZSTD
+static int zstd_uncompress(ZSTD_DStream *strm, struct kmod_file *file) {
+ uint8_t in_buf[BUFSIZ], out_buf[BUFSIZ];
+ ZSTD_outBuffer output = { out_buf, sizeof(out_buf), 0 };
+ ZSTD_inBuffer input = { in_buf, 0, 0 };
+ void *p = NULL;
+ int ret = 0;
+ size_t total = 0;
+
+ while(true) {
+ size_t sz;
+ if (input.pos == input.size) {
+ ssize_t rdret = read(file->fd, in_buf, sizeof(in_buf));
+ if (rdret < 0) {
+ ret = -errno;
+ goto out;
+ }
+ input.size = rdret;
+ input.pos = 0;
+ }
+ if (input.size == 0) {
+ break;
+ }
+ sz = ZSTD_decompressStream(strm, &output, &input);
+ if (ZSTD_isError(sz)) {
+ ret = -1;
+ goto out;
+ }
+ if (output.pos == output.size || sz == 0) {
+ size_t write_size = output.pos;
+ char *tmp = realloc(p, total + write_size);
+ if (tmp == NULL) {
+ ret = -errno;
+ goto out;
+ }
+ memcpy(tmp + total, out_buf, write_size);
+ total += write_size;
+ p = tmp;
+ if (output.pos == output.size) {
+ output.pos = 0;
+ }
+ }
+ }
+ file->zstd_used = true;
+ file->memory = p;
+ file->size = total;
+ return 0;
+out:
+ free(p);
+ return ret;
+}
+
+static int load_zstd(struct kmod_file *file)
+{
+ ZSTD_DStream* strm = ZSTD_createDStream();
+ int ret;
+ ZSTD_initDStream(strm);
+
+ ret = zstd_uncompress(strm, file);
+ ZSTD_freeDStream(strm);
+ return ret;
+}
+
+static void unload_zstd(struct kmod_file *file)
+{
+ if (!file->zstd_used)
+ return;
+ free(file->memory);
+}
+
+static const char magic_zstd[] = {0x28, 0xb5, 0x2f, 0xfd};
+#endif
+
#ifdef ENABLE_XZ
static void xz_uncompress_belch(struct kmod_file *file, lzma_ret ret)
{
@@ -238,6 +316,9 @@ static const struct comp_type {
const char *magic_bytes;
const struct file_ops ops;
} comp_types[] = {
+#ifdef ENABLE_ZSTD
+ {sizeof(magic_zstd), magic_zstd, {load_zstd, unload_zstd}},
+#endif
#ifdef ENABLE_XZ
{sizeof(magic_xz), magic_xz, {load_xz, unload_xz}},
#endif
diff --git a/shared/util.c b/shared/util.c
index fd2028d..b487b5f 100644
--- a/shared/util.c
+++ b/shared/util.c
@@ -45,6 +45,9 @@ static const struct kmod_ext {
#endif
#ifdef ENABLE_XZ
{".ko.xz", sizeof(".ko.xz") - 1},
+#endif
+#ifdef ENABLE_ZSTD
+ {".ko.zst", sizeof(".ko.zst") - 1},
#endif
{ }
};
diff --git a/testsuite/test-util.c b/testsuite/test-util.c
index 5e25e58..621446b 100644
--- a/testsuite/test-util.c
+++ b/testsuite/test-util.c
@@ -156,6 +156,9 @@ static int test_path_ends_with_kmod_ext(const struct test *t)
#endif
#ifdef ENABLE_XZ
{ "/bla.ko.xz", true },
+#endif
+#ifdef ENABLE_ZSTD
+ { "/bla.ko.zst", true },
#endif
{ "/bla.ko.x", false },
{ "/bla.ko.", false },

@ -1,204 +0,0 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
PYTHON_COMPAT=( python3_{6,7} )
inherit bash-completion-r1 multilib python-r1
if [[ ${PV} == 9999* ]]; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/kernel/${PN}/${PN}.git"
inherit autotools git-r3
else
SRC_URI="https://www.kernel.org/pub/linux/utils/kernel/kmod/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86"
inherit libtool
fi
DESCRIPTION="library and tools for managing linux kernel modules"
HOMEPAGE="https://git.kernel.org/?p=utils/kernel/kmod/kmod.git"
LICENSE="LGPL-2"
SLOT="0"
IUSE="debug doc libressl lzma pkcs7 python static-libs +tools zlib zstd"
# Upstream does not support running the test suite with custom configure flags.
# I was also told that the test suite is intended for kmod developers.
# So we have to restrict it.
# See bug #408915.
RESTRICT="test"
# Block systemd below 217 for -static-nodes-indicate-that-creation-of-static-nodes-.patch
RDEPEND="!sys-apps/module-init-tools
!sys-apps/modutils
!<sys-apps/openrc-0.13.8
!<sys-apps/systemd-216-r3
lzma? ( >=app-arch/xz-utils-5.0.4-r1 )
zstd? ( >=app-arch/zstd-1.4.0 )
python? ( ${PYTHON_DEPS} )
pkcs7? (
!libressl? ( >=dev-libs/openssl-1.1.0:0= )
libressl? ( dev-libs/libressl:0= )
)
zlib? ( >=sys-libs/zlib-1.2.6 )" #427130
DEPEND="${RDEPEND}
doc? ( dev-util/gtk-doc )
lzma? ( virtual/pkgconfig )
python? (
dev-python/cython[${PYTHON_USEDEP}]
virtual/pkgconfig
)
zlib? ( virtual/pkgconfig )"
if [[ ${PV} == 9999* ]]; then
DEPEND="${DEPEND}
dev-libs/libxslt"
fi
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
DOCS="NEWS README TODO"
PATCHES=(
"${FILESDIR}/${P}-libressl.patch" # bug 677960
"${FILESDIR}/zstd-support.patch"
)
src_prepare() {
default
if [[ ! -e configure ]] ; then
if use doc; then
gtkdocize --copy --docdir libkmod/docs || die
else
touch libkmod/docs/gtk-doc.make
fi
eautoreconf
else
elibtoolize
fi
# Restore possibility of running --enable-static wrt #472608
sed -i \
-e '/--enable-static is not supported by kmod/s:as_fn_error:echo:' \
configure || die
}
src_configure() {
local myeconfargs=(
--bindir="${EPREFIX}/bin"
--enable-shared
--with-bashcompletiondir="$(get_bashcompdir)"
--with-rootlibdir="${EPREFIX}/$(get_libdir)"
$(use_enable debug)
$(use_enable doc gtk-doc)
$(use_enable static-libs static)
$(use_enable tools)
$(use_with lzma xz)
$(use_with pkcs7 openssl)
$(use_with zlib)
$(use_with zstd)
)
local ECONF_SOURCE="${S}"
kmod_configure() {
mkdir -p "${BUILD_DIR}" || die
run_in_build_dir econf "${myeconfargs[@]}" "$@"
}
BUILD_DIR="${WORKDIR}/build"
kmod_configure --disable-python
if use python; then
python_foreach_impl kmod_configure --enable-python
fi
}
src_compile() {
emake -C "${BUILD_DIR}"
if use python; then
local native_builddir=${BUILD_DIR}
python_compile() {
emake -C "${BUILD_DIR}" -f Makefile -f - python \
VPATH="${native_builddir}:${S}" \
native_builddir="${native_builddir}" \
libkmod_python_kmod_{kmod,list,module,_util}_la_LIBADD='$(PYTHON_LIBS) $(native_builddir)/libkmod/libkmod.la' \
<<< 'python: $(pkgpyexec_LTLIBRARIES)'
}
python_foreach_impl python_compile
fi
}
src_install() {
emake -C "${BUILD_DIR}" DESTDIR="${D}" install
einstalldocs
if use python; then
local native_builddir=${BUILD_DIR}
python_install() {
emake -C "${BUILD_DIR}" DESTDIR="${D}" \
VPATH="${native_builddir}:${S}" \
install-pkgpyexecLTLIBRARIES \
install-dist_pkgpyexecPYTHON
python_optimize
}
python_foreach_impl python_install
fi
find "${ED}" -name "*.la" -delete || die
if use tools; then
local cmd
for cmd in depmod insmod modprobe rmmod; do
dosym ../bin/kmod /sbin/${cmd}
done
# These are also usable as normal user
for cmd in lsmod modinfo; do
dosym kmod /bin/${cmd}
done
fi
cat <<-EOF > "${T}"/usb-load-ehci-first.conf
softdep uhci_hcd pre: ehci_hcd
softdep ohci_hcd pre: ehci_hcd
EOF
insinto /lib/modprobe.d
doins "${T}"/usb-load-ehci-first.conf #260139
newinitd "${FILESDIR}"/kmod-static-nodes-r1 kmod-static-nodes
}
pkg_postinst() {
if [[ -L ${EROOT%/}/etc/runlevels/boot/static-nodes ]]; then
ewarn "Removing old conflicting static-nodes init script from the boot runlevel"
rm -f "${EROOT%/}"/etc/runlevels/boot/static-nodes
fi
# Add kmod to the runlevel automatically if this is the first install of this package.
if [[ -z ${REPLACING_VERSIONS} ]]; then
if [[ ! -d ${EROOT%/}/etc/runlevels/sysinit ]]; then
mkdir -p "${EROOT%/}"/etc/runlevels/sysinit
fi
if [[ -x ${EROOT%/}/etc/init.d/kmod-static-nodes ]]; then
ln -s /etc/init.d/kmod-static-nodes "${EROOT%/}"/etc/runlevels/sysinit/kmod-static-nodes
fi
fi
if [[ -e ${EROOT%/}/etc/runlevels/sysinit ]]; then
if [[ ! -e ${EROOT%/}/etc/runlevels/sysinit/kmod-static-nodes ]]; then
ewarn
ewarn "You need to add kmod-static-nodes to the sysinit runlevel for"
ewarn "kernel modules to have required static nodes!"
ewarn "Run this command:"
ewarn "\trc-update add kmod-static-nodes sysinit"
fi
fi
}

@ -1,209 +0,0 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8} )
inherit autotools bash-completion-r1 multilib python-r1
if [[ ${PV} == 9999* ]]; then
EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/kernel/${PN}/${PN}.git"
inherit git-r3
else
SRC_URI="https://www.kernel.org/pub/linux/utils/kernel/kmod/${P}.tar.xz"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86"
#inherit libtool
fi
DESCRIPTION="library and tools for managing linux kernel modules"
HOMEPAGE="https://git.kernel.org/?p=utils/kernel/kmod/kmod.git"
LICENSE="LGPL-2"
SLOT="0"
IUSE="debug doc libressl +lzma pkcs7 python static-libs +tools +zlib +zstd"
# Upstream does not support running the test suite with custom configure flags.
# I was also told that the test suite is intended for kmod developers.
# So we have to restrict it.
# See bug #408915.
RESTRICT="test"
# Block systemd below 217 for -static-nodes-indicate-that-creation-of-static-nodes-.patch
RDEPEND="!sys-apps/module-init-tools
!sys-apps/modutils
!<sys-apps/openrc-0.13.8
!<sys-apps/systemd-216-r3
lzma? ( >=app-arch/xz-utils-5.0.4-r1 )
zstd? ( >=app-arch/zstd-1.4.0 )
python? ( ${PYTHON_DEPS} )
pkcs7? (
!libressl? ( >=dev-libs/openssl-1.1.0:0= )
libressl? ( dev-libs/libressl:0= )
)
zlib? ( >=sys-libs/zlib-1.2.6 )" #427130
DEPEND="${RDEPEND}"
BDEPEND="
doc? (
dev-util/gtk-doc
dev-util/gtk-doc-am
)
lzma? ( virtual/pkgconfig )
python? (
dev-python/cython[${PYTHON_USEDEP}]
virtual/pkgconfig
)
zlib? ( virtual/pkgconfig )
"
if [[ ${PV} == 9999* ]]; then
DEPEND="${DEPEND}
dev-libs/libxslt"
fi
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
DOCS="NEWS README TODO"
PATCHES=( "${FILESDIR}"/${P}-depmod-do-not-output-.bin-to-stdout.patch
"${FILESDIR}"/zstd-support-27.patch
)
src_prepare() {
default
if [[ ! -e configure ]] || use doc ; then
if use doc; then
cp "${EROOT}"/usr/share/aclocal/gtk-doc.m4 m4 || die
gtkdocize --copy --docdir libkmod/docs || die
else
touch libkmod/docs/gtk-doc.make
fi
eautoreconf
else
elibtoolize
fi
# Restore possibility of running --enable-static wrt #472608
sed -i \
-e '/--enable-static is not supported by kmod/s:as_fn_error:echo:' \
configure || die
}
src_configure() {
local myeconfargs=(
--bindir="${EPREFIX}/bin"
--enable-shared
--with-bashcompletiondir="$(get_bashcompdir)"
--with-rootlibdir="${EPREFIX}/$(get_libdir)"
$(use_enable debug)
$(usex doc '--enable-gtk-doc' '')
$(use_enable static-libs static)
$(use_enable tools)
$(use_with lzma xz)
$(use_with pkcs7 openssl)
$(use_with zlib)
$(use_with zstd)
)
local ECONF_SOURCE="${S}"
kmod_configure() {
mkdir -p "${BUILD_DIR}" || die
run_in_build_dir econf "${myeconfargs[@]}" "$@"
}
BUILD_DIR="${WORKDIR}/build"
kmod_configure --disable-python
if use python; then
python_foreach_impl kmod_configure --enable-python
fi
}
src_compile() {
emake -C "${BUILD_DIR}"
if use python; then
local native_builddir=${BUILD_DIR}
python_compile() {
emake -C "${BUILD_DIR}" -f Makefile -f - python \
VPATH="${native_builddir}:${S}" \
native_builddir="${native_builddir}" \
libkmod_python_kmod_{kmod,list,module,_util}_la_LIBADD='$(PYTHON_LIBS) $(native_builddir)/libkmod/libkmod.la' \
<<< 'python: $(pkgpyexec_LTLIBRARIES)'
}
python_foreach_impl python_compile
fi
}
src_install() {
emake -C "${BUILD_DIR}" DESTDIR="${D}" install
einstalldocs
if use python; then
local native_builddir=${BUILD_DIR}
python_install() {
emake -C "${BUILD_DIR}" DESTDIR="${D}" \
VPATH="${native_builddir}:${S}" \
install-pkgpyexecLTLIBRARIES \
install-dist_pkgpyexecPYTHON
python_optimize
}
python_foreach_impl python_install
fi
find "${ED}" -type f -name "*.la" -delete || die
if use tools; then
local cmd
for cmd in depmod insmod modprobe rmmod; do
dosym ../bin/kmod /sbin/${cmd}
done
# These are also usable as normal user
for cmd in lsmod modinfo; do
dosym kmod /bin/${cmd}
done
fi
cat <<-EOF > "${T}"/usb-load-ehci-first.conf
softdep uhci_hcd pre: ehci_hcd
softdep ohci_hcd pre: ehci_hcd
EOF
insinto /lib/modprobe.d
doins "${T}"/usb-load-ehci-first.conf #260139
newinitd "${FILESDIR}"/kmod-static-nodes-r1 kmod-static-nodes
}
pkg_postinst() {
if [[ -L ${EROOT}/etc/runlevels/boot/static-nodes ]]; then
ewarn "Removing old conflicting static-nodes init script from the boot runlevel"
rm -f "${EROOT}"/etc/runlevels/boot/static-nodes
fi
# Add kmod to the runlevel automatically if this is the first install of this package.
if [[ -z ${REPLACING_VERSIONS} ]]; then
if [[ ! -d ${EROOT}/etc/runlevels/sysinit ]]; then
mkdir -p "${EROOT}"/etc/runlevels/sysinit
fi
if [[ -x ${EROOT}/etc/init.d/kmod-static-nodes ]]; then
ln -s /etc/init.d/kmod-static-nodes "${EROOT}"/etc/runlevels/sysinit/kmod-static-nodes
fi
fi
if [[ -e ${EROOT}/etc/runlevels/sysinit ]]; then
if ! has_version sys-apps/systemd && [[ ! -e ${EROOT}/etc/runlevels/sysinit/kmod-static-nodes ]]; then
ewarn
ewarn "You need to add kmod-static-nodes to the sysinit runlevel for"
ewarn "kernel modules to have required static nodes!"
ewarn "Run this command:"
ewarn "\trc-update add kmod-static-nodes sysinit"
fi
fi
}

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>udev-bugs@gentoo.org</email>
</maintainer>
<maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<use>
<flag name="lzma">Enable support for XZ compressed modules</flag>
<flag name="pkcs7">Enable PKCS#7 signature parsing for modinfo.</flag>
<flag name="tools">Install module loading/unloading tools.</flag>
<flag name="zlib">Enable support for gzipped modules</flag>
<flag name="zstd">Enable support for ZSTD compressed modules</flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:kernel:kmod</remote-id>
</upstream>
</pkgmetadata>
Loading…
Cancel
Save