Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH 11/16 v2] package/pkg-utils: introduce helper to properly json-escape a string
Date: Thu, 30 Dec 2021 21:43:40 +0100	[thread overview]
Message-ID: <20211230214340.140ebaed@windsurf> (raw)
In-Reply-To: <1ca8d1fd844e7e9ba59daa8270badda9fa93842c.1636810092.git.yann.morin.1998@free.fr>

On Sat, 13 Nov 2021 14:28:22 +0100
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote:

> In quite a few places, we need to generate string that are proper JSON
> values or keys.
> 
> However, JSON is very strict on what constitute a string, and most JSON
> parsers (like jq or python3's json module) are very picky when parsing a
> string; any deviation from the spec is immediately sanctioned by a hard
> error (jq aborts, python3's json module raise an exception).
> 
> Introduce a macro that properly prepares a Makefile value into a valid
> JSON string:
> 
>   - backslash '\' must be escaped;
> 
>   - double-quotes need to be escaped of course, as they are the string
>     delimiter in JSON;
> 
>   - anything in the range [0x00..0x1F] must be escaped; in practice, we
>     only ever need to escape \n, \t, and ESC (we could add more in the
>     future if need be);
> 
>   - finally, we also escape the space, \x20, so that we can call
>     $(strip) on a JSON blurb (like we do for example do build a
>     comma-separated list, or when we sanitise the JSON) without losing
>     multiple spaces where they make sense.
> 
> It would have been nice if we had been able to split the macro on
> multiple lines, but spaces creep in from everywhere in that case, and
> getting rid of them is getting quite nasty... We could introduce
> intermediate macros, but meh...
> 
> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
> ---
>  package/pkg-utils.mk | 11 +++++++++++
>  1 file changed, 11 insertions(+)

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2021-12-30 20:44 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-13 13:28 [Buildroot] [PATCH 00/16 v2] core: add show-vars, a json-formatted equivalent to printvars (branch yem/show-vars) Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 01/16 v2] core/show-info: report build_dir relative to CONFIG_DIR Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 02/16 v2] package/kodi-*: run pkg-config at build time, not at parse time Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 03/16 v2] support/dependencies: avoid spurious warning on print-vars Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 04/16 v2] package/infras: do not conditionally set empty variables Yann E. MORIN
2021-12-30 20:43   ` Thomas Petazzoni
2021-11-13 13:28 ` [Buildroot] [PATCH 05/16 v2] package/pkg-python: do not " Yann E. MORIN
2021-12-30 20:43   ` Thomas Petazzoni
2021-11-13 13:28 ` [Buildroot] [PATCH 06/16 v2] core/pkg-generic: also list files installed in images/ Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 07/16 v2] Makefile: really comment syntax colouring Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 08/16 v2] core/show-info: 'name' only applies to packages Yann E. MORIN
2021-12-12 22:18   ` Peter Korsgaard
2021-11-13 13:28 ` [Buildroot] [PATCH 09/16 v2] support/utils: make-comma-list does just that, not quoting Yann E. MORIN
2021-12-30 20:43   ` Thomas Petazzoni
2021-11-13 13:28 ` [Buildroot] [PATCH 10/16 v2] support/misc/utils: introduce $(tab)=\t and $(escape)=\x1b Yann E. MORIN
2021-12-30 20:43   ` Thomas Petazzoni
2021-11-13 13:28 ` [Buildroot] [PATCH 11/16 v2] package/pkg-utils: introduce helper to properly json-escape a string Yann E. MORIN
2021-12-30 20:43   ` Thomas Petazzoni [this message]
2021-11-13 13:28 ` [Buildroot] [PATCH 12/16 v2] package/pkg-utils: generate proper JSON strings where they are emitted Yann E. MORIN
2021-12-30 20:43   ` Thomas Petazzoni
2021-11-13 13:28 ` [Buildroot] [PATCH 13/16 v2] core/show-info: report whether a package is overriden Yann E. MORIN
2021-12-30 20:45   ` Thomas Petazzoni
2021-12-31 17:28     ` Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 14/16 v2] core/show-info: also export source and stamp directories in show-info Yann E. MORIN
2021-12-30 20:45   ` Thomas Petazzoni
2021-11-13 13:28 ` [Buildroot] [PATCH 15/16 v2] core/show-info: report package build steps and stamp files Yann E. MORIN
2021-12-30 20:46   ` Thomas Petazzoni
2021-12-31 18:03     ` Yann E. MORIN
2021-11-13 13:28 ` [Buildroot] [PATCH 16/16 v2] Makefile: introduce show-vars, a json-formatted equivalent to printvars Yann E. MORIN
2021-12-30 20:47   ` Thomas Petazzoni
2021-12-04 19:12 ` [Buildroot] [PATCH 00/16 v2] core: add show-vars, a json-formatted equivalent to printvars (branch yem/show-vars) Yann E. MORIN

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=20211230214340.140ebaed@windsurf \
    --to=thomas.petazzoni@bootlin.com \
    --cc=buildroot@buildroot.org \
    --cc=yann.morin.1998@free.fr \
    /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