# SliTaz package receipt.

PACKED_SIZE="136.0K"
UNPACKED_SIZE="180.0K"
PACKAGE="syslinux"
VERSION="4.06"
CATEGORY="base-system"
SHORT_DESC="LiveCD ISO bootloader (isolinux)"
MAINTAINER="pankso@slitaz.org"
LICENSE="GPL2"
TARBALL="$PACKAGE-$VERSION.tar.xz"
WEB_SITE="https://www.syslinux.org/"
WGET_URL="https://www.kernel.org/pub/linux/utils/boot/syslinux/$TARBALL"
LINLD="$WOK/linld/source"
CONFIG_FILES="/boot/isolinux/*.cfg /boot/isolinux/kbd"
TAGS="boot"

BUILD_DEPENDS="wget kbd-base perl nasm dev86 lzma mingw32-gcc upx posixovl \
util-linux-uuid-dev advancecomp libidn linld e2fsprogs"

current_version()
{
	wget -O - $(dirname $WGET_URL) 2>/dev/null | \
	sed "/$PACKAGE-[0-9]/!d;/tar/!d;s|.*$PACKAGE-\\(.*\\).tar.*\".*|\\1|" | sort -Vr | sed q
}

# Rules to gen a SliTaz package suitable for Tazpkg.
compile_rules()
{
	rm -f $src/core/isolinux.bin
	for i in loadhigh iso9660 readconfig keytab-lilo lzop-1.03-gcc6 fixes-4.07 ; do
		patch -p 0 < $stuff/extra/$i.u
	done
	cp $stuff/tools/isohybrid.sh .
	cp $stuff/extra/md5sum.c com32/modules
	grep -q md5sum.c32 com32/modules/Makefile ||
		sed -i 's/ifcpu64.c32/ifcpu64.c32 md5sum.c32/' com32/modules/Makefile
	export LDFLAGS=''
	make clean
	echo "make all: LDFLAGS=$LDFLAGS"
	make all 2>&1 | sed 's/NO_WERROR=1/NO_Werror=1/;/syslinux64.exe/d'
	echo "make core: LDFLAGS=$LDFLAGS"
	make -C core
	make -C com32
	./isohybrid.sh --build
	sed -i 's/loadkeys -m/loadkeys -u -m/' utils/keytab-lilo	# for ru.kbd
	mkdir kbd
	for i in /usr/share/kbd/keymaps/i386/*/*.map.gz; do
		[ "$(basename $(dirname $i))" = 'include' ] && continue
		utils/keytab-lilo /usr/share/kbd/keymaps/i386/qwerty/us.map.gz \
			$i > kbd/$(basename $i .map.gz)
	done
	cp -a $stuff/iso2exe .
	cp $LINLD/*/linld.com iso2exe
	make -C iso2exe
}

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
	mkdir -p $fs/boot/isolinux $install/usr/share/doc
	cp $stuff/iso2exe/README* $install/usr/share/doc
	cp $stuff/iso2exe/init.custom $install/usr/share/doc
	cp $src/doc/*.txt $install/usr/share/doc
	cp -a $src/man $install/usr/share/
	cp $LINLD/*/linld.com $fs/boot
	cp -a $src/core/isolinux.bin $fs/boot/isolinux
	lzma e $src/com32/modules/md5sum.c32 $fs/boot/isolinux/c32box.c32
	lzma e $src/com32/menu/vesamenu.c32 $fs/boot/isolinux/vesamenu.c32
	# $stuff/isolinux.msg is the old way the have a splash image.
	cp $stuff/*.cfg $stuff/*.txt $stuff/help.* $stuff/opts.* $fs/boot/isolinux
	rm -f $fs/boot/isolinux/common.cfg $fs/boot/isolinux/default.cfg
	rm -f $fs/boot/isolinux/display.txt
	while read label kbd loc tz menu; do
		for i in ${kbd/,/ }; do
	 		[ -e $src/kbd/$i ] || continue
			map=" $i"
			[ ${kbd#*,} = $i ] && map=
			cat >> $fs/boot/isolinux/i18n.cfg <<EOT
LABEL $label
	MENU LABEL $menu
	com32 c32box.c32
	append kbd$map lang=$loc kmap=${kbd#*,} tz=$tz

EOT
			break
		done
	done <<EOT
br		br-abnt2	pt_BR	America/Sao_Paulo	Brasil (abnt2)
br_ac\ brac	us-acentos	pt_BR	America/Sao_Paulo	Brasil (us-acentos)
cz		cz-lat2		cs_CZ	Europe/Prague		Cesky
dk		dk-latin1	da_DK	Europe/Copenhagen	Dansk
de		de-latin1	de_DE	Europe/Berlin		Deutsch
de_CH\ deCH	de_CH-latin1	de_CH	Europe/Zurich		Deutsch Schweiz
gr		gr		el_GR	Europe/Helsinki		Ellinika
en		uk		en_GB	Europe/London		English UK
us		us		en_US	America/New_York	English US
us_ac\ usac	us-acentos	en_US	America/New_York	English US (acentos)
us_dv\ usdv	dvorak		en_US	America/New_York	English US (dvorak)
us_dl\ usdl	dvorak-l	en_US	America/New_York	English US (dvorak-l)
us_dr\ usdr	dvorak-r	en_US	America/New_York	English US (dvorak-r)
es		es		es_ES	Europe/Madrid		Espanol
fr		fr-latin1	fr_FR	Europe/Paris		Francais
be		be-latin1	fr_BE	Europe/Brussels		Francais Belgique
ca		cf		fr_CA	America/Montreal	Francais Canada
fr_CH\ frCH	fr_CH-latin1	fr_CH	Europe/Zurich		Francais Suisse
cr		hr,croat	hr_HR	Europe/Zagreb		Hrvatski
is		is-latin1	is_IS	Atlantic/Reykjavik	Islenska
it		it		it_IT	Europe/Rome		Italiano
hu		hu		hu_HU	Europe/Budapest		Magyar
nl		nl2		nl_NL	Europe/Amsterdam	Nederlands
no\ nb		no-latin1	nb_NO	Europe/Oslo		Norsk (Bokmal)
nn		no-latin1	nn_NO	Europe/Oslo		Norsk (Nynorsk)
po		pl2		pl_PL	Europe/Warsaw		Polski
pt		pt-latin1	pt_PT	Europe/Lisbon		Portugues
ru		ru		ru_RU	Europe/Moscow		Russian
ru_uk\ uk	ru		ru_UA	Europe/Kiev		Russian Ukraine
sl		slovene		sl_SI	Europe/Ljubljana	Slovenski
fi		fi		fi_FI	Europe/Helsinki		Suomi
se		se-lat6		sv_SE	Europe/Stockholm	Svenska
tr		trq		tr_TR	Asia/Istanbul		Turkce
EOT
#grpc		gr-pc		el_GR	Europe/Helsinki		Ellinika
#jp		jp106		ja_JP	Asia/Tokyo		Japanese
#sg		sg-latin1	de_CH	Europe/Zurich		Deutsch Schweiz (sg)
#tr5		tr_q-latin5	tr_TR	Asia/Istanbul		Turkce (latin5)

	cat >> $fs/boot/isolinux/i18n.cfg <<EOT
LABEL exit
	MENU LABEL Back to main menu

MENU EXIT
MENU END
EOT
	sed -i 's/^LABEL us$/&\n	MENU DEFAULT/' $fs/boot/isolinux/i18n.cfg
	chown root:root $src/kbd/*
	touch -t 197001010100.00 $src/kbd/*
	for kbd in $(cd $src/kbd; ls | tee ../kbd.l); do
		msg="Invalid file kbd/$kbd"
		[ -s $src/kbd/$kbd ] && msg="Unused: file kbd/$kbd" &&
		grep -q "[= ]$kbd " $fs/boot/isolinux/i18n.cfg && continue
		sed -i "/^$kbd\$/d" $src/kbd.l
		echo "$msg"
	done
	( cd $src/kbd; cpio -o -H newc < ../kbd.l ) > $fs/boot/isolinux/kbd
	lzma e $fs/boot/isolinux/kbd $fs/boot/isolinux/kbd.lzma # Add size field
	mv -f $fs/boot/isolinux/kbd.lzma $fs/boot/isolinux/kbd
	chown root:root $fs/boot/isolinux/*
}

# Pre and post install commands for Tazpkg.
post_install()
{
	sed -i "/MENU TITLE SliTaz GNU\/Linux/ s| [0-9X]*$| $(date +%Y%m%d)|" \
		"$1/boot/isolinux/isolinux.cfg"
	sed '/MENU TITLE/!d;s/MENU TITLE //' > $1/etc/slitaz-version \
		< "$1/boot/isolinux/isolinux.cfg"
	for i in $(grep -ls boot/isolinux/isolinux.cfg \
			$1/var/lib/tazpkg/installed/*/receipt); do
		pkg=$(basename ${i%/*})
		[ "$pkg" != "$PACKAGE" ] &&
		echo "Reconfigue $pkg ..." &&
		root=/ chroot "$1/" tazpkg reconfigure $pkg
	done
}
