syslinux: update to 6.02 and add EFI support.

This commit is contained in:
Juan RP 2014-01-11 18:18:10 +01:00
parent 750206c539
commit 0761c1d99f
5 changed files with 95 additions and 16 deletions

16
srcpkgs/syslinux/INSTALL Normal file
View file

@ -0,0 +1,16 @@
case "${ACTION}" in
post)
cat <<_EOF
=======================================================================
Some optional packages must be installed for additional functionality:
- mtools: mkdiskimage and syslinux support
- gptfdisk: GPT support
- efibootmgr: EFI support
- dosfstools: EFI support
=======================================================================
_EOF
;;
esac

View file

@ -0,0 +1,10 @@
--- core/isolinux.asm
+++ core/isolinux.asm
@@ -420,7 +420,7 @@ MaxLMA equ 384*1024 ; Reasonable limit (384K)
call getlinsec
pop eax
pop cx
- mov dx,cx
+ movzx edx,cx
pop bp
pop bx

View file

@ -0,0 +1,45 @@
Reported-by: Dark Raven <drdarkraven at gmail.com>
Signed-off-by: Raphael S. Carvalho <raphael.scarv at gmail.com>
---
com32/lib/syslinux/disk.c | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
--- com32/lib/syslinux/disk.c
+++ com32/lib/syslinux/disk.c
@@ -171,22 +171,28 @@ out:
static void *ebios_setup(const struct disk_info *const diskinfo, com32sys_t *inreg,
uint64_t lba, uint8_t count, uint8_t op_code)
{
- static __lowmem struct disk_ebios_dapa dapa;
+ static struct disk_ebios_dapa *dapa = NULL;
void *buf;
+ if (!dapa) {
+ dapa = lmalloc(sizeof *dapa);
+ if (!dapa)
+ return NULL;
+ }
+
buf = lmalloc(count * diskinfo->bps);
if (!buf)
return NULL;
- dapa.len = sizeof(dapa);
- dapa.count = count;
- dapa.off = OFFS(buf);
- dapa.seg = SEG(buf);
- dapa.lba = lba;
+ dapa->len = sizeof(*dapa);
+ dapa->count = count;
+ dapa->off = OFFS(buf);
+ dapa->seg = SEG(buf);
+ dapa->lba = lba;
inreg->eax.b[1] = op_code;
- inreg->esi.w[0] = OFFS(&dapa);
- inreg->ds = SEG(&dapa);
+ inreg->esi.w[0] = OFFS(dapa);
+ inreg->ds = SEG(dapa);
inreg->edx.b[0] = diskinfo->disk;
return buf;

View file

@ -1,11 +0,0 @@
--- Makefile 2010-07-21 21:33:13.000000000 +0200
+++ Makefile 2010-07-22 11:14:03.325522937 +0200
@@ -54,7 +54,7 @@
# files that depend only on the B phase, but may have to be regenerated
# for "make installer".
BSUBDIRS = codepage com32 lzo core memdisk mbr memdump gpxe sample \
- diag libinstaller dos win32 win64 dosutil txt
+ libinstaller txt
ITARGET =
IOBJECTS = $(ITARGET) \
utils/gethostip utils/isohybrid utils/mkdiskimage \

View file

@ -1,22 +1,41 @@
# Template file for 'syslinux'
pkgname=syslinux
version=5.01
version=6.02
revision=1
makedepends="perl nasm libuuid-devel"
hostmakedepends="perl python nasm"
makedepends="gnu-efi-libs libuuid-devel"
short_desc="A boot loader for the Linux operating system"
maintainer="Juan RP <xtraeme@gmail.com>"
homepage="http://syslinux.zytor.com/wiki/index.php/The_Syslinux_Project"
license="GPL-2"
distfiles="${KERNEL_SITE}/utils/boot/$pkgname/$pkgname-$version.tar.xz"
checksum=41320ae9c8211bb99b1322fdbf98a83d3bdc0f9a78291ad27f8512b12e16b411
checksum=afa31b7cbf72e1c0c1752a0636ba724ce01c0e374366e46e61db6862b4685478
pre_build() {
# Do not try to build the Windows or DOS installers and DIAG files
sed 's|diag libinstaller dos win32 win64 dosutil txt|libinstaller txt|g' -i Makefile
sed 's|win32/syslinux.exe win64/syslinux64.exe||g' -i Makefile
sed 's|dosutil/*.com dosutil/*.sys||g' -i Makefile
sed 's|dos/syslinux.com||g' -i Makefile
sed 's|INSTALLSUBDIRS = com32 utils dosutil|INSTALLSUBDIRS = com32 utils|g' -i Makefile
sed 's|install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|# install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|g' -i Makefile
# Fix FHS manpage path
sed 's|/usr/man|/usr/share/man|g' -i mk/syslinux.mk
}
do_build() {
unset CFLAGS LDFLAGS
sed 's|/usr/man|/usr/share/man|g' -i mk/syslinux.mk
case "$XBPS_TARGET_MACHINE" in
i686*) sed -e 's,^firmware =.*,firmware = bios efi32,g' -i Makefile;;
x86_64*) sed -e 's,^firmware =.*,firmware = bios efi64,g' -i Makefile;;
esac
make installer
}
do_install() {
make INSTALLROOT=${DESTDIR} install
vmove "sbin/*" usr/bin
mv ${DESTDIR}/sbin/* ${DESTDIR}/usr/bin
# Remove completely development stuff.
rm -r ${DESTDIR}/usr/share/syslinux/com32/include
rm ${DESTDIR}/usr/share/syslinux/com32/*.a
}