From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6527286083495919616 X-Received: by 10.25.204.9 with SMTP id c9mr2143475lfg.41.1520583692552; Fri, 09 Mar 2018 00:21:32 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.46.44.8 with SMTP id s8ls737124ljs.12.gmail; Fri, 09 Mar 2018 00:21:31 -0800 (PST) X-Google-Smtp-Source: AG47ELvYf2QJSXN+Xob1LHOLfaThnpZkbxqN2Ass+Uf9n33ykkTjED8jGd9yf+F8BG4EkSVZ6qJC X-Received: by 10.46.116.1 with SMTP id p1mr1957874ljc.18.1520583691824; Fri, 09 Mar 2018 00:21:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520583691; cv=none; d=google.com; s=arc-20160816; b=SFgD/63uxtUTyDV3cuXp3g+Dj0O69miogAwQU+V9KfRQNe9gqxBfkyE01YTFH+fA6q CA6lMMggZ4il2PZ6y2haC5H33mchx23bslHDQfyaWRToP0WzJ7ah35e4dJeuAYC1DqtF +hKkMfAJ+xcR30PxcXTL6v+dqrPuwv3Ge6flqSxCeAZQT0Lyp6/wck15d4XOlrlMM0OS 7+E3t72GEfbkmy4AWeIEZG+h0AOMEiEMv5FuWL2p2ov6TTkF17HMR5jtitRVVp7+UeI7 RjQsA0KsU2Mp2u/TwehTmjYE7BtgyNnRbdaXhdOPtuC7NoPuVtd6Jj2gKLJ6KYvamNyl iVbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:arc-authentication-results; bh=64GhnHvGeRYi4GcmOGxnjSYCkbuvMjz6kWEaB/K5BQQ=; b=RRq6qAHR7LhHOarqQUq3MBMcg2vPK0Xh+6GDa/097jKKDj9C0ghVs1azNvyjBk6dp4 5pKBUNo5jBm7d51M/nszbFPByylzY0UbHK2brLTPGLRi3UpV+xSCyp/m6lrhwgz+h1Xa t1nLQTcd91zn62afNLDXxxzn/41YB9M5RmjMdy2w5ifZtoojnoM7wrkoLp+Q1ZL51YWo 7Ac3gkvR33/PAbaM2CKSqW2kR68KFUbwRxBKv3du6tc35QukxJU+dH7vCCdIzYQaw9rR kDPVea58DUb8gCfoQVmztKAiGPa0DIs3mvMMDAJOTUtUEdbwGLhK5mNYpFjcR0zjZGSp LIfg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from goliath.siemens.de (goliath.siemens.de. [192.35.17.28]) by gmr-mx.google.com with ESMTPS id w7-v6si17432lfc.2.2018.03.09.00.21.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Mar 2018 00:21:31 -0800 (PST) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) client-ip=192.35.17.28; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.28 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by goliath.siemens.de (8.15.2/8.15.2) with ESMTPS id w298LUBc018495 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 9 Mar 2018 09:21:30 +0100 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40] (may be forged)) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id w298LUvg003400; Fri, 9 Mar 2018 09:21:30 +0100 From: Henning Schild To: isar-users Cc: Henning Schild Subject: [PATCH 1/2] meta: image: detect broken symlinks Date: Fri, 9 Mar 2018 09:21:27 +0100 Message-Id: <20180309082128.11093-1-henning.schild@siemens.com> X-Mailer: git-send-email 2.16.1 X-TUID: ueveIn2GOAcI Switch get_image_name from os.path.lexists to os.path.exists because the latter detects broken symlinks correctly. Also support older debian versions where the symlinks in the rootfs are absolute Also change scripts/start_vm to handle the case where no initrd is present. Issue: If you build a kernel without CONFIG_BLK_DEV_INITRD the postinst hook will still call "linux-update-symlinks" and create a broken symlink. After that os.path.lexists will return True and "sudo cp" in do_copy_boot_files will fail. Signed-off-by: Henning Schild --- meta/classes/image.bbclass | 4 +++- scripts/start_vm | 11 +++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 2c255f4..6753aed 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -8,8 +8,10 @@ IMAGE_ROOTFS = "${WORKDIR}/rootfs" def get_image_name(d, name_link): S = d.getVar("IMAGE_ROOTFS", True) path_link = os.path.join(S, name_link) - if os.path.lexists(path_link): + if os.path.exists(path_link): return os.path.basename(os.path.realpath(path_link)) + if os.path.islink(path_link): + return os.path.basename(os.path.join(S, os.path.realpath(path_link))) return "" # These variables are used by wic and start_vm diff --git a/scripts/start_vm b/scripts/start_vm index b7b5e17..0d1d554 100755 --- a/scripts/start_vm +++ b/scripts/start_vm @@ -25,8 +25,8 @@ qemu-system-$QEMU_ARCH \\\\\n\ -M $QEMU_MACHINE \\\\\n\ $QCPU\\\\\n\ -nographic \\\\\n\ - -kernel \$IMAGE_DIR/$KERNEL_IMAGE \\\\\n\ - -initrd \$IMAGE_DIR/$INITRD_IMAGE \\\\\n\ + -kernel \$QKERNEL \\\\\n\ + -initrd \$QINITRD \\\\\n\ -append \"console=$MACHINE_SERIAL root=/dev/$ROOTFS_DEV rw\" \\\\\n\ $EXTRA_ARGS \\\\\n\ $root1" @@ -38,8 +38,8 @@ qemu-system-$QEMU_ARCH \\\\\n\ -M $QEMU_MACHINE \ $QCPU \ -nographic \ - -kernel $IMAGE_DIR/$KERNEL_IMAGE \ - -initrd $IMAGE_DIR/$INITRD_IMAGE \ + -kernel $QKERNEL \ + -initrd $QINITRD \ -append "console=$MACHINE_SERIAL root=/dev/$ROOTFS_DEV rw" \ $EXTRA_ARGS \ $root2 @@ -118,6 +118,9 @@ readonly ROOTFS_IMAGE=isar-image-base-debian-$DISTRO-qemu$ARCH.ext4.img eval $(bitbake -e multiconfig:qemu$ARCH-$DISTRO:isar-image-base | grep "^KERNEL_IMAGE=") eval $(bitbake -e multiconfig:qemu$ARCH-$DISTRO:isar-image-base | grep "^INITRD_IMAGE=") +QKERNEL=$IMAGE_DIR/$KERNEL_IMAGE +QINITRD=/dev/null +[ -n "$INITRD_IMAGE" ] && QINITRD=$IMAGE_DIR/$INITRD_IMAGE readonly ISARROOT="$(dirname "$0")"/.. -- 2.16.1