sys-boot/silo: fix build failure against gcc-6, bug #639224

It's a commit similar to d534bffc05
("sys-boot/aboot: fix link failure on recent gcc (force gnu90)")

c99 and gnu90 have slightly different semantics
WRT symbol definition: http://www.greenend.org.uk/rjk/tech/inline.html

Reported-by: Rolf Eike Beer
Closes: https://bugs.gentoo.org/639224
Package-Manager: Portage-2.3.19, Repoman-2.3.6
This commit is contained in:
Sergei Trofimovich
2018-01-01 22:37:14 +00:00
parent fafa1f52ee
commit 47fdb3554b
2 changed files with 89 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
--- a/Rules.make
+++ b/Rules.make
@@ -26,2 +26,7 @@ CFLAGS += -fno-stack-protector
endif
+ifeq ($(call cc-option-yn, -std=gnu90),y)
+# In gcc-5+ c99 changed inline rules by forbidding
+# multiple extern definitions. Fall back to gnu90
+CFLAGS += -std=gnu90
+endif
--- a/silo/Makefile
+++ b/silo/Makefile
@@ -6,2 +6,7 @@ UFSDEPS=
CFLAGS=-O2 -Wall -I. -I../include
+ifeq ($(call cc-option-yn, -std=gnu90),y)
+# In gcc-5+ c99 changed inline rules by forbidding
+# multiple extern definitions. Fall back to gnu90
+CFLAGS += -std=gnu90
+endif

View File

@@ -0,0 +1,69 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
inherit mount-boot flag-o-matic toolchain-funcs eutils
DEB_PL="1"
MY_PV="${PV##*_p}"
MY_GIT="git${MY_PV%%_*}"
MY_PV="${PV%%_*}"
MY_P="${PN}_${MY_PV}+${MY_GIT}"
DESCRIPTION="SPARC/UltraSPARC Improved Loader, a boot loader for sparc"
SRC_URI="mirror://debian/pool/main/s/${PN}/${MY_P}.orig.tar.gz
mirror://debian/pool/main/s/${PN}/${MY_P}-${DEB_PL}.diff.gz"
HOMEPAGE="https://git.kernel.org/?p=linux/kernel/git/davem/silo.git;a=summary"
SLOT="0"
LICENSE="GPL-2"
KEYWORDS="-* ~sparc"
IUSE=""
DEPEND="sys-fs/e2fsprogs
sys-apps/sparc-utils"
RDEPEND=""
ABI_ALLOW="sparc32"
S="${WORKDIR}/${PN}"
PATCHES=(
"${FILESDIR}"/${P}-gnu90-inline.patch
)
src_prepare() {
default
#Set the correct version
sed -i -e "s/1.4.14/1.4.14_git20120819_p1/g" Rules.make || die
# Fix build failure
sed -i -e "s/-fno-strict-aliasing/-fno-strict-aliasing -U_FORTIFY_SOURCE -mcpu=v9/g" Rules.make || die
}
src_compile() {
filter-flags "-fstack-protector"
emake CC="$(tc-getCC)"
}
src_install() {
default
dodoc first-isofs/README.SILO_ISOFS docs/README*
# Fix maketilo manpage
rm "${D}"/usr/share/man/man1/maketilo.1
dosym tilo.1 /usr/share/man/man1/maketilo.1
}
pkg_postinst() {
mount-boot_pkg_postinst
ewarn "NOTE: If this is an upgrade to an existing SILO install,"
ewarn " you will need to re-run silo as the /boot/second.b"
ewarn " file has changed, else the system will fail to load"
ewarn " SILO at the next boot."
ewarn
}