Linux CXL
 help / color / mirror / Atom feed
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
> 

      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