19 Commits

Author SHA1 Message Date
Daniel Paoliello
0f2adc6f05 mach: Force the use of arm64 Python when running with Windows on arm64 (#42371)
There is currently [a bug in
UV](https://github.com/astral-sh/uv/issues/12906) that results in it
using the x64 flavor of Python when running on Arm64 Windows. This then
causes all Python scripts to believe they are on an x64 device and so
Server installs the wrong dependencies and builds for the wrong
architecture.

Testing: Local on my Arm64 Windows device
Contributes to fixing #40611

Signed-off-by: Daniel Paoliello <daniel@meta-sys.info>
2026-02-06 02:58:37 +00:00
Jonathan Schwender
b5df4bc90a mach: use uv run --frozen (#42169)
This will avoid updating the lockfile during regular operations. Also
ignore the `servo.egg-info` directory, which
the new python requirement installation mechanism via setuptools
creates.
To update the lockfile one can run `uv lock`. This is also done
automatically, when syncing requirements from WPT.

This PR also updates the uv version in CI to a newer one. If you
encounter any issues with the lockfile after this PR, it might be
necessary to update your local instance of uv.

Testing: Build still works. [mach try
full](https://github.com/servo/servo/actions/runs/21624364040)

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-02-03 12:43:04 +00:00
Jonathan Schwender
82df609833 mach: Use uv to manage the virtual environment (#41861)
Instead of attempting to manage the virtual environment ourselves, use
`uv` to manage the installation of dependencies.
Since we still have dependencies coming from upstream wpt, we use
`[tool.setuptool]` in our pyproject.toml to ensure that `uv` dynamically
installs our dependencies according to the requirements.txt files.

Additionally, this PR also reverts `--no-project` usage. `--no-project`
was added as a temporary workaround in
https://github.com/servo/servo/pull/37741.
It's not 100% clear to me what exactly the issue was, but
[apparently](https://github.com/servo/servo/pull/37741#pullrequestreview-2985666234)
the issue caused the build to break.
Removing the arg seems to work fine, except that we get a warning about
a missing `requiress-python` value in `pyproject.toml`.
Apparently it is good practice to specify the requirement as `>=` in th
pyroject, and lock the exact version via `uv pin` (which writes to
`.python_version`, where we already pin 3.11.


Testing: Should be covered by existing tests, which compile code on all
platforms.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-22 05:51:44 +00:00
Jerens Lensun
5eb7c397fe Mergeruff.toml into pyproject.toml (#37741)
add a pyproject.toml config file that includes the settings for ruff

---------

Signed-off-by: Jerens Lensun <jerensslensun@gmail.com>
2025-07-04 12:21:48 +00:00
Mukilan Thiyagarajan
88a35b3cc9 mach: adopt uv and avoid system python (#34632)
This allows us to use `uv` for:
1. Installing a pinned Python version
2. Installing the dependency packages using `uv`'s pip compatible interface.
4. Bootstrapping `mach` without a Python installion on the host, using `uv
   run`

This change also introduces a new 'composite' GitHub action to setup
python in the different CI workflows. There is no support for externally
managed python installations and virtual environments. These could be
added in the future.

Fixes #34095, #34547

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2024-12-16 09:20:37 +00:00
Peter Mikola
4ddbdc61a3 tweak mach files a little bit (#34485)
Signed-off-by: Peter MIKOLA <mikopet@mikopet.dev>
2024-12-06 15:57:30 +00:00
Dominic Cooney
aa3359dc9e Make mach.bat request Python 3
The mach Python script no longer supports Python 2, so don't use
Python 2.

Fixes #28379

Signed-off-by: Dominic Cooney <dominic.cooney@gmail.com>
2021-05-22 18:27:10 +09:00
MeFisto94
215177d791 Launch vcvarsall.bat for the recognized VS Installation Directory from python instead of making mach.bat try that on hardcoded paths. 2019-12-23 00:31:07 +01:00
TheGoddessInari
903729159e Rework mach.bat to support VS2019 and user-supplied environments.
As a bonus, use setlocal to avoid environment pollution.
2019-04-01 11:15:22 -04:00
TheGoddessInari
e1eb36050e Default mach.bat to using py -2.
Servo already assumes the user has Python, this is the primary
way to make sure that Python 2 is preferred, and you should
get a sensible error message if you have python 3 but not 2.

But first, check that py.exe exists because if a system has only
Python 2.x only, it won't have it. If it doesn't, then try python.exe.
2019-04-01 11:15:22 -04:00
Simon Sapin
1bab9fb64f mach.bat: exit with an error code 2018-10-08 16:44:21 +02:00
Josh Matthews
64cbf02084 Revert "build(mach): locate vs via vswhere on win32"
This reverts commit c20efd5e9a.
2018-08-20 12:58:59 -04:00
OJ Kwon
c20efd5e9a build(mach): locate vs via vswhere on win32 2018-06-20 11:30:58 -07:00
Andrés Barreiro
1f2b5d684f Get back to working dir after vcvarsall.bat
When using cmd.exe directly, vcvarsall.bat changes the working directory.
To prevent this, pushd and popd could be used.
2017-11-21 19:17:29 +01:00
tigercosmos
26dc7ac973 update just VS buildtool for Windows build 2017-09-09 23:40:20 +08:00
UK992
9b35fd9472 Add support for Visual Studio 2017 2017-04-11 23:31:22 +02:00
UK992
a5ce6304b1 Fix hardcoded path to link.exe 2017-02-03 13:33:37 +01:00
UK992
516676aa5f Windows MSVC: Define vcvars in mach.bat 2016-08-22 18:02:49 +02:00
Vladimir Vukicevic
5bbec7469d Native MSVC windows build, convert to cmake 2016-08-17 09:50:51 -04:00