tox: all py27 environments should use the base py27 deps
We fixed base py27 deps to pin setuptools < 45 to fix an issue
with newer setuptools and py27 deprecation. We need source the
base py27 env deps in all py27 related environments
uefi: refactor efibootmg handling to support removing duplicate entries
When curtin is reusing an existing ESP, it may already contain a previous
ubuntu entry. efibootmgr complains about duplicate labels, but does not
provide a mechanism to remove the duplicate automatically. In curtin
we use our efibootmgr output parser to find duplicates and remove them.
To enable this we need to ensure that 'efivarfs' is mounted inside the
target. In ChrootableTarget we will add the additional mount automatically
if we're running on a uefi system.
This branch also refactors use of ChrootableTarget context manager to
minimize the number of chroot calls (which include 4 mounts and unmounts).
block-discover: add dasd parser and emit dasd storage config
Probert now includes a 'dasd' element in the probe data.
If present, block-discover will now parse this data and
emit type:dasd elements in the rendered storage config.
Refactor the code used to determine the partition and disk where the
ESP resides. There were a few issues:
- Disks and partitions are of type 'block' which requires the use of
[ -b ] or [ -e ]; [ -f ] returns false for block devices.
- The use of lsblk -on pkname exposed a bug in util-linux where pkname
did not return a value.
This branch adds additional debug logging and safety checks for any
calculated value and fails on empty values. We replace use of lsblk
with use of sysfs to calculate the parent disk of the partition. Add
a vmtest to verify the path where we use efibootmgr to create an entry.
block-discover: detect additional "extended" partition types in MBR
Surprise! There are additional encoding values for "extended" partitions
in MBRs. Add the 3 additional values (0x5, 0x85, 0xC5) to the mapping
table and add unittest using provided probe data.