The ebuild ships a ready-to-use node_modules tarball which does not require sys-apps/yarn to be installed. Pre-built node_modules allows us to run JS tests but we lose the ability to hack node packages' source files in YARN_CACHE_FOLDER. From: Lucio Sauer --- a/build/ninja_gen/src/node.rs +++ b/build/ninja_gen/src/node.rs @@ -76,12 +76,11 @@ pub struct YarnInstall<'a> { impl BuildAction for YarnInstall<'_> { fn command(&self) -> &str { - "$runner yarn $yarn $out" + "$runner yarn $out" } fn files(&mut self, build: &mut impl build::FilesHandle) { build.add_inputs("", &self.package_json_and_lock); - build.add_inputs("yarn", inputs![":yarn:bin"]); build.add_outputs("out", vec!["node_modules/.marker"]); for (key, value) in &self.exports { let outputs: Vec<_> = value.iter().map(|o| format!("node_modules/{o}")).collect(); @@ -139,9 +138,7 @@ pub fn setup_node( ); build.add_dependency("yarn:bin", inputs![path]); } - Err(_) => { - build.add_action("yarn", YarnSetup {})?; - } + Err(_) => () }; for binary in binary_exports { --- a/build/runner/src/yarn.rs +++ b/build/runner/src/yarn.rs @@ -1,36 +1,18 @@ // Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html -use std::env; use std::path::Path; -use std::process::Command; use clap::Args; -use crate::run::run_command; - #[derive(Args)] pub struct YarnArgs { - yarn_bin: String, stamp: String, } pub fn setup_yarn(args: YarnArgs) { link_node_modules(); - if env::var("OFFLINE_BUILD").is_ok() { - println!("OFFLINE_BUILD is set"); - println!("Running yarn with '--offline' and '--ignore-scripts'."); - run_command( - Command::new(&args.yarn_bin) - .arg("install") - .arg("--offline") - .arg("--ignore-scripts"), - ); - } else { - run_command(Command::new(&args.yarn_bin).arg("install")); - } - std::fs::write(args.stamp, b"").unwrap(); }