I’m trying to link a few libraries into single .cma file but by some reason dune doesn’t pass these libraries when linking bbb.cma
(although, the are kind of used inside a library). Last time on Discord @rgrinberg recommended to add an empty module to a library bbb
but it doesn’t help. Any ideas what is wrong in my demo?
Seems like you’re just not really bbb
b/c dune thinks it’s a private library that doesn’t belong to any packages. The following fixed that for me:
diff --git a/dune b/dune
index 0ef14c5..239e7a6 100644
--- a/dune
+++ b/dune
@@ -7,6 +7,7 @@
(library
(name bbb)
+ (public_name bbb)
(modules Empty)
; I want these libraries to be linked using linkall but it doesn't happen
(libraries aaa compiler-libs.common ppxlib)
and everything that you’d expect is linked in. I believe the other hacks shouldn’t even be necessary.
It is still the same. It runs
Running[9]: (cd _build/default && /home/kakadu/.opam/4.06.1+fp+flambda/bin/ocamlc.opt \
-g -a -o bbb.cma -linkall .bbb.objs/bbb.cmo .bbb.objs/bbb__Empty.cmo)
the same as before
Does that mater? ocamlobjinfo
shows the output that we expect:
$ ocamlobjinfo _build/default/bbb.cma
File _build/default/bbb.cma
Force custom: no
Extra C object files:
Extra C options:
Extra dynamically-loaded libraries:
Unit name: Bbb
Interfaces imported:
9b04ecdc97e5102c1d342892ef7ad9a2 Pervasives
79ae8c0eb753af6b441fe05456c7970b CamlinternalFormatBasics
-------------------------------- Bbb__Empty
484815270b7c8211aa65a05bbc166efd Bbb
Required globals:
Uses unsafe features: no
Force link: YES
Unit name: Bbb__Empty
Interfaces imported:
a2706834b4d23daf7798bebbefb79ecb Weak
d9584a6414ffa4dac0b7bd3c56f2b1dc Warnings
596c497318b5c3057b47b9d6747ef5d1 Uchar
3fe6d98e0634486be22d9de07aa0709a Sys
94a21a391ec111196b0334b34f569094 Syntaxerr
6339e2b71e8c583a81e808954faf6818 StringLabels
e6a69bfe22781c3a43e5dc04b6d1728a String
90ec282c811d56f0cb641c602c7a92fd Stream
033239437feaff14140ab5204a0ac75a Stdio__Out_channel
4ddfcce0ea1d3cad1f3cfaa6b970c9cc Stdio__In_channel
2a2f65d6828487c137effec1471c3e12 Stdio__Import
4f28904434d0ad6a2cf032616b13a1aa Stdio__
ee8c291653cfa91cb0cd62bbbd66ae2b Stdio
5529e284278766333d5e40132b2cbce5 StdLabels
a3c26bdec0c0211d9b444bd0da56bd1e Stack
587d25672b1ef6c062026eb1f8998628 Spacetime
5b4bf077f2418e76d824a5cd48c0eea8 Sort
82a58400591144135588fe92a9780697 Shadow_stdlib
abce35d4ee0ca4e9f3beaa420644b01b Sexplib0__Sexp_conv_error
f0c91158d5f760acb8f96e661164f763 Sexplib0__Sexp_conv
42e5cc75bfbbf5303772ff588d408f73 Sexplib0__Sexp
325229661372fa8cc8c2a1a3c4f34e8e Sexplib0
28a12def19edf36c317c30fafcc03d6d Set
e807880cfcd97dfe1c40fcbbb5573f71 Scanf
35045a94bf3b8a47cf0539e8b280e8f3 Result
ba6c32ae0bdeda05c187b523e94518fd Random
63b55df0e31ad91e82a1c6659c8dca09 Queue
e5dfd0ca6436c8abad976fc9e914999a Printf
1b461321ebcc8e419f24eb531c5ac7ac Printexc
2fb55874c33969918847b3df48f68e09 Ppxlib_traverse_builtins
2c91e908ec1f65dd75ef7a737670fef4 Ppxlib_ast__Location_helper
71e655cbcbd234eab92eec45ea6c7cef Ppxlib_ast__Import
6cb55fb8fe29106235a98fda318db8c3 Ppxlib_ast__Ast
32888cb9de014faadb04f73b31bf4505 Ppxlib_ast__
f84e9e1f230102c539e7455c7caf8c9e Ppxlib_ast
c660f77caafca46c82e75adb82f3f462 Ppxlib__Name
eed48eec952ef0fdcd13ad0107879ac5 Ppxlib__Longident
32d9e0537e56eb3fbf61bfd5c61507a8 Ppxlib__Location
9c141c9c33bd56ea350edfc955b854c1 Ppxlib__Loc
a8a388ffa235345e2c8e08316f16839d Ppxlib__Import
d7fe0122d58aa8b80958f6d044c190b8 Ppxlib__Common
7e50b495b2330bab10e69278470bb241 Ppxlib__Ast_traverse
4d68142822421dacc95b805b389098fb Ppxlib__
c9a383c0598378cee42c770c7f558ca3 Ppxlib
9b04ecdc97e5102c1d342892ef7ad9a2 Pervasives
a75b4b148ac8febe8bba7d4528048ecb Parsing
99ee984a0d7a02c28c0403ac2323406f Parsetree
31a2ae9982b4bc8f026293ac2b239d61 Outcometree
70eb65c7b3db659365282042a997caf4 Oo
c24b9e2a7c7150201434c91318611b45 Ocaml_shadow
dc770515d4bec03a9791298f9bbee115 Ocaml_common
8a1a1ebb4979c1cf4966cc2e706bd0f9 Obj
7b210723c1ccafec90ff1578ad7e5996 Nativeint
db5fc31b815ab3040d5a9940a91712c4 MoreLabels
d1783abac987b0b89a66cc75658a42f4 Misc
09363ac5fe261fa01232583e86934b3f Migrate_parsetree_versions
5fb1d23dc709ad57d9245b852fe66355 Migrate_parsetree
9dbb48cebd784fc6219ed0e9514fc7df Marshal
8b8de381501aa7862270c15619322ee7 Map
91f9af52ab5161ed3399272c57599564 Longident
7453466315e9009549dd74621eea0d3b Location
f4e829075d9d0bb7de979cfc49c2600b ListLabels
7a6b1f92720df765cf38d67f920844fe List
0971650cdf1fa8e506e733e9a5da2628 Lexing
4bf082b428b11a15971c831a1c768bda Lazy
f1c602b12ea723a45bbe6143f116a991 Int64
dbc028028ad4d59759d36dd6c0796919 Int32
0a88e320f172d3413ba0d5e0f9c70ccd Hashtbl
ccedae42b150cdf1b5bae7199df4b0c4 Genlex
710a8e8b6b15999f36e8242e2a0ef75d Gc
1a17539924469551f027475153d4d3b5 Format
4c2454d1aec88f5851f077478f232f2f Filename
c768d468cbd9ad18875f6c7e2e6db863 Ephemeron
9eea388efd5172256c8453659d37f2b5 Digest
cd4856c93f21942683ce190142e88396 Complex
4918635b8796d0ab0d5c593b942f8df7 Char
69dec6b14920fcc456f3cbd10764333e CamlinternalOO
79ae8c0eb753af6b441fe05456c7970b CamlinternalFormatBasics
23be9aee6beee502ad5e84d1622df7ab Caml
381b3818bd7b7f37a7bf11fb6c76a12a Callback
082178365ae645afd148522f3218f31e BytesLabels
b0d8deb18827702df0887113ba3c0110 Bytes
9c9b3639d23d7746c571cdf04646eb29 Buffer
6e79c776eac3a208f206addce1ead7ce Bbb__Empty
484815270b7c8211aa65a05bbc166efd Bbb
6b52c8aeed2c096ac525573fd71a7a8d Base__Word_size
c4626f184c6bcfe8288173e69dd5aef0 Base__Validate
4b4711411016db49c5ce7e083c8d23c8 Base__Unit
9f247295b21088ed7a28dad5b4714efb Base__T
8813f5ba1a4cd249072e0472e904408e Base__Sys0
7edf3c23d1efddf9182c8865990a9839 Base__Stringable
5bdf4034c9c83e43a6f97c628e4d59a7 Base__String0
86b899736ea6dc121b649932feb8d3c5 Base__String
88d8b925f52bc085d5d94c32d1f0d825 Base__Staged
1c035042af82496ba95342cda7040e80 Base__Source_code_position0
20e7450f4220afe14b1d5b05bc827b07 Base__Sign0
1d5e886426654f0a19751971afd6ce37 Base__Sign
3f383c6fff3279f4cd4f23a30d1087ef Base__Sexplib
80166f1eb7821b478f87945eb40f59e5 Base__Sexp_with_comparable
2432c0abb0b6453d2e1b1d73257d4d4b Base__Sexp
4c70a05c2c87f466550a3c71f00ec7f3 Base__Sequence
64122590008fb532803bbbd53e752949 Base__Result
403ff2218bbdd80f2a8c83c6c63c2d08 Base__Ref
887bbb00e0010c8b96403b0e5330d3c9 Base__Random
59f3c92816e0b0c401b2576a15601461 Base__Pretty_printer
30f5e18057edda1e6ac90f282f9c7839 Base__Ppx_sexp_conv_lib
e1af7895c235cbf845770cf9514eff7e Base__Ppx_hash_lib
2a67f6209d73884387fd00da74bcda67 Base__Ppx_compare_lib
3e1d52d28cc6424ff1a623d34bad4b78 Base__Or_error
37b7be2c7c05c2f03f86a9ddb6e9ab34 Base__Option
299e1289bc26a53818d1f5a6e57e81d9 Base__Nativeint
7be899f82e1541c25ea760c4f75a1487 Base__Monad_intf
7bfda883b3c5430f8d5e2d9becc577dc Base__Monad
f03c86c61e902b1096c85ca42da862cd Base__Maybe_bound
db2921743f450ad4224be517c953f049 Base__List
cbe6916f995b5f62dc03c2dd2dadf0ac Base__Lazy
23b0c05a6d544f62b87b8c8d7b494ca5 Base__Invariant_intf
6fdd6a1581380b956395aee4c712f450 Base__Invariant
4b3ad06e1321cf23b6974ef6d7ae4e90 Base__Intable
0e827d62ce8ff6fe034e020ad79c600e Base__Int_intf
1340b0b999f8bdd1c40299caea654efa Base__Int64
5247fada7360245c0564011b747ee605 Base__Int63_emul
1b7c123cc335231ad76a7324ea63f3df Base__Int63_backends
10cbf1d17daee0f3a3cefb6f300007dc Base__Int63_backend
42e8b2f785f869732ee4a8e4da71583e Base__Int63
de77c62761e9b2ca2455490fd324a1f3 Base__Int32
2f37ad34942b6285e3c5ea32c1b355b6 Base__Int0
06429bbe850445a1ee5c9a02a2b0cbc8 Base__Int
43b2aa437b3cfb111184b8aec46f2d1a Base__Info_intf
f4e23da1fd55470f52e22559b9e7b0f5 Base__Info
63e69057be4cf3b1bc1ce107d549393f Base__Indexed_container_intf
83d1ba776639e8d6247aa40f7d938991 Base__Indexed_container
c04a94de70dcb56b414073dba28cfea5 Base__Import0
4302e9b5d3d3a6871e27bff83e8b6901 Base__Import
98ecbc36297b9540b76729287f7b5b38 Base__Identifiable
5debffe6db63b7b5154cf1240294c5c7 Base__Hash_intf
689b00b08a86855d69e40957b3734b40 Base__Hash
6db5f6fcf12efd5331d9f2cef0cb1c5e Base__Formatter
f1e75aebca5da349965908e12e6f33b8 Base__Floatable
ae3f6119a4c1a9976ff09fbe66e2210d Base__Float
f0d23869710fd2e435aeb13fe86c5254 Base__Field
e67d638f58bf6df7a87bb170de2c4e86 Base__Exn
a9cf19ba8a46e3a456dbd9b9511008de Base__Error
1a4c78846621fbbdd9df4b6cf95acc77 Base__Equal
ddf55041f18913d885c32a41054ecf64 Base__Container_intf
d913dcd8ab84b4d378f03705f422d5cc Base__Container
4c384588450f41bcb3c58e55734896ae Base__Comparisons
02ba9e540774c9eaa513665dc0ff744d Base__Comparator
0a629474b8de2b642766ac4616d7b0e9 Base__Comparable_intf
a560a9b9215e47d42e9c58f0fa02d29e Base__Comparable
718c25c687948722d3bd3b927cfc060c Base__Commutative_group
4e9e42f6decba59714a0c64b28c13d33 Base__Char
22fdc92aaae76df5a4c26cd208bb1a9a Base__Bytes_set_primitives
0396cf7a2d2bde3f43a361a5b37d246b Base__Bytes
d16dbeb6230d1f1dc3789ab8b2eecf1f Base__Buffer_intf
286086e13bc2f6f7075cb4d45e9024c4 Base__Buffer
17a54a897b49cdd58b8212d9bf72979c Base__Bool
3d5b653489f5cdb9de2a2cc04f47a5a3 Base__Blit_intf
80154b9f4ea8c282313fb08394f33b00 Base__Blit
275e4c5e542048645b7869595af7b8fe Base__Binary_searchable_intf
eeb03c46e54116347487b84e318470a1 Base__Binary_searchable
f68fe94e516bb759ee2d91b1030a0426 Base__Backtrace
936b9b68e21f2fa2e9326a9a25b0e0a4 Base__Array
d071621c2b1b67a48ca83af91d3105d7 Base__Applicative_intf
4926c368d5988a91821ce832cf8b6700 Base__Applicative
6d6529e450496ec8d594252817e4eeb3 Base__
54eb63e8dbca084b1392bd58dd362597 Base
2956b7f31c188e191f9992f2f85786c7 Asttypes
bece4f97c520a14b1b1280adeaa3c109 Ast_mapper
124d654b00990633fa29ae90663fba56 Ast_407
6214cf75fbfc602ba8af6c4507d6eaec Ast_406
adbbe33ea175cca6de95a78876d4989c Ast_405
50158b25908894437569735632eb79f8 Ast_404
fec9b45492e9f6e97cc62c8662926a40 Ast_403
44677371a8fb603750f825865d9908e9 Ast_402
c4974e11dd7c941c002b826edc727de8 ArrayLabels
0fba23558da789bd0ef7ad786bdc90e6 Array
8a984750e16559fb57a4021121f21559 Arg
Required globals:
Uses unsafe features: no
Force link: YES
YES! File size matters!
....
Running[9]: (cd _build/default && /home/kakadu/.opam/4.06.1+fp+flambda/bin/ocamlc.opt -g -a -o bbb.cma \
-linkall .bbb.objs/bbb.cmo .bbb.objs/bbb__Empty.cmo)
➜ dune_test1 git:(master) ll _build/default/bbb.cma
-rw-rw-r-- 1 kakadu kakadu 8972 авг 11 14:13 _build/default/bbb.cma
➜ dune_test1 git:(master) (cd _build/default && /home/kakadu/.opam/4.06.1+fp+flambda /bin/ocamlc.opt -g -a -o bbb.cma \
-linkall .bbb.objs/bbb.cmo \
/home/kakadu/.opam/4.06.1+fp+flambda/lib/ppxlib/ppxlib.cma \
.bbb.objs/bbb__Empty.cmo)
➜ dune_test1 git:(master) ll _build/default/bbb.cma
-rw-rw-r-- 1 kakadu kakadu 3346610 авг 11 14:14 _build/default/bbb.cma