From beb75d009fbc77f83ad9d92bf2bb463b99ff7280 Mon Sep 17 00:00:00 2001 From: Romain Bardou Date: Wed, 16 Nov 2022 17:05:32 +0100 Subject: [PATCH 1/2] Manifest: replace ~release with ~release_status --- .gitlab/ci/jobs/packaging/opam_package.yml | 441 ++++++--------------- manifest/main.ml | 31 +- manifest/manifest.ml | 395 +++++++++++------- manifest/manifest.mli | 50 ++- script-inputs/binaries-for-release | 6 - 5 files changed, 439 insertions(+), 484 deletions(-) diff --git a/.gitlab/ci/jobs/packaging/opam_package.yml b/.gitlab/ci/jobs/packaging/opam_package.yml index 9bccf595757a..5927db752a42 100644 --- a/.gitlab/ci/jobs/packaging/opam_package.yml +++ b/.gitlab/ci/jobs/packaging/opam_package.yml @@ -1,50 +1,6 @@ # This file was automatically generated, do not edit. # Edit file manifest/main.ml instead. -# Ignoring package internal-devtools, it only contains tests or private targets - -# Ignoring package octez-dal-node, it only contains tests or private targets - -# Ignoring package octez-snoop, it only contains tests or private targets - -# Ignoring package octez-wasm-repl, it only contains tests or private targets - -# Ignoring package tezos-benchmark-tests, it only contains tests or private targets - -# Ignoring package tezos-dal-node-lib, it only contains tests or private targets - -# Ignoring package tezos-dal-node-services, it only contains tests or private targets - -# Ignoring package tezos-layer2-store, it only contains tests or private targets - -# Ignoring package tezos-lazy-containers-tests, it only contains tests or private targets - -# Ignoring package tezos-protocol-014-PtKathma-tests, it only contains tests or private targets - -# Ignoring package tezos-protocol-015-PtLimaPt-tests, it only contains tests or private targets - -# Ignoring package tezos-protocol-alpha-tests, it only contains tests or private targets - -# Ignoring package tezos-protocol-plugin-014-PtKathma-tests, it only contains tests or private targets - -# Ignoring package tezos-protocol-plugin-015-PtLimaPt-tests, it only contains tests or private targets - -# Ignoring package tezos-protocol-plugin-alpha-tests, it only contains tests or private targets - -# Ignoring package tezos-scoru-wasm-benchmark, it only contains tests or private targets - -# Ignoring package tezos-scoru-wasm-test, it only contains tests or private targets - -# Ignoring package tezos-scoru-wasm-test-helpers, it only contains tests or private targets - -# Ignoring package tezos-shell-context-test, it only contains tests or private targets - -# Ignoring package tezos-tps-evaluation, it only contains tests or private targets - -# Ignoring package tezos-tree-encoding-test, it only contains tests or private targets - -# Ignoring package tezt-self-tests, it only contains tests or private targets - .rules_template__trigger_opam_batch_1: rules: # Run on scheduled builds. @@ -241,6 +197,8 @@ start_in: 7 minutes - when: never # default +# Ignoring unreleased package internal-devtools. + opam:octez-accuser-PtKathma: extends: - .opam_template @@ -255,12 +213,7 @@ opam:octez-accuser-PtLimaPt: variables: package: octez-accuser-PtLimaPt -opam:octez-accuser-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: octez-accuser-alpha +# Ignoring unreleased package octez-accuser-alpha. opam:octez-baker-PtKathma: extends: @@ -276,12 +229,7 @@ opam:octez-baker-PtLimaPt: variables: package: octez-baker-PtLimaPt -opam:octez-baker-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: octez-baker-alpha +# Ignoring unreleased package octez-baker-alpha. opam:octez-client: extends: @@ -293,21 +241,23 @@ opam:octez-client: opam:octez-codec: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: octez-codec +# Ignoring unreleased package octez-dal-node. + opam:octez-node: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: octez-node opam:octez-node-config: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: octez-node-config @@ -321,31 +271,23 @@ opam:octez-protocol-compiler: opam:octez-proxy-server: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: octez-proxy-server -opam:octez-sc-rollup-client-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: octez-sc-rollup-client-alpha +# Ignoring unreleased package octez-sc-rollup-client-alpha. -opam:octez-sc-rollup-node-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: octez-sc-rollup-node-alpha +# Ignoring unreleased package octez-sc-rollup-node-alpha. opam:octez-signer: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: octez-signer +# Ignoring unreleased package octez-snoop. + opam:octez-tx-rollup-client-PtKathma: extends: - .opam_template @@ -360,12 +302,7 @@ opam:octez-tx-rollup-client-PtLimaPt: variables: package: octez-tx-rollup-client-PtLimaPt -opam:octez-tx-rollup-client-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: octez-tx-rollup-client-alpha +# Ignoring unreleased package octez-tx-rollup-client-alpha. opam:octez-tx-rollup-node-PtKathma: extends: @@ -381,38 +318,20 @@ opam:octez-tx-rollup-node-PtLimaPt: variables: package: octez-tx-rollup-node-PtLimaPt -opam:octez-tx-rollup-node-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: octez-tx-rollup-node-alpha +# Ignoring unreleased package octez-tx-rollup-node-alpha. -opam:tezos-014-PtKathma-test-helpers: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-014-PtKathma-test-helpers +# Ignoring unreleased package octez-wasm-repl. -opam:tezos-015-PtLimaPt-test-helpers: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-015-PtLimaPt-test-helpers +# Ignoring unreleased package tezos-014-PtKathma-test-helpers. -opam:tezos-alpha-test-helpers: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-alpha-test-helpers +# Ignoring unreleased package tezos-015-PtLimaPt-test-helpers. + +# Ignoring unreleased package tezos-alpha-test-helpers. opam:tezos-baking-014-PtKathma: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: tezos-baking-014-PtKathma @@ -426,7 +345,7 @@ opam:tezos-baking-014-PtKathma-commands: opam:tezos-baking-015-PtLimaPt: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: tezos-baking-015-PtLimaPt @@ -440,7 +359,7 @@ opam:tezos-baking-015-PtLimaPt-commands: opam:tezos-baking-alpha: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: tezos-baking-alpha @@ -454,7 +373,7 @@ opam:tezos-baking-alpha-commands: opam:tezos-base: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-base @@ -465,101 +384,48 @@ opam:tezos-base-test-helpers: variables: package: tezos-base-test-helpers -opam:tezos-benchmark: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_6 - variables: - package: tezos-benchmark +# Ignoring unreleased package tezos-benchmark. -opam:tezos-benchmark-014-PtKathma: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmark-014-PtKathma +# Ignoring unreleased package tezos-benchmark-014-PtKathma. -opam:tezos-benchmark-015-PtLimaPt: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmark-015-PtLimaPt +# Ignoring unreleased package tezos-benchmark-015-PtLimaPt. -opam:tezos-benchmark-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmark-alpha +# Ignoring unreleased package tezos-benchmark-alpha. -opam:tezos-benchmark-examples: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_6 - variables: - package: tezos-benchmark-examples +# Ignoring unreleased package tezos-benchmark-examples. -opam:tezos-benchmark-type-inference-014-PtKathma: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmark-type-inference-014-PtKathma +# Ignoring unreleased package tezos-benchmark-tests. -opam:tezos-benchmark-type-inference-015-PtLimaPt: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmark-type-inference-015-PtLimaPt +# Ignoring unreleased package tezos-benchmark-type-inference-014-PtKathma. -opam:tezos-benchmark-type-inference-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-benchmark-type-inference-alpha +# Ignoring unreleased package tezos-benchmark-type-inference-015-PtLimaPt. -opam:tezos-benchmarks-proto-014-PtKathma: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmarks-proto-014-PtKathma +# Ignoring unreleased package tezos-benchmark-type-inference-alpha. -opam:tezos-benchmarks-proto-015-PtLimaPt: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmarks-proto-015-PtLimaPt +# Ignoring unreleased package tezos-benchmarks-proto-014-PtKathma. -opam:tezos-benchmarks-proto-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-benchmarks-proto-alpha +# Ignoring unreleased package tezos-benchmarks-proto-015-PtLimaPt. + +# Ignoring unreleased package tezos-benchmarks-proto-alpha. opam:tezos-clic: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-clic opam:tezos-client-000-Ps9mPmXa: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-client-000-Ps9mPmXa opam:tezos-client-001-PtCJ7pwo: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-client-001-PtCJ7pwo @@ -671,14 +537,14 @@ opam:tezos-client-alpha: opam:tezos-client-base: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-client-base opam:tezos-client-base-unix: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-client-base-unix @@ -720,23 +586,22 @@ opam:tezos-context-ops: opam:tezos-crypto: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-crypto opam:tezos-crypto-dal: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-crypto-dal -opam:tezos-dal-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-dal-alpha +# Ignoring unreleased package tezos-dal-alpha. + +# Ignoring unreleased package tezos-dal-node-lib. + +# Ignoring unreleased package tezos-dal-node-services. opam:tezos-embedded-protocol-000-Ps9mPmXa: extends: @@ -790,28 +655,28 @@ opam:tezos-embedded-protocol-005-PsBabyM1: opam:tezos-embedded-protocol-006-PsCARTHA: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_3 variables: package: tezos-embedded-protocol-006-PsCARTHA opam:tezos-embedded-protocol-007-PsDELPH1: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_3 variables: package: tezos-embedded-protocol-007-PsDELPH1 opam:tezos-embedded-protocol-008-PtEdo2Zk: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_3 variables: package: tezos-embedded-protocol-008-PtEdo2Zk opam:tezos-embedded-protocol-008-PtEdoTez: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_3 variables: package: tezos-embedded-protocol-008-PtEdoTez @@ -909,16 +774,11 @@ opam:tezos-event-logging: opam:tezos-event-logging-test-helpers: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-event-logging-test-helpers -opam:tezos-expect-helper: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_7 - variables: - package: tezos-expect-helper +# Ignoring unreleased package tezos-expect-helper. opam:tezos-hacl: extends: @@ -927,40 +787,27 @@ opam:tezos-hacl: variables: package: tezos-hacl -opam:tezos-injector-013-PtJakart: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-injector-013-PtJakart +# Ignoring unreleased package tezos-injector-013-PtJakart. opam:tezos-injector-014-PtKathma: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: tezos-injector-014-PtKathma opam:tezos-injector-015-PtLimaPt: extends: - .opam_template - - .rules_template__trigger_opam_batch_2 + - .rules_template__trigger_opam_batch_1 variables: package: tezos-injector-015-PtLimaPt -opam:tezos-injector-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-injector-alpha +# Ignoring unreleased package tezos-injector-alpha. -opam:tezos-layer2-utils-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-layer2-utils-alpha +# Ignoring unreleased package tezos-layer2-store. + +# Ignoring unreleased package tezos-layer2-utils-alpha. opam:tezos-lazy-containers: extends: @@ -969,6 +816,8 @@ opam:tezos-lazy-containers: variables: package: tezos-lazy-containers +# Ignoring unreleased package tezos-lazy-containers-tests. + opam:tezos-lwt-result-stdlib: extends: - .opam_template @@ -983,12 +832,7 @@ opam:tezos-micheline: variables: package: tezos-micheline -opam:tezos-micheline-rewriting: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_2 - variables: - package: tezos-micheline-rewriting +# Ignoring unreleased package tezos-micheline-rewriting. opam:tezos-mockup: extends: @@ -1018,12 +862,7 @@ opam:tezos-mockup-registration: variables: package: tezos-mockup-registration -opam:tezos-openapi: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_7 - variables: - package: tezos-openapi +# Ignoring unreleased package tezos-openapi. opam:tezos-p2p: extends: @@ -1154,35 +993,41 @@ opam:tezos-protocol-013-PtJakart: opam:tezos-protocol-014-PtKathma: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-protocol-014-PtKathma +# Ignoring unreleased package tezos-protocol-014-PtKathma-tests. + opam:tezos-protocol-015-PtLimaPt: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-protocol-015-PtLimaPt +# Ignoring unreleased package tezos-protocol-015-PtLimaPt-tests. + opam:tezos-protocol-alpha: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-protocol-alpha +# Ignoring unreleased package tezos-protocol-alpha-tests. + opam:tezos-protocol-demo-counter: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-protocol-demo-counter opam:tezos-protocol-demo-noops: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-protocol-demo-noops @@ -1196,7 +1041,7 @@ opam:tezos-protocol-environment: opam:tezos-protocol-genesis: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-protocol-genesis @@ -1266,7 +1111,7 @@ opam:tezos-protocol-plugin-011-PtHangz2: opam:tezos-protocol-plugin-011-PtHangz2-registerer: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-protocol-plugin-011-PtHangz2-registerer @@ -1280,7 +1125,7 @@ opam:tezos-protocol-plugin-012-Psithaca: opam:tezos-protocol-plugin-012-Psithaca-registerer: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-protocol-plugin-012-Psithaca-registerer @@ -1294,7 +1139,7 @@ opam:tezos-protocol-plugin-013-PtJakart: opam:tezos-protocol-plugin-013-PtJakart-registerer: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-protocol-plugin-013-PtJakart-registerer @@ -1308,10 +1153,12 @@ opam:tezos-protocol-plugin-014-PtKathma: opam:tezos-protocol-plugin-014-PtKathma-registerer: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-protocol-plugin-014-PtKathma-registerer +# Ignoring unreleased package tezos-protocol-plugin-014-PtKathma-tests. + opam:tezos-protocol-plugin-015-PtLimaPt: extends: - .opam_template @@ -1322,42 +1169,46 @@ opam:tezos-protocol-plugin-015-PtLimaPt: opam:tezos-protocol-plugin-015-PtLimaPt-registerer: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-protocol-plugin-015-PtLimaPt-registerer +# Ignoring unreleased package tezos-protocol-plugin-015-PtLimaPt-tests. + opam:tezos-protocol-plugin-alpha: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_5 variables: package: tezos-protocol-plugin-alpha opam:tezos-protocol-plugin-alpha-registerer: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-protocol-plugin-alpha-registerer +# Ignoring unreleased package tezos-protocol-plugin-alpha-tests. + opam:tezos-protocol-updater: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_5 variables: package: tezos-protocol-updater opam:tezos-proxy: extends: - .opam_template - - .rules_template__trigger_opam_batch_4 + - .rules_template__trigger_opam_batch_5 variables: package: tezos-proxy opam:tezos-proxy-server-config: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-proxy-server-config @@ -1378,7 +1229,7 @@ opam:tezos-rpc: opam:tezos-rpc-http: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-rpc-http @@ -1410,12 +1261,7 @@ opam:tezos-sapling: variables: package: tezos-sapling -opam:tezos-sc-rollup-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-sc-rollup-alpha +# Ignoring unreleased package tezos-sc-rollup-alpha. opam:tezos-scoru-wasm: extends: @@ -1424,34 +1270,32 @@ opam:tezos-scoru-wasm: variables: package: tezos-scoru-wasm -opam:tezos-scoru-wasm-fast: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_6 - variables: - package: tezos-scoru-wasm-fast +# Ignoring unreleased package tezos-scoru-wasm-benchmark. + +# Ignoring unreleased package tezos-scoru-wasm-fast. + +# Ignoring unreleased package tezos-scoru-wasm-test. + +# Ignoring unreleased package tezos-scoru-wasm-test-helpers. opam:tezos-shell: extends: - .opam_template - - .rules_template__trigger_opam_batch_3 + - .rules_template__trigger_opam_batch_2 variables: package: tezos-shell -opam:tezos-shell-benchmarks: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_5 - variables: - package: tezos-shell-benchmarks +# Ignoring unreleased package tezos-shell-benchmarks. opam:tezos-shell-context: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-shell-context +# Ignoring unreleased package tezos-shell-context-test. + opam:tezos-shell-services: extends: - .opam_template @@ -1476,7 +1320,7 @@ opam:tezos-signer-backends: opam:tezos-signer-services: extends: - .opam_template - - .rules_template__trigger_opam_batch_5 + - .rules_template__trigger_opam_batch_6 variables: package: tezos-signer-services @@ -1490,7 +1334,7 @@ opam:tezos-stdlib: opam:tezos-stdlib-unix: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-stdlib-unix @@ -1511,24 +1355,23 @@ opam:tezos-test-helpers: opam:tezos-test-helpers-extra: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-test-helpers-extra -opam:tezos-tooling: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_7 - variables: - package: tezos-tooling +# Ignoring unreleased package tezos-tooling. + +# Ignoring unreleased package tezos-tps-evaluation. opam:tezos-tree-encoding: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-tree-encoding +# Ignoring unreleased package tezos-tree-encoding-test. + opam:tezos-tx-rollup-014-PtKathma: extends: - .opam_template @@ -1543,12 +1386,7 @@ opam:tezos-tx-rollup-015-PtLimaPt: variables: package: tezos-tx-rollup-015-PtLimaPt -opam:tezos-tx-rollup-alpha: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_1 - variables: - package: tezos-tx-rollup-alpha +# Ignoring unreleased package tezos-tx-rollup-alpha. opam:tezos-validation: extends: @@ -1560,16 +1398,11 @@ opam:tezos-validation: opam:tezos-version: extends: - .opam_template - - .rules_template__trigger_opam_batch_6 + - .rules_template__trigger_opam_batch_7 variables: package: tezos-version -opam:tezos-wasmer: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_7 - variables: - package: tezos-wasmer +# Ignoring unreleased package tezos-wasmer. opam:tezos-webassembly-interpreter: extends: @@ -1578,12 +1411,7 @@ opam:tezos-webassembly-interpreter: variables: package: tezos-webassembly-interpreter -opam:tezos-webassembly-interpreter-extra: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_6 - variables: - package: tezos-webassembly-interpreter-extra +# Ignoring unreleased package tezos-webassembly-interpreter-extra. opam:tezos-workers: extends: @@ -1592,23 +1420,10 @@ opam:tezos-workers: variables: package: tezos-workers -opam:tezt: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_7 - variables: - package: tezt +# Ignoring unreleased package tezt. -opam:tezt-performance-regression: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_7 - variables: - package: tezt-performance-regression +# Ignoring unreleased package tezt-performance-regression. -opam:tezt-tezos: - extends: - - .opam_template - - .rules_template__trigger_opam_batch_6 - variables: - package: tezt-tezos +# Ignoring unreleased package tezt-self-tests. + +# Ignoring unreleased package tezt-tezos. diff --git a/manifest/main.ml b/manifest/main.ml index 6de0e7fb465b..6b4cdf095a7f 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -3033,6 +3033,7 @@ let tezt_core_lib = ~ocaml:V.(at_least "4.12") ~bisect_ppx:false ~js_compatible:true + ~release_status:Unreleased ~deps:[re; lwt; unix_js; ezjsonm] let tezt_lib = @@ -3045,6 +3046,7 @@ let tezt_lib = ~opam_doc:"https://tezos.gitlab.io/api/odoc/_html/tezt/Tezt/index.html" ~ocaml:V.(at_least "4.12") ~bisect_ppx:false + ~release_status:Unreleased ~deps:[re; lwt_unix; ezjsonm; tezt_core_lib |> open_] let tezt_js_lib = @@ -3055,6 +3057,7 @@ let tezt_js_lib = ~js_compatible:true ~bisect_ppx:false ~optional:true + ~release_status:Unreleased ~deps:[re; ezjsonm; js_of_ocaml; js_of_ocaml_lwt; tezt_core_lib |> open_] let tezt ~opam ~path ?js_compatible ?modes ?(deps = []) ?dep_globs ?synopsis l = @@ -4663,6 +4666,12 @@ module Protocol = Protocol else "Baking_commands_registration"); ] in + let release_status = + match number with + | V _ -> Released + | Alpha -> Experimental + | Other -> Unreleased + in let daemon daemon = only_if active @@ fun () -> public_exe @@ -4670,7 +4679,7 @@ module Protocol = Protocol ~internal_name:(sf "main_%s_%s" daemon name_underscore) ~path:(path // sf "bin_%s" daemon) ~synopsis:(sf "Tezos/Protocol: %s binary" daemon) - ~release:true + ~release_status ~deps: [ octez_base |> open_ ~m:"TzPervasives" @@ -4753,7 +4762,7 @@ module Protocol = Protocol ~internal_name:(sf "main_sc_rollup_client_%s" name_underscore) ~path:(path // "bin_sc_rollup_client") ~synopsis:"Tezos/Protocol: `octez-sc-rollup-client-alpha` client binary" - ~release:true + ~release_status ~deps: [ octez_base |> open_ ~m:"TzPervasives" @@ -4778,7 +4787,7 @@ module Protocol = Protocol ~internal_name:(sf "main_sc_rollup_node_%s" name_underscore) ~path:(path // "bin_sc_rollup_node") ~synopsis:"Tezos/Protocol: Smart Contract Rollup node binary" - ~release:true + ~release_status ~deps: [ octez_base |> open_ |> open_ ~m:"TzPervasives" @@ -4823,7 +4832,7 @@ module Protocol = Protocol ~path:(path // "bin_wasm_repl") ~opam:"octez-wasm-repl" ~synopsis:"Tezos/Protocol: REPL for the scoru-wasm functionality" - ~release:false + ~release_status:Unreleased ~deps: [ octez_base |> open_ ~m:"TzPervasives"; @@ -4887,7 +4896,7 @@ module Protocol = Protocol ~internal_name:(sf "main_tx_rollup_client_%s" name_underscore) ~path:(path // "bin_tx_rollup_client") ~synopsis:"Tezos/Protocol: `octez-tx-rollup-client-alpha` client binary" - ~release:true + ~release_status ~deps: [ octez_base |> open_ ~m:"TzPervasives" @@ -4909,7 +4918,7 @@ module Protocol = Protocol ~internal_name:(sf "main_tx_rollup_node_%s" name_underscore) ~path:(path // "bin_tx_rollup_node") ~synopsis:"Tezos/Protocol: Transaction Rollup node binary" - ~release:true + ~release_status ~deps: [ octez_base |> open_ ~m:"TzPervasives" @@ -5550,7 +5559,7 @@ let _octez_node = ~path:"src/bin_node" ~internal_name:"main" ~synopsis:"Tezos: `octez-node` binary" - ~release:true + ~release_status:Released ~deps: ([ octez_base |> open_ ~m:"TzPervasives" |> open_; @@ -5620,7 +5629,7 @@ let _octez_client = ~internal_names:["main_client"; "main_admin"] ~opam:"octez-client" ~synopsis:"Tezos: `octez-client` binary" - ~release:true + ~release_status:Released ~deps: ([ octez_base |> open_ ~m:"TzPervasives"; @@ -5669,7 +5678,7 @@ let _octez_codec = ~path:"src/bin_codec" ~internal_name:"codec" ~synopsis:"Tezos: `octez-codec` binary to encode and decode values" - ~release:true + ~release_status:Released ~deps: ([ data_encoding |> open_; @@ -5701,7 +5710,7 @@ let _octez_proxy_server = ~path:"src/bin_proxy_server" ~internal_name:"main_proxy_server" ~synopsis:"Octez: `octez-proxy-server` binary" - ~release:true + ~release_status:Released ~deps: ([ octez_base |> open_ ~m:"TzPervasives" |> open_; @@ -5788,7 +5797,7 @@ let _octez_signer = ~path:"src/bin_signer" ~internal_name:"main_signer" ~synopsis:"Tezos: `octez-signer` binary" - ~release:true + ~release_status:Released ~deps: [ octez_base |> open_ ~m:"TzPervasives"; diff --git a/manifest/manifest.ml b/manifest/manifest.ml index 8e5845aeb9a4..6ec3c2a5abbb 100644 --- a/manifest/manifest.ml +++ b/manifest/manifest.ml @@ -981,6 +981,14 @@ module Target = struct type preprocessor_dep = File of string + type release_status = Unreleased | Experimental | Released | Auto_opam + + let show_release_status = function + | Unreleased -> "Unreleased" + | Experimental -> "Experimental" + | Released -> "Released" + | Auto_opam -> "Auto_opam" + type internal = { bisect_ppx : bool; time_measurement_ppx : bool; @@ -1014,7 +1022,7 @@ module Target = struct private_modules : string list; profile : string option; opam_only_deps : t list; - release : bool; + release_status : release_status; static : bool; synopsis : string option; description : string option; @@ -1174,7 +1182,7 @@ module Target = struct ?private_modules:string list -> ?profile:string -> ?opam_only_deps:t option list -> - ?release:bool -> + ?release_status:release_status -> ?static:bool -> ?synopsis:string -> ?description:string -> @@ -1245,8 +1253,8 @@ module Target = struct ?opam ?opam_bug_reports ?opam_doc ?opam_homepage ?(opam_with_test = Always) ?(optional = false) ?(preprocess = []) ?(preprocessor_deps = []) ?(private_modules = []) ?profile - ?(opam_only_deps = []) ?(release = false) ?static ?synopsis ?description - ?(time_measurement_ppx = false) ?(virtual_modules = []) + ?(opam_only_deps = []) ?(release_status = Auto_opam) ?static ?synopsis + ?description ?(time_measurement_ppx = false) ?(virtual_modules = []) ?default_implementation ?(cram = false) ?license ?(extra_authors = []) ~path names = let conflicts = List.filter_map Fun.id conflicts in @@ -1547,7 +1555,7 @@ module Target = struct private_modules; profile; opam_only_deps; - release; + release_status; static; synopsis; description; @@ -2154,6 +2162,162 @@ let deduplicate_list ?merge get_key list = in List.fold_left add ([], String_set.empty) list |> fst |> List.rev +(* [Explicitly_unreleased i]: this opam package was explicitly specified not to be released + in the definition of its internal target [i]. + [Explicitly_released i]: this opam package was explicitly specified to be released + in the definition of its internal target [i]. + [Transitively_released p]: this opam package needs to be released because package [p], + which is released, depends on it. *) +type opam_release_status = + | Explicitly_unreleased of Target.internal + | Explicitly_released of Target.internal + | Transitively_released of string + | Auto + +(* [height] is 1 for leaves, 1 + max dependency height for nodes. *) +type opam_dependency_graph_node = { + mutable dependencies : String_set.t; + mutable release_status : opam_release_status; + mutable propagated : bool; + mutable height : int; +} + +(* This function relies on [check_circular_opam_deps] having been run prior. *) +let compute_opam_release_graph () : opam_dependency_graph_node String_map.t = + (* First step: + - compute [dependencies]; + - propagate [release_status] constraints inside opam packages. + This step does not propagate [release_status] constraints to dependencies. + This is done in a later step because we need all nodes to exist first. *) + let graph = + let node_of_internals package_name internals = + let released_example = ref None in + let unreleased_example = ref None in + let add_status internal = + match internal.Target.release_status with + | Auto_opam -> () + | Unreleased | Experimental -> unreleased_example := Some internal + | Released -> released_example := Some internal + in + List.iter add_status internals ; + let release_status = + match (!released_example, !unreleased_example) with + | None, None -> Auto + | Some internal, None -> Explicitly_released internal + | None, Some internal -> Explicitly_unreleased internal + | Some a, Some b -> + error + "In %s, %S has release status %s, and in %s, %S has release \ + status %s; those two targets cannot be in the same opam package \ + %S.\n" + a.path + (Target.kind_name_for_errors a.kind) + (Target.show_release_status a.release_status) + b.path + (Target.kind_name_for_errors b.kind) + (Target.show_release_status b.release_status) + package_name ; + exit 1 + in + let dependencies = + let add_dependency acc (target : Target.t) = + match Target.get_internal target with + | None | Some {opam = None; _} -> acc + | Some {opam = Some pkg; _} -> + if pkg = package_name then acc else String_set.add pkg acc + in + let add_internal_dependency acc internal = + List.fold_left add_dependency acc (Target.all_internal_deps internal) + in + List.fold_left add_internal_dependency String_set.empty internals + in + {dependencies; release_status; propagated = false; height = 0} + in + String_map.mapi node_of_internals !Target.by_opam + in + let with_node package_name k = + match String_map.find_opt package_name graph with + | None -> + (* We added all opam packages to [graph] in the first step. *) + assert false + | Some node -> k node + in + (* Propagate [release_status] constraints down the dependency tree: + if a package is released, its dependencies must be released too. *) + let rec propagate_from parent_name parent_node = + if not parent_node.propagated then + match parent_node.release_status with + | Explicitly_unreleased _ | Auto -> parent_node.propagated <- true + | Explicitly_released _ | Transitively_released _ -> + let propagate_to dependency_name = + with_node dependency_name @@ fun dependency_node -> + match dependency_node.release_status with + | Explicitly_unreleased _ -> + let rec output_reason = function + | Explicitly_unreleased internal -> + Printf.eprintf + " because in %s, %S is explicitly not released\n" + internal.path + (Target.kind_name_for_errors internal.kind) + | Explicitly_released internal -> + Printf.eprintf + " because in %s, %S is explicitly released\n" + internal.path + (Target.kind_name_for_errors internal.kind) + | Transitively_released reverse_dep -> + Printf.eprintf + " because its reverse dependency %S is released\n" + reverse_dep ; + with_node reverse_dep @@ fun reverse_node -> + output_reason reverse_node.release_status + | Auto -> + (* Package is neither released nor released, why is there + a contradiction? *) + assert false + in + Printf.eprintf "Package %S is released\n" parent_name ; + output_reason parent_node.release_status ; + Printf.eprintf "Package %S is not released\n" dependency_name ; + output_reason dependency_node.release_status ; + error + "Released package %S cannot depend on unreleased package %S.\n" + parent_name + dependency_name ; + exit 1 + | Explicitly_released _ | Transitively_released _ -> + (* Either [dependency_node] has already been propagated, + or it hasn't but will be later since we visit all nodes + with [String_map.iter]. *) + () + | Auto -> + dependency_node.release_status <- + Transitively_released parent_name ; + (* In case [dependency_node] has already been propagated, + we need to re-propagate it now that it has changed. *) + dependency_node.propagated <- false ; + propagate_from dependency_name dependency_node + in + String_set.iter propagate_to parent_node.dependencies ; + parent_node.propagated <- true + in + String_map.iter propagate_from graph ; + (* Compute heights. *) + let rec compute_height node = + if node.height <= 0 then + let max_dep_height : int = + String_set.fold + (fun dependency_name height -> + with_node dependency_name @@ fun dependency_node -> + compute_height dependency_node ; + max height dependency_node.height) + node.dependencies + 0 + in + node.height <- max_dep_height + 1 + in + String_map.iter (fun _ -> compute_height) graph ; + graph + let generate_dune_files () = Target.iter_internal_by_path @@ fun path internals -> let node_preload = @@ -2592,18 +2756,20 @@ let generate_binaries_for_release () = write "script-inputs/binaries-for-release" @@ fun fmt -> !Target.registered |> List.iter (fun (internal : Target.internal) -> - if internal.release then - match internal.kind with - | Public_library _ | Private_library _ | Private_executable _ - | Test_executable _ -> - error - "Target %s is marked with ~release:true but is not a public \ - executable.\n" - (Target.name_for_errors (Internal internal)) - | Public_executable ne_list -> - Ne_list.to_list ne_list - |> List.iter (fun (full_name : Target.full_name) -> - Format.fprintf fmt "%s@." full_name.public_name)) + match internal.release_status with + | Unreleased | Auto_opam -> () + | Experimental -> + (* [binaries-for-release] is only used in tag releases. *) + () + | Released -> ( + match internal.kind with + | Public_library _ | Private_library _ | Private_executable _ + | Test_executable _ -> + () + | Public_executable ne_list -> + Ne_list.to_list ne_list + |> List.iter (fun (full_name : Target.full_name) -> + Format.fprintf fmt "%s@." full_name.public_name))) let generate_static_packages () = write "script-inputs/static-packages" @@ fun fmt -> @@ -2884,108 +3050,56 @@ let packages_dir, release, remove_extra_files = in (!packages_dir, release, !remove_extra_files) -let generate_opam_ci () = - let depends_on_unreleased_packages l = - let rec fold ~seen acc t = - let name = Target.name_for_errors t in - if String_set.mem name seen then (seen, acc) +let generate_opam_ci opam_release_graph = + (* We only need to test released packages, since those are the only one + that will need to pass the public Opam CI. *) + let released_packages, unreleased_packages = + List.partition + (fun (_, node) -> + match node.release_status with + | Explicitly_unreleased _ | Auto -> false + | Explicitly_released _ | Transitively_released _ -> true) + (String_map.bindings opam_release_graph) + in + (* Due to technical limitations of the CI, we want to avoid starting + all opam package tests at the same time. Instead, we start them by batch, + with a delay between each batch. To this end we sort jobs by height + in the dependency tree, then split the resulting list. The idea is that + the higher in the dependency tree a job is, the longer it takes to run, + and the sooner we want it to start. *) + let released_packages = + let by_height_and_name (name1, node1) (name2, node2) = + (* Smaller heights first, to put them in the first batches. *) + let c = Int.compare node2.height node1.height in + if c <> 0 then c else - let seen = String_set.add name seen in - match t with - | Vendored {released_on_opam = false; name; _} -> - (seen, String_set.add name acc) - | t -> ( - match Target.get_internal t with - | None -> (seen, acc) - | Some i -> - List.fold_left - (fun (seen, acc) (t : Target.t) -> fold ~seen acc t) - (seen, acc) - i.deps) - in - - List.fold_left - (fun (seen, acc) (internal : Target.internal) -> - fold ~seen acc (Internal internal)) - (String_set.empty, String_set.empty) - l - |> snd - in - let only_test_or_private_targets l = - List.for_all - (fun (internal : Target.internal) -> - match internal.kind with - | Public_executable _ -> not internal.release - | Public_library _ -> false - | Private_executable _ | Private_library _ -> true - | Test_executable _ -> true) - l - in - (* [deps] maps a package name to its (internal) opam deps. *) - let deps : (string, Opam.dependency list) Hashtbl.t = Hashtbl.create 17 in - Target.iter_internal_by_opam (fun package_name internal_pkgs -> - let opam_deps = - internal_pkgs - |> List.concat_map (fun i -> - Target.all_internal_deps i - |> List.filter_map Target.get_internal - |> List.map (fun i -> Target.Internal i) - |> List.concat_map - (as_opam_dependency - ~for_release:false - ~for_conflicts:false - ~for_package:package_name - ~with_test:Never - ~optional:false)) - |> deduplicate_list - ~merge:(fun a _b -> a) - (fun {Opam.package; _} -> package) - in - Hashtbl.add deps package_name opam_deps) ; - (* [rank] is used to perform a topological sort. A package should - receive a rank higher than all its dependencies. *) - let rank : (string, int) Hashtbl.t = Hashtbl.create 17 in - let rec compute_rank (name : string) : int = - match Hashtbl.find_opt rank name with - | Some rank -> rank - | None -> - let deps = Hashtbl.find deps name in - let max_rank = - deps - |> List.map (fun (opam_dep : Opam.dependency) -> - compute_rank opam_dep.package) - |> List.fold_left max 0 - in - Hashtbl.replace rank name (max_rank + 1) ; - max_rank + 1 + (* For more stability (better diffs) we also sort by name. *) + String.compare name1 name2 + in + List.sort by_height_and_name released_packages + in + let batch_count = 7 in + let package_count = List.length released_packages in + let released_packages = + (* We want each batch to contain about [package_count / batch_count]. + But we want to round up so that we don't have more than [batch_count] batches. *) + let batch_size = (package_count + batch_count - 1) / batch_count in + List.mapi (fun i (pkg, _) -> (1 + (i / batch_size), pkg)) released_packages + in + let unreleased_packages = + List.map (fun (pkg, _) -> (0, pkg)) unreleased_packages + in + (* Merge and sort by name for nicer diffs. *) + let packages = + let by_name (_, a) (_, b) = String.compare a b in + List.sort by_name (released_packages @ unreleased_packages) in - Target.iter_internal_by_opam (fun package_name _internal_pkgs -> - let (_ : int) = compute_rank package_name in - ()) ; + (* Now [packages] is a list of [batch_index, package_name] + where [batch_index] is 0 for packages that we do not need to test. *) write ".gitlab/ci/jobs/packaging/opam_package.yml" @@ fun fmt -> pp_do_not_edit ~comment_start:"#" fmt () ; - (* Decide whether an opam package should be tested in the CI or - not. If not, remove it from [rank] so that we do not consider it in - the later stage. *) - Target.iter_internal_by_opam (fun package_name internal_pkgs -> - if only_test_or_private_targets internal_pkgs then ( - Hashtbl.remove rank package_name ; - Format.fprintf - fmt - "@.# Ignoring package %s, it only contains tests or private targets\n" - package_name) - else - let unreleased = depends_on_unreleased_packages internal_pkgs in - if not (String_set.is_empty unreleased) then ( - Hashtbl.remove rank package_name ; - Format.fprintf - fmt - "@.# Ignoring package %s, it depends on vendored packages\n\ - # that do not exists inside the official opam-repository:\n" - package_name ; - String_set.iter (Format.fprintf fmt "# - %s\n") unreleased)) ; - - let template d = + (* Output one template per batch. *) + for i = 1 to batch_count do Format.fprintf fmt {|@..rules_template__trigger_opam_batch_%d: @@ -3016,45 +3130,29 @@ let generate_opam_ci () = start_in: %d minutes - when: never # default |} - d - d - d - d - in - for i = 1 to (Hashtbl.length rank / 30) + 1 do - template i + i + i + i + i done ; - (* We setup one job per opam package and have around 200 packages. - Due to technical limitations of the CI, we want to avoid starting - that many jobs at the same time. Gitlab allows to delay a job - using `when:delayed` and `start_in:SPAN`. We start multiple - small batch of opam jobs leaving few seconds/minutes between them. *) - Hashtbl.fold (fun name rank acc -> (name, rank) :: acc) rank [] - (* We sort elements in descending rank order. The goal is to assign - smaller delay to packages with the most dependencies (as the job should take longer to run). *) - |> List.sort (fun (n1, r1) (n2, r2) -> - match compare (r2 : int) r1 with - | 0 -> compare (n1 : string) n2 - | c -> c) - |> List.mapi (fun i (name, _) -> - (* group jobs by 30, delay each group by 1 minute *) - let delayed_by = 1 + (i / 30) in - (name, delayed_by)) - (* We sort elements by name because we don't want the jobs to move around when topological sort changes *) - |> List.sort (fun (n1, _) (n2, _) -> compare (n1 : string) n2) - |> List.iter (fun (package_name, delayed_by) -> - Format.fprintf - fmt - {|@.opam:%s: + (* Output one job per released package. *) + let output_job (batch_index, package_name) = + if batch_index > 0 then + Format.fprintf + fmt + {|@.opam:%s: extends: - .opam_template - .rules_template__trigger_opam_batch_%d variables: package: %s |} - package_name - delayed_by - package_name) + package_name + batch_index + package_name + else Format.fprintf fmt "@.# Ignoring unreleased package %s.\n" package_name + in + List.iter output_job packages let generate_profiles ~default_profile = let deps : Version.constraints String_map.t String_map.t ref = @@ -3166,7 +3264,8 @@ let generate ~make_tezt_exe ~default_profile = generate_dune_project_files () ; generate_package_json_file () ; generate_static_packages () ; - generate_opam_ci () ; + let opam_release_graph = compute_opam_release_graph () in + generate_opam_ci opam_release_graph ; generate_binaries_for_release () ; generate_profiles ~default_profile ; Option.iter (generate_opam_files_for_release packages_dir) release diff --git a/manifest/manifest.mli b/manifest/manifest.mli index 2dce9987e191..d89309ea51d1 100644 --- a/manifest/manifest.mli +++ b/manifest/manifest.mli @@ -542,6 +542,46 @@ val inline_tests_backend : target -> inline_tests where [ARCH] is a condition that only holds on 64-bit architectures. *) type with_test = Always | Never | Only_on_64_arch +(** Release status for internal targets. + + The semantics of release statuses is summed up in this table: + + | | Unreleased | Experimental | Released | Auto_opam | + |-----------------------+------------+--------------+----------+-----------| + | make experimental | no | yes | yes | no | + | docker (master) | no | yes | yes | no | + | static (master) | no | yes | yes | no | + | make | no | no | yes | no | + | docker (release tag)) | no | no | yes | no | + | static (release tag) | no | no | yes | no | + | opam (release tag) | no | no | yes | if needed | + + [Unreleased] means: never release. + + [Experimental] means: release for [master], but not for release tags. + Since opam packages are not released for [master], they are never published + for experimental targets. However, [make experimental] builds public executables + and those executables are put in Docker images and made available as static + executables for [master]. + + [Released] means: release both for [master] and release tags. + Opam packages of released targets are published when making release tags. + [make] builds released public executables and those executables are put in + Docker images and made available as static executables, both for [master] + and release tags. + + [Auto_opam] means: only release opam package, and only if needed. + The opam package is released if: + - one of its targets is released; + - or it is a transitive dependency of another released opam package. + + Note that a given opam package cannot be both published and not published. + This means that it is not possible to have an [Unreleased] or [Experimental] + target in the same package as a [Released] target. It is also not possible + for a target to be [Unreleased] or [Experimental] if it is in an opam package + which is needed as a transitive dependency of a [Released] target. *) +type release_status = Unreleased | Experimental | Released | Auto_opam + (** Functions that build internal targets. The ['a] argument is instantiated by the relevant type for the name(s) @@ -666,11 +706,9 @@ type with_test = Always | Never | Only_on_64_arch dependencies in the [.opam] file (unless they are required by other targets). Default is [false]. - - [release]: defines whether this should be released. - Note: it is not always the case that public_exes should be released. - They are often public because they are needed by other opam packages, such as in tests. - Releasable [public_exe] values should be marked explicitly. - Default is [false]. + - [release_status]: if and when this should be released. + See the documentation of type {!release_status}. + Default value is [Auto_opam]. - [static]: whether to incluce [ %{workspace_root}/static-link-flags.sexp ] to the link flags to provide a static compilation profile. @@ -728,7 +766,7 @@ type 'a maker = ?private_modules:string list -> ?profile:string -> ?opam_only_deps:target list -> - ?release:bool -> + ?release_status:release_status -> ?static:bool -> ?synopsis:string -> ?description:string -> diff --git a/script-inputs/binaries-for-release b/script-inputs/binaries-for-release index 01d33b285685..89fb860afb8b 100644 --- a/script-inputs/binaries-for-release +++ b/script-inputs/binaries-for-release @@ -4,12 +4,6 @@ octez-codec octez-client octez-admin-client octez-node -octez-tx-rollup-node-alpha -octez-tx-rollup-client-alpha -octez-sc-rollup-node-alpha -octez-sc-rollup-client-alpha -octez-accuser-alpha -octez-baker-alpha octez-tx-rollup-node-PtLimaPt octez-tx-rollup-client-PtLimaPt octez-accuser-PtLimaPt -- GitLab From 574c86b320bcdf279fe08e948fabfb226233e47b Mon Sep 17 00:00:00 2001 From: Romain Bardou Date: Fri, 18 Nov 2022 15:28:35 +0100 Subject: [PATCH 2/2] Manifest: prevent registering after generation --- manifest/manifest.ml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/manifest/manifest.ml b/manifest/manifest.ml index 6ec3c2a5abbb..4834ee42c82f 100644 --- a/manifest/manifest.ml +++ b/manifest/manifest.ml @@ -1090,7 +1090,14 @@ module Target = struct so that we can create opam files with multiple targets. *) let by_opam = ref String_map.empty + (* Set to [false] by [generate] to prevent further modifying the above references. *) + let can_register = ref true + let register_internal ({path; opam; _} as internal) = + if not !can_register then + invalid_arg + "cannot register new targets after calling Manifest.check or \ + Manifest.generate" ; let old = String_map.find_opt path !by_path |> Option.value ~default:[] in by_path := String_map.add path (internal :: old) !by_path ; Option.iter @@ -3259,6 +3266,7 @@ let generate ~make_tezt_exe ~default_profile = Printexc.record_backtrace true ; try register_tezt_targets ~make_tezt_exe ; + Target.can_register := false ; generate_dune_files () ; generate_opam_files () ; generate_dune_project_files () ; @@ -3277,6 +3285,7 @@ let generate ~make_tezt_exe ~default_profile = let check ?exclude () = if !checks_done then failwith "Cannot run check twice" ; checks_done := true ; + Target.can_register := false ; Printexc.record_backtrace true ; try check_circular_opam_deps () ; -- GitLab