@@ -112,6 +112,45 @@ metadata.readme.provider = "scikit_build_core.metadata.fancy_pypi_readme"
112
112
# tool.hatch.metadata.hooks.fancy-pypi-readme options here
113
113
```
114
114
115
+ ## ` build-system.requires ` : Scikit-build-core's ` build.requires `
116
+
117
+ ``` {versionadded} 0.11
118
+
119
+ ```
120
+
121
+ If you need to inject and manipulate additional ` build-system.requires ` , you can
122
+ use the ` build.requires ` . This is intended to be used in combination with
123
+ [ ] ( ./overrides.md ) .
124
+
125
+ This is not technically a dynamic metadata and thus does not have to have the
126
+ ` dynamic ` field defined, and it is not defined under the ` metadata ` table, but
127
+ similar to the other dynamic metadata it injects the additional
128
+ ` build-system.requires ` .
129
+
130
+ ``` toml
131
+ [package ]
132
+ name = " mypackage"
133
+
134
+ [tool .scikit-build ]
135
+ build.requires = [" foo" ]
136
+
137
+ [[tool .scikit-build .overrides ]]
138
+ if.from-sdist = false
139
+ build.requires = [" foo @ {root:uri}/foo" ]
140
+ ```
141
+
142
+ This example shows a common use-case where the package has a default
143
+ ` build-system.requires ` pointing to the package ` foo ` in the PyPI index, but
144
+ when built from the original git checkout or equivalent, the local folder is
145
+ used as dependency instead by resolving the ` {root:uri} ` to a file uri pointing
146
+ to the folder where the ` pyproject.toml ` is located.
147
+
148
+ ``` {note}
149
+ In order to be compliant with the package index, when building from `sdist`, the
150
+ `build.requires` **MUST NOT** have any `@` redirects. This rule may be later
151
+ enforced explicitly.
152
+ ```
153
+
115
154
## Generate files with dynamic metadata
116
155
117
156
You can write out metadata to file(s) as well. Other info might become available
0 commit comments