Skip to content

Commit 9199ad8

Browse files
David Tolnayfacebook-github-bot
authored andcommitted
Simplify processing of buildscript.build fixup
Summary: Since {D74027863}, there is no need to consider anything other than the "base" fixup (i.e. not platform-specific) when generating Buck `build-script-build` targets. The platform-specific fixups in `platform_fixup` are guaranteed to be irrelevant to the buildscript build. Reviewed By: cjlongoria Differential Revision: D74046796 fbshipit-source-id: e68134dab381afc340da2eafbdab03462d8159e8
1 parent 6ad4252 commit 9199ad8

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

src/fixups.rs

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ impl<'meta> Fixups<'meta> {
245245
/// dependencies referencing them are conditional).
246246
pub fn emit_buildscript_rules(
247247
&self,
248-
buildscript_build: RustBinary,
248+
mut buildscript_build: RustBinary,
249249
config: &'meta Config,
250250
manifest_dir: Option<SubtargetOrPath>,
251251
) -> anyhow::Result<Vec<Rule>> {
@@ -308,44 +308,28 @@ impl<'meta> Fixups<'meta> {
308308
}
309309
}
310310

311+
let mut buildscript = None;
311312
let (local_manifest_dir, manifest_dir) = match manifest_dir {
312313
None => (None, None),
313314
Some(SubtargetOrPath::Path(path)) => (Some(path), None),
314315
Some(SubtargetOrPath::Subtarget(subtarget)) => (None, Some(subtarget)),
315316
};
316-
let default_buildscript_build_and_run = || {
317-
(
318-
buildscript_build.clone(),
319-
BuildscriptGenrule {
320-
name: self.buildscript_genrule_name(),
321-
buildscript_rule: buildscript_rule_name.clone(),
322-
package_name: self.package.name.clone(),
323-
version: self.package.version.clone(),
324-
features: buck::Selectable::Value(features.clone()),
325-
env: BTreeMap::new(),
326-
local_manifest_dir: local_manifest_dir.clone(),
327-
manifest_dir: manifest_dir.clone(),
328-
},
329-
)
317+
let default_buildscript_run = || BuildscriptGenrule {
318+
name: self.buildscript_genrule_name(),
319+
buildscript_rule: buildscript_rule_name.clone(),
320+
package_name: self.package.name.clone(),
321+
version: self.package.version.clone(),
322+
features: buck::Selectable::Value(features.clone()),
323+
env: BTreeMap::new(),
324+
local_manifest_dir: local_manifest_dir.clone(),
325+
manifest_dir: manifest_dir.clone(),
330326
};
331-
let mut buildscript = None;
332327

333328
let mut cxx_library = Vec::new();
334329
let mut prebuilt_cxx_library = Vec::new();
335330
for (_platform, fixup) in self.fixup_config.configs(&self.package.version) {
336331
if let Some(BuildscriptRun { env }) = &fixup.buildscript.run {
337-
let (buildscript_build, buildscript_run) =
338-
buildscript.get_or_insert_with(default_buildscript_build_and_run);
339-
340-
buildscript_build.common.base.env.unwrap_mut().extend(
341-
fixup
342-
.buildscript
343-
.build
344-
.env
345-
.iter()
346-
.map(|(k, v)| (k.clone(), StringOrPath::String(v.clone()))),
347-
);
348-
332+
let buildscript_run = buildscript.get_or_insert_with(default_buildscript_run);
349333
buildscript_run.env.extend(
350334
env.iter()
351335
.map(|(k, v)| (k.clone(), StringOrPath::String(v.clone()))),
@@ -528,7 +512,17 @@ impl<'meta> Fixups<'meta> {
528512
}
529513
}
530514

531-
if let Some((mut buildscript_build, mut buildscript_run)) = buildscript {
515+
if let Some(mut buildscript_run) = buildscript {
516+
buildscript_build.common.base.env.unwrap_mut().extend(
517+
self.fixup_config
518+
.base
519+
.buildscript
520+
.build
521+
.env
522+
.iter()
523+
.map(|(k, v)| (k.clone(), StringOrPath::String(v.clone()))),
524+
);
525+
532526
for (_platform, fixup) in self.fixup_config.configs(&self.package.version) {
533527
for cargo_env in fixup.cargo_env.iter() {
534528
let required = !matches!(fixup.cargo_env, CargoEnvs::All);

src/fixups/config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ pub struct FixupConfigFile {
5858
pub export_sources: Option<ExportSources>,
5959

6060
/// Common config
61-
base: FixupConfig,
61+
pub base: FixupConfig,
6262

6363
/// Platform-specific configs
6464
pub platform_fixup: BTreeMap<PlatformExpr, FixupConfig>,

0 commit comments

Comments
 (0)