From: Dave Jiang <dave.jiang@intel.com>
To: Dan Williams <dan.j.williams@intel.com>, linux-cxl@vger.kernel.org
Cc: vishal.l.verma@intel.com
Subject: Re: [ndctl PATCH] cxl/monitor: Make libtracefs dependency optional
Date: Fri, 24 Feb 2023 08:27:50 -0700 [thread overview]
Message-ID: <559a3e1a-8af7-3714-576a-6ed5889dd950@intel.com> (raw)
In-Reply-To: <167718414197.16926.10394415062829848410.stgit@dwillia2-xfh.jf.intel.com>
On 2/23/23 1:29 PM, Dan Williams wrote:
> 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 <dan.j.williams@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
> ---
> 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 2852f1e9cd8b..5441dff9fce7 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 34c5cfb49051..9baa43b8a2ac 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 fc2e946707a8..391219be76d1 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 6d2c6827fa88..b4f977f5b7ee 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 4ed519e1f36b..5c41b1abe1f1 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 0543c481da7f..7702f9552cd0 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
>
prev parent reply other threads:[~2023-02-24 15:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20230223232827uscas1p20e3b2e7f942b1672d951a2b2cf4ffbc2@uscas1p2.samsung.com>
2023-02-23 20:29 ` [ndctl PATCH] cxl/monitor: Make libtracefs dependency optional Dan Williams
2023-02-23 23:28 ` Adam Manzanares
2023-02-24 0:18 ` Verma, Vishal L
2023-02-24 8:04 ` Ira Weiny
2023-02-24 15:27 ` Dave Jiang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=559a3e1a-8af7-3714-576a-6ed5889dd950@intel.com \
--to=dave.jiang@intel.com \
--cc=dan.j.williams@intel.com \
--cc=linux-cxl@vger.kernel.org \
--cc=vishal.l.verma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox