diff --git a/debian/changelog b/debian/changelog index 02874b6..80ff218 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +ndctl (76-1ubuntu1) lunar; urgency=medium + + * Drop option dependencies: libtracefs & libtraceevent to avoid MIR + - Upstream cherry-pick https://github.com/pmem/ndctl/commit/82884ee + - d/control: drop libtracesfs & libtraceevent (LP: #2009715, LP: #2008799) + - d/rules: disabled libtracefs option + + -- Lukas Märdian Tue, 21 Mar 2023 11:36:57 +0100 + ndctl (76-1) unstable; urgency=medium * New upstream release (mostly fixes). diff --git a/debian/control b/debian/control index 7136ef5..262cd30 100644 --- a/debian/control +++ b/debian/control @@ -13,8 +13,6 @@ Build-Depends: debhelper-compat (= 13), libkeyutils-dev, asciidoctor, libiniparser-dev, - libtraceevent-dev, - libtracefs-dev, meson, cmake, Rules-Requires-Root: no diff --git a/debian/patches/0001-cxl-monitor-Make-libtracefs-dependency-optional.patch b/debian/patches/0001-cxl-monitor-Make-libtracefs-dependency-optional.patch new file mode 100644 index 0000000..9a591ae --- /dev/null +++ b/debian/patches/0001-cxl-monitor-Make-libtracefs-dependency-optional.patch @@ -0,0 +1,185 @@ +From: Dan Williams +Date: Thu, 23 Feb 2023 12:29:02 -0800 +Subject: cxl/monitor: Make libtracefs dependency optional + +Build a stub version of 'cxl monitor' that reports that the facility was +statically disabled at configure / build time. Provide the meson +configuration line to correct the build. + +This is in response to the fact that some distros fail to ship +libtracefs-devel even though they ship libtracefs (looking at you CentOS +Stream 8). + +Signed-off-by: Dan Williams +Link: https://lore.kernel.org/r/167718414197.16926.10394415062829848410.stgit@dwillia2-xfh.jf.intel.com +Reviewed-by: Dave Jiang +Reviewed-by: Ira Weiny +Signed-off-by: Vishal Verma +--- + config.h.meson | 3 +++ + cxl/builtin.h | 9 +++++++++ + cxl/meson.build | 33 +++++++++++++++++++++------------ + meson.build | 7 +++++-- + meson_options.txt | 1 + + ndctl.spec.in | 8 +++++--- + 6 files changed, 44 insertions(+), 17 deletions(-) + +diff --git a/config.h.meson b/config.h.meson +index 2852f1e..5441dff 100644 +--- a/config.h.meson ++++ b/config.h.meson +@@ -19,6 +19,9 @@ + /* ndctl test support */ + #mesondefine ENABLE_TEST + ++/* cxl monitor support */ ++#mesondefine ENABLE_LIBTRACEFS ++ + /* Define to 1 if big-endian-arch */ + #mesondefine HAVE_BIG_ENDIAN + +diff --git a/cxl/builtin.h b/cxl/builtin.h +index 34c5cfb..9baa43b 100644 +--- a/cxl/builtin.h ++++ b/cxl/builtin.h +@@ -22,5 +22,14 @@ int cmd_create_region(int argc, const char **argv, struct cxl_ctx *ctx); + int cmd_enable_region(int argc, const char **argv, struct cxl_ctx *ctx); + int cmd_disable_region(int argc, const char **argv, struct cxl_ctx *ctx); + int cmd_destroy_region(int argc, const char **argv, struct cxl_ctx *ctx); ++#ifdef ENABLE_LIBTRACEFS + int cmd_monitor(int argc, const char **argv, struct cxl_ctx *ctx); ++#else ++static inline int cmd_monitor(int argc, const char **argv, struct cxl_ctx *ctx) ++{ ++ fprintf(stderr, ++ "cxl monitor: unavailable, rebuild with '-Dlibtracefs=enabled'\n"); ++ return EXIT_FAILURE; ++} ++#endif + #endif /* _CXL_BUILTIN_H_ */ +diff --git a/cxl/meson.build b/cxl/meson.build +index fc2e946..391219b 100644 +--- a/cxl/meson.build ++++ b/cxl/meson.build +@@ -7,27 +7,36 @@ cxl_src = [ + 'memdev.c', + 'json.c', + 'filter.c', +- 'event_trace.c', +- 'monitor.c', + ] + + if get_option('systemd').enabled() + install_data('cxl-monitor.service', install_dir : systemdunitdir) + endif + ++deps = [ ++ cxl_dep, ++ util_dep, ++ uuid, ++ kmod, ++ json, ++ versiondep, ++] ++ ++if get_option('libtracefs').enabled() ++ cxl_src += [ ++ 'event_trace.c', ++ 'monitor.c', ++ ] ++ deps += [ ++ traceevent, ++ tracefs, ++ ] ++endif ++ + cxl_tool = executable('cxl', + cxl_src, + include_directories : root_inc, +- dependencies : [ +- cxl_dep, +- util_dep, +- uuid, +- kmod, +- json, +- versiondep, +- traceevent, +- tracefs, +- ], ++ dependencies : deps, + install : true, + install_dir : rootbindir, + ) +diff --git a/meson.build b/meson.build +index 6d2c682..b4f977f 100644 +--- a/meson.build ++++ b/meson.build +@@ -143,8 +143,10 @@ kmod = dependency('libkmod') + libudev = dependency('libudev') + uuid = dependency('uuid') + json = dependency('json-c') +-traceevent = dependency('libtraceevent') +-tracefs = dependency('libtracefs') ++if get_option('libtracefs').enabled() ++ traceevent = dependency('libtraceevent') ++ tracefs = dependency('libtracefs') ++endif + + if get_option('docs').enabled() + if get_option('asciidoctor').enabled() +@@ -234,6 +236,7 @@ conf.set('ENABLE_TEST', get_option('test').enabled()) + conf.set('ENABLE_DESTRUCTIVE', get_option('destructive').enabled()) + conf.set('ENABLE_LOGGING', get_option('logging').enabled()) + conf.set('ENABLE_DEBUG', get_option('dbg').enabled()) ++conf.set('ENABLE_LIBTRACEFS', get_option('libtracefs').enabled()) + + typeof_code = ''' + void func() { +diff --git a/meson_options.txt b/meson_options.txt +index 4ed519e..5c41b1a 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -2,6 +2,7 @@ option('version-tag', type : 'string', + description : 'override the git version string') + option('docs', type : 'feature', value : 'enabled') + option('asciidoctor', type : 'feature', value : 'enabled') ++option('libtracefs', type : 'feature', value : 'enabled') + option('systemd', type : 'feature', value : 'enabled') + option('keyutils', type : 'feature', value : 'enabled', + description : 'enable nvdimm device passphrase management') +diff --git a/ndctl.spec.in b/ndctl.spec.in +index 0543c48..7702f95 100644 +--- a/ndctl.spec.in ++++ b/ndctl.spec.in +@@ -13,9 +13,13 @@ BuildRequires: autoconf + %if 0%{?rhel} < 9 + BuildRequires: asciidoc + %define asciidoctor -Dasciidoctor=disabled ++%define libtracefs -Dlibtracefs=disabled + %else + BuildRequires: rubygem-asciidoctor ++BuildRequires: libtraceevent-devel ++BuildRequires: libtracefs-devel + %define asciidoctor -Dasciidoctor=enabled ++%define libtracefs -Dlibtracefs=enabled + %endif + BuildRequires: xmlto + BuildRequires: automake +@@ -31,8 +35,6 @@ BuildRequires: keyutils-libs-devel + BuildRequires: systemd-rpm-macros + BuildRequires: iniparser-devel + BuildRequires: meson +-BuildRequires: libtraceevent-devel +-BuildRequires: libtracefs-devel + + %description + Utility library for managing the "libnvdimm" subsystem. The "libnvdimm" +@@ -124,7 +126,7 @@ libcxl is a library for enumerating and communicating with CXL devices. + %setup -q ndctl-%{version} + + %build +-%meson %{?asciidoctor} -Dversion-tag=%{version} ++%meson %{?asciidoctor} %{?libtracefs} -Dversion-tag=%{version} + %meson_build + + %install diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..1a39b32 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +0001-cxl-monitor-Make-libtracefs-dependency-optional.patch diff --git a/debian/rules b/debian/rules index 8faf55d..8261eba 100755 --- a/debian/rules +++ b/debian/rules @@ -8,7 +8,7 @@ include /usr/share/dpkg/architecture.mk dh $@ override_dh_auto_configure: - dh_auto_configure -- -Dsystemd=disabled + dh_auto_configure -- -Dsystemd=disabled -Dlibtracefs=disabled override_dh_clean: # created by tests and not cleaned up after