From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 09E31138334 for ; Wed, 20 Jun 2018 19:57:07 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id EE62BE0B23; Wed, 20 Jun 2018 19:57:00 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 82F77E0B1D for ; Wed, 20 Jun 2018 19:57:00 +0000 (UTC) Received: from pomiocik (public-gprs391647.centertel.pl [37.47.161.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mgorny) by smtp.gentoo.org (Postfix) with ESMTPSA id 027D8335CA3; Wed, 20 Jun 2018 19:56:57 +0000 (UTC) Message-ID: <1529524613.1791.1.camel@gentoo.org> Subject: Re: [gentoo-dev] [PATCH 5/5] toolchain.eclass: support gcc patches from cygwinports From: =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?= To: gentoo-dev@lists.gentoo.org Cc: Michael Haubenwallner Date: Wed, 20 Jun 2018 21:56:53 +0200 In-Reply-To: <20180620174905.7733-6-haubi@gentoo.org> References: <20180620174905.7733-1-haubi@gentoo.org> <20180620174905.7733-6-haubi@gentoo.org> Organization: Gentoo Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.24.6 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-Archives-Salt: d92b6a5b-8370-41ce-96b9-b7d138be1693 X-Archives-Hash: e1652d7ee0250b3d535dd216bf61e347 W dniu śro, 20.06.2018 o godzinie 19∶49 +0200, użytkownik Michael Haubenwallner napisał: > Download and apply patches found in Cygwin's gcc.cygport, maintained > at > github/cygwinports/gcc, for a compiler running on cygwin. The ebuild > can define the cygwinports' git commit id as CYGWINPORTS_GITREV. > --- > eclass/toolchain.eclass | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass > index faf96d2a41f..a16bfadc301 100644 > --- a/eclass/toolchain.eclass > +++ b/eclass/toolchain.eclass > @@ -309,6 +309,14 @@ gentoo_urls() { > # ten Brugge's bounds-checking patches. If > you want to use a patch > # for an older gcc version with a new gcc, > make sure you set > # HTB_GCC_VER to that version of gcc. > +# > +# CYGWINPORTS_GITREV > +# If set, this variable signals that we > should apply additional patches > +# maintained by upstream Cygwin developers at > github/cygwinports/gcc, > +# using the specified git commit id > there. The list of patches to > +# apply is extracted from gcc.cygport, > maintained there as well. > +# This is done for compilers running on > Cygwin, not for cross compilers > +# with a Cygwin target. > get_gcc_src_uri() { > export PATCH_GCC_VER=${PATCH_GCC_VER:-${GCC_RELEASE_VER}} > export UCLIBC_GCC_VER=${UCLIBC_GCC_VER:-${PATCH_GCC_VER}} > @@ -375,6 +383,10 @@ get_gcc_src_uri() { > fi > fi > > + # Cygwin patches from https://github.com/cygwinports/gcc > + [[ -n ${CYGWINPORTS_GITREV} ]] && \ > + GCC_SRC_URI+=" elibc_Cygwin? ( > https://github.com/cygwinports/gcc/archive/${CYGWINPORTS_GITREV}.zip > )" Why not .tar.gz? > + > echo "${GCC_SRC_URI}" > } > > @@ -481,6 +493,8 @@ gcc_quick_unpack() { > > use_if_iuse boundschecking && unpack "bounds-checking-gcc- > ${HTB_GCC_VER}-${HTB_VER}.patch.bz2" > > + [[ -n ${CYGWINPORTS_GITREV} ]] && use elibc_Cygwin && unpack > "${CYGWINPORTS_GITREV}.zip" > + > popd > /dev/null > } > > @@ -505,6 +519,7 @@ toolchain_src_prepare() { > fi > do_gcc_HTB_patches > do_gcc_PIE_patches > + do_gcc_CYGWINPORTS_patches > epatch_user > > if ( tc_version_is_at_least 4.8.2 || use_if_iuse hardened ) > && ! use vanilla ; then > @@ -645,6 +660,19 @@ do_gcc_PIE_patches() { > BRANDING_GCC_PKGVERSION="${BRANDING_GCC_PKGVERSION}, pie- > ${PIE_VER}" > } > > +do_gcc_CYGWINPORTS_patches() { > + [[ -n ${CYGWINPORTS_GITREV} ]] || return 0 > + use elibc_Cygwin || return 0 > + > + local p d="${WORKDIR}/gcc-${CYGWINPORTS_GITREV}" > + for p in $( > + eval "$(sed -ne '/PATCH_URI="/,/"/p' < > "${d}"/gcc.cygport)" The eval here is completely unnecessary, and can easily wreak havoc. Don't do that. > + echo ${PATCH_URI} > + ); do > + epatch "${d}/${p}" > + done > +} > + > # configure to build with the hardened GCC specs as the default > make_gcc_hard() { > -- Best regards, Michał Górny