build: Use xorriso instead of mkisofs or genisoimage.

It seems that not all Linux distributions ship an EFI-enabled
cdrtools (i.e. mkisofs takes -e option), Arch being one that
does not.

So instead, we now use xorriso universally, which is
as (or more, in most cases) widely available, and supports
emulating mkisofs with the EFI commands universally.

This also has the added benefit that we can drop genisoimage
support altogether.
This commit is contained in:
Augustin Cavalier 2019-01-08 19:31:15 -05:00
parent ab3e2cf4bc
commit b3dc16eecb
2 changed files with 10 additions and 18 deletions

View File

@ -1565,13 +1565,14 @@ rule BuildCDBootImage image : bootfloppy : bootefi : extrafiles
actions BuildCDBootImageMBR
{
$(RM) $(<)
mkisofs -b $(BOOTIMG) -r -J -V bootimg -o $(<) $(>[1]) $(>[2-])
xorriso -as mkisofs -b $(BOOTIMG) -r -J -V bootimg -o $(<) $(>[1]) $(>[2-])
}
actions BuildCDBootImageEFI
{
$(RM) $(<)
mkisofs -b $(BOOTIMG) -eltorito-alt-boot -no-emul-boot -e $(BOOTEFI) -r -J -V bootimg -o $(<) $(>[1]) $(>[2]) $(>[3-])
xorriso -as mkisofs -b $(BOOTIMG) -eltorito-alt-boot -no-emul-boot -e $(BOOTEFI) \
-r -J -V bootimg -o $(<) $(>[1]) $(>[2]) $(>[3-])
}
@ -1605,11 +1606,7 @@ actions BuildCDBootPPCImage1 bind MAPS
# Extras (readme files, etc)
cp $(>[4]) $(HAIKU_OUTPUT_DIR)/cd/
mkisofs -v -hfs -part -map $(MAPS) -no-desktop -hfs-volid bootimg \
-V bootimg -hfs-bless $(HAIKU_OUTPUT_DIR)/cd/boot -prep-boot \
boot/haikuloader.xcf -r -o $(<) $(HAIKU_OUTPUT_DIR)/cd \
|| \
genisoimage -v -hfs -part -map $(MAPS) -no-desktop -hfs-volid bootimg \
xorriso -as mkisofs -v -hfs -part -map $(MAPS) -no-desktop -hfs-volid bootimg \
-V bootimg -hfs-bless $(HAIKU_OUTPUT_DIR)/cd/boot -prep-boot \
boot/haikuloader.xcf -r -o $(<) $(HAIKU_OUTPUT_DIR)/cd
$(RM) -r $(HAIKU_OUTPUT_DIR)/cd

View File

@ -329,18 +329,13 @@ if [ $isCD ]; then
echo "Copying boot image ..."
$cp "$cdBootFloppy" "$outputDir"
if [ $(which mkisofs) ]; then
# build the iso image using mkisofs
echo "Building CD image (mkisofs)..."
mkisofs -uid 0 -gid 0 -b `basename $cdBootFloppy` -R -V "$cdLabel" -o "$cdImagePath" "$tPrefix"
elif [ $(which genisoimage) ]; then
# build the iso image using genisoimage
echo "Building CD image (genisoimage)..."
echo "WARNING: genisoimage fallback has known problems with long filenames!"
echo " Please install mkisofs before making production releases!"
genisoimage -r -iso-level 4 -b `basename $cdBootFloppy` -V "$cdLabel" -o "$cdImagePath" "$tPrefix"
if [ $(which xorriso) ]; then
# build the iso image using xorriso
echo "Building CD image..."
xorriso -as mkisofs -r -b `basename $cdBootFloppy` \
-V "$cdLabel" -o "$cdImagePath" "$tPrefix"
else
echo "you need mkisofs (preferred) or genisoimage to create a CD image."
echo "you need xorriso to create a CD image."
exit 1
fi