blob: d610d1cfe364397777a601943bb3d6e8cd2da82e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use std::path::Path;
use std::process::Command;
use std::{env, fs};
fn main() {
if cfg!(feature = "media-gstreamer") {
println!("cargo:rerun-if-changed=../../python/servo/gstreamer.py");
let output = find_python()
.arg("../../python/servo/gstreamer.py")
.arg(std::env::var_os("TARGET").unwrap())
.output()
.unwrap();
if !output.status.success() {
eprintln!("{}", String::from_utf8_lossy(&output.stdout));
eprintln!("{}", String::from_utf8_lossy(&output.stderr));
std::process::exit(1)
}
let path = Path::new(&env::var_os("OUT_DIR").unwrap()).join("gstreamer_plugins.rs");
fs::write(path, output.stdout).unwrap();
}
}
/// Tries to find a suitable python, which in Servo is always `uv run python` unless we are running
/// as a descendant of `uv run python`. In that case, we can use either `uv run python` or `python`
/// (uv does not provide a `python3` on Windows).
///
/// More details: <https://book.servo.org/hacking/setting-up-your-environment.html#check-tools>
///
/// Note: This function should be kept in sync with the version in `components/script/build.rs`
fn find_python() -> Command {
let mut command = Command::new("uv");
command.args(["run", "python"]);
if command.output().is_ok_and(|out| out.status.success()) {
return command;
}
panic!("Can't find python (tried `{command:?}`)! Is uv installed and in PATH?")
}
|