Skip to content

configure: use preprocessor to get infos about target arch#257

Closed
the2masters wants to merge 3 commits intoocaml:trunkfrom
the2masters:configure2
Closed

configure: use preprocessor to get infos about target arch#257
the2masters wants to merge 3 commits intoocaml:trunkfrom
the2masters:configure2

Conversation

@the2masters
Copy link

I'm trying to port OCaml to the openwrt router distribution [1]. Openwrt makes heavy use of cross-compiling, and supports about 40 different target archs.
When cross-compiling OCaml the configure script fails on 4 tests, it cannot detect integer and pointer sizes, it cannot detect endianess and fails to detect C99 conformance (only in trunk). I could now add rules and manually set the values for all 40 openwrt targets into the configure script, but I think this doesn't scale well and is only useful for openwrt.

So I sat down and wrote an alternative way to detect pointer sizes and endianess by using the preprocessor and parsing it's output. Detecting Endianess by the preprocessor is only done in case of cross-compilation. This is currently lightly tested on a few archs, so please comment and test.

@xavierleroy would you accept this endian2.c file as fallback in cross-compilation case?

I actually don't know why the C99 conformance test failed, as there is a special check for the cross-compilation case, but it was to easy to replace the test with a preprocessor-based check.

[1] https://openwrt.org/

…ssor

The configure script builds a small test program and runs it to detect
integer and pointer sizes. In case of cross-compilation this fails, as
the program build for the target arch cannot run on the host arch.

Solve this by examining the preprocessor output of the target compiler.

Signed-off-by: Stefan Hellermann <[email protected]>
…ssor

The configure script builds a small test program and runs it to detect
the endianess. This fails in case of cross-compilation, as the program
build for the target arch cannot run on the host arch. In this case
try to detect the endianess by examining the preprocessor out of the
target compiler. There is no standardized header for getting the
endianess, so I added a list of possible locations. This is only tested
with gcc, glibc and musl libc.

V2: Only do the preprocessor check in case of cross-compilation.

Signed-off-by: Stefan Hellermann <[email protected]>
Recently there was a check added to test for C99 conformance of the
target compiler. The configure script builds a small test program and
runs it to detect C99 conformance. This fails in case of
cross-compilation, as the program build for the target arch cannot run
on the host arch.

Solve this by examining the preprocessor output of the target compiler.

Signed-off-by: Stefan Hellermann <[email protected]>
@dbuenzli
Copy link
Contributor

Previous discussion here #256

@xavierleroy
Copy link
Contributor

The fallback solution looks good, thanks.

This said, I'm wondering what happens with the zillion other tests in configure that use "runtest" or "hasgot". They all fail in a cross-compilation setting, no?

More generally, I'm afraid that if we get really serious about cross-compilation in the future, we'll be forced to switch to autoconf. I'm not happy about this because autoconf is full of quirks and m4 is among my least favorite languages. But it looks quite clever about cross-compilation, embodying lots of knowledge on how to test for features without running the code -- knowledge that would take us forever to reinvent.

@the2masters
Copy link
Author

2015-10-13 19:07 GMT+02:00 Xavier Leroy [email protected]:

The fallback solution looks good, thanks.

This said, I'm wondering what happens with the zillion other tests in
configure that use "runtest" or "hasgot". They all fail in a
cross-compilation setting, no?

More generally, I'm afraid that if we get really serious about
cross-compilation in the future, we'll be forced to switch to autoconf. I'm
not happy about this because autoconf is full of quirks and m4 is among my
least favorite languages. But it looks quite clever about
cross-compilation, embodying lots of knowledge on how to test for features
without running the code -- knowledge that would take us forever to
reinvent.


Reply to this email directly or view it on GitHub
#257 (comment).

Following a build log from ocaml-4.02.3, with the first two patches of this
pull request applied. I can see a few tests failing.

./tst: 1: ./tst: Syntax error: "(" unexpected
[WARNING] Unable to compile the test program.
This failure is expected for cross-compilation:
we will assume the C compiler is ANSI-compliant.
[...]
./tst: 1: ./tst: Syntax error: "(" unexpected
[WARNING] Something went wrong while checking native division and modulus
please report it at http://http://caml.inria.fr/mantis/
[...]
./tst: 1: ./tst: Syntax error: "(" unexpected
./tst: 1: ./tst:EL@▒4: not found
./tst: 2: ./tst: Syntax error: "(" unexpected
./tst: 1: ./tst:EL@▒4: not found
./tst: 2: ./tst: Syntax error: "(" unexpected
POSIX termios found.
[...]
./tst: 1: ./tst: Syntax error: "(" unexpected
setitimer() found.

The first one has a reasonable fallback, the second failing test is removed
in trunk. Then there are a few failing tests for me.

I checked the configure script, these are all runtests:
ansi.c: resonable fallback
dblalign.c and int64align.c: special case for sparc, hppa, arm and mips,
other archs will fail this test
elf.c: only run on i[3456]86, so other arch are not affected.
signals.c: not run when POSIX signal handling found.
getgroups.c, setgroups.c, initgroups.c and async_io.c: don't know if these
tests are important. All fail for me.

The hasgot tests don't fail for me.

I think it's not to bad, no reason to switch to autoconf.

Stefan

Full OCaml 4.02.3 configure log for a mips target:
./configure -prefix
/home/stefan/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/ocaml
-target-bindir /usr/bin -target mips-openwrt-linux-musl -cc
"mips-openwrt-linux-musl-gcc -Os -pipe -mno-branch-likely -mips32r2
-mtune=34kc -fno-caller-saves -fhonour-copts
-Wno-error=unused-but-set-variable -msoft-float" -as
"mips-openwrt-linux-musl-as -Os -pipe -mno-branch-likely -mips32r2
-mtune=34kc -fno-caller-saves -fhonour-copts
-Wno-error=unused-but-set-variable -msoft-float" -no-pthread
-no-shared-libs -no-debugger -no-ocamldoc -no-graph -no-cfi

Configuring for host x86_64-unknown-linux-gnu ...
Configuring for target mips-openwrt-linux-musl ...
Using compiler mips-openwrt-linux-musl-gcc -Os -pipe -mno-branch-likely
-mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts
-Wno-error=unused-but-set-variable -msoft-float.
./tst: 1: ./tst: Syntax error: "(" unexpected
[WARNING] Unable to compile the test program.
This failure is expected for cross-compilation:
we will assume the C compiler is ANSI-compliant.
Checking the sizes of integers and pointers...
OK, this is a regular 32 bit architecture.
This is a big-endian architecture.
Doubles must be doubleword-aligned.
64-bit integers must be doubleword-aligned.
./tst: 1: ./tst: Syntax error: "(" unexpected
[WARNING] Something went wrong while checking native division and modulus
please report it at http://http://caml.inria.fr/mantis/
ranlib found
#! appears to work in shell scripts.
POSIX signal handling found.
expm1(), log1p(), hypot(), copysign() found.
getrusage() found.
times() found.
termcap functions found (with libraries '-lcurses')
You have BSD sockets.
socklen_t is defined in <sys/socket.h>
inet_aton() found.
IPv6 is supported.
unistd.h found.
off_t is defined in <sys/types.h>
dirent.h found.
rewinddir() found.
lockf() found.
mkfifo() found.
getcwd() found.
getpriority() found.
utime() found.
utimes() found.
dup2() found.
fchmod() found.
truncate() found.
sys/select.h found.
select() found.
symlink() found.
waitpid() found.
wait4() found.
./tst: 1: ./tst: Syntax error: "(" unexpected
./tst: 1: ./tst:EL@▒4: not found
./tst: 2: ./tst: Syntax error: "(" unexpected
PuTTY./tst: 1: ./tst:EL@▒4: not found
./tst: 2: ./tst: Syntax error: "(" unexpected
PuTTYPOSIX termios found.
./tst: 1: ./tst: Syntax error: "(" unexpected
setitimer() found.
gethostname() found.
uname() found.
gettimeofday() found.
mktime() found.
setsid() found.
putenv() found.
setlocale() and <locale.h> found.
dlopen() found.
mmap() found.
pwrite() found
stat() supports nanosecond precision.
gethostbyname_r() found (with 6 arguments).
gethostbyaddr_r() found (with 8 arguments).
mkstemp() found
nice() found
Cannot detect system stack overflow.
Bytecode threads library supported.
[WARNING] Cannot compile X11 program.
[WARNING] X11 not found, the "graph" library will not be supported.
[WARNING] BFD library not found, 'objinfo' will be unable to display info
on .cmxs files.
CFI support: disabled by command-line option -no-cfi

** Configuration summary **

Directories where OCaml will be installed:
binaries..................
/home/stefan/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/ocaml/bin
standard library..........
/home/stefan/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/ocaml/lib/ocaml
manual pages..............
/home/stefan/openwrt/staging_dir/toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11/ocaml/man
(with extension .1)
Configuration for the bytecode compiler:
C compiler used........... mips-openwrt-linux-musl-gcc -Os -pipe
-mno-branch-likely -mips32r2 -mtune=34kc -fno-caller-saves -fhonour-copts
-Wno-error=unused-but-set-variable -

msoft-float
options for compiling..... -O -fno-defer-pop -Wall
-D_FILE_OFFSET_BITS=64
options for linking....... -lm -lcurses
shared libraries not supported
Configuration for the native-code compiler:
(not supported on this platform)
Source-level replay debugger: not supported
Additional libraries supported:
unix str num dynlink bigarray threads
Configuration for the "num" library:
target architecture ...... generic (asm level 0)
The "graph" library: not supported

** OCaml configuration completed successfully **

@xavierleroy
Copy link
Contributor

You're right, "hasgot" just compiles, but doesn't need to run the generated executable, sorry for forgetting about that. Still, we have quite a bit of work ahead if we want a configure script that fully works with cross-compilation...

@damiendoligez damiendoligez added this to the 4.04-or-later milestone Jan 22, 2016
@damiendoligez
Copy link
Member

@the2masters @xavierleroy This patch is big enough to demand the signature of a CLA. Could you get in touch with each other?

I'm setting 4.04 as the milestone because of the potential for breaking non-cross-compiling configurations.

@damiendoligez damiendoligez removed this from the 4.04 milestone Aug 3, 2016
@mshinwell
Copy link
Contributor

@the2masters Did you submit a CLA?

@the2masters
Copy link
Author

the2masters commented Dec 27, 2016 via email

@xavierleroy
Copy link
Contributor

xavierleroy commented Dec 27, 2016

Concerning the CLA, see CONTRIBUTING.md : Contributor License Agreement.

Concerning this PR: since it was submitted, we agreed to switch to autoconf in the near future and @shindere is looking at it. I'm not sure we want to invest efforts in the proposed non-autoconf solution.

@mshinwell
Copy link
Contributor

@shindere Are you ok to close this, then?

@shindere
Copy link
Contributor

shindere commented Dec 27, 2016 via email

@mshinwell
Copy link
Contributor

Closing as per @shindere 's request.

@mshinwell mshinwell closed this Dec 27, 2016
@shindere
Copy link
Contributor

shindere commented Dec 27, 2016 via email

mshinwell pushed a commit to mshinwell/ocaml that referenced this pull request Sep 7, 2020
lthls pushed a commit to lthls/ocaml that referenced this pull request Sep 23, 2020
lthls pushed a commit to lthls/ocaml that referenced this pull request Sep 23, 2020
lthls pushed a commit to lthls/ocaml that referenced this pull request Sep 24, 2020
stedolan pushed a commit to stedolan/ocaml that referenced this pull request Dec 13, 2021
chambart pushed a commit to chambart/ocaml-1 that referenced this pull request Jan 4, 2022
chambart pushed a commit to chambart/ocaml-1 that referenced this pull request Feb 1, 2022
23a7f73 flambda-backend: Fix some Debuginfo.t scopes in the frontend (ocaml#248)
33a04a6 flambda-backend: Attempt to shrink the heap before calling the assembler (ocaml#429)
8a36a16 flambda-backend: Fix to allow stage 2 builds in Flambda 2 -Oclassic mode (ocaml#442)
d828db6 flambda-backend: Rename -no-extensions flag to -disable-all-extensions (ocaml#425)
68c39d5 flambda-backend: Fix mistake with extension records (ocaml#423)
423f312 flambda-backend: Refactor -extension and -standard flags (ocaml#398)
585e023 flambda-backend: Improved simplification of array operations (ocaml#384)
faec6b1 flambda-backend: Typos (ocaml#407)
8914940 flambda-backend: Ensure allocations are initialised, even dead ones (ocaml#405)
6b58001 flambda-backend: Move compiler flag -dcfg out of ocaml/ subdirectory (ocaml#400)
4fd57cf flambda-backend: Use ghost loc for extension to avoid expressions with overlapping locations (ocaml#399)
8d993c5 flambda-backend: Let's fix instead of reverting flambda_backend_args (ocaml#396)
d29b133 flambda-backend: Revert "Move flambda-backend specific flags out of ocaml/ subdirectory (ocaml#382)" (ocaml#395)
d0cda93 flambda-backend: Revert ocaml#373 (ocaml#393)
1c6eee1 flambda-backend: Fix "make check_all_arches" in ocaml/ subdirectory (ocaml#388)
a7960dd flambda-backend: Move flambda-backend specific flags out of ocaml/ subdirectory (ocaml#382)
bf7b1a8 flambda-backend: List and Array Comprehensions (ocaml#147)
f2547de flambda-backend: Compile more stdlib files with -O3 (ocaml#380)
3620c58 flambda-backend: Four small inliner fixes (ocaml#379)
2d165d2 flambda-backend: Regenerate ocaml/configure
3838b56 flambda-backend: Bump Menhir to version 20210419 (ocaml#362)
43c14d6 flambda-backend: Re-enable -flambda2-join-points (ocaml#374)
5cd2520 flambda-backend: Disable inlining of recursive functions by default (ocaml#372)
e98b277 flambda-backend: Import ocaml#10736 (stack limit increases) (ocaml#373)
82c8086 flambda-backend: Use hooks for type tree and parse tree (ocaml#363)
33bbc93 flambda-backend: Fix parsecmm.mly in ocaml subdirectory (ocaml#357)
9650034 flambda-backend: Right-to-left evaluation of arguments of String.get and friends (ocaml#354)
f7d3775 flambda-backend: Revert "Magic numbers" (ocaml#360)
0bd2fa6 flambda-backend: Add [@inline ready] attribute and remove [@inline hint] (not [@inlined hint]) (ocaml#351)
cee74af flambda-backend: Ensure that functions are evaluated after their arguments (ocaml#353)
954be59 flambda-backend: Bootstrap
dd5c299 flambda-backend: Change prefix of all magic numbers to avoid clashes with upstream.
c2b1355 flambda-backend: Fix wrong shift generation in Cmm_helpers (ocaml#347)
739243b flambda-backend: Add flambda_oclassic attribute (ocaml#348)
dc9b7fd flambda-backend: Only speculate during inlining if argument types have useful information (ocaml#343)
aa190ec flambda-backend: Backport fix from PR#10719 (ocaml#342)
c53a574 flambda-backend: Reduce max inlining depths at -O2 and -O3 (ocaml#334)
a2493dc flambda-backend: Tweak error messages in Compenv.
1c7b580 flambda-backend: Change Name_abstraction to use a parameterized type (ocaml#326)
07e0918 flambda-backend: Save cfg to file (ocaml#257)
9427a8d flambda-backend: Make inlining parameters more aggressive (ocaml#332)
fe0610f flambda-backend: Do not cache young_limit in a processor register (upstream PR 9876) (ocaml#315)
56f28b8 flambda-backend: Fix an overflow bug in major GC work computation (ocaml#310)
8e43a49 flambda-backend: Cmm invariants (port upstream PR 1400) (ocaml#258)
e901f16 flambda-backend: Add attributes effects and coeffects (#18)
aaa1cdb flambda-backend: Expose Flambda 2 flags via OCAMLPARAM (ocaml#304)
62db54f flambda-backend: Fix freshening substitutions
57231d2 flambda-backend: Evaluate signature substitutions lazily (upstream PR 10599) (ocaml#280)
a1a07de flambda-backend: Keep Sys.opaque_identity in Cmm and Mach (port upstream PR 9412) (ocaml#238)
faaf149 flambda-backend: Rename Un_cps -> To_cmm (ocaml#261)
ecb0201 flambda-backend: Add "-dcfg" flag to ocamlopt (ocaml#254)
32ec58a flambda-backend: Bypass Simplify (ocaml#162)
bd4ce4a flambda-backend: Revert "Semaphore without probes: dummy notes (ocaml#142)" (ocaml#242)
c98530f flambda-backend: Semaphore without probes: dummy notes (ocaml#142)
c9b6a04 flambda-backend: Remove hack for .depend from runtime/dune  (ocaml#170)
6e5d4cf flambda-backend: Build and install Semaphore (ocaml#183)
924eb60 flambda-backend: Special constructor for %sys_argv primitive (ocaml#166)
2ac6334 flambda-backend: Build ocamldoc (ocaml#157)
c6f7267 flambda-backend: Add -mbranches-within-32B to major_gc.c compilation (where supported)
a99fdee flambda-backend: Merge pull request ocaml#10195 from stedolan/mark-prefetching
bd72dcb flambda-backend: Prefetching optimisations for sweeping (ocaml#9934)
27fed7e flambda-backend: Add missing index param for Obj.field (ocaml#145)
cd48b2f flambda-backend: Fix camlinternalOO at -O3 with Flambda 2 (ocaml#132)
9d85430 flambda-backend: Fix testsuite execution (ocaml#125)
ac964ca flambda-backend: Comment out `[@inlined]` annotation. (ocaml#136)
ad4afce flambda-backend: Fix magic numbers (test suite) (ocaml#135)
9b033c7 flambda-backend: Disable the comparison of bytecode programs (`ocamltest`) (ocaml#128)
e650abd flambda-backend: Import flambda2 changes (`Asmpackager`) (ocaml#127)
14dcc38 flambda-backend: Fix error with Record_unboxed (bug in block kind patch) (ocaml#119)
2d35761 flambda-backend: Resurrect [@inline never] annotations in camlinternalMod (ocaml#121)
f5985ad flambda-backend: Magic numbers for cmx and cmxa files (ocaml#118)
0e8b9f0 flambda-backend: Extend conditions to include flambda2 (ocaml#115)
99870c8 flambda-backend: Fix Translobj assertions for Flambda 2 (ocaml#112)
5106317 flambda-backend: Minor fix for "lazy" compilation in Matching with Flambda 2 (ocaml#110)
dba922b flambda-backend: Oclassic/O2/O3 etc (ocaml#104)
f88af3e flambda-backend: Wire in the remaining Flambda 2 flags (ocaml#103)
678d647 flambda-backend: Wire in the Flambda 2 inlining flags (ocaml#100)
1a8febb flambda-backend: Formatting of help text for some Flambda 2 options (ocaml#101)
9ae1c7a flambda-backend: First set of command-line flags for Flambda 2 (ocaml#98)
bc0bc5e flambda-backend: Add config variables flambda_backend, flambda2 and probes (ocaml#99)
efb8304 flambda-backend: Build our own ocamlobjinfo from tools/objinfo/ at the root (ocaml#95)
d2cfaca flambda-backend: Add mutability annotations to Pfield etc. (ocaml#88)
5532555 flambda-backend: Lambda block kinds (ocaml#86)
0c597ba flambda-backend: Revert VERSION, etc. back to 4.12.0 (mostly reverts 822d0a0 from upstream 4.12) (ocaml#93)
037c3d0 flambda-backend: Float blocks
7a9d190 flambda-backend: Allow --enable-middle-end=flambda2 etc (ocaml#89)
9057474 flambda-backend: Root scanning fixes for Flambda 2 (ocaml#87)
08e02a3 flambda-backend: Ensure that Lifthenelse has a boolean-valued condition (ocaml#63)
77214b7 flambda-backend: Obj changes for Flambda 2 (ocaml#71)
ecfdd72 flambda-backend: Cherry-pick 9432cfdadb043a191b414a2caece3e4f9bbc68b7 (ocaml#84)
d1a4396 flambda-backend: Add a `returns` field to `Cmm.Cextcall` (ocaml#74)
575dff5 flambda-backend: CMM traps (ocaml#72)
8a87272 flambda-backend: Remove Obj.set_tag and Obj.truncate (ocaml#73)
d9017ae flambda-backend: Merge pull request ocaml#80 from mshinwell/fb-backport-pr10205
3a4824e flambda-backend: Backport PR#10205 from upstream: Avoid overwriting closures while initialising recursive modules
f31890e flambda-backend: Install missing headers of ocaml/runtime/caml (ocaml#77)
83516f8 flambda-backend: Apply node created for probe should not be annotated as tailcall (ocaml#76)
bc430cb flambda-backend: Add Clflags.is_flambda2 (ocaml#62)
ed87247 flambda-backend: Preallocation of blocks in Translmod for value let rec w/ flambda2 (ocaml#59)
a4b04d5 flambda-backend: inline never on Gc.create_alarm (ocaml#56)
cef0bb6 flambda-backend: Config.flambda2 (ocaml#58)
ff0e4f7 flambda-backend: Pun labelled arguments with type constraint in function applications (ocaml#53)
d72c5fb flambda-backend: Remove Cmm.memory_chunk.Double_u (ocaml#42)
9d34d99 flambda-backend: Install missing artifacts
10146f2 flambda-backend: Add ocamlcfg (ocaml#34)
819d38a flambda-backend: Use OC_CFLAGS, OC_CPPFLAGS, and SHAREDLIB_CFLAGS for foreign libs (#30)
f98b564 flambda-backend: Pass -function-sections iff supported. (#29)
e0eef5e flambda-backend: Bootstrap (#11 part 2)
17374b4 flambda-backend: Add [@@Builtin] attribute to Primitives (#11 part 1)
85127ad flambda-backend: Add builtin, effects and coeffects fields to Cextcall (#12)
b670bcf flambda-backend: Replace tuple with record in Cextcall (#10)
db451b5 flambda-backend: Speedups in Asmlink (#8)
2fe489d flambda-backend: Cherry-pick upstream PR#10184 from upstream, dynlink invariant removal (rev 3dc3cd7 upstream)
d364bfa flambda-backend: Local patch against upstream: enable function sections in the Dune build
886b800 flambda-backend: Local patch against upstream: remove Raw_spacetime_lib (does not build with -m32)
1a7db7c flambda-backend: Local patch against upstream: make dune ignore ocamldoc/ directory
e411dd3 flambda-backend: Local patch against upstream: remove ocaml/testsuite/tests/tool-caml-tex/
1016d03 flambda-backend: Local patch against upstream: remove ocaml/dune-project and ocaml/ocaml-variants.opam
93785e3 flambda-backend: To upstream: export-dynamic for otherlibs/dynlink/ via the natdynlinkops files (still needs .gitignore + way of generating these files)
63db8c1 flambda-backend: To upstream: stop using -O3 in otherlibs/Makefile.otherlibs.common
eb2f1ed flambda-backend: To upstream: stop using -O3 for dynlink/
6682f8d flambda-backend: To upstream: use flambda_o3 attribute instead of -O3 in the Makefile for systhreads/
de197df flambda-backend: To upstream: renamed ocamltest_unix.xxx files for dune
bf3773d flambda-backend: To upstream: dune build fixes (depends on previous to-upstream patches)
6fbc80e flambda-backend: To upstream: refactor otherlibs/dynlink/, removing byte/ and native/
71a03ef flambda-backend: To upstream: fix to Ocaml_modifiers in ocamltest
686d6e3 flambda-backend: To upstream: fix dependency problem with Instruct
c311155 flambda-backend: To upstream: remove threadUnix
52e6e78 flambda-backend: To upstream: stabilise filenames used in backtraces: stdlib/, otherlibs/systhreads/, toplevel/toploop.ml
7d08e0e flambda-backend: To upstream: use flambda_o3 attribute in stdlib
403b82e flambda-backend: To upstream: flambda_o3 attribute support (includes bootstrap)
65032b1 flambda-backend: To upstream: use nolabels attribute instead of -nolabels for otherlibs/unix/
f533fad flambda-backend: To upstream: remove Compflags, add attributes, etc.
49fc1b5 flambda-backend: To upstream: Add attributes and bootstrap compiler
a4b9e0d flambda-backend: Already upstreamed: stdlib capitalisation patch
4c1c259 flambda-backend: ocaml#9748 from xclerc/share-ev_defname (cherry-pick 3e937fc)
00027c4 flambda-backend: permanent/default-to-best-fit (cherry-pick 64240fd)
2561dd9 flambda-backend: permanent/reraise-by-default (cherry-pick 50e9490)
c0aa4f4 flambda-backend: permanent/gc-tuning (cherry-pick e9d6d2f)

git-subtree-dir: ocaml
git-subtree-split: 23a7f73
EmileTrotignon pushed a commit to EmileTrotignon/ocaml that referenced this pull request Jan 12, 2024
* Factor out NVM command
* Add esy dependency
* Add esy config
EmileTrotignon pushed a commit to EmileTrotignon/ocaml that referenced this pull request Jan 12, 2024
* packages: Minor refactoring of listing functions

I left a TODO in a previous PR and this what was supposed to added
instead.

* Add list_packages back

It is no longer used but might be useful.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants