Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
9 changes: 5 additions & 4 deletions pipelines/main/launch_untrusted_builders.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@
#
# Now a SINGLE launch step runs `utilities/render_launch_pipeline.py`, which
# renders ONE pre-grouped pipeline document (one `group:` per label:
# Build / Check / Test / Allow Fail / JuliaSyntax / JuliaC, plus the
# wait + julia-publish trigger), and uploads it with ONE `pipeline upload`.
# Build / Check / Test / Allow Fail / JuliaSyntax / JuliaLowering / JuliaC,
# plus the wait + julia-publish trigger), and uploads it with ONE
# `pipeline upload`.
#
# The renderer reproduces the old behaviour EXACTLY:
# * The arches-templated platform YAMLs (platforms/{build,test}_*.yml) are
# rendered once per arch, with the same per-arch variable substitution the
# old per-file `pipeline upload` performed (GROUP / ALLOW_FAIL / arches
# columns). Job grouping, keys, depends_on and soft_fail are preserved.
# * The static / launcher misc YAMLs (analyzegc, gcext, juliac, juliasyntax,
# ...) are emitted VERBATIM -- their double-dollar runtime escapes and their
# launch-env vars (e.g. gcext/test_revise, whose soft_fail is keyed off
# julialowering, ...) are emitted VERBATIM -- their double-dollar runtime
# escapes and launch-env vars (e.g. gcext/test_revise, whose soft_fail is keyed off
# ALLOW_FAIL) are left for THIS single `pipeline upload` to interpolate.
# That is why we still `export ALLOW_FAIL="false"` below.
# * PowerPC is omitted: launch_powerpc.jl only uploaded powerpc arches for
Expand Down
37 changes: 37 additions & 0 deletions pipelines/main/misc/julialowering.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
steps:
- group: "JuliaLowering"
notify:
- github_commit_status:
context: "JuliaLowering"
steps:
- label: "julialowering load/precompile linux/x86_64/{{matrix.julia_version}}"
timeout_in_minutes: 15
agents:
queue: "test"
os: "linux"
arch: "x86_64"
matrix:
setup:
julia_version:
- "1.12"
- "1.13"
plugins:
- JuliaCI/external-buildkite#v1:
version: "./.buildkite-external-version"
repo_url: "https://github.com/JuliaCI/julia-buildkite"
- JuliaCI/julia#v1:
isolated_depot: true
persist_depot_dirs: packages,artifacts
update_registry: false
version: "{{matrix.julia_version}}"
arch: "x86_64"
commands: |
echo "--- Julia versioninfo"
julia -e 'import InteractiveUtils; InteractiveUtils.versioninfo()'

echo "--- Loading and precompiling JuliaLowering on Julia {{matrix.julia_version}}"
export JULIA_LOWERING_PRECOMPILE=true
julia --startup-file=no --project=@stdlib -e '
pushfirst!(LOAD_PATH, pwd())
using JuliaLowering
'
21 changes: 17 additions & 4 deletions utilities/render_launch_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
relevant.)

* The static / nested misc YAMLs (misc/analyzegc.yml, misc/gcext.yml, the
juliac / juliasyntax launchers, ...) are emitted VERBATIM. We do NOT
juliac / juliasyntax launchers, the julialowering smoke job, ...) are
emitted VERBATIM. We do NOT
pre-resolve their variables: they contain only `$$`-runtime escapes and/or
launch-agent-env vars (e.g. `${ALLOW_FAIL?}` on gcext/test_revise). The
final single `buildkite-agent pipeline upload` of this combined document
Expand All @@ -34,7 +35,7 @@
omitted (see OMITTED_POWERPC below). This matches the runtime behaviour.

The result is grouped into one `group:` per label: Build, Check, Test,
Allow Fail, JuliaSyntax, JuliaC.
Allow Fail, JuliaSyntax, JuliaLowering, JuliaC.
"""

import os
Expand Down Expand Up @@ -239,7 +240,9 @@ def extract_inner_steps_text(text, where):
group_indent = ind
group_idx = i
break
assert group_idx is not None, f"{where}: no group line found"
assert group_idx is not None and group_indent is not None, (
f"{where}: no group line found"
)

# Find the group's own `steps:` key (the first `steps:` AFTER the group line
# that is indented deeper than the group line).
Expand All @@ -251,7 +254,7 @@ def extract_inner_steps_text(text, where):
continue
if ind <= group_indent:
break # left the group without finding steps:
if re.match(rf'\s*steps:\s*$', line):
if re.match(r"\s*steps:\s*$", line):
start = i + 1
break
assert start is not None, f"{where}: group has no steps: key"
Expand Down Expand Up @@ -483,6 +486,16 @@ def main():
"./JuliaSyntax/Project.toml does NOT exist; omitting JuliaSyntax group\n"
)

# JuliaLowering: run its Julia 1.12 load/precompile smoke test when present.
julialowering_project = os.path.join(os.getcwd(), "JuliaLowering", "Project.toml")
if os.path.exists(julialowering_project):
blocks.append(verbatim_group_text(os.path.join(MISC, "julialowering.yml")))
else:
sys.stderr.write(
"./JuliaLowering/Project.toml does NOT exist; "
"omitting JuliaLowering group\n"
)

# JuliaC: itself a launcher with its own group + notify -- include verbatim.
blocks.append(verbatim_group_text(os.path.join(MISC, "juliac", "test_juliac.yml")))

Expand Down
Loading