diff --git a/labgrid/config/toolchain/macro.bzl b/labgrid/config/toolchain/macro.bzl index 6797546c084b23611d34e5cf312abfe45ddfd76e..b8a308ef1f64cabc37bc90a6256a7110bbc31baa 100644 --- a/labgrid/config/toolchain/macro.bzl +++ b/labgrid/config/toolchain/macro.bzl @@ -2,7 +2,7 @@ load("@rules_labgrid//labgrid/config:defs.bzl", "labgrid_config") visibility("//...") -def labgrid_config_toolchain(*, name, src, target_compatible_with, state = "@rules_labgrid//labgrid/state", managers = [], deps = [], env = {}, data = [], tools = [], toolchains = []): +def labgrid_config_toolchain(*, name, src, target_compatible_with, exec_compatible_with = [], state = "@rules_labgrid//labgrid/state", managers = [], deps = [], env = {}, data = [], tools = [], toolchains = []): src = native.package_relative_label(src) labgrid_config( name = "{}-config".format(name), @@ -18,11 +18,13 @@ def labgrid_config_toolchain(*, name, src, target_compatible_with, state = "@rul managers = [native.package_relative_label(m) for m in managers], ) - constraints = [native.package_relative_label(c) for c in target_compatible_with] + target_constraints = [native.package_relative_label(c) for c in target_compatible_with] + exec_constraints = [native.package_relative_label(c) for c in exec_compatible_with] native.toolchain( name = "{}-config-toolchain".format(name), - target_compatible_with = constraints, + target_compatible_with = target_constraints, + exec_compatible_with = exec_constraints, toolchain = "{}-config".format(name), toolchain_type = "@rules_labgrid//labgrid/toolchain/config:type", ) diff --git a/labgrid/toolchain/config/qemu/amd64/BUILD.bazel b/labgrid/toolchain/config/qemu/amd64/amd64/BUILD.bazel similarity index 90% rename from labgrid/toolchain/config/qemu/amd64/BUILD.bazel rename to labgrid/toolchain/config/qemu/amd64/amd64/BUILD.bazel index 31ad6cd4cd505bfce8b1581727e8e6160f5e8545..54af97dae4d6460c329b4d55b446d79809361d01 100644 --- a/labgrid/toolchain/config/qemu/amd64/BUILD.bazel +++ b/labgrid/toolchain/config/qemu/amd64/amd64/BUILD.bazel @@ -14,6 +14,9 @@ labgrid_config_toolchain( "LG_OPENSSH_SSH": "$(location @openssh//:ssh)", "LG_OPENSSH_SCP": "$(location @openssh//:scp)", }, + exec_compatible_with = [ + "@toolchain_utils//toolchain/constraint/cpu:amd64", + ], target_compatible_with = [ "//labgrid/constraint/device:qemu", "@toolchain_utils//toolchain/constraint/os:linux", diff --git a/labgrid/toolchain/config/qemu/amd64/amd64/config.yaml b/labgrid/toolchain/config/qemu/amd64/amd64/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d79eb3a7855cf858a15e4f864b3543a52f194be4 --- /dev/null +++ b/labgrid/toolchain/config/qemu/amd64/amd64/config.yaml @@ -0,0 +1,28 @@ +targets: + main: + resources: + NetworkService: + address: "localhost" + username: "labgrid-user" + password: "labgrid" + drivers: + QEMUDriver: + qemu_bin: "qemu" + machine: "pc" + cpu: "max" + memory: "2G" + nic: "user,model=e1000" + extra_args: !template "-accel kvm -accel xen -accel tcg -snapshot -drive file=$LG_QEMU_QCOW2_IMAGE,format=qcow2 -cdrom $LG_QEMU_VIRT_IMAGE" + ShellDriver: + prompt: " login: " + login_prompt: " login: " + username: "labgrid-user" + login_timeout: 600 + SSHDriver: {} + QEMUStrategy: {} +tools: + qemu: !template "$LG_QEMU_SYSTEM_BIN" + ssh: !template "$LG_OPENSSH_SSH" + scp: !template "$LG_OPENSSH_SCP" +imports: + - bazel.labgrid.strategy diff --git a/labgrid/toolchain/config/qemu/arm64/BUILD.bazel b/labgrid/toolchain/config/qemu/amd64/arm64/BUILD.bazel similarity index 91% rename from labgrid/toolchain/config/qemu/arm64/BUILD.bazel rename to labgrid/toolchain/config/qemu/amd64/arm64/BUILD.bazel index 82f25d6494e3651431eb3924772a4ceb7227961f..a92d3299bb8548e4a5b21c26e6e0bbd728982b59 100644 --- a/labgrid/toolchain/config/qemu/arm64/BUILD.bazel +++ b/labgrid/toolchain/config/qemu/amd64/arm64/BUILD.bazel @@ -16,6 +16,9 @@ labgrid_config_toolchain( "LG_OPENSSH_SSH": "$(location @openssh//:ssh)", "LG_OPENSSH_SCP": "$(location @openssh//:scp)", }, + exec_compatible_with = [ + "@toolchain_utils//toolchain/constraint/cpu:amd64", + ], target_compatible_with = [ "//labgrid/constraint/device:qemu", "@toolchain_utils//toolchain/constraint/os:linux", diff --git a/labgrid/toolchain/config/qemu/arm64/config.yaml b/labgrid/toolchain/config/qemu/amd64/arm64/config.yaml similarity index 100% rename from labgrid/toolchain/config/qemu/arm64/config.yaml rename to labgrid/toolchain/config/qemu/amd64/arm64/config.yaml diff --git a/labgrid/toolchain/config/qemu/arm64/amd64/BUILD.bazel b/labgrid/toolchain/config/qemu/arm64/amd64/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..d039db9ce0669f5a2c499fe9c5b00ab242be0ca8 --- /dev/null +++ b/labgrid/toolchain/config/qemu/arm64/amd64/BUILD.bazel @@ -0,0 +1,31 @@ +load("//labgrid/config/toolchain:defs.bzl", "labgrid_config_toolchain") + +labgrid_config_toolchain( + name = "amd64", + src = "config.yaml", + data = [ + "//qemu/debian/image", + "//qemu/seed/image", + ], + env = { + "LG_QEMU_SYSTEM_BIN": "$(QEMU_SYSTEM)", + "LG_QEMU_QCOW2_IMAGE": "$(location //qemu/debian/image)", + "LG_QEMU_VIRT_IMAGE": "$(location //qemu/seed/image)", + "LG_OPENSSH_SSH": "$(location @openssh//:ssh)", + "LG_OPENSSH_SCP": "$(location @openssh//:scp)", + }, + exec_compatible_with = [ + "@toolchain_utils//toolchain/constraint/cpu:arm64", + ], + target_compatible_with = [ + "//labgrid/constraint/device:qemu", + "@toolchain_utils//toolchain/constraint/os:linux", + "@toolchain_utils//toolchain/constraint/cpu:amd64", + ], + toolchains = ["//labgrid/toolchain/qemu-system:resolved"], + tools = [ + "@openssh//:scp", + "@openssh//:ssh", + ], + deps = ["//bazel/labgrid/strategy"], +) diff --git a/labgrid/toolchain/config/qemu/amd64/config.yaml b/labgrid/toolchain/config/qemu/arm64/amd64/config.yaml similarity index 100% rename from labgrid/toolchain/config/qemu/amd64/config.yaml rename to labgrid/toolchain/config/qemu/arm64/amd64/config.yaml diff --git a/labgrid/toolchain/config/qemu/arm64/arm64/BUILD.bazel b/labgrid/toolchain/config/qemu/arm64/arm64/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..66737fa264020adde1da30de49627f46595db6c6 --- /dev/null +++ b/labgrid/toolchain/config/qemu/arm64/arm64/BUILD.bazel @@ -0,0 +1,33 @@ +load("//labgrid/config/toolchain:defs.bzl", "labgrid_config_toolchain") + +labgrid_config_toolchain( + name = "arm64", + src = "config.yaml", + data = [ + "//qemu/debian/image", + "//qemu/efi", + "//qemu/seed/image", + ], + env = { + "LG_QEMU_SYSTEM_BIN": "$(QEMU_SYSTEM)", + "LG_QEMU_QCOW2_IMAGE": "$(location //qemu/debian/image)", + "LG_QEMU_VIRT_IMAGE": "$(location //qemu/seed/image)", + "LG_QEMU_EFI": "$(location //qemu/efi)", + "LG_OPENSSH_SSH": "$(location @openssh//:ssh)", + "LG_OPENSSH_SCP": "$(location @openssh//:scp)", + }, + exec_compatible_with = [ + "@toolchain_utils//toolchain/constraint/cpu:arm64", + ], + target_compatible_with = [ + "//labgrid/constraint/device:qemu", + "@toolchain_utils//toolchain/constraint/os:linux", + "@toolchain_utils//toolchain/constraint/cpu:arm64", + ], + toolchains = ["//labgrid/toolchain/qemu-system:resolved"], + tools = [ + "@openssh//:scp", + "@openssh//:ssh", + ], + deps = ["//bazel/labgrid/strategy"], +) diff --git a/labgrid/toolchain/config/qemu/arm64/arm64/config.yaml b/labgrid/toolchain/config/qemu/arm64/arm64/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ebcc016c770cdb2aa0ade6e237dc60d45569ff00 --- /dev/null +++ b/labgrid/toolchain/config/qemu/arm64/arm64/config.yaml @@ -0,0 +1,31 @@ +targets: + main: + resources: + NetworkService: + address: "localhost" + username: "labgrid-user" + password: "labgrid" + drivers: + QEMUDriver: + qemu_bin: "qemu" + machine: "virt" + cpu: "max" + memory: "2G" + bios: "efi" + nic: "user,model=virtio-net-pci" + extra_args: !template "-accel kvm -accel hvf -accel tcg -snapshot -smp 4 -drive file=$LG_QEMU_QCOW2_IMAGE,format=qcow2 -cdrom $LG_QEMU_VIRT_IMAGE" + ShellDriver: + prompt: " login: " + login_prompt: " login: " + username: "labgrid-user" + login_timeout: 600 + SSHDriver: {} + QEMUStrategy: {} +tools: + qemu: !template "$LG_QEMU_SYSTEM_BIN" + ssh: !template "$LG_OPENSSH_SSH" + scp: !template "$LG_OPENSSH_SCP" +images: + efi: !template "$LG_QEMU_EFI" +imports: + - bazel.labgrid.strategy