From: Philip McGrath <philip@philipmcgrath.com>
To: Liliana Marie Prikler <liliana.prikler@gmail.com>, 67019@debbugs.gnu.org
Subject: [bug#67019] [PATCH 03/16] gnu: Add lessc.
Date: Wed, 15 Nov 2023 14:35:31 -0500 [thread overview]
Message-ID: <a37b92c6-442b-4bdd-a0e7-d6fdcd36f7e2@philipmcgrath.com> (raw)
In-Reply-To: <a4bff90da2e236a8d11d9e414400390eeb416077.camel@gmail.com>
Hi,
Thanks for taking a look at this!
On 11/10/23 19:56, Liliana Marie Prikler wrote:
> Am Donnerstag, dem 09.11.2023 um 11:26 -0500 schrieb Philip McGrath:
>> * gnu/packages/web.scm (lessc): New variable.
>>
>> [...]
>>
>> + (add-after 'avoid-parse-node-version 'do-not-target-es5
>> + (lambda args
>> + ;; esbuild can't compile all features to ES5
>> + (with-atomic-json-file-replacement "tsconfig.json"
>> + (match-lambda
>> + (('@ . alist)
>> + (cons '@
>> + (map (match-lambda
>> + (("compilerOptions" '@ . alist)
>> + `("scripts" @ ,@(filter (match-lambda
>> + (("target"
>> "ES5")
>> + #f)
>> + (_
>> + #t))
>> + alist)))
>> + (other
>> + other))
>> + alist)))))))
>> + (add-after 'do-not-target-es5 'patch-build-script
>> + (lambda args
>> + (define new-build-script
>> + (string-join
>> + `("esbuild"
>> + "--platform=node"
>> + "--format=cjs"
>> + "--outdir=lib"
>> + ,@(find-files "src/less" "\\.js$")
>> + ,@(find-files "src/less-node" "\\.js$"))))
>> + (with-atomic-json-file-replacement "package.json"
>> + (match-lambda
>> + (('@ . alist)
>> + (cons '@
>> + (map (match-lambda
>> + (("scripts" @ . alist)
>> + `("scripts" @ ,@(map (match-lambda
>> + (("build" . _)
>> + (cons "build"
>> + new-build-
>> script))
>> + (other
>> + other))
>> + alist)))
>> + (other
>> + other))
>> + alist)))))))
> Can we somehow save a bit of horizontal real-estate here? Same goes
> for 1 and 2.
To clarify, do you mean vertical or horizontal?
The long list of dependencies to delete does take a *lot* of vertical
space, especially in this patch. The obvious alternative would be to put
more than one dependency on the same line. I'm not opposed to that, but
it would deviate from normal style and could make future diffs less clear.
For horizontal space, I don't really like any of the alternatives I've
thought of. The culprit in each case seems to be the three
`match-lambda`s under `with-atomic-json-file-replacement`. (Specifically
in do-not-target-es5, I guess the innermost one could be replaced with
just `remove`, which might help a little.)
In normal programming, I'd want to abstract the three patch-build-script
phases into a helper function that would take the new-build-script
string as an argument, but that's a bit awkward to do with build-side
code in Guix. Putting it in guix/build/node-build-system.scm (like
delete-dependencies) would trigger a lot of rebuilds that seem hard to
justify. It could be done as a gexp-producing function, but
node-is-what, node-copy-anything, and lessc aren't in the same file: I
guess the arguments field is delayed, so maybe it wouldn't create a
cyclic dependency issue, but that seemed to open a whole new can of worms.
(Making e.g. `jsobject-update*` from guix/build/node-build-system.scm
public would also help, but I have no desire to revisit that.)
Obviously it would be possible, within each G-expression, to lift one of
the `match-lambda`s (probably the innermost one) to a local definition,
but IMO that would make the structure of the code less obviously
correspond to the structure of the JSON being transformed.
I could also imagine breaking these lines:
>> + (("scripts" @ . alist)
>> + `("scripts" @ ,@(map (match-lambda
instead as:
>> + (("scripts"
>> + @ . alist)
>> + `("scripts"
>> + @ ,@(map (match-lambda
but that doesn't seem like much of an improvement to me.
>> + (synopsis "Compiler for @acronym{Less} @acronym{CSS} language
>> extension")
>> + ;; XXX: @abbr{} seems better for Less (which is always
>> capitalized that
>> + ;; way), but it is rejected as invalid Texinfo markup here.
>> + (description "@acronym{Less, Leaner Style Sheets} is a
>> +backwards-compatible language extension for @acronym{CSS}. This
>> package
>> +provides @command{lessc}, which compiles Less files to plain
>> @acronym{CSS}.")
>> + (license license:asl2.0)))
>> +
> IMHO it doesn't make sense to type @acronym without the expansion.
>
I don't have a strong opinion on this, and I only know the tiny amount
of Texinfo I've picked up for Guix. I inferred from the fact that the
one-argument version of @acronym{} exists that it should be used when
applicable. I know that some typographical conventions handle capital
letters and punctuation in acronyms specially, which would be one reason
for @acronym{} to exist, but maybe that isn't relevant?
Philip
next prev parent reply other threads:[~2023-11-15 19:36 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-09 16:06 [bug#67019] [PATCH 00/16] gnu: Add KaTeX, lessc, and flow-remove-types Philip McGrath
2023-11-09 16:12 ` [bug#67019] [PATCH 01/16] gnu: Add node-is-what Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 02/16] gnu: Add node-copy-anything Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 03/16] gnu: Add lessc Philip McGrath
2023-11-11 0:56 ` Liliana Marie Prikler
2023-11-15 19:35 ` Philip McGrath [this message]
2023-11-15 20:23 ` Liliana Marie Prikler
2023-11-16 0:03 ` Philip McGrath
2023-11-16 1:17 ` Liliana Marie Prikler
2023-11-16 1:51 ` Philip McGrath
2023-11-16 7:18 ` Liliana Marie Prikler
2023-11-16 19:15 ` [bug#67019] [PATCH v2 00/16] gnu: Add KaTeX, lessc, and flow-remove-types Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 01/16] gnu: Add node-is-what Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 02/16] gnu: Add node-copy-anything Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 03/16] gnu: Add lessc Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 04/16] gnu: Add ocaml-wtf8 Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 05/16] gnu: Add ocaml-visitors Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 06/16] gnu: Add ocaml-ppx-gen-rec Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 07/16] gnu: Add ocaml-dtoa Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 08/16] gnu: Add node-vlq Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 09/16] gnu: Add ocaml-flow-parser Philip McGrath
2023-11-16 20:29 ` Liliana Marie Prikler
2023-11-16 19:15 ` [bug#67019] [PATCH v2 10/16] gnu: Add node-flow-parser Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 11/16] gnu: Add flow-remove-types Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 12/16] gnu: js-commander: Update to 11.1.0 Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 13/16] gnu: js-commander: Install as a node module Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 14/16] gnu: Add mftrace Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 15/16] gnu: Add font-katex Philip McGrath
2023-11-16 19:15 ` [bug#67019] [PATCH v2 16/16] gnu: Add katex Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 04/16] gnu: Add ocaml-wtf8 Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 05/16] gnu: Add ocaml-visitors Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 06/16] gnu: Add ocaml-ppx-gen-rec Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 07/16] gnu: Add ocaml-dtoa Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 08/16] gnu: Add node-vlq Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 09/16] gnu: Add ocaml-flow-parser Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 10/16] gnu: Add node-flow-parser Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 11/16] gnu: Add flow-remove-types Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 12/16] gnu: js-commander: Update to 11.1.0 Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 13/16] gnu: js-commander: Install as a node module Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 14/16] gnu: Add mftrace Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 15/16] gnu: Add font-katex Philip McGrath
2023-11-09 16:26 ` [bug#67019] [PATCH 16/16] gnu: Add katex Philip McGrath
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a37b92c6-442b-4bdd-a0e7-d6fdcd36f7e2@philipmcgrath.com \
--to=philip@philipmcgrath.com \
--cc=67019@debbugs.gnu.org \
--cc=liliana.prikler@gmail.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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).