From patchwork Mon Jan 19 05:53:35 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Kasturi Shekar X-Patchwork-Id: 4804 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Mon, 19 Jan 2026 06:54:12 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f63.google.com (mail-wm1-f63.google.com [209.85.128.63]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 60J5sB93023908 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 19 Jan 2026 06:54:11 +0100 Received: by mail-wm1-f63.google.com with SMTP id 5b1f17b1804b1-47edc79ff28sf24550755e9.2 for ; Sun, 18 Jan 2026 21:54:11 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1768802046; cv=pass; d=google.com; s=arc-20240605; b=JmFX6Y+W3c4yEe7PdDcIzy0gFDC5xakbGRiWKfuS0j9FkvKYT3v17cdbqDGZ3LShLz zLe+WLQfnKyA0JxWarT/MlKH0bnAaO20TjkIu1nCVwvgjozinJgR1I05QqZ24xkSndq+ qS0cITvXLWU7HHAVaCazKxnen6u5BrslxPZLW0xlMd5uQkhmzGY58C9GLISuyEs2/DW6 n6C4nN7I5/b568l+8miZI5FHuWOFwAP7k69I8DwWayzWGYktB48lWxuy4UAjH9bKQT8h 87liLzVlkWuXwBx7+0P2K8fJu8EfMQ8F9pdE+x7NRjI5JoT5KSvhnn57ipHEPaGIK6u5 9YZQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:feedback-id :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=vaRaIaOhw3c6hTqyMn5AL5JmIptw0Vp4pxKQc6A9Mks=; fh=0z47XSgYUx+v+e4sySatVjhvpFBW70HTeVFDh28RM+I=; b=d+XYCRIVxKMHBULpIeY3Uedgf0ES1NO4B929RV1nFJ5G+mFROLUfKtWfkt7arYWmDB WPvBTPlmNi1ZOIjFYZt7QZAHMgmJ2PwsvBwynLiQBb11HhHrijaUzSAh7qynLzgjsVow TuZy7UUi9s7O6gGXiy5LY3tdQT2nvpNBWy9QwyibAqCOnYycWXh4h2o/honnYS3GEs22 5whpZaLUsGUCbL7HdPIroN8AG+7+o1pKF1bM3TXkzGfZGnYEsJMcPO3Ifeb/WcWS6EWX nmXTN/upEv8h1pOID71+vZwwqU0HDx07cGFuYMPbXpY3Qd0lH13f8Umu9WlH9yq3Xy+/ VNTw==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=YLX+a42J; spf=pass (google.com: domain of fm-1328757-2026011905540379834338bf000207b3-eqwuzf@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-1328757-2026011905540379834338bf000207b3-EQWUZF@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1768802046; x=1769406846; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vaRaIaOhw3c6hTqyMn5AL5JmIptw0Vp4pxKQc6A9Mks=; b=v4DGbTpkiZlfZM8YP73LlAjZX2l33FwILtT5vfVEi99WvY1raB23h+YhnbZ1vWtetl pXv0hCO9Z+deJC/1ZlE43/bMDZlc7JDYRLQSaCD36mN0UrdIK7eMqY/cZf2jUWprMuT1 usDP6BI07gLV3mXihf1vhFovokzawjmmwrZgzsvA/f/K1XPrqKx2dqUzZ6ggByIXCj3R 0HRGTHpiRCzwvUUzf4NyasuxO2rtMIdjaAnr0VEUCznyy7UkcHT+O1siZ7qxpcu6xGb1 GN9mEOFP21PbiahtcQHWLGocoRWxZl8HeYixeTwBiv5Mc8zxI8aPzwWfcIjkjTBV6sWb AkUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768802046; x=1769406846; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-beenthere:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vaRaIaOhw3c6hTqyMn5AL5JmIptw0Vp4pxKQc6A9Mks=; b=FCzFGRcTir3tAsScdP3oklzk5UwjFM1cbpPzRI3+DGP/kFhgAUBcFrIgICs6quoo2d XmeqbTVSFf7lFmarNeR5ULBgaKwbxc3jf4EVW+YnSwZeevdAhcJsjg4PneuA/lMVJI5n QKz3eFkGIsnQz6cOm3XOL8VuSfH6ChRKPhV6GjQyKDIT5O9olknWzQLUuBPDTV78S31W nmqJFBWA881BFhLionVpskogfVlc2YNyNih4BefxS1kbjUQgDxxmxm5d/AX/G2m1ocXH GFxZ8vmEVC1FlEefz8sOHhEhqy1d4eT/mYNRXKvfnk54H6DAtE+OXxbNcYMx6wfAnsGB M6Nw== X-Forwarded-Encrypted: i=2; AJvYcCWf6ZC70xuvuPIHjnJxr3ICQpDdGxhM5JCWKFQYNtjmzlxRWGue1lrauHZiEKKQ8f3fWJdfihs=@isar-build.org X-Gm-Message-State: AOJu0YwnZHlJGF9L+z+GdoBdFYrIAIGOBDuDm1puBQzgE2hc0mp3txdJ GCWJl7Wcjd5cqu6mm64ow/fAnfB6dmjktRhtEmmN4plZdyLEx/17ua+K X-Received: by 2002:a05:600c:1f8e:b0:47b:df60:8a14 with SMTP id 5b1f17b1804b1-4801e30ef39mr119670875e9.9.1768802046269; Sun, 18 Jan 2026 21:54:06 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h="AV1CL+H4jAudy+UkjPw0gJKOKkk7kgUE7LRbdO+IN442510K6Q==" Received: by 2002:a05:600c:3110:b0:477:5d33:983b with SMTP id 5b1f17b1804b1-47f3b7acfb3ls23700255e9.2.-pod-prod-01-eu; Sun, 18 Jan 2026 21:54:03 -0800 (PST) X-Received: by 2002:a05:600c:1991:b0:47e:e4ff:e2ac with SMTP id 5b1f17b1804b1-4801e356cebmr121189795e9.33.1768802043683; Sun, 18 Jan 2026 21:54:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768802043; cv=none; d=google.com; s=arc-20240605; b=G3k/lKrdzHmOnGVn+eXzcufz15TwU/8xtCCcpgA/++FGUVBUvvRmNMz75R3BV6U/rM 3Dir7g9gvqDOp0+TeqFyc3EyRCLFp0eXQODRN3VJXYIsGDvp0rA69QJhuK21Y4SkPwtY 0iGJOO1j98SczXbnEJXEaFG7TK198X4SlU5Pxw9Lnq1Ezwcolw+615VOgrH+XB506dxx 9lIaK0tg+KAUNhyq9p8pNF2xDly/CL3cTko7x1qZ5UuKiz9DhzsqN27iUVz0q2jSYikl FsgxQAuwPcIIwdDMLhMNkxQvBzN8O3KtzJ+ObtbYvTpPM+NN1zZK5CUEwQmEP+VBDusR JYKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=5rQQtNLyz1XkAyOU48+DLnp59OI3LwmuaSJc0qBzE7g=; fh=pR4tJPO4NbHlIB/rP4bIo54Z1zh5hd/ksAGQ0tcKkYM=; b=lBYtL9RLanRdNIeaSezv8LDQ9F0Wf+uhopsxe4E4Q5OG5hKd+1cevPJlz9e5ggu9B+ 0UuALZDuHuK5MTVu0foziUntXpNjCg2va1J/UV8Sk1CiYuQzr441zHiGyor2YTS52OK2 cwhh/uelr6z6nqeBU+sdU6awXXJlaiiN3NU5XVSvS1uEzsFHaY/39cPtmz8TvBuyLKBM CIqSv+uDv67FFWgqOP/BUUSJQV4vMl4n6/FNRpSDaLl32m1GqTUijijd67qGGOHWP80e fjjpctTXmD5Q9AY+Bi10insbpjq2dxEJBDXYWtKZhf5JWh/gcjj/gy8mISgiEo2IHJlJ ypDA==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=YLX+a42J; spf=pass (google.com: domain of fm-1328757-2026011905540379834338bf000207b3-eqwuzf@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-1328757-2026011905540379834338bf000207b3-EQWUZF@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-65-226.siemens.flowmailer.net (mta-65-226.siemens.flowmailer.net. [185.136.65.226]) by gmr-mx.google.com with ESMTPS id ffacd0b85a97d-435699263d6si156938f8f.4.2026.01.18.21.54.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 18 Jan 2026 21:54:03 -0800 (PST) Received-SPF: pass (google.com: domain of fm-1328757-2026011905540379834338bf000207b3-eqwuzf@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) client-ip=185.136.65.226; Received: by mta-65-226.siemens.flowmailer.net with ESMTPSA id 2026011905540379834338bf000207b3 for ; Mon, 19 Jan 2026 06:54:03 +0100 X-Patchwork-Original-From: "'Kasturi Shekar' via isar-users" From: Kasturi Shekar To: isar-users@googlegroups.com Cc: Kasturi Shekar Subject: [PATCH v1 2/2] installer-ui: use sys_api backend for frontend dialogs Date: Mon, 19 Jan 2026 11:23:35 +0530 Message-Id: <20260119055335.1006446-3-kasturi.shekar@siemens.com> In-Reply-To: <20260119055335.1006446-1-kasturi.shekar@siemens.com> References: <20260119055335.1006446-1-kasturi.shekar@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-1328757:519-21489:flowmailer X-Original-Sender: kasturi.shekar@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=YLX+a42J; spf=pass (google.com: domain of fm-1328757-2026011905540379834338bf000207b3-eqwuzf@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-1328757-2026011905540379834338bf000207b3-EQWUZF@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Kasturi Shekar Reply-To: Kasturi Shekar Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-4.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_RP_CERTIFIED, RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Signed-off-by: Kasturi Shekar --- .../files/usr/bin/installer_ui.sh | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 meta-isar/recipes-installer/deploy-image/files/usr/bin/installer_ui.sh diff --git a/meta-isar/recipes-installer/deploy-image/files/usr/bin/installer_ui.sh b/meta-isar/recipes-installer/deploy-image/files/usr/bin/installer_ui.sh new file mode 100755 index 00000000..33685c6f --- /dev/null +++ b/meta-isar/recipes-installer/deploy-image/files/usr/bin/installer_ui.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +# +# installer_ui.sh — Attended installer frontend +# ------------------------------------------------ + +SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)" +INSTALL_DATA=${INSTALL_DATA:-./install} + +# Backend APIs +. "$SCRIPT_DIR/sys_api.sh" + +# ------------------------------------------------ +# Helpers +# ------------------------------------------------ +die() { + dialog --msgbox "$1" 6 60 + exit 1 +} + +# ------------------------------------------------ +# UI: Select image +# ------------------------------------------------ +ui_select_image() { + local images json list=() + + # On failure, show error dialog and exit + json=$(sys_locate_disk_images search_path="$INSTALL_DATA") || \ + die "No installable images found in $INSTALL_DATA" + + # Extract image paths from JSON + images=$(echo "$json" | sed -n 's/.*"images":\[\(.*\)\].*/\1/p' | tr -d '"' | tr ',' '\n') + + # Building dialog menu entries + for img in $images; do + base=$(basename "$img") + list+=("$img" "$base") + done + + # Display menu and capture selection + INSTALL_IMAGE=$(dialog --no-tags \ + --menu "Select image to install" 10 70 5 \ + "${list[@]}" \ + --output-fd 1) || exit 0 +} + +# ------------------------------------------------ +# UI: Select target device +# ------------------------------------------------ +ui_select_target_device() { + local list=() + + devices=$(sys_list_valid_target_devices) || \ + die "No valid target devices found" + + for dev in $devices; do + [ -b "$dev" ] || continue + + size=$(lsblk --nodeps --noheadings -o SIZE "$dev" 2>/dev/null | tr -d " ") + [ -z "$size" ] && size="unknown" + + if cmp /dev/zero "$dev" -n 1M >/dev/null 2>&1; then + state="empty" + else + state="contains data" + fi + + list+=("$dev" "$dev ($size, $state)") + done + + if [ "${#list[@]}" -lt 2 ]; then + die "no installable target devices available" + fi + + TARGET_DEVICE=$(dialog --no-tags \ + --menu "Select target device" 10 70 6 \ + "${list[@]}" \ + --output-fd 1) || exit 0 +} + +run_interactive_installer() { + clear + ui_select_image + ui_select_target_device +} + +run_interactive_installer