Bug 262788

Summary: devel/ocaml-camomile: make it builld with recent OCaml
Product: Ports & Packages Reporter: Thierry Thomas <thierry>
Component: Individual Port(s)Assignee: Alexey Dokuchaev <danfe>
Status: Closed Overcome By Events    
Severity: Affects Some People CC: freebsd, madpilot, thierry
Priority: --- Flags: bugzilla: maintainer-feedback? (danfe)
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on: 262781    
Bug Blocks:    
Attachments:
Description Flags
Make it builld with recent OCaml none

Description Thierry Thomas freebsd_committer freebsd_triage 2022-03-25 11:16:10 UTC
Created attachment 232697 [details]
Make it builld with recent OCaml

Remark: this project seems abandoned, and patches have been taken from
the forked repository <https://github.com/kit-ty-kate/Camomile>.

To avoid these patches it might be better to switch to this repository?

Important note: all the PR related to Ocaml ports must be committed at the same time!
Comment 1 Benjamin Jacobs 2024-02-13 07:28:54 UTC
Hi,

https://reviews.freebsd.org/D43861 superseed this change. Somehow, the Pervasives/Stdlib changes aren't necessary anymore with 4.14.  ocaml-camlp-streams is packaged in that review as well.
Comment 2 Benjamin Jacobs 2024-02-13 09:33:42 UTC
@danfe, Would you mind having a look at the review D43861 and approving the relating camomille changes? Please me know if you have any question. Thanks a lot!
Comment 3 Alexey Dokuchaev freebsd_committer freebsd_triage 2024-02-13 09:44:35 UTC
(In reply to Benjamin Jacobs from comment #2)
I agree with the approach of piecemeal, individual per-(port or small group of ports) commits to make transition smoother, I'll check out and pull my ports so they are ready for OCaml update.  However, I'd also like to pull it up to 4.09 first as this is what we're using at work and I'd been preparing.
Comment 4 Benjamin Jacobs 2024-02-13 10:58:45 UTC
Hi Alex, thank you for your response.

While possible in theory to do a piecemeal change, in this instance the only things that touches camomille in the (Ocaml 4.14.1 upgrade) Revision that I've submitted is a 3 line diff that make dune use the camlp-caml-stream package. 

That's it! It is pretty straightforward. It could have been done in 2022 when Thierry proposed the patch, leaving out the Stdlib/Pervasives part out (which for some reason isn't needed anymore on 4.14.1, it wasn't even needed on 4.13). 

The camlp-stream is just a shim package because Stream is no longer provided by the compiler libraries. It makes your code unaware of where the Stream module comes from. Like the result package before 4.03, and all those similar compatibility packages that comes and goes. The point is that you cannot agree that all your dependencies decide to use the same compiler version at the same sime. One just needs to patch those little details. Or you use something like Opam which has a very complicated dependency solver, and can abstract all those details with finer contraints. In my experience, I've found the result of opam to be less satifying (too much inexplicable variance, e.g. in CI runs -- the oposite of the kind of stability and reliability that we are aiming for) but maybe for you it will work better ?

Now it is very possible to package caml-camlp-streams on 4.08 and let you apply that patch on 4.08 first. Then the move to 4.14.1 would be transparent (just a rebuild, for the ABI). What do we gain? I cannot see, really.

That beeing said, if, as you wrote, you are aware of stuffs that forces you to aim for 4.09 (released 4.5 years ago...), maybe I can fix them to work on 4.14.1 just as well... Point it to me, and I'll be happy to oblige.

Cheers
Comment 5 commit-hook freebsd_committer freebsd_triage 2024-03-11 21:52:40 UTC
A commit in branch main references this bug:

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

commit 8025aa10ceb960b62c9a826fb56eb1ac68ea1ce3
Author:     Benjamin Jacobs <freebsd@dev.thsi.be>
AuthorDate: 2024-03-11 21:43:46 +0000
Commit:     Guido Falsi <madpilot@FreeBSD.org>
CommitDate: 2024-03-11 21:50:58 +0000

    lang/ocaml: Update to 4.14.1

    The 'force-safe-string; setting is NOT enabled, as opposed to the
    new upstream default. OCaml users are encouraged to migrate to safe
    strings as soon as possible.

    - The X11 library isn't part of lang/ocaml anymore, users should
    install x11-toolkits/ocaml-graphics.
    - Add new 'ocaml' USES
    - Bump PORTREVISION on dependent ports, due to ABI Change.

    The update includes the following updates to existing ports (needed
    to keep them working):

    - devel/ocaml-camlp4: Updated to 4.14+1
    - devel/ocaml-camlp5: Updated to 8.02.01, homepage updated
    - devel/ocaml-dune: Patch to allow overriding the stublibs directory,
      strip binary and shared libraries
    - devel/ocaml-findlib: Improve port
    - devel/ocaml-lwt: Fix build with OCaml 4.14
    - deve/ocaml-re: Update to 1.11.0, use new dune USES
    - devel/ocaml-sdl: Fix build with new ocaml
    - games/freetennis: Fix build, tidy Makefile
    - graphics/ocaml-images: Updated to 5.0.4, new homepage, use new
      dune USES, undeprecate
    - graphics/ocaml-lablgl: Moved into site-lib, dynamic objects
      stripped, add missing GL dependencies
    - math/coq: Updated to 8.19.0
    - math/ocaml-zarith: strip shared libraries, fixed usage of
      USE_OCAML_LDCONFIG, use new dune USES
    - math/teyjus: Fix build
    - net/unison240: Fix build with new compiler
    - net/unison248: Fix build with new compiler, add MAKE_JOBS_UNSAFE
    - net-p2p/mldonkey: Fix build with new compiler, fix build on i386
    - sysutils/ledit: Updated to 2.06, install native binary, Use github,
      fix man page installation
    - www/geneweb: Build fix for OCaml and Camlp5 updates
    - x11-toolkits/ocaml-lablgtk2: Fix build with new compiler
    - x11-toolkits/ocaml-lablgtk3: Updated to 3.1.4, added ocaml-camlp-stream
      dependency, build fix patch
    - x11-toolkits/ocaml-labltk: Updated to 8.06.12, Improve Makefile

    Added the following ports:

    - devel/ocaml-astring
    - devel/ocaml-base
    - devel/ocaml-bos
    - devel/ocaml-camlp-streams
    - devel/ocaml-csexp
    - devel/ocaml-fmt
    - devel/ocaml-fpath
    - devel/ocaml-logs
    - devel/ocaml-mtime
    - devel/ocaml-pcre2
    - devel/ocaml-rresult
    - devel/ocaml-seq
    - devel/ocaml-stdio
    - x11-toolkits/ocaml-graphics

    PR:                     250408 [1], 262781 [1], 262788 [3], 262789 [1],
                            262792 [1], 263006 [1], 263162 [3], 263206 [2],
                            276893 [1], 276945 [4], 276953 [1], 277026 [5],
                            277241 [1], 277242 [1], 277243 [1], 277244 [1],
                            277245 [1], 277246 [1], 277247 [1], 277248 [1],
                            277249 [1], 277250 [1], 277251 [1], 277252 [1],
                            277253 [1], 277254 [1], 277255 [1], 277256 [4],
                            277257 [1], 277258 [1]
    Approved by:            maintainer timeout [1],
                            yuri (maintainer) [2],
                            overcome by events, fixit [3],
                            madpilot (maintainer) [4]
    Reviewed by:            madpilot
    Exp-run by:             antoine [5]
    Differential Revision:  https://reviews.freebsd.org/D43861

 Mk/Uses/ocaml.mk (new)                             |   82 +
 archivers/ocaml-bz2/Makefile                       |    2 +-
 archivers/ocaml-zip/Makefile                       |    2 +-
 converters/ocaml-base64/Makefile                   |    2 +-
 converters/ocaml-jsonm/Makefile                    |    2 +-
 databases/ocaml-dbm/Makefile                       |    2 +-
 devel/Makefile                                     |   13 +
 devel/ocaml-annexlib/Makefile                      |    2 +-
 devel/ocaml-astring/Makefile (new)                 |   54 +
 devel/ocaml-astring/distinfo (new)                 |    3 +
 devel/ocaml-astring/pkg-descr (new)                |    3 +
 devel/ocaml-astring/pkg-plist (new)                |   22 +
 devel/ocaml-base/Makefile (new)                    |   40 +
 devel/ocaml-base/distinfo (new)                    |    3 +
 devel/ocaml-base/pkg-descr (new)                   |    3 +
 devel/ocaml-base/pkg-plist (new)                   |  766 ++
 devel/ocaml-bos/Makefile (new)                     |   57 +
 devel/ocaml-bos/distinfo (new)                     |    3 +
 devel/ocaml-bos/pkg-descr (new)                    |    4 +
 devel/ocaml-bos/pkg-plist (new)                    |   36 +
 devel/ocaml-calendar/Makefile                      |    2 +-
 devel/ocaml-camljava/Makefile                      |    2 +-
 devel/ocaml-camlp-streams/Makefile (new)           |   31 +
 devel/ocaml-camlp-streams/distinfo (new)           |    3 +
 devel/ocaml-camlp-streams/pkg-descr (new)          |   10 +
 devel/ocaml-camlp-streams/pkg-plist (new)          |   19 +
 devel/ocaml-camlp4/Makefile                        |    2 +-
 devel/ocaml-camlp4/distinfo                        |    6 +-
 devel/ocaml-camlp5/Makefile                        |   21 +-
 devel/ocaml-camlp5/distinfo                        |    6 +-
 devel/ocaml-camlp5/pkg-plist                       |   30 +
 devel/ocaml-camomile/Makefile                      |    8 +-
 .../ocaml-camomile/files/patch-Camomile_dune (new) |   11 +
 .../files/patch-Camomile_tools_dune (new)          |   10 +
 devel/ocaml-cfg/Makefile                           |    2 +-
 devel/ocaml-classes/Makefile                       |    2 +-
 devel/ocaml-cmdliner/Makefile                      |    2 +-
 devel/ocaml-cppo/Makefile                          |    2 +-
 devel/ocaml-csexp/Makefile (new)                   |   32 +
 devel/ocaml-csexp/distinfo (new)                   |    3 +
 devel/ocaml-csexp/pkg-descr (new)                  |    2 +
 devel/ocaml-csexp/pkg-plist (new)                  |   13 +
 devel/ocaml-dune/Makefile                          |   37 +-
 devel/ocaml-dune/pkg-plist                         |    6 +-
 devel/ocaml-extlib/Makefile                        |    2 +-
 devel/ocaml-findlib/Makefile                       |   25 +-
 devel/ocaml-findlib/files/patch-configure (new)    |   12 +
 .../files/patch-src_findlib-toolbox_Makefile (new) |   11 +
 devel/ocaml-findlib/pkg-plist                      |    4 -
 devel/ocaml-fmt/Makefile (new)                     |   48 +
 devel/ocaml-fmt/distinfo (new)                     |    3 +
 devel/ocaml-fmt/pkg-descr (new)                    |    2 +
 devel/ocaml-fmt/pkg-plist (new)                    |   32 +
 devel/ocaml-fpath/Makefile (new)                   |   46 +
 devel/ocaml-fpath/distinfo (new)                   |    3 +
 devel/ocaml-fpath/pkg-descr (new)                  |    4 +
 devel/ocaml-fpath/pkg-plist (new)                  |   16 +
 devel/ocaml-ipaddr/Makefile                        |    1 +
 devel/ocaml-lacaml/Makefile                        |    2 +-
 devel/ocaml-logs/Makefile (new)                    |   55 +
 devel/ocaml-logs/distinfo (new)                    |    3 +
 devel/ocaml-logs/pkg-descr (new)                   |    2 +
 devel/ocaml-logs/pkg-plist (new)                   |   49 +
 devel/ocaml-lwt/Makefile                           |    4 +-
 .../files/patch-src_unix_lwt__unix.ml (new)        |   10 +
 .../files/patch-src_unix_lwt__unix.mli (new)       |   10 +
 devel/ocaml-magic/Makefile                         |    2 +-
 devel/ocaml-mtime/Makefile (new)                   |   59 +
 devel/ocaml-mtime/distinfo (new)                   |    3 +
 devel/ocaml-mtime/pkg-descr (new)                  |    5 +
 devel/ocaml-mtime/pkg-plist (new)                  |   27 +
 devel/ocaml-ocamlbuild/Makefile                    |    2 +-
 devel/ocaml-ounit/Makefile                         |    2 +-
 devel/ocaml-parmap/Makefile                        |    1 +
 devel/ocaml-pcre/Makefile                          |    2 +-
 devel/ocaml-pcre2/Makefile (new)                   |   46 +
 devel/ocaml-pcre2/distinfo (new)                   |    3 +
 devel/ocaml-pcre2/pkg-descr (new)                  |    2 +
 devel/ocaml-pcre2/pkg-plist (new)                  |   15 +
 devel/ocaml-pomap/Makefile                         |    2 +-
 devel/ocaml-ppx-tools/Makefile                     |    1 +
 devel/ocaml-re/Makefile                            |   38 +-
 devel/ocaml-re/distinfo                            |    5 +-
 devel/ocaml-re/pkg-plist (new)                     |  145 +
 devel/ocaml-rresult/Makefile (new)                 |   44 +
 devel/ocaml-rresult/distinfo (new)                 |    3 +
 devel/ocaml-rresult/pkg-descr (new)                |    7 +
 devel/ocaml-rresult/pkg-plist (new)                |   16 +
 devel/ocaml-sdl/Makefile                           |    4 +-
 devel/ocaml-sem/Makefile                           |    2 +-
 devel/ocaml-seq/Makefile (new)                     |   27 +
 devel/ocaml-seq/distinfo (new)                     |    3 +
 devel/ocaml-seq/pkg-descr (new)                    |    2 +
 devel/ocaml-seq/pkg-plist (new)                    |   13 +
 devel/ocaml-sexplib0/Makefile                      |    1 +
 devel/ocaml-stdio/Makefile (new)                   |   32 +
 devel/ocaml-stdio/distinfo (new)                   |    3 +
 devel/ocaml-stdio/pkg-descr (new)                  |    2 +
 devel/ocaml-stdio/pkg-plist (new)                  |   29 +
 devel/ocaml-topkg/Makefile                         |    2 +-
 devel/ocaml-type_conv/Makefile                     |    2 +-
 devel/ocaml-uchar/Makefile                         |    2 +-
 devel/ocaml-ulex/Makefile                          |    2 +-
 devel/ocaml-uutf/Makefile                          |    2 +-
 devel/ocaml-xstr/Makefile                          |    2 +-
 devel/ocaml-xstrp4/Makefile                        |    2 +-
 ftp/ocaml-ocurl/Makefile                           |    2 +-
 games/freetennis/Makefile                          |   27 +-
 games/freetennis/files/patch-Makefile              |    4 +-
 games/freetennis/files/patch-freetennis.ml (new)   |   63 +
 graphics/ocaml-cairo/Makefile                      |    1 +
 graphics/ocaml-images/Makefile                     |   91 +-
 graphics/ocaml-images/distinfo                     |    5 +-
 graphics/ocaml-images/files/patch-OMakefile (gone) |   46 -
 graphics/ocaml-images/files/patch-configure (gone) |   13 -
 .../ocaml-images/files/patch-src_OMakefile (gone)  |   15 -
 .../ocaml-images/files/patch-src_bitmap.ml (gone)  |   11 -
 .../ocaml-images/files/patch-src_gifread.c (gone)  |   34 -
 .../ocaml-images/files/patch-src_gifwrite.c (gone) |   55 -
 .../ocaml-images/files/patch-src_jpegread.c (gone) |   11 -
 .../ocaml-images/files/patch-src_pngread.c (gone)  |   38 -
 .../ocaml-images/files/patch-src_pngwrite.c (gone) |   20 -
 .../ocaml-images/files/patch-src_tiffread.c (gone) |   36 -
 .../files/patch-src_tiffwrite.c (gone)             |   39 -
 graphics/ocaml-images/pkg-plist                    |  471 +-
 graphics/ocaml-lablgl/Makefile                     |   24 +-
 graphics/ocaml-lablgl/pkg-plist                    |  200 +-
 lang/ocaml/Makefile                                |  120 +-
 lang/ocaml/distinfo                                |   14 +-
 lang/ocaml/files/patch-asmcomp_power_arch.ml       |    4 +-
 lang/ocaml/files/patch-configure                   |  111 +-
 lang/ocaml/files/patch-runtime_amd64.S (gone)      |   11 -
 lang/ocaml/files/patch-runtime_backtrace.c (gone)  |   12 -
 lang/ocaml/files/patch-runtime_power.S             |   62 +-
 .../files/patch-runtime_startup__nat.c (gone)      |   10 -
 .../files/patch-testsuite_tools_asmgen__power.S    |   11 +-
 lang/ocaml/pkg-plist                               | 1625 ++--
 math/coq/Makefile                                  |   91 +-
 math/coq/distinfo                                  |    6 +-
 math/coq/files/patch-Makefile.build (gone)         |   29 -
 math/coq/files/patch-Makefile.install (gone)       |   11 -
 math/coq/pkg-plist                                 | 9825 ++++++++++++++------
 math/facile/Makefile                               |    2 +-
 math/ocaml-num/Makefile                            |    2 +-
 math/ocaml-ocamlgraph/Makefile                     |    2 +-
 math/ocaml-zarith/Makefile                         |   10 +-
 math/teyjus/Makefile                               |   13 +-
 net-p2p/mldonkey/Makefile                          |    5 +
 ...patch-src_networks_donkey_donkeyClient.ml (new) |   11 +
 .../mldonkey/files/patch-src_utils_lib_CryptoPP.h  |   12 +-
 net/unison240/files/patch-Makefile.OCaml           |   15 +-
 net/unison240/files/patch-hash__compat.c (new)     |  168 +
 net/unison240/files/patch-uutil.ml (new)           |   11 +
 net/unison248/Makefile                             |    1 +
 net/unison248/files/patch-Makefile.OCaml           |   15 +-
 net/unison248/files/patch-hash__compat.c (new)     |  168 +
 net/unison248/files/patch-uutil.ml (new)           |   11 +
 security/ocaml-ssl/Makefile                        |    1 +
 sysutils/ledit/Makefile                            |   29 +-
 sysutils/ledit/distinfo                            |    6 +-
 sysutils/ledit/files/patch-go.ml (new)             |   11 +
 textproc/ocaml-text/Makefile                       |    2 +-
 www/geneweb/Makefile                               |    4 +-
 www/geneweb/files/patch-ged2gwb_Makefile (new)     |   18 +
 www/geneweb/files/patch-ged2gwb_ged2gwb.ml (new)   |   11 +
 www/geneweb/files/patch-ged2gwb_ged2gwb2.ml (new)  |   11 +
 www/geneweb/files/patch-setup_Makefile (new)       |   11 +
 www/geneweb/files/patch-src__Makefile              |    9 +
 www/geneweb/files/patch-src_dag.ml (new)           |   52 +
 www/geneweb/files/patch-src_date.ml (new)          |   26 +
 www/geneweb/files/patch-src_db2disk.ml (new)       |   20 +
 www/geneweb/files/patch-src_gwd.ml (new)           |   38 +
 www/geneweb/files/patch-src_mutil.ml (new)         |   20 +
 www/geneweb/files/patch-src_relation.ml (new)      |   16 +
 .../files/patch-tools_camlp5__comm.sh (new)        |   11 +
 www/geneweb/files/patch-wserver_Makefile (new)     |   17 +
 www/geneweb/files/patch-wserver_wserver.ml (new)   |   61 +
 x11-toolkits/Makefile                              |    1 +
 x11-toolkits/ocaml-graphics/Makefile (new)         |   39 +
 x11-toolkits/ocaml-graphics/distinfo (new)         |    3 +
 x11-toolkits/ocaml-graphics/pkg-descr (new)        |    3 +
 x11-toolkits/ocaml-graphics/pkg-plist (new)        |   21 +
 x11-toolkits/ocaml-lablgtk2/Makefile               |    3 +-
 x11-toolkits/ocaml-lablgtk3/Makefile               |    6 +-
 x11-toolkits/ocaml-lablgtk3/distinfo               |    6 +-
 .../ocaml-lablgtk3/files/patch-src_ml__gtk.c (new) |   11 +
 x11-toolkits/ocaml-labltk/Makefile                 |   38 +-
 x11-toolkits/ocaml-labltk/distinfo                 |    6 +-
 x11-toolkits/ocaml-labltk/pkg-plist                |  676 +-
 189 files changed, 11825 insertions(+), 5225 deletions(-)