From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6527286083495919616 X-Received: by 10.223.182.12 with SMTP id f12mr208797wre.10.1520609164289; Fri, 09 Mar 2018 07:26:04 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.223.135.246 with SMTP id c51ls2142832wrc.11.gmail; Fri, 09 Mar 2018 07:26:03 -0800 (PST) X-Google-Smtp-Source: AG47ELvROASaID4GzuAs24XK5ryLCMaLtGCavK6pdoNHO77EtXmAgK+HTPQqUzOl6kFucp0Zuzw0 X-Received: by 10.223.188.141 with SMTP id g13mr2840504wrh.16.1520609163744; Fri, 09 Mar 2018 07:26:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520609163; cv=none; d=google.com; s=arc-20160816; b=JvaYwQMELHFhzmUBJVDRzRifP0wsZQMYuAt1dE2DvXnsSY40UDzva99M6X7pK7AO5d CGShml1ekaIxHxKcitckNxDOg2Tvl00hI0HoJsqDRJPYD9YqQOZD4GzqxaHfOLWM+rHm nTyVq6uRu0I6LBMgU2IxC2TlYRID7FmpRY4ij6MuerV+CsU6A3OrpMNP2XEz9zGmAYry 4/EibZF89HE+9dbQoCaDf8u9tCsahGXEwsF0GHJBSKX83MgKPhIDNf3Qel452hAhwHmm Lx+qGDgol+kJ4d+nuGHS8WiEseDBIKnpVwu0aO6oLk2kw5G9SKPLBz0jsROdp66zlCNW YVQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=CW9CD/ft27mnUCxQUMZSHWiLI7zSIjQtRYShXgGHrys=; b=LoFENee3mTeRUW2i46jR2fyL7MQJhaW9NSHZDKie2N/YXDPRa3zG9vh+VwxmXgW8i/ sh1MOkZfu6ZtLDup3XPkp6+YHvRYRDg+O8HAzIP9+isAEAGZeF+OQk1sJ4YjQ3qrlpu/ mkF2qFzRTumsFtbf4hyfXsq2DzsRL/O+aJJPmkHmu2Kt25g3riTbgQiEf1Lct4oVSk3y aaNrLh369rcjkaGxNZzFbKyUJOwBNL0tY8K5TLn5RQm7lL4GrMSrfm0WzSEc7ICDxoKC 4q4Q1dgGiSsfxluq7JviuCB5M1smkV1gZj3h9uWR6g3r7a+EjzKoH8UM5EfCv0O+zWzP QC2g== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id 78si58848wmb.0.2018.03.09.07.26.03 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Mar 2018 07:26:03 -0800 (PST) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=henning.schild@siemens.com Received: from mail1.siemens.de (mail1.siemens.de [139.23.33.14]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id w29FQ36t026427 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 9 Mar 2018 16:26:03 +0100 Received: from md1pvb1c.ad001.siemens.net (md1pvb1c.ad001.siemens.net [139.25.68.40] (may be forged)) by mail1.siemens.de (8.15.2/8.15.2) with ESMTP id w29FQ3T1018893; Fri, 9 Mar 2018 16:26:03 +0100 From: Henning Schild To: isar-users Cc: Henning Schild Subject: [PATCH v3] meta: image: detect broken symlinks Date: Fri, 9 Mar 2018 16:26:01 +0100 Message-Id: <20180309152601.9357-1-henning.schild@siemens.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180227172336.19786-1-henning.schild@siemens.com> References: <20180227172336.19786-1-henning.schild@siemens.com> X-TUID: 7Tfctq7mpZnz 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 | 5 ++++- scripts/start_vm | 11 +++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 2c255f4..6a705fc 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -8,8 +8,11 @@ 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 get_image_name(d, os.path.relpath(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