113 lines
3.4 KiB
Bash
113 lines
3.4 KiB
Bash
# Template file for 'yaboot'
|
|
pkgname=yaboot
|
|
version=1.3.17
|
|
revision=1
|
|
archs="ppc64 ppc64-musl ppc ppc-musl"
|
|
build_style=gnu-makefile
|
|
hostmakedepends="autoconf automake"
|
|
depends="powerpc-utils hfsutils"
|
|
short_desc="Bootloader for PowerMac and IBM CHRP computers"
|
|
maintainer="q66 <daniel@octaforge.org>"
|
|
license="GPL-2.0-or-later"
|
|
homepage="https://wiki.debian.org/YaBoot"
|
|
_e2fsprogs_ver="1.41.14"
|
|
distfiles="https://cdimage.debian.org/cdimage/cd-sources/yaboot_${version}.orig.tar.gz
|
|
http://ftp.be.debian.org/pub/linux/kernel/people/tytso/e2fsprogs/e2fsprogs-${_e2fsprogs_ver}.tar.gz"
|
|
checksum="2fb738d8fd48b94ab2534a4fdf63738ad02c1a30f4b2add91f837baff8fa2aa1
|
|
3f8ac1fedd7c4bec480afcbe4acabdd4ac59ec0446a0fd50c8975cd0aad7b176"
|
|
patch_args="-Np1"
|
|
# Don't want stripped yaboot bits to leak into -dbg
|
|
nostrip_files=yaboot
|
|
|
|
# This is a safe choice available on all cross-hosts and ppc64 itself
|
|
# We need to compile yaboot binary itself, as well as e2fsprogs libraries,
|
|
# using a 32-bit ppc compiler; 64-bit with -m32 won't do because of libgcc etc.
|
|
case "$XBPS_TARGET_MACHINE" in
|
|
ppc64*) _need_cross=powerpc-linux-musl ;;
|
|
esac
|
|
|
|
if [ -n "$_need_cross" ]; then
|
|
hostmakedepends+=" cross-${_need_cross}"
|
|
fi
|
|
|
|
# No testsuite provided
|
|
do_check() {
|
|
:
|
|
}
|
|
|
|
post_patch() {
|
|
# Add support for DESTDIR in order to not leak files
|
|
sed -i 's/^ROOT =/ROOT = $(DESTDIR)/' Makefile
|
|
|
|
# Ensure safe cleanup
|
|
mv ${XBPS_BUILDDIR}/e2fsprogs-${_e2fsprogs_ver} .
|
|
}
|
|
|
|
# This builds e2fsprogs libraries, needed by yaboot for ext* support
|
|
# We need to build this using the potential 32-bit cross compiler, with
|
|
# specific minimal flags, so we can't just makedepend on it...
|
|
_build_e2fsprogs() {
|
|
pushd e2fsprogs-${_e2fsprogs_ver}
|
|
|
|
# Update config.sub and config.guess to recognize modern/musl hosts
|
|
cp /usr/share/automake-*/config.* config
|
|
|
|
if [ ! -f Makefile ]; then
|
|
# Regenerate autotools
|
|
autoreconf -isf
|
|
|
|
# Explicitly disable things we definitely don't need
|
|
local _args="--disable-testio-debug --disable-debugfs --disable-tls"
|
|
local _ecc="$CC" _ear="$AR"
|
|
if [ -n "$_need_cross" -o -n "$CROSS_BUILD" ]; then
|
|
# using a crosscompiler, set up configure/compiler for that
|
|
_args+=" --host=${_need_cross:-$XBPS_CROSS_TRIPLET}"
|
|
_ecc="${_need_cross:-$XBPS_CROSS_TRIPLET}-gcc"
|
|
_ear="${_need_cross:-$XBPS_CROSS_TRIPLET}-ar"
|
|
fi
|
|
|
|
# We need to keep flags synchronized with yaboot itself
|
|
local _ecflags="-Os -fno-stack-protector -no-pie"
|
|
_ecflags+=" -fgnu89-inline -fno-builtin-malloc -DNDEBUG"
|
|
|
|
CFLAGS="$_ecflags" CC="$_ecc" AR="$_ear" ./configure ${_args}
|
|
fi
|
|
|
|
# Avoid building the whole thing, build only the two libs we need
|
|
cd lib/et
|
|
make ${makejobs}
|
|
cd ../ext2fs
|
|
make ${makejobs}
|
|
|
|
cd ..
|
|
cp libcom_err.a libext2fs.a ${wrksrc}
|
|
|
|
popd
|
|
}
|
|
|
|
pre_build() {
|
|
# Add toolchain prefix when cross-compiling; for userland tools
|
|
# always, for yaboot itself when cross-compiling to ppc32
|
|
if [ "$CROSS_BUILD" ]; then
|
|
sed -i "s/^CROSS =/CROSS = ${XBPS_CROSS_TRIPLET}-/" Makefile
|
|
fi
|
|
|
|
# When using a separate cross-compiler (ppc64 target), override YBCC
|
|
if [ -n "$_need_cross" ]; then
|
|
sed -i "s/^YBCC =.*/YBCC = ${_need_cross}-gcc/" Makefile
|
|
fi
|
|
|
|
# These are needed by yaboot core
|
|
_build_e2fsprogs
|
|
}
|
|
|
|
post_install() {
|
|
# Yaboot is nostrip_files so do it manually (and ignore -dbg)
|
|
if [ -n "$_need_cross" ]; then
|
|
${_need_cross}-strip --remove-section=.comment \
|
|
${DESTDIR}/usr/lib/yaboot/yaboot
|
|
else
|
|
$STRIP --remove-section=.comment ${DESTDIR}/usr/lib/yaboot/yaboot
|
|
fi
|
|
}
|