DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: <dev@dpdk.org>, <john.mcnamara@intel.com>
Subject: Re: [RFC PATCH v2 1/1] devtools: add vscode configuration generator
Date: Mon, 29 Jul 2024 15:30:12 +0100	[thread overview]
Message-ID: <ZqendHdPYEVtJmYC@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <99003582461c7ec772e49dae9b43840496342646.1722258213.git.anatoly.burakov@intel.com>

On Mon, Jul 29, 2024 at 02:05:52PM +0100, Anatoly Burakov wrote:
> A lot of developers use Visual Studio Code as their primary IDE. This
> script generates a configuration file for VSCode that sets up basic build
> tasks, launch tasks, as well as C/C++ code analysis settings that will
> take into account compile_commands.json that is automatically generated
> by meson.
> 
> Files generated by script:
>  - .vscode/settings.json: stores variables needed by other files
>  - .vscode/tasks.json: defines build tasks
>  - .vscode/launch.json: defines launch tasks
>  - .vscode/c_cpp_properties.json: defines code analysis settings
> 
> The script uses a combination of globbing and meson file parsing to
> discover available apps, examples, and drivers, and generates a
> project-wide settings file, so that the user can later switch between
> debug/release/etc. configurations while keeping their desired apps,
> examples, and drivers, built by meson, and ensuring launch configurations
> still work correctly whatever the configuration selected.
> 
> This script uses whiptail as TUI, which is expected to be universally
> available as it is shipped by default on most major distributions.
> However, the script is also designed to be scriptable and can be run
> without user interaction, and have its configuration supplied from
> command-line arguments.
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
> 
Just was trying this out, nice script, thanks.

Initial thoughts concerning the build directory:
- the script doesn't actually create the build directory, so there is no
  guarantee that the build directory created will have the same parameters
  as that specified in the script run. I'd suggest in the case where the
  user runs the script and specifies build settings, that the build
  directory is then configured using those settings.

- On the other hand, when the build directory already exists - I think the
  script should pull all settings from there, rather than prompting the
  user.

- I'm not sure I like the idea for reconfiguring of just removing the build
  directory and doing a whole meson setup command all over again. This
  seems excessive and also removes the possibility of the user having made
  changes in config to the build dir without re-running the whole config
  script. For example, having tweaked the LTO setting, or the
  instruction_set_isa_setting. Rather than deleting it and running meson
  setup, it would be better to use "meson configure" to adjust the one
  required setting and let ninja figure out how to propagate that change.
  That saves the script from having to track all meson parameters itself.

- Finally, and semi-related, this script assumes that the user does
  everything in a single build directory. Just something to consider, but
  my own workflow till now has tended to keep multiple build directories
  around, generally a "build" directory, which is either release or
  debugoptimized type, and a separate "build-debug" directory + occasionally
  others for build testing. When doing incremental builds, the time taken to
  do two builds following a change is a lot less noticable than the time taken
  for periodic switches of a single build directory between debug and release
  mode.

Final thoughts on usability:

- Please don't write gdbsudo to /usr/local/bin without asking the user
  first. Instead I think it should default to $HOME/.local/bin, but with a
  prompt for the user to specify a path.

- While I realise your primary concern here is an interactive script, I'd
  tend towards requiring a cmdline arg to run in interactive mode and
  instead printing the help usage when run without parameters. Just a
  personal preference on my part though.

/Bruce

  parent reply	other threads:[~2024-07-29 14:30 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-26 12:42 [RFC PATCH v1 0/1] Add Visual Studio Code configuration script Anatoly Burakov
2024-07-26 12:42 ` [RFC PATCH v1 1/1] devtools: add vscode configuration generator Anatoly Burakov
2024-07-26 15:36   ` Stephen Hemminger
2024-07-26 16:05     ` Burakov, Anatoly
2024-07-29 13:05 ` [RFC PATCH v2 0/1] Add Visual Studio Code configuration script Anatoly Burakov
2024-07-29 13:05   ` [RFC PATCH v2 1/1] devtools: add vscode configuration generator Anatoly Burakov
2024-07-29 13:14     ` Bruce Richardson
2024-07-29 13:17       ` Burakov, Anatoly
2024-07-29 14:30     ` Bruce Richardson [this message]
2024-07-29 16:16       ` Burakov, Anatoly
2024-07-29 16:41         ` Bruce Richardson
2024-07-30  9:21           ` Burakov, Anatoly
2024-07-30 10:31             ` Bruce Richardson
2024-07-30 10:50               ` Burakov, Anatoly
2024-07-30 15:01   ` [RFC PATCH v2 0/1] Add Visual Studio Code configuration script Bruce Richardson
2024-07-30 15:14     ` Burakov, Anatoly
2024-07-30 15:19       ` Bruce Richardson
2024-07-31 13:33 ` [RFC PATCH v3 " Anatoly Burakov
2024-07-31 13:33   ` [RFC PATCH v3 1/1] buildtools: add vscode configuration generator Anatoly Burakov
2024-09-02 12:17 ` [PATCH v1 0/1] Add Visual Studio Code configuration script Anatoly Burakov
2024-09-02 12:17   ` [PATCH v1 1/1] buildtools: add VSCode configuration generator Anatoly Burakov

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=ZqendHdPYEVtJmYC@bricha3-mobl1.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=john.mcnamara@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;
as well as URLs for NNTP newsgroup(s).