diff options
Diffstat (limited to 'dev-util/yacc')
-rw-r--r-- | dev-util/yacc/files/yacc-1.9.1-mkstemp.patch | 15 | ||||
-rw-r--r-- | dev-util/yacc/yacc-1.9.1-r6.ebuild | 66 |
2 files changed, 81 insertions, 0 deletions
diff --git a/dev-util/yacc/files/yacc-1.9.1-mkstemp.patch b/dev-util/yacc/files/yacc-1.9.1-mkstemp.patch new file mode 100644 index 000000000000..5c72a6e9bc14 --- /dev/null +++ b/dev-util/yacc/files/yacc-1.9.1-mkstemp.patch @@ -0,0 +1,15 @@ +--- a/main.c.orig 2002-12-17 14:28:54.000000000 -0500 ++++ b/main.c 2002-12-17 14:29:31.000000000 -0500 +@@ -264,9 +264,9 @@ + text_file_name[len + 5] = 't'; + union_file_name[len + 5] = 'u'; + +- mktemp(action_file_name); +- mktemp(text_file_name); +- mktemp(union_file_name); ++ mkstemp(action_file_name); ++ mkstemp(text_file_name); ++ mkstemp(union_file_name); + + len = strlen(file_prefix); + diff --git a/dev-util/yacc/yacc-1.9.1-r6.ebuild b/dev-util/yacc/yacc-1.9.1-r6.ebuild new file mode 100644 index 000000000000..a8e9e4d6efbf --- /dev/null +++ b/dev-util/yacc/yacc-1.9.1-r6.ebuild @@ -0,0 +1,66 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit eutils toolchain-funcs + +DESCRIPTION="Yacc: Yet Another Compiler-Compiler" +HOMEPAGE="http://dinosaur.compilertools.net/#yacc" +SRC_URI="ftp://metalab.unc.edu/pub/Linux/devel/compiler-tools/${P}.tar.Z" + +LICENSE="public-domain" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" +IUSE="" + +DEPEND="" +RDEPEND="" + +PATCHES=( + # mkstemp patch from byacc ebuild + "${FILESDIR}"/${P}-mkstemp.patch + + # The following patch fixes yacc to run correctly on ia64 (and + # other 64-bit arches). See bug 46233 + "${FILESDIR}"/${P}-ia64.patch + + # avoid stack access error, bug 232005 + "${FILESDIR}"/${P}-CVE-2008-3196.patch +) + +src_prepare() { + default + + # Use our CFLAGS and LDFLAGS + sed -i -e 's: -O : $(CFLAGS) $(LDFLAGS) :' Makefile || die 'sed failed' +} + +src_compile() { + emake clean + emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" +} + +src_install() { + dobin "${PN}" + doman "${PN}.1" + dodoc 00README* ACKNOWLEDGEMENTS NEW_FEATURES NO_WARRANTY NOTES README* +} + +pkg_preinst() { + # bison installs a /usr/bin/yacc symlink ... + # we need to remove it to avoid triggering + # collision-protect errors #90089 + if [[ -L ${ROOT}/usr/bin/yacc ]]; then + rm -v "${ROOT}"/usr/bin/yacc || die + fi +} + +pkg_postrm() { + # and if we uninstall yacc but keep bison, + # lets restore the /usr/bin/yacc symlink + if [[ ! -e ${ROOT}/usr/bin/yacc ]] && [[ -e ${ROOT}/usr/bin/yacc.bison ]]; then + ln -s yacc.bison "${ROOT}"/usr/bin/yacc || die + fi +} |