{ "id": "agl-qemu-octopus", "load": true, "supported_archs": [ "x86_64", "arm64" ], "supported_host_types": [ "darwin", "ubuntu", "fedora" ], "flutter_runtime": "debug", "type": "qemu", "env": { "RELEASE_NAME": "octopus", "RELEASE_VERSION": "latest", "FLUTTER_DEBUG_PORT": "1234", "FLUTTER_OBSERVATORY_HOST": "0.0.0.0", "CONTAINER_SSH_PORT": "2222", "DEVICE_HOSTNAME": "localhost", "FLUTTER_AUTO_EXE": "flutter-auto --j=/tmp/${appName}/default_config.json --b=/tmp/${appName}", "PING_CMD": "(echo >/dev/tcp/localhost/${CONTAINER_SSH_PORT}) &>/dev/null && echo open || echo closed", "DELETE_USER_PWD": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -t -oBatchMode=yes root@${DEVICE_HOSTNAME} passwd -d agl-driver", "CREATE_BUNDLE_FOLDER": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} mkdir -p /tmp/${appName}/data", "COPY_PLATFORM_ID_TO_DEVICE": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT} -r ${PLATFORM_ID_DIR}/default_config.json agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/", "COPY_ASSETS_TO_DEVICE": "scp -oStrictHostKeyChecking=no -P ${CONTAINER_SSH_PORT} -r ${localPath}/* agl-driver@${DEVICE_HOSTNAME}:/tmp/${appName}/data/flutter_assets", "DELETE_APP_FOLDER": "ssh -oStrictHostKeyChecking=no -p ${CONTAINER_SSH_PORT} -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} rm -rf /tmp/${appName}" }, "runtime": { "config": { "view": [ { "window_type": "BG", "width": 1920, "height": 1080 } ] }, "pre-requisites": { "arm64": { "darwin": { "cmds": [ "bash -c \"arch -arm64 brew install xz\"", "bash -c \"arch -arm64 brew install qemu\"" ] } } }, "artifacts": { "http": { "url": "https://download.automotivelinux.org/AGL/release/${RELEASE_NAME}/${RELEASE_VERSION}", "artifacts": { "x86_64": [ { "endpoint": "/qemux86-64/deploy/images/qemux86-64/agl-ivi-demo-platform-flutter-qemux86-64.wic.vmdk.xz" } ], "arm64": [ { "endpoint": "/qemuarm64/deploy/images/qemuarm64/agl-demo-platform-crosssdk-qemuarm64.ext4.xz" }, { "endpoint": "/qemuarm64/deploy/images/qemuarm64/Image-qemuarm64.bin" } ] } } }, "qemu": { "cmd": "qemu-system-${FORMAL_MACHINE_ARCH}", "x86_64": { "image": "agl-ivi-demo-platform-flutter-qemux86-64.wic.vmdk", "args": "-m 2048 ${QEMU_EXTRA} -hda ${QEMU_IMAGE} -cpu kvm64 -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt -vga virtio -device virtio-rng-pci -serial mon:stdio -serial null -device intel-hda -device hda-duplex -device virtio-net-pci,netdev=net0,mac=${RANDOM_MAC} -netdev user,id=net0,hostfwd=tcp::${CONTAINER_SSH_PORT}-:22,hostfwd=tcp::${FLUTTER_DEBUG_PORT}-:${FLUTTER_DEBUG_PORT}" }, "arm64": { "kernel": "Image-qemuarm64.bin", "image": "agl-demo-platform-crosssdk-qemuarm64.ext4", "args": "-accel hvf -cpu host -M virt ${QEMU_EXTRA} -m 4096 -device virtio-gpu-pci -nographic -display cocoa,show-cursor=on -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -device qemu-xhci -device usb-tablet -device usb-mouse -device usb-kbd -device virtio-net-pci,netdev=vnet -netdev user,id=vnet,hostfwd=tcp::${CONTAINER_SSH_PORT}-:22,hostfwd=tcp::${FLUTTER_DEBUG_PORT}-:${FLUTTER_DEBUG_PORT} -kernel ${QEMU_KERNEL} -drive file=${QEMU_IMAGE},format=raw,if=virtio -append root=/dev/vda" }, "extra": { "darwin": "-smp cpus=8,sockets=1,cores=8,threads=1", "ubuntu": "-bios OVMF.fd", "fedora": "-bios /usr/share/edk2/ovmf/OVMF_CODE.fd" } }, "post_cmds": [ { "cwd": "${PLATFORM_ID_DIR}", "cmds": [ "bash -c \"rm ${QEMU_IMAGE}|true\"", "unxz --keep ${QEMU_IMAGE}.xz" ] } ] }, "overwrite-existing": true, "custom-device": { "id": "agl-qemu-${RELEASE_NAME}", "label": "AGL ${RELEASE_NAME}-${RELEASE_VERSION} QEMU Image", "sdkNameAndVersion": "qemu-${RELEASE_NAME} ${RELEASE_VERSION}", "platform": "linux-x64", "enabled": true, "ping": "bash -c \"${PING_CMD}\"", "pingSuccessRegex": "open", "postBuild": "bash -c \"${DELETE_USER_PWD}\"", "install": "bash -c \"${CREATE_BUNDLE_FOLDER} && ${COPY_PLATFORM_ID_TO_DEVICE} && ${COPY_ASSETS_TO_DEVICE}\"", "uninstall": "bash -c \"${DELETE_APP_FOLDER}\"", "runDebug": "bash -c \"ssh -oStrictHostKeyChecking=no -t -t -o BatchMode=yes agl-driver@${DEVICE_HOSTNAME} ${FLUTTER_AUTO_EXE}\"", "forwardPort": null, "forwardPortSuccessRegex": null, "screenshot": null } }