Reduce Opam Packages
The goal is to update Octez opam packages to create a relevant set of packages for the opam-repository, which means having a number of packages that is low enough to be tested and to be used.
The plan is to gather some packages into a single one, composed with subpackages.
First, we want to gather some libraries into a single one octez-libs, with sub-libraries for each original library. These should be the libraries used by Octez but doesn't need to be installed (alone) by users.
This package will then be splitted with more precise packages such as octez-shell-libs, octez-proto-libs, octez-l2-libs along with the original octez-libs.
Then, we do the same with for protocol related libraries. And ultimately, we try gathering all the related binaries into a single opam package.
The v18.0 will include a first version a octez-libs, which will allow the opam packages to be released in an improved state. This would start discussions with the opam-repository maintainers and highlights our efforts toward improving our opam packages. A final version of the set of Octez opam packages should be included in Octez v19.
Expected architecture
Here is the current expected architecture of the opam packages (ordered by dependencies):
-
octez-libsAggregationAplonkBare_functor_outputsBare_sigsBare_structsBls12_381_hashBls12_381_signatureCommunicationDistributed_plonkDistributionEpoxy_txMecOctez_bls12_381_polynomialOctez_srs_extractionPlompilerPlonkPlonk_testPolynomialTezos_baseTezos_base_p2p_identity_fileTezos_base_test_helpersTezos_base_unixTezos_clicTezos_clic_unixTezos_contextTezos_context_diskTezos_context_dumpTezos_context_encodingTezos_context_helpersTezos_context_memoryTezos_context_merkle_proof_encodingTezos_context_sigsTezos_cryptoTezos_crypto_dalTezos_crypto_dal_octez_dal_configTezos_error_monadTezos_event_loggingTezos_event_logging_test_helpersTezos_expect_helperTezos_gossipsubTezos_haclTezos_lazy_containersTezos_michelineTezos_p2pTezos_p2p_servicesTezos_p2p_test_commonTezos_requesterTezos_rpcTezos_rpc_httpTezos_rpc_http_clientTezos_rpc_http_client_unixTezos_rpc_http_serverTezos_saplingTezos_stdlibTezos_stdlib_unixTezos_test_helpersTezos_tree_encodingTezos_versionTezos_version_parserTezos_webassembly_interpreterTezt_performance_regressionTezt_tezosTraced_functor_outputsTraced_sigsTraced_structsTracestezos_lwt_result_stdlibtezos_workers
-
octez-shell-libsMockedTezos_context_opsTezos_protocol_updaterTezos_shell_contextTezos_shell_servicesTezos_storeTezos_store_realTezos_store_sharedTezos_store_unixTezos_store_unix_reconstructionTezos_store_unix_snapshotsTezos_validationtezos_shell
-
octez-proto-libsTezos_protocol_environment
-
octez-l2-libsOctez_smart_rollup_wasm_benchmark_libTezos_layer2_storeTezos_scoru_wasmTezos_scoru_wasm_durable_snapshotTezos_scoru_wasm_fastTezos_scoru_wasm_helpersTezos_scoru_wasm_test_helpersTezos_wasmerTezos_webassembly_interpreterTezos_webassembly_interpreter_extra
-
octez-protocol-libs(one for each protocol)Tenderbrute_protocolTezos_alpha_mockup_simulatorTezos_alpha_test_helpersTezos_baking_protocolTezos_baking_protocol_commandsTezos_client_protocolTezos_client_sapling_protocolTezos_dac_protocolTezos_dal_protocolTezos_layer2_utils_protocolTezos_protocol_plugin_protocolTezos_protocol_plugin_protocol_registererTezos_smart_rollup_protocolTezos_smart_rollup_layer2_protocol
Tasks
Octez-libs:
-
!8637 (merged) - Modify the manifest to allow creating sub-libraries -
!8637 (merged) - Create the package Octez_libs-
!8719 (merged) - Split Octez-version -
!8637 (merged) - Switch some libraries to Octez_libssub-libraries. -
!9311 (merged) - Add dune_with_testoption in the manifest -
!9325 (merged) - Complete the octez-libspackage -
!9415 (merged) - Generate description for octez-libs(main and content)
-
Other Octez packages:
-
!9478 (merged) - Split octez-libsto createoctez-shell-libs -
!9478 (merged) - Split octez-libsto createoctez-layer2-libs -
!9478 (merged) - Split octez-libsto createoctez-proto-libs: Contains all the libraries used by the protocols -
!9883 (merged) - Create a single package for Protocol specific libraries -
!9916 (merged) - Create a package for tezos-protocol -
- Complete all the libraries with potential left-overs
Rename tezos-* sub-libraries:
-
!9945 (merged) - Remove tezosprefix foroctez-libssub-libs -
!10111 (merged) - Remove tezosprefix foroctez-shell-libssub-libs -
!10111 (merged) - Remove tezosprefix foroctez-proto-libsandoctez-l2-libsub-libs
Binaries: (?)
-
- Create package(s) for node(s) -
- Create packages for clients and others -
- Create package for L2 binaires
Follow-ups
-
#6223 - Manifest: Create generate_all_doc for sub-libs -
#6357 - Manifest: Remove the internal name of packages sublibraries
Follow-ups (not required for this project)
Manifest
-
#6112 - Add a mechanism to udpate opam-repo hashes -
- Create Manifest tools commands (dump dependencies, release status etc...) -
#6225 - Create a top level variable for dependencies
Tezos-version
-
#5753 Cleanup tezos-version -
#5752 Make Tezos_version.Node_versionexport acommit_infovalue directly
Tests
-
#6111 Seperate out the test dependencies -
#6144 Make tezos-event-logging-test-helpersa sublib oftezos-event-logging
Others
-
#6016 Tezos_contextshould export submodules rather than sub libraries