From: Robin Jarry <robin.jarry@6wind.com> To: Thomas Monjalon <thomas@monjalon.net> Cc: Bruce Richardson <bruce.richardson@intel.com>, dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH] build: allow using wildcards to disable drivers Date: Tue, 21 Jan 2020 10:11:33 +0100 Message-ID: <20200121091133.qfbdrlcnmbmzd7jq@6wind.com> (raw) In-Reply-To: <2317106.JBEolbzBkm@xps> 2020-01-20, Bruce Richardson: > Rather than having to explicitly list each and every driver to disable in a > build, we can use a small python script and the python glob library to > expand out the wildcards. This means that we can configure meson using e.g. > > meson -Ddisable_drivers=crypto/*,event/* build > > to do a build omitting all the crypto and event drivers. Explicitly > specified drivers e.g. net/i40e, work as before, and can be mixed with > wildcarded drivers as required. > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > --- [snip] > +++ b/buildtools/list-dir-globs.sh > @@ -0,0 +1,15 @@ > +#! /usr/bin/env python > +# SPDX-License-Identifier: BSD-3-Clause > +# Copyright(c) 2020 Intel Corporation > + > +from __future__ import print_function > +from os import chdir, environ > +from sys import argv > +from glob import iglob # glob iterator > +from os.path import isdir, join > + > +chdir(join(environ['MESON_SOURCE_ROOT'], environ['MESON_SUBDIR'])) > +dirs = [] > +for path in argv[1].split(','): > + dirs.extend([entry for entry in iglob(path) if isdir(entry)]) I do not fancy changing the current directory in scripts. This can lead to unexpected behavior. You don't need to, you can achieve the same result with the following code: from __future__ import print_function import argparse import os import glob parser = argparse.ArgumentParser() parser.add_argument('disable_drivers', type=lambda s: s.split(',')) args = parser.parse_args() root = os.path.join(os.environ['MESON_SOURCE_ROOT'], os.environ['MESON_SUBDIR']) dirs = [] for driver in args.disable_drivers: driver_path = os.path.join(root, driver) for path in glob.iglob(driver_path): if os.path.isdir(path): dirs.append(os.path.relpath(path, root)) print(','.join(dirs)) I did not see why you used iglob instead of glob. iglob is case insensitive. Is that for windows support? > +++ b/drivers/meson.build > @@ -17,7 +17,8 @@ dpdk_driver_classes = ['common', > 'event', # depends on common, bus, mempool and net. > 'baseband'] # depends on common and bus. > > -disabled_drivers = get_option('disable_drivers').split(',') > +disabled_drivers = run_command(list_dir_globs, get_option('disable_drivers'), > + ).stdout().strip().split(',') Why adding commas again? Since you are processing the option value through a script, you might as well print one folder per line and use the .splitlines() meson function. It will make the code simpler as you do not need to use an intermediate list to store the disabled drivers before printing them. -- Robin
next prev parent reply other threads:[~2020-01-21 9:11 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-20 17:37 Bruce Richardson 2020-01-20 18:59 ` Thomas Monjalon 2020-01-21 9:11 ` Robin Jarry [this message] 2020-01-21 10:17 ` Bruce Richardson 2020-01-21 10:13 ` Bruce Richardson 2020-01-21 11:12 ` [dpdk-dev] [PATCH v2] " Bruce Richardson 2020-01-21 13:22 ` Robin Jarry 2020-01-21 13:37 ` Bruce Richardson 2020-01-21 13:48 ` Robin Jarry 2020-01-24 10:32 ` [dpdk-dev] [PATCH v3] " Bruce Richardson 2020-01-24 12:28 ` Robin Jarry 2020-01-24 14:57 ` Richardson, Bruce 2020-01-24 15:10 ` [dpdk-dev] [PATCH v4] " Bruce Richardson 2020-01-24 15:34 ` Robin Jarry 2020-01-27 11:26 ` Andrzej Ostruszka 2020-01-27 12:15 ` Bruce Richardson 2020-01-27 12:12 ` Luca Boccassi 2020-01-27 14:28 ` [dpdk-dev] [PATCH v5] " Bruce Richardson 2020-02-06 2:26 ` Thomas Monjalon
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=20200121091133.qfbdrlcnmbmzd7jq@6wind.com \ --to=robin.jarry@6wind.com \ --cc=bruce.richardson@intel.com \ --cc=dev@dpdk.org \ --cc=thomas@monjalon.net \ /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
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git