Skip to content

[WIP] [Call-by-name] migrate src/python/pants/engine/internals/build_files.py #22353

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/python/pants/backend/adhoc/adhoc_tool_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
from pants.backend.adhoc.target_types import AdhocToolTarget, SystemBinaryTarget
from pants.backend.python.goals.run_python_source import rules as run_python_source_rules
from pants.backend.python.target_types import PythonSourceTarget
from pants.core.environments.target_types import LocalWorkspaceEnvironmentTarget
from pants.core.target_types import ArchiveTarget, FilesGeneratorTarget
from pants.core.target_types import rules as core_target_type_rules
from pants.core.util_rules import archive, source_files
from pants.core.util_rules.environments import LocalWorkspaceEnvironmentTarget
from pants.core.util_rules.source_files import SourceFiles, SourceFilesRequest
from pants.engine.addresses import Address
from pants.engine.fs import EMPTY_SNAPSHOT, DigestContents
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/adhoc/target_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
from typing import ClassVar

from pants.base.glob_match_error_behavior import GlobMatchErrorBehavior
from pants.core.environments.target_types import EnvironmentField
from pants.core.util_rules.adhoc_process_support import PathEnvModifyMode
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.env_vars import EXTRA_ENV_VARS_USAGE_HELP
from pants.engine.fs import GlobExpansionConjunction
from pants.engine.process import ProcessCacheScope
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/awslambda/python/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
build_python_faas,
)
from pants.backend.python.util_rules.faas import rules as faas_rules
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import BuiltPackage, OutputPathField, PackageFieldSet
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.rules import collect_rules, rule
from pants.engine.unions import UnionRule
from pants.util.logging import LogLevel
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/awslambda/python/target_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
PythonFaaSRuntimeField,
)
from pants.backend.python.util_rules.faas import rules as faas_rules
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import OutputPathField
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.addresses import Address
from pants.engine.rules import collect_rules
from pants.engine.target import (
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/codegen/thrift/apache/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from pants.backend.codegen.thrift.apache.subsystem import ApacheThriftSubsystem
from pants.backend.codegen.thrift.target_types import ThriftSourceField
from pants.core.util_rules.environments import EnvironmentTarget
from pants.core.environments.target_types import EnvironmentTarget
from pants.core.util_rules.source_files import SourceFilesRequest, determine_source_files
from pants.core.util_rules.system_binaries import (
BinaryNotFoundError,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@
from pants.backend.python.util_rules import pex_from_targets
from pants.backend.shell.target_types import ShellSourcesGeneratorTarget, ShellSourceTarget
from pants.backend.shell.target_types import rules as shell_target_types_rules
from pants.core.environments.target_types import DockerEnvironmentTarget
from pants.core.goals import package
from pants.core.goals.package import BuiltPackage
from pants.core.target_types import FilesGeneratorTarget, FileTarget
from pants.core.target_types import rules as core_target_types_rules
from pants.core.util_rules.environments import DockerEnvironmentTarget
from pants.engine.addresses import Address
from pants.engine.fs import EMPTY_DIGEST, EMPTY_SNAPSHOT, Snapshot
from pants.engine.internals.scheduler import ExecutionError
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/go/goals/package_binary.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,14 @@
ThirdPartyPkgAnalysisRequest,
extract_package_info,
)
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import (
BuiltPackage,
BuiltPackageArtifact,
OutputPathField,
PackageFieldSet,
)
from pants.core.goals.run import RunFieldSet, RunInSandboxBehavior
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.fs import AddPrefix
from pants.engine.internals.selectors import concurrently
from pants.engine.intrinsics import add_prefix
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/go/target_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
import os
from collections.abc import Iterable, Sequence

from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import OutputPathField
from pants.core.goals.run import RestartableField
from pants.core.goals.test import TestExtraEnvVarsField, TestTimeoutField
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.addresses import Address
from pants.engine.target import (
COMMON_TARGET_FIELDS,
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/go/util_rules/go_bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
from dataclasses import dataclass

from pants.backend.go.subsystems.golang import GolangSubsystem
from pants.core.environments.target_types import EnvironmentTarget
from pants.core.util_rules import asdf, search_paths
from pants.core.util_rules.asdf import AsdfPathString, AsdfToolPathsResult
from pants.core.util_rules.environments import EnvironmentTarget
from pants.core.util_rules.search_paths import ValidateSearchPathsRequest, validate_search_paths
from pants.engine.internals.platform_rules import environment_path_variable
from pants.engine.rules import collect_rules, rule
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/go/util_rules/goroot.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from pants.backend.go.subsystems.golang import GolangSubsystem
from pants.backend.go.util_rules import go_bootstrap
from pants.backend.go.util_rules.go_bootstrap import GoBootstrap, compatible_go_version
from pants.core.util_rules.environments import EnvironmentTarget
from pants.core.environments.target_types import EnvironmentTarget
from pants.core.util_rules.system_binaries import (
BinaryNotFoundError,
BinaryPathRequest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
build_python_faas,
)
from pants.backend.python.util_rules.faas import rules as faas_rules
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import BuiltPackage, OutputPathField, PackageFieldSet
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.rules import collect_rules, rule
from pants.engine.unions import UnionRule
from pants.util.logging import LogLevel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
PythonFaaSRuntimeField,
)
from pants.backend.python.util_rules.faas import rules as faas_rules
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import OutputPathField
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.addresses import Address
from pants.engine.rules import collect_rules
from pants.engine.target import COMMON_TARGET_FIELDS, InvalidFieldException, StringField, Target
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/javascript/run/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
NodeBuildScriptExtraEnvVarsField,
NodePackageDependenciesField,
)
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.run import RunFieldSet, RunInSandboxBehavior, RunRequest
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.env_vars import EnvironmentVarsRequest
from pants.engine.internals.platform_rules import environment_vars_subset
from pants.engine.rules import Rule, collect_rules, implicitly, rule
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/javascript/subsystems/nodejs.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

from nodesemver import min_satisfying

from pants.core.environments.target_types import EnvironmentTarget
from pants.core.util_rules import asdf, search_paths, system_binaries
from pants.core.util_rules.asdf import AsdfPathString, AsdfToolPathsResult
from pants.core.util_rules.environments import EnvironmentTarget
from pants.core.util_rules.external_tool import (
DownloadedExternalTool,
ExternalToolRequest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@
from pants.backend.python.target_types_rules import resolve_pex_entry_point
from pants.backend.python.util_rules.pex import create_pex, digest_complete_platforms
from pants.backend.python.util_rules.pex_from_targets import PexFromTargetsRequest
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import (
BuiltPackage,
BuiltPackageArtifact,
OutputPathField,
PackageFieldSet,
)
from pants.core.goals.run import RunFieldSet, RunInSandboxBehavior
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.rules import collect_rules, implicitly, rule
from pants.engine.unions import UnionRule
from pants.util.frozendict import FrozenDict
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
)
from pants.backend.python.target_types import GenerateSetupField, WheelField
from pants.backend.python.util_rules.pex import PexProcess, create_pex, setup_pex_process
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import (
BuiltPackage,
BuiltPackageArtifact,
Expand All @@ -32,7 +33,6 @@
environment_aware_package,
)
from pants.core.goals.run import RunFieldSet, RunInSandboxBehavior, RunRequest
from pants.core.util_rules.environments import EnvironmentField
from pants.core.util_rules.system_binaries import BashBinary
from pants.engine.fs import AddPrefix, CreateDigest, Digest, FileContent, MergeDigests, RemovePrefix
from pants.engine.internals.graph import find_valid_field_sets, hydrate_sources, resolve_targets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
from __future__ import annotations

from pants.backend.python.target_types import GenerateSetupField, WheelField
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.package import OutputPathField
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.target import (
COMMON_TARGET_FIELDS,
AsyncFieldMixin,
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/python/subsystems/pytest.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
PythonTestsXdistConcurrencyField,
SkipPythonTestsField,
)
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.resolves import ExportableTool
from pants.core.goals.test import RuntimePackageDependenciesField, TestFieldSet
from pants.core.util_rules.config_files import ConfigFilesRequest
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.rules import collect_rules
from pants.engine.target import Target
from pants.engine.unions import UnionRule
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/python/target_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

from pants.backend.python.macros.python_artifact import PythonArtifact
from pants.backend.python.subsystems.setup import PythonSetup
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.generate_lockfiles import UnrecognizedResolveNamesError
from pants.core.goals.package import OutputPathField
from pants.core.goals.run import RestartableField
Expand All @@ -25,7 +26,6 @@
TestsBatchCompatibilityTagField,
TestSubsystem,
)
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.addresses import Address, Addresses
from pants.engine.target import (
COMMON_TARGET_FIELDS,
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/python/util_rules/pex.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@
validate_metadata,
)
from pants.build_graph.address import Address
from pants.core.environments.target_types import EnvironmentTarget
from pants.core.target_types import FileSourceField, ResourceSourceField
from pants.core.util_rules.environments import EnvironmentTarget
from pants.core.util_rules.stripped_source_files import StrippedFileNameRequest
from pants.core.util_rules.stripped_source_files import rules as stripped_source_rules
from pants.core.util_rules.stripped_source_files import strip_file_name
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/shell/goals/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
ShellCommandProcessFromTargetRequest,
prepare_process_request_from_target,
)
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.test import (
TestDebugRequest,
TestExtraEnv,
Expand All @@ -32,7 +33,6 @@
)
from pants.core.util_rules.adhoc_process_support import rules as adhoc_process_support_rules
from pants.core.util_rules.adhoc_process_support import run_prepared_adhoc_process
from pants.core.util_rules.environments import EnvironmentField
from pants.engine.fs import EMPTY_DIGEST, Snapshot
from pants.engine.internals.graph import resolve_target
from pants.engine.intrinsics import digest_to_snapshot
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/shell/target_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
AdhocToolWorkspaceInvalidationSourcesField,
)
from pants.backend.shell.subsystems.shell_setup import ShellSetup
from pants.core.environments.target_types import EnvironmentField
from pants.core.goals.test import RuntimePackageDependenciesField, TestTimeoutField
from pants.core.util_rules.environments import EnvironmentField
from pants.core.util_rules.system_binaries import BinaryPathTest
from pants.engine.rules import collect_rules, rule
from pants.engine.target import (
Expand Down
7 changes: 2 additions & 5 deletions src/python/pants/backend/shell/util_rules/shell_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
)
from pants.backend.shell.util_rules.builtin import BASH_BUILTIN_COMMANDS
from pants.base.glob_match_error_behavior import GlobMatchErrorBehavior
from pants.core.environments.target_types import EnvironmentTarget
from pants.core.goals.run import RunFieldSet, RunInSandboxBehavior, RunRequest
from pants.core.target_types import FileSourceField
from pants.core.util_rules.adhoc_process_support import (
Expand All @@ -46,11 +47,7 @@
resolve_execution_environment,
)
from pants.core.util_rules.adhoc_process_support import rules as adhoc_process_support_rules
from pants.core.util_rules.environments import (
EnvironmentNameRequest,
EnvironmentTarget,
resolve_environment_name,
)
from pants.core.util_rules.environments import EnvironmentNameRequest, resolve_environment_name
from pants.core.util_rules.system_binaries import (
BashBinary,
BinaryShimsRequest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
ShellCommandProcessFromTargetRequest,
)
from pants.backend.shell.util_rules.shell_command import rules as shell_command_rules
from pants.core.environments.target_types import LocalWorkspaceEnvironmentTarget
from pants.core.goals.run import RunRequest
from pants.core.target_types import ArchiveTarget, FilesGeneratorTarget, FileSourceField
from pants.core.target_types import rules as core_target_type_rules
Expand All @@ -31,7 +32,6 @@
AdhocProcessRequest,
PreparedAdhocProcessRequest,
)
from pants.core.util_rules.environments import LocalWorkspaceEnvironmentTarget
from pants.core.util_rules.source_files import SourceFiles, SourceFilesRequest
from pants.engine.addresses import Address
from pants.engine.environment import EnvironmentName
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/build_graph/build_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from pants.backend.project_info.filter_targets import FilterSubsystem
from pants.build_graph.build_file_aliases import BuildFileAliases
from pants.core.util_rules.environments import EnvironmentsSubsystem
from pants.core.environments.subsystems import EnvironmentsSubsystem
from pants.engine.goal import GoalSubsystem
from pants.engine.rules import Rule, RuleIndex
from pants.engine.target import Target
Expand Down
4 changes: 4 additions & 0 deletions src/python/pants/core/environments/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2025 Pants project contributors (see CONTRIBUTORS.md).
# Licensed under the Apache License, Version 2.0 (see LICENSE).

python_sources()
Empty file.
45 changes: 45 additions & 0 deletions src/python/pants/core/environments/subsystems.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright 2022 Pants project contributors (see CONTRIBUTORS.md).
# Licensed under the Apache License, Version 2.0 (see LICENSE).

from __future__ import annotations

from pants.option.global_options import GlobalOptions
from pants.option.option_types import DictOption
from pants.option.subsystem import Subsystem
from pants.util.strutil import help_text, softwrap


class EnvironmentsSubsystem(Subsystem):
options_scope = "environments-preview"
help = help_text(
"""
A highly experimental subsystem to allow setting environment variables and executable
search paths for different environments, e.g. macOS vs. Linux.
"""
)

names = DictOption[str](
help=softwrap(
"""
A mapping of logical names to addresses to environment targets. For example:

[environments-preview.names]
linux_local = "//:linux_env"
macos_local = "//:macos_env"
centos6 = "//:centos6_docker_env"
linux_ci = "build-support:linux_ci_env"
macos_ci = "build-support:macos_ci_env"

To use an environment for a given target, specify the name in the `environment` field
on that target. Pants will consume the environment target at the address mapped from
that name.

Pants will ignore any environment targets that are not given a name via this option.
"""
)
)

def remote_execution_used_globally(self, global_options: GlobalOptions) -> bool:
"""If the environments mechanism is not used, `--remote-execution` toggles remote execution
globally."""
return not self.names and global_options.remote_execution
Loading
Loading