diff --git a/README.md b/README.md index 41d309c4..6c00e56f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,14 @@ # `rules_pycross` - Python + cross platform -A proof-of-concept ruleset to (hopefully) improve cross-platform Python builds with Bazel. - -**Note:** very much still experimental. +Use your Poetry or PDM lock files with Bazel and enabling cross-platform builds. ### Features: -- A single lock file for all target platforms, thanks to Poetry +- A single lock file for all target platforms, thanks to Poetry and PDM - Builds that happen in build actions, not during WORKSPACE initialization - Standard Bazel `http_file` rules used for fetching dependencies. `pip` is not a build-time dependency. -See the [example](examples/poetry). +See the [examples](examples). ### Why? @@ -19,7 +17,7 @@ have a couple of issues that make cross-platform usage difficult (see https://gi - they're based on `pip` and `pip-compile` which do not generate cross-platform lock files. For example, IPython depends on `appnope` only on MacOS. Lock files generated by `pip-compile` will differ based on whether they're created on Linux - or MacOS. + or MacOS. The `pip-compile` solution to this problem is to generate lock files for different systems, on different systems. - They use `pip install` during the `WORKSPACE` phase to fetch and possibly build packages (including native libraries). `WORKSPACE` operations lack many of the things that Bazel's build actions provide such as sandboxing and remote execution. @@ -46,4 +44,4 @@ A `pip install` operation can be roughly broken down into these parts: 4. `pycross_wheel_library` "installs" (extracts) a Python wheel - either downloaded or built from an sdist - and provides it as a `py_library`. -See the [generated docs](docs/rules.md). +See the [generated docs](docs).