From af0acdcdd90abc2c287cae21ff4e3ecdbae646e2 Mon Sep 17 00:00:00 2001 From: Laszlo Valko Date: Mon, 23 Jul 2018 04:24:07 +0200 Subject: [PATCH] Added libstdc++-v3 with patch. --- sys-libs/libstdc++-v3/Manifest | 6 + .../files/libstdc++-v3-3.3.6-glibc226.patch | 33 +++ ...stdc++-v3-3.3.6-skip-testsuite-build.patch | 57 ++++++ .../libstdc++-v3/libstdc++-v3-3.3.6-r1.ebuild | 190 ++++++++++++++++++ sys-libs/libstdc++-v3/metadata.xml | 8 + 5 files changed, 294 insertions(+) create mode 100644 sys-libs/libstdc++-v3/Manifest create mode 100644 sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-glibc226.patch create mode 100644 sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-skip-testsuite-build.patch create mode 100644 sys-libs/libstdc++-v3/libstdc++-v3-3.3.6-r1.ebuild create mode 100644 sys-libs/libstdc++-v3/metadata.xml diff --git a/sys-libs/libstdc++-v3/Manifest b/sys-libs/libstdc++-v3/Manifest new file mode 100644 index 0000000..66b5281 --- /dev/null +++ b/sys-libs/libstdc++-v3/Manifest @@ -0,0 +1,6 @@ +AUX libstdc++-v3-3.3.6-glibc226.patch 1349 BLAKE2B e16351bae2539fac5d71b1cec43e0869f079c34e1bc59a170b7ff699e6c9aff95dbde09b07c17f3ec4a66f02548a3c78e4679eab38244aa5a2ddde12856fb1fc SHA512 05e2195c385b8cfbeb7b4978a70c3dbcee02210ff7b1785ad736f6c2cbbb8bf3abefec93417c427c2719b2bf6ebe565f432f45e5e17a4c51672785ed5b650a22 +AUX libstdc++-v3-3.3.6-skip-testsuite-build.patch 2077 BLAKE2B 2a8123ee34ccaf986591f27984253851a57b9eadb29b7aefc7574e23c2a42de9bc3dfdc1b7e349b0227faf430dd07a53e21f33931106670815937d19dae8b58c SHA512 cad0c0d231b5609ad06ccd0ef25386c6088f67d9c4ea0e5af7b6271245b2feff8680311f22dc5fe2eb27af6729c06209299bad72c760e04f42fe2921cd9307d9 +DIST gcc-3.3.6-patches-1.9.tar.bz2 51760 BLAKE2B 68704c1ddb73d2966746dd1a57b9699c3130d9165dd990b0b70f13b0dc4c7c4503afcbb268fd54242e17bdd571d5d0a20c172ee431c3c772e7c3412d3f0ac884 SHA512 306220c537c5cd90af7638431e6547ee9a80199c384629b5fbda06c28b2d6168fcf1dd448c0e178b104f41e03a8ebda4f389489d205b9e66ade6637e4747196c +DIST gcc-3.3.6.tar.bz2 23972413 BLAKE2B e7b33edcdbbb13b0be41a41156bf6fb6dcfe4f5ad75c41de86cb37f854be6b7a6a8dda0e65d331461469848cd912e25920e8aa2dcb142cb661731ba571cb5de1 SHA512 576b88e2fa675314a79a85f180684fe5af370c596476a0bf02e33e8ae0e2be838417ea80675ce4194a8213792cf7ada50cae5131149e4b890ab61e0b8d50d0ed +EBUILD libstdc++-v3-3.3.6-r1.ebuild 4984 BLAKE2B 6602db47baaea95722b580977c0558a1ac58c7a077fb549ec0d3cdeb3cc73f01e9d268ce678ed6cbc9ab6d3af1960c7d7f55b3cede86408844c12cca5725baa9 SHA512 5cb110c7ea48614cc09455838d7a6f43cdca6bb912256ac8e346205dfc34b1309b4fabcf4687186c39072ddf1bd23627752b5a068b8d6b5b7eb6bb1c94f638a7 +MISC metadata.xml 257 BLAKE2B 468bd91200194cf2104205cb18f54d629954ed0d86d85a5d3e90af1942eb199d777a0ebc17d1f610f69326d3e0caa686255709f165466f5e0a675380373b30f9 SHA512 fd85d9cf15f6b7db96e4d184e32ae6f1503a5b70cb4cb1ce930ba13a1d5d4c4b24971781e95b7f3f9ead58b31760f84c368bc6fa2a793b4b5baf78259b047ff1 diff --git a/sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-glibc226.patch b/sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-glibc226.patch new file mode 100644 index 0000000..a444da2 --- /dev/null +++ b/sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-glibc226.patch @@ -0,0 +1,33 @@ +diff -ruN gcc-3.3.6.orig/gcc/config/i386/linux.h gcc-3.3.6/gcc/config/i386/linux.h +--- gcc-3.3.6.orig/gcc/config/i386/linux.h 2018-01-01 20:14:36.311860098 +0100 ++++ gcc-3.3.6/gcc/config/i386/linux.h 2018-01-01 20:16:05.912287579 +0100 +@@ -261,7 +261,7 @@ + siginfo_t *pinfo; \ + void *puc; \ + siginfo_t info; \ +- struct ucontext uc; \ ++ struct ucontext_t uc; \ + } *rt_ = (CONTEXT)->cfa; \ + sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext; \ + } \ +diff -ruN gcc-3.3.6.orig/gcc/config/i386/linux64.h gcc-3.3.6/gcc/config/i386/linux64.h +--- gcc-3.3.6.orig/gcc/config/i386/linux64.h 2018-01-01 20:14:36.271859907 +0100 ++++ gcc-3.3.6/gcc/config/i386/linux64.h 2018-01-01 20:16:05.912287579 +0100 +@@ -112,7 +112,7 @@ + if (*(unsigned char *)(pc_+0) == 0x48 \ + && *(unsigned long *)(pc_+1) == 0x050f0000000fc0c7) \ + { \ +- struct ucontext *uc_ = (CONTEXT)->cfa; \ ++ struct ucontext_t *uc_ = (CONTEXT)->cfa; \ + sc_ = (struct sigcontext *) &uc_->uc_mcontext; \ + } \ + else \ +@@ -182,7 +182,7 @@ + siginfo_t *pinfo; \ + void *puc; \ + siginfo_t info; \ +- struct ucontext uc; \ ++ struct ucontext_t uc; \ + } *rt_ = (CONTEXT)->cfa; \ + sc_ = (struct sigcontext *) &rt_->uc.uc_mcontext; \ + } \ diff --git a/sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-skip-testsuite-build.patch b/sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-skip-testsuite-build.patch new file mode 100644 index 0000000..0086c49 --- /dev/null +++ b/sys-libs/libstdc++-v3/files/libstdc++-v3-3.3.6-skip-testsuite-build.patch @@ -0,0 +1,57 @@ +diff -urpN gcc-3.3.6.orig/libstdc++-v3/Makefile.am gcc-3.3.6/libstdc++-v3/Makefile.am +--- gcc-3.3.6.orig/libstdc++-v3/Makefile.am 2003-07-04 12:53:54.000000000 -0700 ++++ gcc-3.3.6/libstdc++-v3/Makefile.am 2018-06-07 20:33:51.747397861 -0700 +@@ -25,7 +25,7 @@ + AUTOMAKE_OPTIONS = 1.3 cygnus + MAINT_CHARSET = latin1 + +-SUBDIRS = include libio libmath libsupc++ src po testsuite ++SUBDIRS = include libio libmath libsupc++ src po + + mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + +@@ -38,13 +38,11 @@ PWD_COMMAND = $${PWDCMD-pwd} + # compile time, execution time, and binary size. + check-script: $(top_builddir)/mkcheck + -(chmod + $(top_builddir)/mkcheck; \ +- cd testsuite; \ +- @glibcpp_builddir@/mkcheck 0) ++ cd testsuite + + check-script-install: $(top_builddir)/mkcheck + -(chmod + $(top_builddir)/mkcheck; \ +- cd testsuite; \ +- @glibcpp_builddir@/mkcheck 1) ++ cd testsuite + + # These rules are messy, but are hella worth it. + doxygen: +Binary files gcc-3.3.6.orig/libstdc++-v3/.Makefile.am.swp and gcc-3.3.6/libstdc++-v3/.Makefile.am.swp differ +diff -urpN gcc-3.3.6.orig/libstdc++-v3/Makefile.in gcc-3.3.6/libstdc++-v3/Makefile.in +--- gcc-3.3.6.orig/libstdc++-v3/Makefile.in 2003-07-04 12:53:54.000000000 -0700 ++++ gcc-3.3.6/libstdc++-v3/Makefile.in 2018-06-07 20:34:32.451011377 -0700 +@@ -147,7 +147,7 @@ toplevel_srcdir = @toplevel_srcdir@ + AUTOMAKE_OPTIONS = 1.3 cygnus + MAINT_CHARSET = latin1 + +-SUBDIRS = include libio libmath libsupc++ src po testsuite ++SUBDIRS = include libio libmath libsupc++ src po + + mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs + +@@ -488,13 +488,11 @@ mostlyclean distclean maintainer-clean + # compile time, execution time, and binary size. + check-script: $(top_builddir)/mkcheck + -(chmod + $(top_builddir)/mkcheck; \ +- cd testsuite; \ +- @glibcpp_builddir@/mkcheck 0) ++ cd testsuite + + check-script-install: $(top_builddir)/mkcheck + -(chmod + $(top_builddir)/mkcheck; \ +- cd testsuite; \ +- @glibcpp_builddir@/mkcheck 1) ++ cd testsuite + + # These rules are messy, but are hella worth it. + doxygen: diff --git a/sys-libs/libstdc++-v3/libstdc++-v3-3.3.6-r1.ebuild b/sys-libs/libstdc++-v3/libstdc++-v3-3.3.6-r1.ebuild new file mode 100644 index 0000000..929228d --- /dev/null +++ b/sys-libs/libstdc++-v3/libstdc++-v3-3.3.6-r1.ebuild @@ -0,0 +1,190 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=0 + +inherit eutils flag-o-matic libtool multilib + +transform_known_flags() { + declare setting + + # and on x86, we just need to filter the 3.4 specific amd64 -marchs + replace-cpu-flags k8 athlon64 opteron x86-64 + + # gcc 3.3 doesn't support -march=pentium-m + replace-cpu-flags pentium-m pentium3m pentium3 + + #GCC 3.3 does not understand G3, G4, G5 on ppc + replace-cpu-flags G3 750 + replace-cpu-flags G4 7400 + replace-cpu-flags G5 7400 +} + +is_arch_allowed() { + i386_processor_table="i386 i486 i586 pentium pentium-mmx winchip-c6 \ + winchip2 c3 i686 pentiumpro pentium2 pentium3 pentium4 prescott \ + nocona k6 k6-2 k6-3 athlon athlon-tbird x86-64 athlon-4 athlon-xp \ + athlon-mp" + + for proc in ${i386_processor_table} ; do + [ "${proc}" == "${1}" ] && return 0 + done + + mips_processor_table="mips1 mips2 mips3 mips4 mips32 mips64 r3000 r2000 \ + r3900 r6000 r4000 vr4100 vr4111 vr4120 vr4300 r4400 r4600 orion \ + r4650 r8000 vr5000 vr5400 vr5500 4kc 4kp 5kc 20kc sr71000 sb1" + + for proc in ${mips_processor_table} ; do + [ "${proc}" == "${1}" ] && return 0 + done + + rs6000_processor_table="common power power2 power3 power4 powerpc \ + powerpc64 rios rios1 rsc rsc1 rios2 rs64a 401 403 405 505 601 602 \ + 603 603e ec603e 604 604e 620 630 740 750 7400 7450 8540 801 821 823 \ + 860" + + for proc in ${rs6000_processor_table} ; do + [ "${proc}" == "${1}" ] && return 0 + done + + return 1 +} + +do_filter_flags() { + declare setting + + # In general gcc does not like optimization, and add -O2 where + # it is safe. This is especially true for gcc 3.3 + 3.4 + replace-flags -O? -O2 + + # gcc 3.3 doesn't support -mtune on numerous archs, so xgcc will fail + setting="`get-flag mtune`" + [ ! -z "${setting}" ] && filter-flags -mtune="${setting}" + + # in gcc 3.3 there is a bug on ppc64 where if -mcpu is used + # the compiler incorrectly assumes the code you are about to build + # is 32 bit + use ppc64 && setting="`get-flag mcpu`" + [ ! -z "${setting}" ] && filter-flags -mcpu="${setting}" + + # only allow the flags that we -know- are supported + transform_known_flags + setting="`get-flag march`" + if [ ! -z "${setting}" ] ; then + is_arch_allowed "${setting}" || filter-flags -march="${setting}" + fi + setting="`get-flag mcpu`" + if [ ! -z "${setting}" ] ; then + is_arch_allowed "${setting}" || filter-flags -mcpu="${setting}" + fi + + # xgcc wont understand gcc 3.4 flags... + filter-flags -fno-unit-at-a-time + filter-flags -funit-at-a-time + filter-flags -fweb + filter-flags -fno-web + filter-flags -mno-tls-direct-seg-refs + + # xgcc isnt patched with propolice + filter-flags -fstack-protector-all + filter-flags -fno-stack-protector-all + filter-flags -fstack-protector + filter-flags -fno-stack-protector + + # xgcc isnt patched with the gcc symbol visibility patch + filter-flags -fvisibility-inlines-hidden + filter-flags -fvisibility=hidden + + # Bug #269433 & #290202 + filter-flags -fno-strict-overflow + filter-flags -fstrict-overflow + + # Bug #442784 + filter-flags '-W*' + + filter-flags -frecord-gcc-switches + filter-flags '-fdiagnostics-color*' + + # ...sure, why not? + strip-unsupported-flags + + strip-flags +} + +PATCH_VER="1.9" + +DESCRIPTION="Compatibility package for binaries linked against a pre gcc 3.4 libstdc++" +HOMEPAGE="https://gcc.gnu.org/libstdc++/" +SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/gcc-${PV}/gcc-${PV}.tar.bz2 + mirror://gentoo/gcc-${PV}-patches-${PATCH_VER}.tar.bz2" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="5" +KEYWORDS="amd64 ~mips ppc -ppc64 sparc x86 ~x86-fbsd" +IUSE="multilib nls" + +DEPEND="sys-devel/bison" +RDEPEND="" + +S=${WORKDIR}/gcc-${PV} + +src_unpack() { + unpack ${A} + cd "${S}" + EPATCH_SUFFIX="patch" epatch "${WORKDIR}"/patch + + # bug 637608 + has_version '>=sys-libs/glibc-2.26' && epatch "${FILESDIR}/${P}-glibc226.patch" + + epatch "${FILESDIR}/${P}-skip-testsuite-build.patch" + + elibtoolize --portage --shallow + ./contrib/gcc_update --touch + mkdir -p "${WORKDIR}"/build + + if use multilib && [[ ${SYMLINK_LIB} == "yes" ]] ; then + # ugh, this shit has to match the way we've hacked gcc else + # the build falls apart #259215 + sed -i \ + -e 's:\(MULTILIB_OSDIRNAMES = \).*:\1../lib64 ../lib32:' \ + "${S}"/gcc/config/i386/t-linux64 \ + || die "sed failed!" + fi +} + +src_compile() { + cd "${WORKDIR}"/build + do_filter_flags + ECONF_SOURCE=${S} \ + econf \ + --enable-shared \ + --with-system-zlib \ + --enable-languages=c++ \ + --enable-threads=posix \ + --enable-long-long \ + --disable-checking \ + --enable-cstdio=stdio \ + --enable-__cxa_atexit \ + $(use_enable multilib) \ + $(use_enable nls) \ + $(use_with !nls included-gettext) + + touch "${S}"/gcc/c-gperf.h + + emake all-target-libstdc++-v3 || die +} + +src_install() { + emake -j1 \ + -C "${WORKDIR}"/build \ + DESTDIR="${D}" \ + install-target-libstdc++-v3 || die + + # scrub everything but the library we care about + pushd "${D}" >/dev/null + mv usr/lib* . || die + rm -rf usr + rm -f lib*/*.{a,la,so} || die + dodir /usr + mv lib* usr/ || die +} diff --git a/sys-libs/libstdc++-v3/metadata.xml b/sys-libs/libstdc++-v3/metadata.xml new file mode 100644 index 0000000..e396f37 --- /dev/null +++ b/sys-libs/libstdc++-v3/metadata.xml @@ -0,0 +1,8 @@ + + + + + toolchain@gentoo.org + Gentoo Toolchain Project + +