Subject: [bug#46806] [PATCH] gnu: ocaml-4.07: Bootstrap.

From: pukkamustard <[email-masked]>
Date: Mon, 01 Mar 2021 10:16:14 +0100

I managed to build camlboot and [email-masked] with your patches.

> Would be fantastic if you could report build time for camlboot 
> too :).

Build time (on a quad-core i7 laptop):

```
$ time ./pre-inst-env guix build camlboot --no-offload
.
.
.
successfully built 
/gnu/store/ddi5n28hsrgvb89r8vjs0rfvapxfbaj2-camlboot-0.0.0-0.506280c.drv
/gnu/store/79bqayhrc6qfr2k7pfk7fn6lim0f8cfx-camlboot-0.0.0-0.506280c

real	322m35.119s
user	0m1.523s
sys	0m0.140s
```

[email-masked] with your patches applied:

```
$ time ./pre-inst-env guix build [email-masked] --no-offload
successfully built 
/gnu/store/sdxybpxzjhib5ijn3fx3r29ycp5vvafd-ocaml-4.07.1.drv
/gnu/store/cniid9xi3dck7kdpfm77h56h1s0701fm-ocaml-4.07.1

real	17m52.923s
user	0m9.268s
sys	0m1.013s
```

[email-masked] at master:

```
$ time ./pre-inst-env guix build [email-masked] --no-offload --check
successfully built 
/gnu/store/v599h0bhpyh2rq4nrnqqf56lwbsf0f71-ocaml-4.07.1.drv
successfully built 
/gnu/store/v599h0bhpyh2rq4nrnqqf56lwbsf0f71-ocaml-4.07.1.drv
/gnu/store/s7j0vl88zakkdcyvw1jw8cypfzi6ljnd-ocaml-4.07.1

real	21m44.000s
user	0m14.546s
sys	0m1.217s
```

> The result should be almost identical to our current ocaml-4.07, 
> though there are some due to different output directory being 
> embedded.

Checked some random files in both ocaml's with diffoscope and can 
confirm that differences seem to be mostly different output 
directories.

Haven't run diffoscope on everything as that would take quite some 
time...

-pukkamustard

>>
>>Fantastic! Thank you and thanks to the camlboot project! I will
>>try and
>>build this tonight.
>>
>>Julien Lepiller <[email-masked]> writes:
>>
>>> Hi Guix!
>>>
>>> This small series adds camlboot, a project to reimplement a
>>> bootstrap
>>> for OCaml, which lets us remove the pre-built 
>>> boot/ocaml{c,lex}
>>> :)
>>>
>>> The first patch builds the bootstraped ocamlc and ocamllex. 
>>> This
>>> takes
>>> around 4 hours to build. The second patch rebuilds them using
>>> the source
>>> code for ocaml 4.07.1, instead of the modified sources used in
>>> camlboot, and reuse them to run the main Makefile (make
>>> world.opt).
>>>
>>> As a result, we have identical files for this bootstrap and 
>>> the
>>> unbootstrapped OCaml (up to output store paths and hash of 
>>> some
>>> files
>>> that get embedded in native files, which differ because of the
>>> different output path).