[PATCH] test: use virt-make-fs to build image

Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- test/py/tests/test_efi_secboot/conftest.py | 27 ++++------------------ test/py/tests/test_efi_secboot/defs.py | 7 ------ 2 files changed, 4 insertions(+), 30 deletions(-)
diff --git a/test/py/tests/test_efi_secboot/conftest.py b/test/py/tests/test_efi_secboot/conftest.py index 71ef723e59..c6709700a8 100644 --- a/test/py/tests/test_efi_secboot/conftest.py +++ b/test/py/tests/test_efi_secboot/conftest.py @@ -38,34 +38,15 @@ def efi_boot_env(request, u_boot_config):
image_path = u_boot_config.persistent_data_dir image_path = image_path + '/' + EFI_SECBOOT_IMAGE_NAME - image_size = EFI_SECBOOT_IMAGE_SIZE - part_size = EFI_SECBOOT_PART_SIZE - fs_type = EFI_SECBOOT_FS_TYPE
if HELLO_PATH == '': HELLO_PATH = u_boot_config.build_dir + '/lib/efi_loader/helloworld.efi'
try: - mnt_point = u_boot_config.persistent_data_dir + '/mnt_efisecure' + mnt_point = u_boot_config.build_dir + '/mnt_efisecure' + check_call('rm -rf {}'.format(mnt_point), shell=True) check_call('mkdir -p {}'.format(mnt_point), shell=True)
- # create a disk/partition - check_call('dd if=/dev/zero of=%s bs=1MiB count=%d' - % (image_path, image_size), shell=True) - check_call('sgdisk %s -n 1:0:+%dMiB' - % (image_path, part_size), shell=True) - # create a file system - check_call('dd if=/dev/zero of=%s.tmp bs=1MiB count=%d' - % (image_path, part_size), shell=True) - check_call('mkfs -t %s %s.tmp' % (fs_type, image_path), shell=True) - check_call('dd if=%s.tmp of=%s bs=1MiB seek=1 count=%d conv=notrunc' - % (image_path, image_path, 1), shell=True) - check_call('rm %s.tmp' % image_path, shell=True) - loop_dev = check_output('sudo losetup -o 1MiB --sizelimit %dMiB --show -f %s | tr -d "\n"' - % (part_size, image_path), shell=True).decode() - check_output('sudo mount -t %s -o umask=000 %s %s' - % (fs_type, loop_dev, mnt_point), shell=True) - # suffix # *.key: RSA private key in PEM # *.crt: X509 certificate (self-signed) in PEM @@ -145,8 +126,8 @@ def efi_boot_env(request, u_boot_config): % (mnt_point, EFITOOLS_PATH), shell=True)
- check_call('sudo umount %s' % loop_dev, shell=True) - check_call('sudo losetup -d %s' % loop_dev, shell=True) + check_call('virt-make-fs --partition=gpt --size=+1M --type=vfat {} {}'.format(mnt_point, image_path), shell=True) + check_call('rm -rf {}'.format(mnt_point), shell=True)
except CalledProcessError as exception: pytest.skip('Setup failed: %s' % exception.cmd) diff --git a/test/py/tests/test_efi_secboot/defs.py b/test/py/tests/test_efi_secboot/defs.py index 099f453979..ba6b9f391e 100644 --- a/test/py/tests/test_efi_secboot/defs.py +++ b/test/py/tests/test_efi_secboot/defs.py @@ -3,13 +3,6 @@ # Disk image name EFI_SECBOOT_IMAGE_NAME = 'test_efi_secboot.img'
-# Size in MiB -EFI_SECBOOT_IMAGE_SIZE = 16 -EFI_SECBOOT_PART_SIZE = 8 - -# Partition file system type -EFI_SECBOOT_FS_TYPE = 'vfat' - # Owner guid GUID = '11111111-2222-3333-4444-123456789abc'
-- 2.27.0

Heinrich,
On Tue, Jul 14, 2020 at 12:15:34AM +0200, Heinrich Schuchardt wrote:
Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
Have you read this? https://lists.denx.de/pipermail/u-boot/2020-July/419345.html
-Takahiro Akashi
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
test/py/tests/test_efi_secboot/conftest.py | 27 ++++------------------ test/py/tests/test_efi_secboot/defs.py | 7 ------ 2 files changed, 4 insertions(+), 30 deletions(-)
diff --git a/test/py/tests/test_efi_secboot/conftest.py b/test/py/tests/test_efi_secboot/conftest.py index 71ef723e59..c6709700a8 100644 --- a/test/py/tests/test_efi_secboot/conftest.py +++ b/test/py/tests/test_efi_secboot/conftest.py @@ -38,34 +38,15 @@ def efi_boot_env(request, u_boot_config):
image_path = u_boot_config.persistent_data_dir image_path = image_path + '/' + EFI_SECBOOT_IMAGE_NAME
image_size = EFI_SECBOOT_IMAGE_SIZE
part_size = EFI_SECBOOT_PART_SIZE
fs_type = EFI_SECBOOT_FS_TYPE
if HELLO_PATH == '': HELLO_PATH = u_boot_config.build_dir + '/lib/efi_loader/helloworld.efi'
try:
mnt_point = u_boot_config.persistent_data_dir + '/mnt_efisecure'
mnt_point = u_boot_config.build_dir + '/mnt_efisecure'
check_call('rm -rf {}'.format(mnt_point), shell=True) check_call('mkdir -p {}'.format(mnt_point), shell=True)
# create a disk/partition
check_call('dd if=/dev/zero of=%s bs=1MiB count=%d'
% (image_path, image_size), shell=True)
check_call('sgdisk %s -n 1:0:+%dMiB'
% (image_path, part_size), shell=True)
# create a file system
check_call('dd if=/dev/zero of=%s.tmp bs=1MiB count=%d'
% (image_path, part_size), shell=True)
check_call('mkfs -t %s %s.tmp' % (fs_type, image_path), shell=True)
check_call('dd if=%s.tmp of=%s bs=1MiB seek=1 count=%d conv=notrunc'
% (image_path, image_path, 1), shell=True)
check_call('rm %s.tmp' % image_path, shell=True)
loop_dev = check_output('sudo losetup -o 1MiB --sizelimit %dMiB --show -f %s | tr -d "\n"'
% (part_size, image_path), shell=True).decode()
check_output('sudo mount -t %s -o umask=000 %s %s'
% (fs_type, loop_dev, mnt_point), shell=True)
# suffix # *.key: RSA private key in PEM # *.crt: X509 certificate (self-signed) in PEM
@@ -145,8 +126,8 @@ def efi_boot_env(request, u_boot_config): % (mnt_point, EFITOOLS_PATH), shell=True)
check_call('sudo umount %s' % loop_dev, shell=True)
check_call('sudo losetup -d %s' % loop_dev, shell=True)
check_call('virt-make-fs --partition=gpt --size=+1M --type=vfat {} {}'.format(mnt_point, image_path), shell=True)
check_call('rm -rf {}'.format(mnt_point), shell=True)
except CalledProcessError as exception: pytest.skip('Setup failed: %s' % exception.cmd)
diff --git a/test/py/tests/test_efi_secboot/defs.py b/test/py/tests/test_efi_secboot/defs.py index 099f453979..ba6b9f391e 100644 --- a/test/py/tests/test_efi_secboot/defs.py +++ b/test/py/tests/test_efi_secboot/defs.py @@ -3,13 +3,6 @@ # Disk image name EFI_SECBOOT_IMAGE_NAME = 'test_efi_secboot.img'
-# Size in MiB -EFI_SECBOOT_IMAGE_SIZE = 16 -EFI_SECBOOT_PART_SIZE = 8
-# Partition file system type -EFI_SECBOOT_FS_TYPE = 'vfat'
# Owner guid GUID = '11111111-2222-3333-4444-123456789abc'
-- 2.27.0

Am 14. Juli 2020 01:02:07 MESZ schrieb AKASHI Takahiro takahiro.akashi@linaro.org:
Heinrich,
On Tue, Jul 14, 2020 at 12:15:34AM +0200, Heinrich Schuchardt wrote:
Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
Have you read this? https://lists.denx.de/pipermail/u-boot/2020-July/419345.html
-Takahiro Akashi
Just put chmod 644 /boot/vmlinu* into your update-initramfs hook directory /etc/initramfs-tools and complain to Ubuntu maintainers about them breaking their own packages.
Hook scripts are described here: http://manpages.ubuntu.com/manpages/xenial/man8/initramfs-tools.8.html
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
test/py/tests/test_efi_secboot/conftest.py | 27
++++------------------
test/py/tests/test_efi_secboot/defs.py | 7 ------ 2 files changed, 4 insertions(+), 30 deletions(-)
diff --git a/test/py/tests/test_efi_secboot/conftest.py
b/test/py/tests/test_efi_secboot/conftest.py
index 71ef723e59..c6709700a8 100644 --- a/test/py/tests/test_efi_secboot/conftest.py +++ b/test/py/tests/test_efi_secboot/conftest.py @@ -38,34 +38,15 @@ def efi_boot_env(request, u_boot_config):
image_path = u_boot_config.persistent_data_dir image_path = image_path + '/' + EFI_SECBOOT_IMAGE_NAME
image_size = EFI_SECBOOT_IMAGE_SIZE
part_size = EFI_SECBOOT_PART_SIZE
fs_type = EFI_SECBOOT_FS_TYPE
if HELLO_PATH == '': HELLO_PATH = u_boot_config.build_dir +
'/lib/efi_loader/helloworld.efi'
try:
mnt_point = u_boot_config.persistent_data_dir +
'/mnt_efisecure'
mnt_point = u_boot_config.build_dir + '/mnt_efisecure'
check_call('rm -rf {}'.format(mnt_point), shell=True) check_call('mkdir -p {}'.format(mnt_point), shell=True)
# create a disk/partition
check_call('dd if=/dev/zero of=%s bs=1MiB count=%d'
% (image_path, image_size), shell=True)
check_call('sgdisk %s -n 1:0:+%dMiB'
% (image_path, part_size), shell=True)
# create a file system
check_call('dd if=/dev/zero of=%s.tmp bs=1MiB count=%d'
% (image_path, part_size), shell=True)
check_call('mkfs -t %s %s.tmp' % (fs_type, image_path),
shell=True)
check_call('dd if=%s.tmp of=%s bs=1MiB seek=1 count=%d
conv=notrunc'
% (image_path, image_path, 1), shell=True)
check_call('rm %s.tmp' % image_path, shell=True)
loop_dev = check_output('sudo losetup -o 1MiB --sizelimit
%dMiB --show -f %s | tr -d "\n"'
% (part_size, image_path),
shell=True).decode()
check_output('sudo mount -t %s -o umask=000 %s %s'
% (fs_type, loop_dev, mnt_point), shell=True)
# suffix # *.key: RSA private key in PEM # *.crt: X509 certificate (self-signed) in PEM
@@ -145,8 +126,8 @@ def efi_boot_env(request, u_boot_config): % (mnt_point, EFITOOLS_PATH), shell=True)
check_call('sudo umount %s' % loop_dev, shell=True)
check_call('sudo losetup -d %s' % loop_dev, shell=True)
check_call('virt-make-fs --partition=gpt --size=+1M
--type=vfat {} {}'.format(mnt_point, image_path), shell=True)
check_call('rm -rf {}'.format(mnt_point), shell=True)
except CalledProcessError as exception: pytest.skip('Setup failed: %s' % exception.cmd)
diff --git a/test/py/tests/test_efi_secboot/defs.py
b/test/py/tests/test_efi_secboot/defs.py
index 099f453979..ba6b9f391e 100644 --- a/test/py/tests/test_efi_secboot/defs.py +++ b/test/py/tests/test_efi_secboot/defs.py @@ -3,13 +3,6 @@ # Disk image name EFI_SECBOOT_IMAGE_NAME = 'test_efi_secboot.img'
-# Size in MiB -EFI_SECBOOT_IMAGE_SIZE = 16 -EFI_SECBOOT_PART_SIZE = 8
-# Partition file system type -EFI_SECBOOT_FS_TYPE = 'vfat'
# Owner guid GUID = '11111111-2222-3333-4444-123456789abc'
-- 2.27.0

Heinrich,
On Tue, Jul 14, 2020 at 01:18:04AM +0200, Heinrich Schuchardt wrote:
Am 14. Juli 2020 01:02:07 MESZ schrieb AKASHI Takahiro takahiro.akashi@linaro.org:
Heinrich,
On Tue, Jul 14, 2020 at 12:15:34AM +0200, Heinrich Schuchardt wrote:
Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
Have you read this? https://lists.denx.de/pipermail/u-boot/2020-July/419345.html
-Takahiro Akashi
Just put chmod 644 /boot/vmlinu* into your update-initramfs hook directory /etc/initramfs-tools and complain to Ubuntu maintainers about them breaking their own packages.
If this solves all the issues, that's fine. But if you require this extra step to run the test, you should describe it explicitly somewhere. Otherwise, people can get confused.
I believe that it would be still useful to have a fall-back method of "sudo" version.
Hook scripts are described here: http://manpages.ubuntu.com/manpages/xenial/man8/initramfs-tools.8.html
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
test/py/tests/test_efi_secboot/conftest.py | 27
++++------------------
test/py/tests/test_efi_secboot/defs.py | 7 ------ 2 files changed, 4 insertions(+), 30 deletions(-)
diff --git a/test/py/tests/test_efi_secboot/conftest.py
b/test/py/tests/test_efi_secboot/conftest.py
index 71ef723e59..c6709700a8 100644 --- a/test/py/tests/test_efi_secboot/conftest.py +++ b/test/py/tests/test_efi_secboot/conftest.py @@ -38,34 +38,15 @@ def efi_boot_env(request, u_boot_config):
image_path = u_boot_config.persistent_data_dir image_path = image_path + '/' + EFI_SECBOOT_IMAGE_NAME
image_size = EFI_SECBOOT_IMAGE_SIZE
part_size = EFI_SECBOOT_PART_SIZE
fs_type = EFI_SECBOOT_FS_TYPE
if HELLO_PATH == '': HELLO_PATH = u_boot_config.build_dir +
'/lib/efi_loader/helloworld.efi'
try:
mnt_point = u_boot_config.persistent_data_dir +
'/mnt_efisecure'
mnt_point = u_boot_config.build_dir + '/mnt_efisecure'
Please use persistent_data_dir here as a work directory. 'build_dir' is for U-Boot build.
-Takahiro Akashi
check_call('rm -rf {}'.format(mnt_point), shell=True) check_call('mkdir -p {}'.format(mnt_point), shell=True)
# create a disk/partition
check_call('dd if=/dev/zero of=%s bs=1MiB count=%d'
% (image_path, image_size), shell=True)
check_call('sgdisk %s -n 1:0:+%dMiB'
% (image_path, part_size), shell=True)
# create a file system
check_call('dd if=/dev/zero of=%s.tmp bs=1MiB count=%d'
% (image_path, part_size), shell=True)
check_call('mkfs -t %s %s.tmp' % (fs_type, image_path),
shell=True)
check_call('dd if=%s.tmp of=%s bs=1MiB seek=1 count=%d
conv=notrunc'
% (image_path, image_path, 1), shell=True)
check_call('rm %s.tmp' % image_path, shell=True)
loop_dev = check_output('sudo losetup -o 1MiB --sizelimit
%dMiB --show -f %s | tr -d "\n"'
% (part_size, image_path),
shell=True).decode()
check_output('sudo mount -t %s -o umask=000 %s %s'
% (fs_type, loop_dev, mnt_point), shell=True)
# suffix # *.key: RSA private key in PEM # *.crt: X509 certificate (self-signed) in PEM
@@ -145,8 +126,8 @@ def efi_boot_env(request, u_boot_config): % (mnt_point, EFITOOLS_PATH), shell=True)
check_call('sudo umount %s' % loop_dev, shell=True)
check_call('sudo losetup -d %s' % loop_dev, shell=True)
check_call('virt-make-fs --partition=gpt --size=+1M
--type=vfat {} {}'.format(mnt_point, image_path), shell=True)
check_call('rm -rf {}'.format(mnt_point), shell=True)
except CalledProcessError as exception: pytest.skip('Setup failed: %s' % exception.cmd)
diff --git a/test/py/tests/test_efi_secboot/defs.py
b/test/py/tests/test_efi_secboot/defs.py
index 099f453979..ba6b9f391e 100644 --- a/test/py/tests/test_efi_secboot/defs.py +++ b/test/py/tests/test_efi_secboot/defs.py @@ -3,13 +3,6 @@ # Disk image name EFI_SECBOOT_IMAGE_NAME = 'test_efi_secboot.img'
-# Size in MiB -EFI_SECBOOT_IMAGE_SIZE = 16 -EFI_SECBOOT_PART_SIZE = 8
-# Partition file system type -EFI_SECBOOT_FS_TYPE = 'vfat'
# Owner guid GUID = '11111111-2222-3333-4444-123456789abc'
-- 2.27.0

On Wed, Jul 15, 2020 at 01:19:20PM +0900, AKASHI Takahiro wrote:
Heinrich,
On Tue, Jul 14, 2020 at 01:18:04AM +0200, Heinrich Schuchardt wrote:
Am 14. Juli 2020 01:02:07 MESZ schrieb AKASHI Takahiro takahiro.akashi@linaro.org:
Heinrich,
On Tue, Jul 14, 2020 at 12:15:34AM +0200, Heinrich Schuchardt wrote:
Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
Have you read this? https://lists.denx.de/pipermail/u-boot/2020-July/419345.html
-Takahiro Akashi
Just put chmod 644 /boot/vmlinu* into your update-initramfs hook directory /etc/initramfs-tools and complain to Ubuntu maintainers about them breaking their own packages.
If this solves all the issues, that's fine. But if you require this extra step to run the test, you should describe it explicitly somewhere. Otherwise, people can get confused.
I believe that it would be still useful to have a fall-back method of "sudo" version.
We're not dropping sudo until CI runs and passes the tests that use guestfstools, etc, instead of sudo. To be clear, once we fix the current broken check that doesn't try and run sudo when guestfstools exists but exits badly, the tests pass. We aren't there yet with just using guestfstools only.

Heinrich,
On Wed, Jul 15, 2020 at 08:55:15AM -0400, Tom Rini wrote:
On Wed, Jul 15, 2020 at 01:19:20PM +0900, AKASHI Takahiro wrote:
Heinrich,
On Tue, Jul 14, 2020 at 01:18:04AM +0200, Heinrich Schuchardt wrote:
Am 14. Juli 2020 01:02:07 MESZ schrieb AKASHI Takahiro takahiro.akashi@linaro.org:
Heinrich,
On Tue, Jul 14, 2020 at 12:15:34AM +0200, Heinrich Schuchardt wrote:
Avoid sudo for test/py/tests/test_efi_secboot by using virt-make-fs.
Have you read this? https://lists.denx.de/pipermail/u-boot/2020-July/419345.html
-Takahiro Akashi
Just put chmod 644 /boot/vmlinu* into your update-initramfs hook directory /etc/initramfs-tools and complain to Ubuntu maintainers about them breaking their own packages.
If this solves all the issues, that's fine. But if you require this extra step to run the test, you should describe it explicitly somewhere. Otherwise, people can get confused.
I believe that it would be still useful to have a fall-back method of "sudo" version.
We're not dropping sudo until CI runs and passes the tests that use guestfstools, etc, instead of sudo. To be clear, once we fix the current broken check that doesn't try and run sudo when guestfstools exists but exits badly, the tests pass. We aren't there yet with just using guestfstools only.
So are you going to work on this?
-Takahiro Akashi
-- Tom
participants (3)
-
AKASHI Takahiro
-
Heinrich Schuchardt
-
Tom Rini