Bug 282868 - [NEW PORT] textproc/sexp: S-expressions processing tool
Summary: [NEW PORT] textproc/sexp: S-expressions processing tool
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Gabriel M. Dutra
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-11-19 23:39 UTC by Benjamin Jacobs
Modified: 2024-11-20 16:33 UTC (History)
1 user (show)

See Also:


Attachments
0001-textproc-sexp-New-port-S-expressions-processing-tool.patch (46.12 KB, patch)
2024-11-19 23:39 UTC, Benjamin Jacobs
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Jacobs 2024-11-19 23:39:31 UTC
Created attachment 255306 [details]
0001-textproc-sexp-New-port-S-expressions-processing-tool.patch

Sexp is a "Swiss Army knife" command-line tool for processing S-expressions.

Most of the patching in this port is to allow building with our ocaml-dune version. The remaining patches are trivial build fixes (either caused by the unorthodox mix of versions, a linux miss-compatibility issue of async, and what looks like to be a bug in the upstream ld.script of the re2 library exposed by a stricter llvm-ld).

All the build dependencies are vendored, except for devel/ocaml-compiler-libs.
The primary reason for vendoring the build dependencies is that this tool might turn out to be useful as a PATCH_DEPENDS (e.g. for patching ocaml-dune build files), and therefore we cannot tolerate the risk of introducing a cyclic-dependency.

The secondary reason for vendoring is to avoid doing too much packaging work, a work which might also end up causing more friction when wanting to update other parts of the ocaml stack (see the last note). The version-set of the vendored libraries has been verified to allow this package to compile with both OCaml version 4.14 and 5.2 (for the later, with an updated ocaml-compiler-libs package).

As a matter of a fact, this port only provides a single executable having no runtime-lib depedencies from the port tree.

For all those reasons, it is my opinion that the advantage of vendoring the build dependencies outmatches any down-side.

This port has been tested on current amd64 150027, on a recent-ish main ports tree.

Note: in their latest incantations (v0.17+), many of the janestreet libraries do not work on ocaml 4.14 anymore. Upstream has clearly announced that, going forward, new releases are targetting OCaml 5+ only, and their assumption is that OCaml 5.3 will be deemed production-grade.
Comment 1 commit-hook freebsd_committer freebsd_triage 2024-11-20 16:30:44 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f7ef3b306b431688534e311164f33d7e50fce740

commit f7ef3b306b431688534e311164f33d7e50fce740
Author:     Benjamin Jacobs <freebsd@dev.thsi.be>
AuthorDate: 2024-11-20 16:25:27 +0000
Commit:     Gabriel M. Dutra <dutra@FreeBSD.org>
CommitDate: 2024-11-20 16:27:41 +0000

    textproc/sexp: Add new port

    Command-line tool for processing S-expressions

    PR:     282868

 textproc/Makefile                                  |   1 +
 textproc/sexp/Makefile (new)                       | 129 ++++++++++++++++
 textproc/sexp/distinfo (new)                       | 169 +++++++++++++++++++++
 textproc/sexp/files/patch-dune (new)               |   4 +
 textproc/sexp/files/patch-dune-project (new)       |   5 +
 .../sexp/files/patch-src_main__select.ml (new)     |  17 +++
 ..._unix-0.16.0_linux__ext_src_linux__ext.ml (new) |  11 ++
 ...ocaml-re-1.11.0-351-g140deeb_dune-project (new) |   8 +
 ...dor_ocaml-re-1.11.0-351-g140deeb_lib_dune (new) |   8 +
 ...ocaml__intrinsics-0.16.1_src_int__stubs.c (new) |  11 ++
 ...1783de6abb20e0d0e0eec6080062_dune-project (new) |   5 +
 ...8bf4fbfec005f06ed529530af3cf_dune-project (new) |   5 +
 ...d0d4124e82fea686d8f35c2a3d2a_dune-project (new) |   5 +
 ...159e36f8d4f6aa52e3d0a569f84f_dune-project (new) |   5 +
 ...fda5ae2c103da7399ba178639929_dune-project (new) |   5 +
 ...dor_ppx__inline__test-0.17.0_dune-project (new) |   5 +
 ...-vendor_ppx__inline__test-0.17.0_src_dune (new) |  11 ++
 ...21c3ee600e8da3f8a705d18c45b4_dune-project (new) |   5 +
 ...2d7d454c20d732621795d910018d1b66_ast_dune (new) |  11 ++
 ...621795d910018d1b66_metaquot__lifters_dune (new) |   8 +
 ...2d7d454c20d732621795d910018d1b66_src_dune (new) |  10 ++
 ...454c20d732621795d910018d1b66_src_gen_dune (new) |   8 +
 ...d454c20d732621795d910018d1b66_stdppx_dune (new) |  10 ++
 ...54c20d732621795d910018d1b66_traverse_dune (new) |  10 ++
 ...a4e3292d4d32936a46349c043fec_dune-project (new) |   5 +
 ...ea4e3292d4d32936a46349c043fec_src_shim.ml (new) |  11 ++
 .../patch-vendor_re2-0.17.0_dune-project (new)     |   5 +
 ...2-0.17.0_src_re2__c_libre2_libre2.symbols (new) |  11 ++
 ...h-vendor_sexp__select-0.17.0_dune-project (new) |   5 +
 ...b7aafd0d4f29957bf34fc0f936ba_dune-project (new) |   5 +
 ...or_splittable__random-0.17.0_dune-project (new) |   5 +
 ...atch-vendor_time__now-0.17.0_dune-project (new) |   5 +
 .../patch-vendor_uopt-0.17.0_dune-project (new)    |   5 +
 textproc/sexp/pkg-descr (new)                      |   4 +
 34 files changed, 527 insertions(+)
Comment 2 Gabriel M. Dutra freebsd_committer freebsd_triage 2024-11-20 16:33:09 UTC
Committed, thank you!