diff options
author | Harald van Dijk <truedfx@gentoo.org> | 2006-08-24 08:42:33 +0000 |
---|---|---|
committer | Harald van Dijk <truedfx@gentoo.org> | 2006-08-24 08:42:33 +0000 |
commit | d2b8843df8f6d87ee41b6d740c1234a84e20b333 (patch) | |
tree | ab3b4424261c8077454174eb2bb5d15aacce34b3 /dev-lang/tcc | |
parent | Stable on ppc64 (diff) | |
download | gentoo-2-d2b8843df8f6d87ee41b6d740c1234a84e20b333.tar.gz gentoo-2-d2b8843df8f6d87ee41b6d740c1234a84e20b333.tar.bz2 gentoo-2-d2b8843df8f6d87ee41b6d740c1234a84e20b333.zip |
Make tcc install correctly and work with glibc 2.4 (#132095)
(Portage version: 2.1.1_pre5-r2)
Diffstat (limited to 'dev-lang/tcc')
-rw-r--r-- | dev-lang/tcc/ChangeLog | 9 | ||||
-rw-r--r-- | dev-lang/tcc/files/digest-tcc-0.9.23-r1 | 3 | ||||
-rw-r--r-- | dev-lang/tcc/files/tcc-0.9.23-anonunion.patch | 49 | ||||
-rw-r--r-- | dev-lang/tcc/files/tcc-0.9.23-asneeded.patch | 44 | ||||
-rw-r--r-- | dev-lang/tcc/tcc-0.9.23-r1.ebuild | 57 |
5 files changed, 161 insertions, 1 deletions
diff --git a/dev-lang/tcc/ChangeLog b/dev-lang/tcc/ChangeLog index 254ef102dc0e..dd96dadf0148 100644 --- a/dev-lang/tcc/ChangeLog +++ b/dev-lang/tcc/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for dev-lang/tcc # Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/tcc/ChangeLog,v 1.20 2006/01/08 21:29:21 halcy0n Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/tcc/ChangeLog,v 1.21 2006/08/24 08:42:33 truedfx Exp $ + +*tcc-0.9.23-r1 (24 Aug 2006) + + 24 Aug 2006; Harald van Dijk <truedfx@gentoo.org> + +files/tcc-0.9.23-anonunion.patch, +files/tcc-0.9.23-asneeded.patch, + -tcc-0.9.23.ebuild, +tcc-0.9.23-r1.ebuild: + Make tcc install correctly and work with glibc 2.4 (#132095) 08 Jan 2006; Mark Loeser <halcy0n@gentoo.org> tcc-0.9.22.ebuild: Stable on x86; bug #116169 diff --git a/dev-lang/tcc/files/digest-tcc-0.9.23-r1 b/dev-lang/tcc/files/digest-tcc-0.9.23-r1 new file mode 100644 index 000000000000..48399c90096d --- /dev/null +++ b/dev-lang/tcc/files/digest-tcc-0.9.23-r1 @@ -0,0 +1,3 @@ +MD5 ba925bf241b0980a581bbc6ad3d5b9a1 tcc-0.9.23.tar.gz 423807 +RMD160 c7b1cffa8b0b3e8dd828ffd249249f21efe1ee55 tcc-0.9.23.tar.gz 423807 +SHA256 074632c574116004c63b32798048c73c184d123d8cf96cce849765296b255991 tcc-0.9.23.tar.gz 423807 diff --git a/dev-lang/tcc/files/tcc-0.9.23-anonunion.patch b/dev-lang/tcc/files/tcc-0.9.23-anonunion.patch new file mode 100644 index 000000000000..8af0825bd23e --- /dev/null +++ b/dev-lang/tcc/files/tcc-0.9.23-anonunion.patch @@ -0,0 +1,49 @@ +http://lists.gnu.org/archive/html/tinycc-devel/2005-07/msg00008.html + +--- tcc.c ++++ tcc.c +@@ -6442,7 +6487,7 @@ + { + int a, v, size, align, maxalign, c, offset; + int bit_size, bit_pos, bsize, bt, lbit_pos; +- Sym *s, *ss, **ps; ++ Sym *s, *ss, *ass, **ps; + AttributeDef ad; + CType type1, btype; + +@@ -6513,7 +6558,9 @@ + v = 0; + type1 = btype; + if (tok != ':') { +- type_decl(&type1, &ad, &v, TYPE_DIRECT); ++ type_decl(&type1, &ad, &v, TYPE_DIRECT | TYPE_ABSTRACT); ++ if (v == 0 && (type1.t & VT_BTYPE) != VT_STRUCT) ++ expect("identifier"); + if ((type1.t & VT_BTYPE) == VT_FUNC || + (type1.t & (VT_TYPEDEF | VT_STATIC | VT_EXTERN | VT_INLINE))) + error("invalid type for '%s'", +@@ -6576,7 +6623,7 @@ + } else { + bit_pos = 0; + } +- if (v) { ++ if (v != 0 || (type1.t & VT_BTYPE) == VT_STRUCT) { + /* add new memory data only if starting + bit field */ + if (lbit_pos == 0) { +@@ -6602,6 +6649,15 @@ + } + printf("\n"); + #endif ++ } ++ if (v == 0 && (type1.t & VT_BTYPE) == VT_STRUCT) { ++ ass = type1.ref; ++ while ((ass = ass->next) != NULL) { ++ ss = sym_push(ass->v, &ass->type, 0, offset + ass->c); ++ *ps = ss; ++ ps = &ss->next; ++ } ++ } else if (v) { + ss = sym_push(v | SYM_FIELD, &type1, 0, offset); + *ps = ss; + ps = &ss->next; diff --git a/dev-lang/tcc/files/tcc-0.9.23-asneeded.patch b/dev-lang/tcc/files/tcc-0.9.23-asneeded.patch new file mode 100644 index 000000000000..da757720d929 --- /dev/null +++ b/dev-lang/tcc/files/tcc-0.9.23-asneeded.patch @@ -0,0 +1,44 @@ +http://lists.gnu.org/archive/html/tinycc-devel/2005-08/msg00011.html + +--- tccelf.c ++++ tccelf.c +@@ -2300,19 +2300,27 @@ + expect("("); + t = ld_next(s1, filename, sizeof(filename)); + for(;;) { +- if (t == LD_TOK_EOF) { +- error_noabort("unexpected end of file"); +- return -1; +- } else if (t == ')') { +- break; +- } else if (t != LD_TOK_NAME) { +- error_noabort("filename expected"); +- return -1; +- } +- tcc_add_file(s1, filename); +- t = ld_next(s1, filename, sizeof(filename)); +- if (t == ',') { ++ if (strcmp(filename, "AS_NEEDED")) { ++ if (t == LD_TOK_EOF) { ++ error_noabort("unexpected end of file"); ++ return -1; ++ } else if (t == ')') { ++ break; ++ } else if (t != LD_TOK_NAME) { ++ error_noabort("filename expected"); ++ return -1; ++ } ++ tcc_add_file(s1, filename); + t = ld_next(s1, filename, sizeof(filename)); ++ if (t == ',') { ++ t = ld_next(s1, filename, sizeof(filename)); ++ } ++ } else { ++ /* TODO: Implement AS_NEEDED support. Ignore it for now */ ++ do { ++ t = ld_next(s1, filename, sizeof(cmd)); ++ } while (t != ')'); ++ t = ld_next(s1, filename, sizeof(cmd)); + } + } + } else if (!strcmp(cmd, "OUTPUT_FORMAT") || diff --git a/dev-lang/tcc/tcc-0.9.23-r1.ebuild b/dev-lang/tcc/tcc-0.9.23-r1.ebuild new file mode 100644 index 000000000000..d5fcd19175aa --- /dev/null +++ b/dev-lang/tcc/tcc-0.9.23-r1.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/tcc/tcc-0.9.23-r1.ebuild,v 1.1 2006/08/24 08:42:33 truedfx Exp $ + +inherit eutils + +IUSE="" +DESCRIPTION="A very small C compiler for ix86" +HOMEPAGE="http://www.tinycc.org/" +SRC_URI="http://fabrice.bellard.free.fr/tcc/${P}.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="-* ~x86" + +DEPEND="" + +# Testsuite is broken, relies on gcc to compile +# invalid C code that it no longer accepts +RESTRICT="test" + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/${P}-anonunion.patch + epatch "${FILESDIR}"/${P}-asneeded.patch + + # Don't strip + sed -i -e 's|$(INSTALL) -s|$(INSTALL)|' Makefile + + # Fix examples + sed -i -e '1{ + i#! /usr/bin/tcc -run + /^#!/d + }' examples/ex*.c + sed -i -e '1s/$/ -lX11/' examples/ex4.c +} + +src_install() { + #autoconf for the package does not create dirs if they are missing for some reason + dodir /usr/bin + dodir /usr/lib/tcc + dodir /usr/share/man/man1 + dodir /usr/include + dodir /usr/share/doc/${PF} + make \ + bindir="${D}"/usr/bin \ + libdir="${D}"/usr/lib \ + tccdir="${D}"/usr/lib/tcc \ + includedir="${D}"/usr/include \ + docdir="${D}"/usr/share/doc/${PF} \ + mandir="${D}"/usr/share/man install || die + dodoc Changelog README TODO VERSION COPYING + dohtml tcc-doc.html + exeinto /usr/share/doc/${PF}/examples + doexe examples/ex*.c +} |