From patchwork Mon Jan 19 05:53:34 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Kasturi Shekar X-Patchwork-Id: 4803 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:10 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-ed1-f56.google.com (mail-ed1-f56.google.com [209.85.208.56]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 60J5s9L4023881 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 19 Jan 2026 06:54:09 +0100 Received: by mail-ed1-f56.google.com with SMTP id 4fb4d7f45d1cf-64b7907dd42sf6557242a12.3 for ; Sun, 18 Jan 2026 21:54:09 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1768802044; cv=pass; d=google.com; s=arc-20240605; b=SdNPRb85MzPoViBEgZyl3zpneElXeRzptmqUtMKgACHeSk5jpjqn+jwXkIyRG05Ru+ WGh3CPOvZLK58w8zy5Q+xDadMvy4r/RkFyL1zBrgq4A91otmkDzFGYUHvP7UFH2HZgu+ jlaM+FHhefNrBqB/6oIsnIwqFatoK5936yOIUOaFLYRTcKm0+h+DRfrWbspHFzKr6Miz FA37uyLh3gkVN4XVDBBiR64ifSs1ynm/j46ff1gtsZjVadWtX1VWlY2oiRh5mGLFkvH4 hY8Q80tWV/PqxlYm1K1m5itrCcPcgKV+xZITNMouzYGnHCFRVRff+/Q7nk1vJmDBamXO YWnA== 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=nOj4V6gAdwlSZi/3lhyjFkaZ2gZ0or+df6fAS5/6qhM=; fh=x9NlrvF5mHqOjaDdWwFu1OBISeNU5/PdcdiBPFLo/FA=; b=VInRq+GS+B0sKzsSSuUu/9n51qsZni3r2POanRk0t3shAWOhJ1bIak27iMLWtnYYMX bZiZBtNkacknd3oujz6QAIZA9K2BGd87GDHc3hCptehFEqHkkzrUOZdW6wpU0ufq39gD NdLXz2P3+AkBIrA0LrOilFpkCK1S2WslEuPeGW49ZFBye8csNMvPEeVgq77BZ7v6JQbD SEQ69RdpHONTsPFUn+x+4vY5gmmM3Qit/AE4+Mi0WWlzl+eFgJn9N2WbbZDqpO7Xn3x8 sXqvnzg8TGFjGNMyMFD5E0gV45zk7gBvpIKjOxvXOt2t0Om8Wc/tw9XmbJyFDXX99hyG hS6Q==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=U8xN9iEQ; spf=pass (google.com: domain of fm-1328757-2026011905535909527de199000207f7-67esls@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-1328757-2026011905535909527de199000207f7-67ESLs@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=1768802043; x=1769406843; 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=nOj4V6gAdwlSZi/3lhyjFkaZ2gZ0or+df6fAS5/6qhM=; b=Qt/M+/iHtDL2h2U2Pb+XZXneAkcghD6zJ6SS4TiCsfL1zK0aPzdF38wDQOyeXq2VFU KinV4mHclgrT/sfs5XCbxWJoYpd5E6ul/ztVu3OE9q6jRENtSWHKzthqU3/ultUKtFae z1OoDYKpQQo6to9WdnWxRSJL2no92hHUWTfit/5NUaabBSc21hxFqCThYSODfZPPFucs M/cg4Fv5qaGXqFEnb9DxFwz3AOwQ4JaeBmFdbuwzQdO/CiQHPYWccvAqWGLj2o8DmOkZ +/i8heOderDw2o3pYLnzKzpBe/QdDCkgy+0NmnFZezoXBnNNLqBWFg1hRB9vKPeLoS0r wGbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768802043; x=1769406843; 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=nOj4V6gAdwlSZi/3lhyjFkaZ2gZ0or+df6fAS5/6qhM=; b=r4Ymkv4F2UmeD41ik/pn0Yddh/15tAvB/8hhlpzNGdFN/O+141bNLxLb5/ADipZiBu 3n8ZOKEXewy2pg2nCDLH770W+6wJLfks0nN25Q/uQgQStTi37IuXIH0kV2TZ3QbHgraD CI5JgK6YcqYoXt95FCEKEdldoElSCCf4H1cG7tENY0AJQZyX3CxgDT6GR+RE7NS2W9Ew qF31xxRGwglFRGn3nKr+rsfpLtgOpXNpPqc9HwKHoVUg6vDWyp0mXpUpbug8hxlGH8aF fz3yNb7D77iBFjWNG2z5Avu8nZVXzu+QehQOB1lFygBujG6pLlj2mTvt+hMXmfUAgEEZ Axcg== X-Forwarded-Encrypted: i=2; AJvYcCWAqWBPBA34jFmU4kRNge7IrM2z0LUM1yosB8fmueu42mMh/LqILn0Z/6WOxq497VRyVz7q/BE=@isar-build.org X-Gm-Message-State: AOJu0Yx3K4+rhinvHlwuXm9d7FN0B9OwJ0o7JBwNbR2fOO6hjpX6w06+ T+tWvTR55rdmN5B9ryT++wQ+rXajq7QMuKaW7Spg4xbSMfGhMk6RGfcQ X-Received: by 2002:a05:6402:2116:b0:640:c460:8a90 with SMTP id 4fb4d7f45d1cf-654b955cfcfmr7946925a12.12.1768802043311; Sun, 18 Jan 2026 21:54:03 -0800 (PST) X-BeenThere: isar-users@googlegroups.com; h="AV1CL+HfYZj9icUwNjIzgG3GA3+ljQzpXGcK/tU8OB7VFPfcYA==" Received: by 2002:a05:6402:797:b0:644:fc0e:254 with SMTP id 4fb4d7f45d1cf-6541be8db8fls4092131a12.0.-pod-prod-04-eu; Sun, 18 Jan 2026 21:54:00 -0800 (PST) X-Received: by 2002:a05:6402:348e:b0:649:230e:ec52 with SMTP id 4fb4d7f45d1cf-654b9365311mr6915464a12.1.1768802040388; Sun, 18 Jan 2026 21:54:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1768802040; cv=none; d=google.com; s=arc-20240605; b=h/EQzLZeoe33Zes1CRl9Qk1Kf9t2G1oddTnoVnV+hEv8ctCR2w2ICefxQ0z36hyjPP VWIsLCriwXmV4uDUCLKELwVtVbUcUBa14tJHk4oeVgmBt8G/xavmV8L1lfjVED6Z/+Pu hzDaTlYgdR4i7zVzMdDPG5PG1ZUHdh4D6NNw1M0L+lTFZHa/1uPIUWZ6cuGzsnxencbk wQoD9bWs7ZLxtWpMBi4BzO4liN5gSKGOIhA9v8Jr4XFxHHg0izywWa+M5Hj4LC9IKwaQ 1/gQDQJvHk9x9PKzCzXFADOI07MWN1OnNcf3o/bGja0Xb5IijF6lxHqB3Uci3z+c1lcN JYwg== 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=a+whoyU5K/G/1vkq9K6QZSOfmj2PrcNHJYCTn4TvBFk=; fh=pR4tJPO4NbHlIB/rP4bIo54Z1zh5hd/ksAGQ0tcKkYM=; b=Ja88NxYL4X3VDJcq1gMV3DDDoxqIb0Pfq+wDjo/4GO3C6U14hEZl+vKT98J1pCMOEA +yRJsgj4TmvufFNWKpyULjQZBg1SKwbCx0KSuCS2aPCvgImqbU/h2nZSec23w4NdiR6p /ucn/7SCfP868ZOEDMJf1mAi3kGsovk18DhHej9MYAhIB1v7V/VhPpXJPi0J2aRezinM rgs9VYWMGASRiYF5l5u35stAkiutswrwSyLXh7YFGf8AJfglTkXPreYVl+P/DMyrOXnt JIH9BHV9ju1DlQAc0XS1J+x35M+eBu7jJbV70Td6zpUjZFiZfLEFEwf+GjUWwWMwnPU3 u1bw==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=U8xN9iEQ; spf=pass (google.com: domain of fm-1328757-2026011905535909527de199000207f7-67esls@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-1328757-2026011905535909527de199000207f7-67ESLs@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-65-225.siemens.flowmailer.net (mta-65-225.siemens.flowmailer.net. [185.136.65.225]) by gmr-mx.google.com with ESMTPS id 4fb4d7f45d1cf-655aef44c8fsi114912a12.1.2026.01.18.21.54.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 18 Jan 2026 21:54:00 -0800 (PST) Received-SPF: pass (google.com: domain of fm-1328757-2026011905535909527de199000207f7-67esls@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) client-ip=185.136.65.225; Received: by mta-65-225.siemens.flowmailer.net with ESMTPSA id 2026011905535909527de199000207f7 for ; Mon, 19 Jan 2026 06:54:00 +0100 X-Patchwork-Original-From: "'Kasturi Shekar' via isar-users" From: Kasturi Shekar To: isar-users@googlegroups.com Cc: Kasturi Shekar Subject: [PATCH v1 1/2] installer: introduce sys_api.sh backend interface Date: Mon, 19 Jan 2026 11:23:34 +0530 Message-Id: <20260119055335.1006446-2-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=U8xN9iEQ; spf=pass (google.com: domain of fm-1328757-2026011905535909527de199000207f7-67esls@rts-flowmailer.siemens.com designates 185.136.65.225 as permitted sender) smtp.mailfrom=fm-1328757-2026011905535909527de199000207f7-67ESLs@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 --- .../deploy-image/files/usr/bin/sys_api.sh | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 meta-isar/recipes-installer/deploy-image/files/usr/bin/sys_api.sh diff --git a/meta-isar/recipes-installer/deploy-image/files/usr/bin/sys_api.sh b/meta-isar/recipes-installer/deploy-image/files/usr/bin/sys_api.sh new file mode 100644 index 00000000..b144419e --- /dev/null +++ b/meta-isar/recipes-installer/deploy-image/files/usr/bin/sys_api.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +# +# sys_api.sh — Ported installer system APIs +# ------------------------------------------------------------------- + +# Load shared framework utilities +source ./func.sh || { + echo "Error: func.sh not found or not readable." >&2 + exit 1 +} + +# ------------------------------------------------------------------- +# API: locate_disk_images +# Description: +# Find disk image files (.wic, .wic.bz2) under given path. +# Usage: +# sys_locate_disk_images search_path=/install +# Returns JSON: +# {"error":"", "retval":"0", "images":["/install/image.wic", ...]} +# ------------------------------------------------------------------- +sys_locate_disk_images() { + local -A ARGS + local required=(search_path) + api_args ARGS required[@] "$@" || { + pack_return_data error "$_args_error" retval "1" + return 1 + } + + local fn="${FUNCNAME[0]}" + local path="${ARGS[search_path]}" + + log_info "$fn" "Searching for disk images in '$path'" + + local images + images=$(find "$path" -type f -iname "*.wic*" ! -iname "*.wic.bmap" 2>/dev/null) + + # when no images found in /install + if [[ -z "$images" ]]; then + log_warn "$fn" "No images found." + pack_return_data error "No images found" retval "1" + return 1 + fi + + # Convert newline-separated paths into JSON array elements + local json_images + json_images=$(printf '"%s",' $images | sed 's/,$//') + # final JSON response on stdout + echo "{ \"error\":\"\", \"retval\":\"0\", \"images\":[${json_images}] }" +} + + +# ------------------------------------------------------------------- +# API: sys_list_valid_target_devices +# Description: +# Shell-friendly variant of sys_get_valid_target_devices. +# Prints one valid device per line (absolute path). +# Usage: +# sys_list_valid_target_devices +# Output: +# /dev/sdb +# /dev/sdc +# ------------------------------------------------------------------- +sys_list_valid_target_devices() { + local dev + + for dev in /sys/block/*; do + dev=$(basename "$dev") + + case "$dev" in + loop*|ram*|sr*|mtd*) + continue + ;; + esac + + # skip inactive md devices + if [[ "$dev" == md* ]]; then + [ -f "/sys/block/$dev/md/array_state" ] || continue + state=$(cat /sys/block/$dev/md/array_state) + [ "$state" = "active" ] || [ "$state" = "clean" ] || continue + fi + + echo "/dev/$dev" + done +} 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