@@ -23,12 +23,37 @@ so these references must be patched like this:
23
23
sgx_tstd = { git = " https://github.com/apache/incubator-teaclave-sgx-sdk.git" , rev = " b9d1bda" }
24
24
```
25
25
26
- However, also note that Cargo currently has this limitation:
26
+ ### Cargo patch limitation workaround
27
+
28
+ Ideally, we want to explicitly specify the tag or revision of the SGX-forked packages we use,
29
+ like this:
30
+
31
+ ``` toml
32
+ serde = { git = " https://github.com/mesalock-linux/serde-sgx" , tag = " sgx_1.1.3" }
33
+ ```
34
+
35
+ However, this fails for packages that are also listed as dependencies of other SGX-forked packages
36
+ _ without_ the explicit tag: Cargo will resolve these as different crates, which causes problems
37
+ (such as different crates referring to different versions of ` serde ` 's traits).
38
+
39
+ We cannot use ` [patch] ` to override these dependencies to use the same specifiers,
40
+ because of this Cargo limitation:
27
41
28
42
* [ Cannot patch underspecified git dependency #7670 ] ( https://github.com/rust-lang/cargo/issues/7670 )
43
+ * Comment: < https://github.com/rust-lang/cargo/issues/7670#issuecomment-841722488 >
44
+
45
+ To work around this problem, our specifiers must exactly match the specifiers used by our dependencies'
46
+ dependency declarations. (That is, the ` rev ` / ` tag ` / ` branch ` values (or lack of them) must match.)
47
+
48
+ Currently, at least these transitively-used dependencies must be specified exactly:
29
49
30
- This prevents patching a repository reference to a different revision in the same repository,
31
- which makes some SGX-patched packages (such as ` serde-sgx ` and ` serde-json-sgx ` ) tricky to deal with.
50
+ ``` toml
51
+ once_cell = { git = " https://github.com/mesalock-linux/once_cell-sgx" }
52
+ serde = { git = " https://github.com/mesalock-linux/serde-sgx" }
53
+ serde-big-array = { git = " https://github.com/mesalock-linux/serde-big-array-sgx" }
54
+ serde_derive = { git = " https://github.com/mesalock-linux/serde-sgx" }
55
+ serde_json = { git = " https://github.com/mesalock-linux/serde-json-sgx" }
56
+ ```
32
57
33
58
34
59
## Aligned memory allocation for secret values
0 commit comments