Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • bazel/ape
1 result
Show changes
Commits on Source (7)
# [1.0.0-beta.8](https://git.gitlab.arm.com/bazel/ape/compare/v1.0.0-beta.7...v1.0.0-beta.8) (2024-06-17)
### Bug Fixes
- **upload:** bump to `rules_curl@1.0.0-alpha.8` ([46be550](https://git.gitlab.arm.com/bazel/ape/commit/46be5506f8c2fe37a4d2bc649f1abb47c9f875fb))
### Features
- add `//:assimilate` ([4a43c39](https://git.gitlab.arm.com/bazel/ape/commit/4a43c3907740218bebcda4c6c5c6f1bc26c63c32))
- add `ape_assimilate` rule ([0ffc024](https://git.gitlab.arm.com/bazel/ape/commit/0ffc02472fac8cd93db0daa393fab072c5864e68))
- switch to assimilated binaries ([def0916](https://git.gitlab.arm.com/bazel/ape/commit/def09160eeaeba44a59717b23a04ac626584e2b9))
# [1.0.0-beta.7](https://git.gitlab.arm.com/bazel/ape/compare/v1.0.0-beta.6...v1.0.0-beta.7) (2024-05-22)
### Bug Fixes
......
module(
name = "ape",
version = "1.0.0-beta.7",
version = "1.0.0-beta.8",
bazel_compatibility = [
">=7.0.0",
],
compatibility_level = 1,
)
bazel_dep(name = "rules_curl", version = "1.0.0-alpha.6", dev_dependency = True)
bazel_dep(name = "rules_curl", version = "1.0.0-alpha.8", dev_dependency = True)
bazel_dep(name = "platforms", version = "0.0.10")
bazel_dep(name = "toolchain_utils", version = "1.0.0-beta.9")
bazel_dep(name = "download_utils", version = "1.0.0-beta.2")
......@@ -130,6 +131,7 @@ export = use_extension("@toolchain_utils//toolchain/export:defs.bzl", "toolchain
),
)
for binary, integrity in {
"assimilate": "sha256-zBP7dVhBaUKyxbSlqVWKjC293c+t0NSMfSYW0/FnV0s=",
"awk": "sha256-S8i3mKq7mEtBZzo1Uu679YqnAWzkikcVdf4VqEqI070=",
"b2sum": "sha256-hybI849qLSwgx7YJkQn7jWLMnagPL2HjvrKm/piVuhs=",
"base32": "sha256-TZkpwZAqSQTHHcRwl88F8haL6d7vm8nzdB50IBU7Mlw=",
......
This diff is collapsed.
load("//:binaries.bzl", "BINARIES")
load("//ape/binary:defs.bzl", "ape_binary")
load("//ape/assimilate:defs.bzl", "ape_assimilate")
[
ape_binary(
ape_assimilate(
name = binary,
target = "@cosmos-{}//:{}".format(binary, binary),
src = "@cosmos-{}//:{}".format(binary, binary),
visibility = ["//:__subpackages__"],
)
for binary in BINARIES
......
load(":rule.bzl", _assimilate = "assimilate")
visibility("//...")
ape_assimilate = _assimilate
visibility("//ape/assimilate/...")
DOC = """Assimilates an αcτµαlly pδrταblε εxεcµταblε (APE) into a native binary."""
ATTRS = {
"src": attr.label(
doc = "The APE binary target to assimilate",
allow_single_file = True,
executable = True,
cfg = "exec",
),
"basename": attr.string(
doc = "The basename for the symlink, which defaults to `name`",
),
"_assimilate": attr.label(
doc = "The APE assimilate binary.",
allow_single_file = True,
executable = True,
cfg = "exec",
default = "@cosmos-assimilate//:assimilate",
),
"_macos": attr.label(
providers = [platform_common.ConstraintValueInfo],
default = "@platforms//os:macos",
),
"_windows": attr.label(
providers = [platform_common.ConstraintValueInfo],
default = "@platforms//os:windows",
),
"_arm64": attr.label(
providers = [platform_common.ConstraintValueInfo],
default = "@platforms//cpu:aarch64",
),
"_amd64": attr.label(
providers = [platform_common.ConstraintValueInfo],
default = "@platforms//cpu:x86_64",
),
# TODO: add `ppc64`: https://github.com/bazelbuild/platforms/issues/96
}
def implementation(ctx):
windows = ctx.attr._windows[platform_common.ConstraintValueInfo]
macos = ctx.attr._macos[platform_common.ConstraintValueInfo]
arm64 = ctx.attr._arm64[platform_common.ConstraintValueInfo]
amd64 = ctx.attr._amd64[platform_common.ConstraintValueInfo]
basename = ctx.attr.basename or ctx.label.name
ape = ctx.toolchains["//ape/toolchain/ape:type"]
executable = ctx.actions.declare_file("{}.ape/{}".format(ctx.label.name, basename))
args = ctx.actions.args()
args.add(ctx.file._assimilate)
# Executable format
if ctx.target_platform_has_constraint(windows):
pass # PE
elif ctx.target_platform_has_constraint(macos):
args.add("-m") # MachO
else:
args.add("-e") # ELF
# Executable CPU
# TODO: add `ppc64` (`-p`)
if ctx.target_platform_has_constraint(amd64):
args.add("-x") # amd64
elif ctx.target_platform_has_constraint(arm64):
args.add("-a") # arm64
else:
fail("Unknown assimilation CPU.")
args.add("-o", executable.path)
args.add(ctx.file.src)
ctx.actions.run(
outputs = [executable],
inputs = [ctx.file._assimilate, ctx.file.src],
executable = ape.run,
arguments = [args],
mnemonic = "ApeAssimilate",
progress_message = "assimilating %{input}",
toolchain = "//ape/toolchain/assimilate:type",
)
files = depset([executable])
runfiles = ctx.runfiles([executable])
return DefaultInfo(
executable = executable,
files = files,
runfiles = runfiles,
)
ape_assimilate = rule(
doc = DOC,
attrs = ATTRS,
implementation = implementation,
toolchains = ["//ape/toolchain/ape:type"],
executable = True,
)
assimilate = ape_assimilate
......@@ -23,6 +23,7 @@ alias(
target = "//:{}".format(binary),
)
for binary, arguments in {
"assimilate": ["-v"],
"awk": ["--version"],
"b2sum": ["--version"],
"base32": ["--version"],
......
visibility("//...")
BINARIES = (
"assimilate",
"awk",
"b2sum",
"base32",
......
This diff is collapsed.