Skip to content

Conversation

UebelAndre
Copy link
Contributor

PR Checklist

Please check if your PR fulfills the following requirements:

  • Tests for the changes have been added (for bug fixes / features)
  • Docs have been added / updated (for bug fixes / features)

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature (please, look at the "Scope of the project" section in the README.md file)
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • Other... Please describe:

What is the current behavior?

Issue Number: N/A

What is the new behavior?

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

name = "files",
srcs = glob(
include = [
"*.exe",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The interpreter was missing from py3_runtime.all_files on windows


_WINDOWS_RUNNER_TEMPLATE = """\
@ECHO OFF
set PATHEXT=.COM;.EXE;.BAT
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way windows figures out something is executable is through this environment variable.

if is_windows:
newline = "\r\n"
os.environ["HOME"] = tempfile.mkdtemp()
os.environ["LocalAppData"] = tempfile.mkdtemp()
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bazel requires these variables be set or some flags be explicitly provided. This is easier IMO


is_windows = "win" in sys.platform
if is_windows:
newline = "\r\n"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe python has a built in constant for this. Would be nice.

newline.join(
[
'build --override_repository rules_python="{}"'.format(
rules_python_path.replace("\\", "/")
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bazel can understand Windows paths with forward slashes.

output = stream.read()
self.assertEqual(output, "Python %python_version%\n")
output = stream.read().strip()
self.assertEqual(output, "Python %python_version%")
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Newline can be different on different system. Better to just strip whitespace.


# Windows makes use of runfiles for some rules
build --enable_runfiles
startup --windows_enable_symlinks
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This flag is required to enable runfiles on windows

@UebelAndre UebelAndre marked this pull request as ready for review March 7, 2022 16:22
is_windows = "win" in sys.platform
if is_windows:
newline = "\r\n"
os.environ["HOME"] = tempfile.mkdtemp()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use TEST_TMPDIR provided by Bazel.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that'd be much better since it should show up in sandbox paths, making things more debuggable.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
os.environ["HOME"] = tempfile.mkdtemp()
home = os.path.join(os.environ["TEST_TMPDIR"], "HOME")
os.mkdir(home)
os.environ["HOME"] = home

@f0rmiga f0rmiga merged commit 8a6bcdd into bazel-contrib:f0rmiga/cpython-toolchain Mar 7, 2022
alexeagle pushed a commit to alexeagle/rules_python that referenced this pull request Mar 8, 2022
Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: compile zstd if missing

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: buildifier

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: make python_repositories reproducible

Signed-off-by: Thulio Ferraz Assis <[email protected]>

rename: python_repositories -> python_repository

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: linter

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: make interpreter files publicly visible

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: add files to py_runtime

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Account for some platforms not having all versions

Added windows support to hermetic toolchains (bazel-contrib#628)

* Added windows support to hermetic toolchains

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

Co-authored-by: Thulio Ferraz Assis <[email protected]>

refactor: simplify logic for release urls

Also, added a helper target to print the release hashes.

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: Provide a host platform alias (bazel-contrib#635)

* feat: Provide a host platform alias

This lets users and repository rules access the interpreter for whatever
host the repository is running on.

* Apply suggestions from code review

Co-authored-by: Thulio Ferraz Assis <[email protected]>

fix: files excludes

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: macOS dislikes --recursive

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: buildifier issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Allow previous indygreg releases (bazel-contrib#636)

This gives us more python patch versions

fix: put back zstd support for older releases

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: hash calculator

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: use hermetic interpreter with pip_parse and pip_install

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: add missing attrs back for zstd

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: expose zstd attributes

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: normalize OS names

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: linting issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: support windows in the aliases

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: linting issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: windows python.exe instead of python3.exe

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: use consts for OS names

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: always use latest toolchain for test

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: expose versions.bzl

Signed-off-by: Thulio Ferraz Assis <[email protected]>

refactor: move toolchain tests out of private

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: acceptance tests for the toolchains

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: rewrite test in py to work on windows

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: README example

Co-authored-by: UebelAndre <[email protected]>

fix: use toolchain to run acceptance tests

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: use matrix for acceptance tests

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: support acceptance_tests on windows

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: alias for pip

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix?: include call to windows cmd

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Fix windows acceptance tests (bazel-contrib#641)

* Fix windows acceptance tests

* test

* todo: remove

Co-authored-by: Thulio Ferraz Assis <[email protected]>

refactor: polishing Windows testing support

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: unset py2_runtime

Signed-off-by: Thulio Ferraz Assis <[email protected]>

rename: host -> resolved_interpreter

Signed-off-by: Thulio Ferraz Assis <[email protected]>

doc: add reference to quirks in python-build-standalone

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: allow a distutils.cfg to be passed

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: buildifier (again)

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Minor code review suggestions
alexeagle pushed a commit that referenced this pull request Mar 8, 2022
Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: compile zstd if missing

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: buildifier

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: make python_repositories reproducible

Signed-off-by: Thulio Ferraz Assis <[email protected]>

rename: python_repositories -> python_repository

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: linter

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: make interpreter files publicly visible

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: add files to py_runtime

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Account for some platforms not having all versions

Added windows support to hermetic toolchains (#628)

* Added windows support to hermetic toolchains

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

Co-authored-by: Thulio Ferraz Assis <[email protected]>

refactor: simplify logic for release urls

Also, added a helper target to print the release hashes.

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: Provide a host platform alias (#635)

* feat: Provide a host platform alias

This lets users and repository rules access the interpreter for whatever
host the repository is running on.

* Apply suggestions from code review

Co-authored-by: Thulio Ferraz Assis <[email protected]>

fix: files excludes

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: macOS dislikes --recursive

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: buildifier issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Allow previous indygreg releases (#636)

This gives us more python patch versions

fix: put back zstd support for older releases

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: hash calculator

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: use hermetic interpreter with pip_parse and pip_install

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: add missing attrs back for zstd

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: expose zstd attributes

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: normalize OS names

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: linting issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: support windows in the aliases

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: linting issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: windows python.exe instead of python3.exe

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: use consts for OS names

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: always use latest toolchain for test

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: expose versions.bzl

Signed-off-by: Thulio Ferraz Assis <[email protected]>

refactor: move toolchain tests out of private

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: acceptance tests for the toolchains

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: rewrite test in py to work on windows

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: README example

Co-authored-by: UebelAndre <[email protected]>

fix: use toolchain to run acceptance tests

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: use matrix for acceptance tests

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: support acceptance_tests on windows

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: alias for pip

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix?: include call to windows cmd

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Fix windows acceptance tests (#641)

* Fix windows acceptance tests

* test

* todo: remove

Co-authored-by: Thulio Ferraz Assis <[email protected]>

refactor: polishing Windows testing support

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: unset py2_runtime

Signed-off-by: Thulio Ferraz Assis <[email protected]>

rename: host -> resolved_interpreter

Signed-off-by: Thulio Ferraz Assis <[email protected]>

doc: add reference to quirks in python-build-standalone

Signed-off-by: Thulio Ferraz Assis <[email protected]>

feat: allow a distutils.cfg to be passed

Signed-off-by: Thulio Ferraz Assis <[email protected]>

fix: buildifier (again)

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Minor code review suggestions
f0rmiga added a commit that referenced this pull request Mar 9, 2022
* feat: cpython toolchains for linux and macos

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: compile zstd if missing

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: buildifier

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: make python_repositories reproducible

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* rename: python_repositories -> python_repository

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: linter

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: make interpreter files publicly visible

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: add files to py_runtime

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* Account for some platforms not having all versions

* Added windows support to hermetic toolchains (#628)

* Added windows support to hermetic toolchains

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* Update python/repositories.bzl

Co-authored-by: Thulio Ferraz Assis <[email protected]>

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* refactor: simplify logic for release urls

Also, added a helper target to print the release hashes.

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: Provide a host platform alias (#635)

* feat: Provide a host platform alias

This lets users and repository rules access the interpreter for whatever
host the repository is running on.

* Apply suggestions from code review

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* fix: files excludes

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: macOS dislikes --recursive

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: buildifier issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* Allow previous indygreg releases (#636)

This gives us more python patch versions

* fix: put back zstd support for older releases

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: hash calculator

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: use hermetic interpreter with pip_parse and pip_install

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: add missing attrs back for zstd

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: expose zstd attributes

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: normalize OS names

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: linting issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: support windows in the aliases

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: linting issues

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: windows python.exe instead of python3.exe

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: use consts for OS names

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: always use latest toolchain for test

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: expose versions.bzl

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* refactor: move toolchain tests out of private

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: acceptance tests for the toolchains

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: rewrite test in py to work on windows

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: README example

Co-authored-by: UebelAndre <[email protected]>

* fix: use toolchain to run acceptance tests

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: use matrix for acceptance tests

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: support acceptance_tests on windows

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: alias for pip

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix?: include call to windows cmd

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* Fix windows acceptance tests (#641)

* Fix windows acceptance tests

* test

* todo: remove

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* refactor: polishing Windows testing support

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: unset py2_runtime

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* rename: host -> resolved_interpreter

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* doc: add reference to quirks in python-build-standalone

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* feat: allow a distutils.cfg to be passed

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* fix: buildifier (again)

Signed-off-by: Thulio Ferraz Assis <[email protected]>

* Minor code review suggestions (#642)

* Minor code review suggestions

* Apply suggestions from code review

Co-authored-by: Thulio Ferraz Assis <[email protected]>

* fix: depset concat

Signed-off-by: Thulio Ferraz Assis <[email protected]>

Co-authored-by: Alex Eagle <[email protected]>
Co-authored-by: UebelAndre <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants