From aedd28087421e47e26cf6d4721efdbb0b28f25a2 Mon Sep 17 00:00:00 2001
From: Lulu <morgan@parity.io>
Date: Thu, 31 Aug 2023 17:13:09 +0200
Subject: [PATCH] Fix polkadot-node-core-pvf-prepare-worker build with jemalloc
 (#1315)

* Fix polkadot-node-core-pvf-prepare-worker build with jemalloc

The jemalloc feature on polkadot-node-core-pvf-prepare-worker depended
on some feature gated code in polkadot-node-core-pvf-common but there
way no way to enable this feature gate.

This commit adds the feature and makes prepare-worker enable it.

* More jemalloc-allocator fixes

* Fix jemalloc-allocator feature dep

* Run `zepter format features`

---------

Co-authored-by: Marcin S <marcin@realemail.net>
---
 Cargo.lock                                       | 1 -
 polkadot/Cargo.toml                              | 7 ++++++-
 polkadot/node/core/pvf/Cargo.toml                | 1 +
 polkadot/node/core/pvf/common/Cargo.toml         | 1 +
 polkadot/node/core/pvf/execute-worker/Cargo.toml | 4 ----
 polkadot/node/core/pvf/prepare-worker/Cargo.toml | 5 ++++-
 6 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index 0e0e47f955a..5ffb73c9c67 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -12183,7 +12183,6 @@ dependencies = [
  "sp-core",
  "sp-maybe-compressed-blob",
  "sp-tracing",
- "tikv-jemalloc-ctl",
  "tokio",
  "tracing-gum",
 ]
diff --git a/polkadot/Cargo.toml b/polkadot/Cargo.toml
index e3cfda9bd46..f173557a0ff 100644
--- a/polkadot/Cargo.toml
+++ b/polkadot/Cargo.toml
@@ -22,7 +22,7 @@ version = "1.0.0"
 
 [dependencies]
 color-eyre = { version = "0.6.1", default-features = false }
-tikv-jemallocator = "0.5.0"
+tikv-jemallocator = { version = "0.5.0", optional = true }
 
 # Crates in our workspace, defined as dependencies so we can pass them feature flags.
 polkadot-cli = { path = "cli", features = [
@@ -38,6 +38,9 @@ polkadot-overseer = { path = "node/overseer" }
 polkadot-node-core-pvf-common = { path = "node/core/pvf/common" }
 polkadot-node-core-pvf-execute-worker = { path = "node/core/pvf/execute-worker" }
 
+[target.'cfg(target_os = "linux")'.dependencies]
+tikv-jemallocator = "0.5.0"
+
 [dev-dependencies]
 assert_cmd = "2.0.4"
 nix = { version = "0.26.1", features = ["signal"] }
@@ -59,7 +62,9 @@ fast-runtime = [ "polkadot-cli/fast-runtime" ]
 runtime-metrics = [ "polkadot-cli/runtime-metrics" ]
 pyroscope = [ "polkadot-cli/pyroscope" ]
 jemalloc-allocator = [
+	"dep:tikv-jemallocator",
 	"polkadot-node-core-pvf-prepare-worker/jemalloc-allocator",
+	"polkadot-node-core-pvf/jemalloc-allocator",
 	"polkadot-overseer/jemalloc-allocator",
 ]
 
diff --git a/polkadot/node/core/pvf/Cargo.toml b/polkadot/node/core/pvf/Cargo.toml
index a10b748e882..f28d00d2690 100644
--- a/polkadot/node/core/pvf/Cargo.toml
+++ b/polkadot/node/core/pvf/Cargo.toml
@@ -54,6 +54,7 @@ halt = { package = "test-parachain-halt", path = "../../../parachain/test-parach
 
 [features]
 ci-only-tests = []
+jemalloc-allocator = [ "polkadot-node-core-pvf-common/jemalloc-allocator" ]
 # This feature is used to export test code to other crates without putting it in the production build.
 # This is also used by the `puppet_worker` binary.
 test-utils = [
diff --git a/polkadot/node/core/pvf/common/Cargo.toml b/polkadot/node/core/pvf/common/Cargo.toml
index ded8f0dc63b..620e2148623 100644
--- a/polkadot/node/core/pvf/common/Cargo.toml
+++ b/polkadot/node/core/pvf/common/Cargo.toml
@@ -38,3 +38,4 @@ tempfile = "3.3.0"
 # This feature is used to export test code to other crates without putting it in the production build.
 # Also used for building the puppet worker.
 test-utils = []
+jemalloc-allocator = []
diff --git a/polkadot/node/core/pvf/execute-worker/Cargo.toml b/polkadot/node/core/pvf/execute-worker/Cargo.toml
index 5ef7c8e8e87..a9619015594 100644
--- a/polkadot/node/core/pvf/execute-worker/Cargo.toml
+++ b/polkadot/node/core/pvf/execute-worker/Cargo.toml
@@ -11,7 +11,6 @@ cpu-time = "1.0.0"
 futures = "0.3.21"
 gum = { package = "tracing-gum", path = "../../../gum" }
 rayon = "1.5.1"
-tikv-jemalloc-ctl = { version = "0.5.0", optional = true }
 tokio = { version = "1.24.2", features = ["fs", "process"] }
 
 parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive"] }
@@ -24,8 +23,5 @@ sp-core = { path = "../../../../../substrate/primitives/core" }
 sp-maybe-compressed-blob = { path = "../../../../../substrate/primitives/maybe-compressed-blob" }
 sp-tracing = { path = "../../../../../substrate/primitives/tracing" }
 
-[target.'cfg(target_os = "linux")'.dependencies]
-tikv-jemalloc-ctl = "0.5.0"
-
 [features]
 builder = []
diff --git a/polkadot/node/core/pvf/prepare-worker/Cargo.toml b/polkadot/node/core/pvf/prepare-worker/Cargo.toml
index dfa87e4d240..61d197af07a 100644
--- a/polkadot/node/core/pvf/prepare-worker/Cargo.toml
+++ b/polkadot/node/core/pvf/prepare-worker/Cargo.toml
@@ -32,4 +32,7 @@ tikv-jemalloc-ctl = "0.5.0"
 
 [features]
 builder = []
-jemalloc-allocator = [ "dep:tikv-jemalloc-ctl" ]
+jemalloc-allocator = [
+	"dep:tikv-jemalloc-ctl",
+	"polkadot-node-core-pvf-common/jemalloc-allocator",
+]
-- 
GitLab