Skip to content

Commit a03d99f

Browse files
committed
[GR-48742] [GR-48754] Improve deployment of artifacts.
PullRequest: graal/15618
2 parents 5e5953b + 4f4c82a commit a03d99f

File tree

5 files changed

+115
-125
lines changed

5 files changed

+115
-125
lines changed

common.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"Jsonnet files should not include this file directly but use ci/common.jsonnet instead."
55
],
66

7-
"mx_version": "6.49.1",
7+
"mx_version": "6.50.2",
88

99
"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
1010
"jdks": {

graal-common.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"README": "This file contains definitions that are useful for the jsonnet CI files of the graal and graal-enterprise repositories.",
33
"ci": {
4-
"overlay": "f85c63d782782fc566bd661a1d638f8f9bb65b2e"
4+
"overlay": "f197d31e391f68e62e7b7897e8e161b50e5e880d"
55
}
66
}

sdk/mx.sdk/mx_sdk_vm_impl.py

Lines changed: 46 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3498,12 +3498,25 @@ def mx_register_dynamic_suite_constituents(register_project, register_distributi
34983498
:type register_project: (mx.Project) -> None
34993499
:type register_distribution: (mx.Distribution) -> None
35003500
"""
3501-
with_debuginfo = []
3501+
main_dists = {
3502+
'graalvm': [],
3503+
'graalvm_installables': [],
3504+
'graalvm_standalones': [],
3505+
}
35023506
with_non_rebuildable_configs = False
3507+
3508+
def register_main_dist(dist, label):
3509+
assert label in main_dists, f"Unknown label: '{label}'. Expected: '{list(main_dists.keys())}'"
3510+
register_distribution(dist)
3511+
main_dists[label].append(dist.name)
3512+
if _debuginfo_dists():
3513+
if _get_svm_support().is_debug_supported() or mx.get_opts().strip_jars or with_non_rebuildable_configs:
3514+
debuginfo_dist = DebuginfoDistribution(dist)
3515+
register_distribution(debuginfo_dist)
3516+
main_dists[label].append(debuginfo_dist.name)
3517+
35033518
_final_graalvm_distribution = get_final_graalvm_distribution()
3504-
register_distribution(_final_graalvm_distribution)
3505-
with_debuginfo.append(_final_graalvm_distribution)
3506-
other_graalvm_artifact_names = []
3519+
register_main_dist(_final_graalvm_distribution, 'graalvm')
35073520

35083521
# Add the macros if SubstrateVM is in stage1, as images could be created later with an installable Native Image
35093522
with_svm = has_component('svm', stage1=True)
@@ -3602,32 +3615,16 @@ def mx_register_dynamic_suite_constituents(register_project, register_distributi
36023615
native_image_resources_filelist_project = NativeImageResourcesFileList(None, ni_resources_components, dir_name, deps)
36033616
register_project(native_image_resources_filelist_project)
36043617

3605-
# Trivial distribution to trigger the build of the final GraalVM distribution and its dependencies
3606-
register_distribution(mx.LayoutDirDistribution(
3607-
suite=_suite,
3608-
name="GRAALVM",
3609-
deps=[_final_graalvm_distribution.name],
3610-
layout={
3611-
"./deps": "string:" + _final_graalvm_distribution.name,
3612-
},
3613-
path=None,
3614-
platformDependent=False,
3615-
theLicense=None,
3616-
defaultBuild=False,
3617-
))
3618-
36193618
# Create installables
3620-
installable_names = []
3619+
# installable_names = []
36213620
for components in installables.values():
36223621
main_component = _get_main_component(components)
36233622
installable_component = GraalVmInstallableComponent(main_component, extra_components=[c for c in components if c != main_component])
3624-
installable_names.append(installable_component.name)
3625-
register_distribution(installable_component)
3626-
with_debuginfo.append(installable_component)
3623+
register_main_dist(installable_component, 'graalvm_installables')
36273624

36283625
# Create standalones
36293626
needs_java_standalone_jimage = False
3630-
standalone_names = []
3627+
# standalone_names = []
36313628
for components in installables.values():
36323629
main_component = _get_main_component(components)
36333630
svm_support = _get_svm_support()
@@ -3647,9 +3644,7 @@ def mx_register_dynamic_suite_constituents(register_project, register_distributi
36473644
else:
36483645
needs_java_standalone_jimage = True
36493646
java_standalone = GraalVmStandaloneComponent(get_component(main_component.name, fatalIfMissing=True), _final_graalvm_distribution, is_jvm=True, defaultBuild=False)
3650-
standalone_names.append(java_standalone.name)
3651-
register_distribution(java_standalone)
3652-
with_debuginfo.append(java_standalone)
3647+
register_main_dist(java_standalone, 'graalvm_standalones')
36533648

36543649
for library_config in _get_library_configs(main_component):
36553650
if isinstance(library_config, mx_sdk.LanguageLibraryConfig) and library_config.launchers:
@@ -3662,9 +3657,7 @@ def mx_register_dynamic_suite_constituents(register_project, register_distributi
36623657
only_native_libraries = not main_component.library_configs or (svm_support.is_supported() and not _has_skipped_libraries(main_component))
36633658
if only_native_launchers and only_native_libraries:
36643659
native_standalone = GraalVmStandaloneComponent(get_component(main_component.name, fatalIfMissing=True), _final_graalvm_distribution, is_jvm=False, defaultBuild=False)
3665-
standalone_names.append(native_standalone.name)
3666-
register_distribution(native_standalone)
3667-
with_debuginfo.append(native_standalone)
3660+
register_main_dist(native_standalone, 'graalvm_standalones')
36683661

36693662
if needs_java_standalone_jimage:
36703663
java_standalone_jimage_jars = set()
@@ -3684,20 +3677,6 @@ def mx_register_dynamic_suite_constituents(register_project, register_distributi
36843677
)
36853678
register_project(java_standalone_jimage)
36863679

3687-
# Trivial distribution to trigger the build of all standalones and their dependencies (they have `defaultBuild=False`)
3688-
register_distribution(mx.LayoutDirDistribution(
3689-
suite=_suite,
3690-
name="GRAALVM_STANDALONES",
3691-
deps=standalone_names,
3692-
layout={
3693-
"./standalone_deps_names": "string:" + ",".join(standalone_names),
3694-
},
3695-
path=None,
3696-
platformDependent=False,
3697-
theLicense=None,
3698-
defaultBuild=False,
3699-
))
3700-
37013680
if needs_stage1:
37023681
if register_project:
37033682
for component in registered_graalvm_components(stage1=True):
@@ -3744,21 +3723,30 @@ def mx_register_dynamic_suite_constituents(register_project, register_distributi
37443723
jimage_project=final_jimage_project,
37453724
))
37463725

3747-
if _debuginfo_dists():
3748-
if _get_svm_support().is_debug_supported() or mx.get_opts().strip_jars or with_non_rebuildable_configs:
3749-
for d in with_debuginfo:
3750-
debuginfo_dist = DebuginfoDistribution(d)
3751-
register_distribution(debuginfo_dist)
3752-
other_graalvm_artifact_names.append(debuginfo_dist.name)
3726+
# Trivial distributions to trigger the build of the final GraalVM distribution, installables, and standalones
3727+
all_main_dists = []
3728+
for label, dists in main_dists.items():
3729+
if dists:
3730+
all_main_dists += dists
3731+
register_distribution(mx.LayoutDirDistribution(
3732+
suite=_suite,
3733+
name=label.upper(),
3734+
deps=dists,
3735+
layout={
3736+
"./deps": "string:" + ",".join(dists),
3737+
},
3738+
path=None,
3739+
platformDependent=False,
3740+
theLicense=None,
3741+
defaultBuild=False,
3742+
))
37533743

3754-
# Trivial distribution to trigger the build of the final GraalVM distribution and of all standalones
3755-
all_artifacts_deps = ["GRAALVM", "GRAALVM_STANDALONES"] + installable_names + other_graalvm_artifact_names
37563744
register_distribution(mx.LayoutDirDistribution(
37573745
suite=_suite,
37583746
name="ALL_GRAALVM_ARTIFACTS",
3759-
deps=all_artifacts_deps,
3747+
deps=all_main_dists,
37603748
layout={
3761-
"./deps": "string:" + ",".join(all_artifacts_deps),
3749+
"./deps": "string:" + ",".join(all_main_dists),
37623750
},
37633751
path=None,
37643752
platformDependent=False,
@@ -4280,6 +4268,11 @@ def graalvm_show(args, forced_graalvm_dist=None):
42804268
for _, cfg in sorted(jvm_configs.items()):
42814269
for config in cfg['configs']:
42824270
print(f" {config} (from {cfg['source']})")
4271+
if args.verbose:
4272+
for dist_name in 'GRAALVM', 'GRAALVM_INSTALLABLES', 'GRAALVM_STANDALONES', 'ALL_GRAALVM_ARTIFACTS':
4273+
dist = mx.distribution(dist_name, fatalIfMissing=False)
4274+
if dist is not None:
4275+
print(f"Dependencies of the '{dist_name}' distribution:\n -", '\n - '.join(sorted(dep.name for dep in dist.deps)))
42834276

42844277
if args.print_env:
42854278
def _print_env(name, val):

vm/ci/ci_common/common.jsonnet

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -724,12 +724,6 @@ local devkits = graal_common.devkits;
724724
record_file_sizes:: ['benchmark', 'file-size:*', '--results-file', 'sizes.json'],
725725
upload_file_sizes:: ['bench-uploader.py', 'sizes.json'],
726726

727-
# These dummy artifacts are required by notify_releaser_build in order to trigger the releaser service
728-
# after the deploy jobs have completed.
729-
create_releaser_notifier_artifact:: [
730-
['python3', '-c', "from os import environ; open('../' + environ['BUILD_NAME'], 'a').close()"],
731-
],
732-
733727
build_base_graalvm_image: [
734728
$.mx_vm_common + vm.vm_profiles + ['graalvm-show'],
735729
$.mx_vm_common + vm.vm_profiles + ['build'],
@@ -772,20 +766,34 @@ local devkits = graal_common.devkits;
772766
run: $.patch_env(self.os, self.arch, java_version) + vm.collect_profiles() + $.build_base_graalvm_image + [
773767
$.mx_vm_common + vm.vm_profiles + $.record_file_sizes,
774768
$.upload_file_sizes,
775-
] + $.deploy_sdk_base(self.os) + $.create_releaser_notifier_artifact + $.check_base_graalvm_image(self.os, self.arch, java_version),
769+
] + $.deploy_sdk_base(self.os) + $.check_base_graalvm_image(self.os, self.arch, java_version),
776770
notify_groups:: ['deploy'],
777771
timelimit: "1:00:00"
778772
},
779773

780-
deploy_graalvm_components(java_version, tags): vm.check_structure + {
774+
deploy_graalvm_components(java_version, installables, standalones, record_file_sizes=false): vm.check_structure + {
775+
build_deps:: std.join(',', []
776+
+ (if (record_file_sizes) then ['GRAALVM'] else [])
777+
+ (if (installables) then ['GRAALVM_INSTALLABLES'] else [])
778+
+ (if (standalones) then ['GRAALVM_STANDALONES'] else [])
779+
),
780+
781+
tags:: std.join(',', []
782+
+ (if (installables) then ['installable'] else [])
783+
+ (if (standalones) then ['standalone'] else [])
784+
),
785+
781786
run: $.patch_env(self.os, self.arch, java_version) + [
782787
$.mx_vm_installables + ['graalvm-show'],
783-
$.mx_vm_installables + ['build', '--dependencies', 'ALL_GRAALVM_ARTIFACTS'],
784-
['set-export', 'GRAALVM_HOME', $.mx_vm_installables + ['--quiet', '--no-warning', 'graalvm-home']],
785-
] + $.deploy_sdk_components(self.os, tags) + [
786-
$.mx_vm_installables + $.record_file_sizes,
787-
$.upload_file_sizes,
788-
] + $.create_releaser_notifier_artifact + vm.check_graalvm_complete_build($.mx_vm_installables, self.os, self.arch, java_version),
788+
$.mx_vm_installables + ['build', '--dependencies', self.build_deps],
789+
]
790+
+ $.deploy_sdk_components(self.os, self.tags)
791+
+ (
792+
if (record_file_sizes) then [
793+
$.mx_vm_installables + $.record_file_sizes,
794+
$.upload_file_sizes,
795+
] else []
796+
),
789797
notify_groups:: ['deploy'],
790798
timelimit: "1:30:00"
791799
},
@@ -801,7 +809,7 @@ local devkits = graal_common.devkits;
801809
['set-export', 'GRAALVM_HOME', $.mx_vm_common + ['--quiet', '--no-warning', 'graalvm-home']],
802810
['set-export', 'DACAPO_JAR', $.mx_vm_common + ['--quiet', '--no-warning', 'paths', '--download', 'DACAPO_MR1_2baec49']],
803811
['${GRAALVM_HOME}/bin/java', '-jar', '${DACAPO_JAR}', 'luindex'],
804-
] + $.create_releaser_notifier_artifact,
812+
],
805813
notify_groups:: ['deploy'],
806814
timelimit: '1:45:00',
807815
},
@@ -813,25 +821,25 @@ local devkits = graal_common.devkits;
813821

814822
# Linux/AMD64
815823
deploy_vm_base_java21_linux_amd64: vm.vm_java_21_llvm + self.full_vm_build_linux_amd64 + self.linux_deploy + self.deploy_vm_linux_amd64 + self.deploy_graalvm_base("java21") + {name: 'post-merge-deploy-vm-base-java21-linux-amd64', diskspace_required: vm.diskspace_required.java21_linux_amd64, notify_groups:: ["deploy"]},
816-
deploy_vm_installables_standalones_java21_linux_amd64: vm.vm_java_21_llvm + self.full_vm_build_linux_amd64 + self.linux_deploy + self.deploy_daily_vm_linux_amd64 + self.deploy_graalvm_components("java21", "installable,standalone") + {name: 'daily-deploy-vm-installables-standalones-java21-linux-amd64', diskspace_required: vm.diskspace_required.java21_linux_amd64, notify_groups:: ["deploy"]},
824+
deploy_vm_installables_standalones_java21_linux_amd64: vm.vm_java_21_llvm + self.full_vm_build_linux_amd64 + self.linux_deploy + self.deploy_daily_vm_linux_amd64 + self.deploy_graalvm_components("java21", installables=true, standalones=true, record_file_sizes=true) + {name: 'daily-deploy-vm-installables-standalones-java21-linux-amd64', diskspace_required: vm.diskspace_required.java21_linux_amd64, notify_groups:: ["deploy"]},
817825
# Linux/AARCH64
818826
deploy_vm_base_java21_linux_aarch64: vm.vm_java_21 + self.full_vm_build_linux_aarch64 + self.linux_deploy + self.deploy_daily_vm_linux_aarch64 + self.deploy_graalvm_base("java21") + {name: 'daily-deploy-vm-base-java21-linux-aarch64', notify_groups:: ["deploy"], timelimit: '1:30:00', capabilities+: ["!xgene3"]},
819-
deploy_vm_installables_standalones_java21_linux_aarch64: vm.vm_java_21 + self.full_vm_build_linux_aarch64 + self.linux_deploy + self.deploy_daily_vm_linux_aarch64 + self.deploy_graalvm_components("java21", "installable,standalone") + {name: 'daily-deploy-vm-installables-standalones-java21-linux-aarch64', notify_groups:: ["deploy"], capabilities+: ["!xgene3"]},
827+
deploy_vm_installables_standalones_java21_linux_aarch64: vm.vm_java_21 + self.full_vm_build_linux_aarch64 + self.linux_deploy + self.deploy_daily_vm_linux_aarch64 + self.deploy_graalvm_components("java21", installables=true, standalones=true) + {name: 'daily-deploy-vm-installables-standalones-java21-linux-aarch64', notify_groups:: ["deploy"], capabilities+: ["!xgene3"]},
820828

821829
# Darwin/AMD64
822830
deploy_vm_base_java21_darwin_amd64: vm.vm_java_21_llvm + self.full_vm_build_darwin_amd64 + self.darwin_deploy + self.deploy_daily_vm_darwin_amd64 + self.deploy_graalvm_base("java21") + {name: 'daily-deploy-vm-base-java21-darwin-amd64', notify_groups:: ["deploy"], timelimit: '1:45:00'},
823-
deploy_vm_installables_java21_darwin_amd64: vm.vm_java_21_llvm + self.full_vm_build_darwin_amd64 + self.darwin_deploy + self.deploy_weekly_vm_darwin_amd64 + self.deploy_graalvm_components("java21", "installable") + {name: 'weekly-deploy-vm-installables-java21-darwin-amd64', diskspace_required: "31GB", notify_groups:: ["deploy"], timelimit: '3:00:00'},
824-
deploy_vm_standalones_java21_darwin_amd64: vm.vm_java_21_llvm + self.full_vm_build_darwin_amd64 + self.darwin_deploy + self.deploy_daily_vm_darwin_amd64 + self.deploy_graalvm_components("java21", "standalone") + {name: 'daily-deploy-vm-standalones-java21-darwin-amd64', diskspace_required: "31GB", notify_groups:: ["deploy"], timelimit: '3:00:00'},
831+
deploy_vm_installables_java21_darwin_amd64: vm.vm_java_21_llvm + self.full_vm_build_darwin_amd64 + self.darwin_deploy + self.deploy_weekly_vm_darwin_amd64 + self.deploy_graalvm_components("java21", installables=true, standalones=false) + {name: 'weekly-deploy-vm-installables-java21-darwin-amd64', diskspace_required: "31GB", notify_groups:: ["deploy"], timelimit: '3:00:00'},
832+
deploy_vm_standalones_java21_darwin_amd64: vm.vm_java_21_llvm + self.full_vm_build_darwin_amd64 + self.darwin_deploy + self.deploy_daily_vm_darwin_amd64 + self.deploy_graalvm_components("java21", installables=false, standalones=true) + {name: 'daily-deploy-vm-standalones-java21-darwin-amd64', diskspace_required: "31GB", notify_groups:: ["deploy"], timelimit: '3:00:00'},
825833

826834
# Darwin/AARCH64
827835
deploy_vm_base_java21_darwin_aarch64: vm.vm_java_21 + self.full_vm_build_darwin_aarch64 + self.darwin_deploy + self.deploy_daily_vm_darwin_aarch64 + self.deploy_graalvm_base("java21") + {name: 'daily-deploy-vm-base-java21-darwin-aarch64', notify_groups:: ["deploy"], notify_emails+: ["[email protected]"], timelimit: '1:45:00'},
828-
deploy_vm_installables_java21_darwin_aarch64: vm.vm_java_21 + self.full_vm_build_darwin_aarch64 + self.darwin_deploy + self.deploy_weekly_vm_darwin_aarch64 + self.deploy_graalvm_components("java21", "installable") + {name: 'weekly-deploy-vm-installables-java21-darwin-aarch64', diskspace_required: "31GB", notify_groups:: ["deploy"], notify_emails+: ["[email protected]"], timelimit: '3:00:00'},
829-
deploy_vm_standalones_java21_darwin_aarch64: vm.vm_java_21 + self.full_vm_build_darwin_aarch64 + self.darwin_deploy + self.deploy_daily_vm_darwin_aarch64 + self.deploy_graalvm_components("java21", "standalone") + {name: 'daily-deploy-vm-standalones-java21-darwin-aarch64', diskspace_required: "31GB", notify_groups:: ["deploy"], notify_emails+: ["[email protected]"], timelimit: '3:00:00'},
836+
deploy_vm_installables_java21_darwin_aarch64: vm.vm_java_21 + self.full_vm_build_darwin_aarch64 + self.darwin_deploy + self.deploy_weekly_vm_darwin_aarch64 + self.deploy_graalvm_components("java21", installables=true, standalones=false) + {name: 'weekly-deploy-vm-installables-java21-darwin-aarch64', diskspace_required: "31GB", notify_groups:: ["deploy"], notify_emails+: ["[email protected]"], timelimit: '3:00:00'},
837+
deploy_vm_standalones_java21_darwin_aarch64: vm.vm_java_21 + self.full_vm_build_darwin_aarch64 + self.darwin_deploy + self.deploy_daily_vm_darwin_aarch64 + self.deploy_graalvm_components("java21", installables=false, standalones=true) + {name: 'daily-deploy-vm-standalones-java21-darwin-aarch64', diskspace_required: "31GB", notify_groups:: ["deploy"], notify_emails+: ["[email protected]"], timelimit: '3:00:00'},
830838

831839
# Windows/AMD64
832840
deploy_vm_base_java21_windows_amd64: vm.vm_java_21 + self.svm_common_windows_amd64("21") + self.js_windows_jdk21 + self.deploy_daily_vm_windows_jdk21 + self.deploy_graalvm_base("java21") + self.deploy_build + {name: 'daily-deploy-vm-base-java21-windows-amd64', notify_groups:: ["deploy"], timelimit: '1:30:00'},
833-
deploy_vm_installables_java21_windows_amd64: vm.vm_java_21 + self.svm_common_windows_amd64("21") + self.js_windows_jdk21 + self.sulong_windows + self.deploy_weekly_vm_windows_jdk21 + self.deploy_graalvm_components("java21", "installable") + self.deploy_build + {name: 'weekly-deploy-vm-installables-java21-windows-amd64', diskspace_required: "31GB", timelimit: '2:30:00', notify_groups:: ["deploy"]},
834-
deploy_vm_standalones_java21_windows_amd64: vm.vm_java_21 + self.svm_common_windows_amd64("21") + self.js_windows_jdk21 + self.sulong_windows + self.deploy_daily_vm_windows_jdk21 + self.deploy_graalvm_components("java21", "standalone") + self.deploy_build + {name: 'daily-deploy-vm-standalones-java21-windows-amd64', diskspace_required: "31GB", timelimit: '2:30:00', notify_groups:: ["deploy"]},
841+
deploy_vm_installables_java21_windows_amd64: vm.vm_java_21 + self.svm_common_windows_amd64("21") + self.js_windows_jdk21 + self.sulong_windows + self.deploy_weekly_vm_windows_jdk21 + self.deploy_graalvm_components("java21", installables=true, standalones=false) + self.deploy_build + {name: 'weekly-deploy-vm-installables-java21-windows-amd64', diskspace_required: "31GB", timelimit: '2:30:00', notify_groups:: ["deploy"]},
842+
deploy_vm_standalones_java21_windows_amd64: vm.vm_java_21 + self.svm_common_windows_amd64("21") + self.js_windows_jdk21 + self.sulong_windows + self.deploy_daily_vm_windows_jdk21 + self.deploy_graalvm_components("java21", installables=false, standalones=true) + self.deploy_build + {name: 'daily-deploy-vm-standalones-java21-windows-amd64', diskspace_required: "31GB", timelimit: '2:30:00', notify_groups:: ["deploy"]},
835843

836844
#
837845
# Deploy the GraalVM Espresso artifact (GraalVM Base + espresso - native image)

0 commit comments

Comments
 (0)