diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d820a6a5b7822c348ddb6fd44d8343b8e8128474..a2a64e060990d8e6f9bb27d0704cac390c81f83e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,10 +43,16 @@ default: script: - cd "${ROOT}"; bazelisk test --config="${CONFIG}" -- ${TARGET} $(bazelisk query "${EXCLUDE_QUERY}" | sed 's/^/-/') -qemu: +.smoke: extends: .base needs: - hooks + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + +qemu: + extends: .smoke variables: ROOT: e2e CONFIG: local @@ -56,6 +62,11 @@ qemu: - arm64 - linux - kvm - rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train" + +examples: + extends: .smoke + variables: + ROOT: examples + CONFIG: local + TARGET: //... + EXCLUDE_QUERY: "" diff --git a/examples/docker/.bazelrc b/examples/.bazelrc similarity index 81% rename from examples/docker/.bazelrc rename to examples/.bazelrc index 1181ce8425d6252122ef3afe254e231eea8c11e9..2105cac47092e93fb42d866db202e9093ad7a3fa 100644 --- a/examples/docker/.bazelrc +++ b/examples/.bazelrc @@ -4,3 +4,6 @@ common --registry=https://gitlab.arm.com/bazel/rules_patchelf/-/releases/v1.0.0/ # Enable hermetic `rules_python` common --@rules_python//python/config_settings:bootstrap_impl=script + +# User-specific .bazelrc +try-import %workspace%/.bazelrc.user diff --git a/examples/.bazelrc.ci b/examples/.bazelrc.ci new file mode 100644 index 0000000000000000000000000000000000000000..1f4fe2f54545aa28ba4ab46156b87e566f549a4a --- /dev/null +++ b/examples/.bazelrc.ci @@ -0,0 +1,37 @@ +# Declare all run commands that are loaded +common --announce_rc + +# Use relative paths where possible for concise CI output +common --attempt_to_print_relative_paths + +# Prevent progress bars or similar +common --curses=no + +# CI "terminals" support colour +common --color=yes + +# Output timestamps for each command to aid debugging of CI runtime +common --show_timestamps + +# Do not wrap any output +common --terminal_columns=0 + +# Output as much information in the CI log about failures as possible +build --verbose_failures + +# Increase logging verbosity +build --action_env=LOG_LEVEL=INFO +test --test_env=LOG_LEVEL=INFO + +# Noisy logs but allows debugging CI run failures +test --test_output=errors + +# Output as much information when a test exceeds a timeout +test --test_verbose_timeout_warnings + +# Validate that the lockfile is correct +common --lockfile_mode=${CI_LOCKFILE_MODE} + +# These locations are cached on the CI +build:local --disk_cache=${CI_PROJECT_DIR}/.cache/bazel/disk +build:local --repository_cache=${CI_PROJECT_DIR}/.cache/bazel/repo diff --git a/examples/docker/.bazelversion b/examples/.bazelversion similarity index 100% rename from examples/docker/.bazelversion rename to examples/.bazelversion diff --git a/examples/docker/MODULE.bazel b/examples/MODULE.bazel similarity index 92% rename from examples/docker/MODULE.bazel rename to examples/MODULE.bazel index cc33604a82f3bcd38c79130b8bdb0ff2703ba624..dc77dbed1ba6a3c5d68cf8e3dd76823853bf45fc 100644 --- a/examples/docker/MODULE.bazel +++ b/examples/MODULE.bazel @@ -1,5 +1,5 @@ module( - name = "docker", + name = "examples", bazel_compatibility = [ ">=7.4.0", ], @@ -11,7 +11,7 @@ bazel_dep(name = "ape", version = "1.0.1") bazel_dep(name = "rules_labgrid") local_path_override( module_name = "rules_labgrid", - path = "../..", + path = "..", ) bazel_dep(name = "hermetic_cc_toolchain", version = "3.1.0", dev_dependency = True) @@ -42,6 +42,6 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") pip.parse( hub_name = "pip", python_version = "3.11", - requirements_lock = "//python:requirements.txt", + requirements_lock = "//docker/python:requirements.txt", ) use_repo(pip, "pip") diff --git a/examples/docker/MODULE.bazel.lock b/examples/MODULE.bazel.lock similarity index 98% rename from examples/docker/MODULE.bazel.lock rename to examples/MODULE.bazel.lock index 741d9314289a3684e68591d7e68b26eca67b2eea..1d439d6a3a17ec9642e0c52ea293d00bc9b033df 100644 --- a/examples/docker/MODULE.bazel.lock +++ b/examples/MODULE.bazel.lock @@ -284,6 +284,128 @@ "recordedRepoMappingEntries": [] } }, + "@@pybind11_bazel~//:internal_configure.bzl%internal_configure_extension": { + "general": { + "bzlTransitiveDigest": "CyAKLVVonohnkTSqg9II/HA7M49sOlnMkgMHL3CmDuc=", + "usagesDigest": "mFrTHX5eCiNU/OIIGVHH3cOILY9Zmjqk8RQYv8o6Thk=", + "recordedFileInputs": { + "@@pybind11_bazel~//MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "pybind11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file": "@@pybind11_bazel~//:pybind11-BUILD.bazel", + "strip_prefix": "pybind11-2.12.0", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.12.0.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing~//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "hVgJRQ3Er45/UUAgNn1Yp2Khcp/Y8WyafA2kXIYmQ5M=", + "usagesDigest": "YnIrdgwnf3iCLfChsltBdZ7yOJh706lpa2vww/i2pDI=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "bzlFile": "@@rules_fuzzing~//fuzzing/private/oss_fuzz:repository.bzl", + "ruleClassName": "oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "build_file": "@@rules_fuzzing~//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=", @@ -356,11 +478,11 @@ "@@rules_python~//python/extensions:pip.bzl%pip": { "general": { "bzlTransitiveDigest": "9GZKHkO+jzdp2f+8+YXVTEOY832hjIH77W2wALYDUB4=", - "usagesDigest": "7cReCzmz5sO/+KMGvdlzpw7L7CxXXtMd2q447RTWvbw=", + "usagesDigest": "C0jG8IoSi+Bxkm+jZoIzGZXeF6+Qp0sM1qPOmIOiXgc=", "recordedFileInputs": { + "@@//docker/python/requirements.txt": "6b8b5ffead31eaa0b0cb334cedcd37708f4447c943e1a8178416de74e049afaa", "@@rules_python~//tools/publish/requirements_linux.txt": "d576e0d8542df61396a9b38deeaa183c24135ed5e8e73bb9622f298f2671811e", "@@rules_python~~internal_deps~pypi__packaging//BUILD.bazel": "6b3ce4866652a6d87846b383e5bf3a9ca2f77560c1ce75616c0b90527492b5ff", - "@@//python/requirements.txt": "60d6fb73c1cd55c22469ef5fe62215ac47e896dbc6988f72aaa2e29827ce1569", "@@rules_python~//BUILD.bazel": "adf6fd93d8f3b74585367192db928a2bc56ee0438dc3a43c6f1ad233508a19c3", "@@rules_fuzzing~//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", "@@rules_python~//python/private/pypi/requirements_parser/resolve_target_platforms.py": "42bf51980528302373529bcdfddb8014e485182d6bc9d2f7d3bbe1f11d8d923d", diff --git a/examples/custom-runners/archive-transfer/BUILD.bazel b/examples/custom-runners/archive-transfer/BUILD.bazel index a79f2bd52219e1a25230b0e8f3eda70955959c2d..d2742d681b433f0c2e059a7d8fb9b13e1e15151f 100644 --- a/examples/custom-runners/archive-transfer/BUILD.bazel +++ b/examples/custom-runners/archive-transfer/BUILD.bazel @@ -9,6 +9,7 @@ py_binary( data = [ "@ape//ape:unzip", ], + tags = ["manual"], deps = [ "@rules_labgrid//bazel/labgrid/runner", ], diff --git a/examples/custom-runners/archive-transfer/run.py b/examples/custom-runners/archive-transfer/run.py index b7b92ce7c561f907136d776888b28c3cab433f6e..890cebf05c0046bc159afbc9d416174798e02548 100644 --- a/examples/custom-runners/archive-transfer/run.py +++ b/examples/custom-runners/archive-transfer/run.py @@ -32,10 +32,10 @@ def main(): uploads = [archive, unzip] r.put(uploads) - r.run(f"{unzip.remote} {archive.remote}", check=True) + r.run(f"./{unzip.remote} {archive.remote}", check=True) code, stdout = r.run( - f"{args.program.name} {''.join(args.arguments)}", check=True + f"./{args.program.name} {''.join(args.arguments)}", check=True ) with args.out.open("w") as f: diff --git a/examples/docker/BUILD.bazel b/examples/docker/BUILD.bazel index 120d7a5c72b99639530cd218345a680e40e685fd..cc25ae8ef6bec55f1d442a644dbeed0503d42bd5 100644 --- a/examples/docker/BUILD.bazel +++ b/examples/docker/BUILD.bazel @@ -47,6 +47,7 @@ labgrid_genrule( outs = ["stdout.log"], cmd = "$(location @rules_labgrid//labgrid/run) $(location @ape//ape:cat) /etc/os-release > $@", platform = ":platform", + tags = ["manual"], tools = ["@rules_labgrid//labgrid/run"], ) diff --git a/examples/docker/python/requirements.txt b/examples/docker/python/requirements.txt index 79c5d1c138e75da676d23d73d719605701c4419c..a7fc99d513ccfd3284e7c0ad718f2f1683d8730b 100644 --- a/examples/docker/python/requirements.txt +++ b/examples/docker/python/requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# bazel run //python:requirements.update +# bazel run //docker/python:requirements.update # certifi==2024.6.2 \ --hash=sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516 \ @@ -15,7 +15,7 @@ charset-normalizer==2.0.12 \ docker==7.1.0 \ --hash=sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c \ --hash=sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0 - # via -r python/requirements.in + # via -r docker/python/requirements.in idna==3.7 \ --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0