public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [PATCH] epunt-cxx.eclass: Split C++ check punting code out of eutils
@ 2017-03-17 16:57 Michał Górny
  2017-03-24 16:32 ` Michał Górny
  0 siblings, 1 reply; 2+ messages in thread
From: Michał Górny @ 2017-03-17 16:57 UTC (permalink / raw
  To: gentoo-dev; +Cc: Michał Górny

Split the epunt_cxx (plus internal code) to a dedicated eclass. This is
rarely needed, usually indicates a dead upstream and requires
the ELT-patches framework. The patches are going to be split to
a separate package, and the new eclass will therefore need to DEPEND
on it. We do not want the dependency to apply to all eutils users
though.
---
 eclass/epunt-cxx.eclass | 65 +++++++++++++++++++++++++++++++++++++++++++++++++
 eclass/eutils.eclass    | 44 ++-------------------------------
 2 files changed, 67 insertions(+), 42 deletions(-)
 create mode 100644 eclass/epunt-cxx.eclass

diff --git a/eclass/epunt-cxx.eclass b/eclass/epunt-cxx.eclass
new file mode 100644
index 000000000000..660b1d138fac
--- /dev/null
+++ b/eclass/epunt-cxx.eclass
@@ -0,0 +1,65 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: epunt-cxx.eclass
+# @MAINTAINER:
+# base-system@gentoo.org
+# @BLURB: A function to punt C++ compiler checks from autoconf
+# @DESCRIPTION:
+# Support for punting C++ compiler checks from autoconf (based
+# on ELT-patches).
+
+if [[ -z ${_EPUNT_CXX_ECLASS} ]]; then
+
+# TODO: replace this with 'inherit eutils' once eutils stops inheriting
+# us
+if ! declare -F eqawarn >/dev/null ; then
+	eqawarn() {
+		has qa ${PORTAGE_ELOG_CLASSES} && ewarn "$@"
+		:
+	}
+fi
+
+# If an overlay has eclass overrides, but doesn't actually override the
+# libtool.eclass, we'll have ECLASSDIR pointing to the active overlay's
+# eclass/ dir, but libtool.eclass is still in the main Gentoo tree.  So
+# add a check to locate the ELT-patches/ regardless of what's going on.
+# Note: Duplicated in libtool.eclass.
+_EUTILS_ECLASSDIR_LOCAL=${BASH_SOURCE[0]%/*}
+eutils_elt_patch_dir() {
+	local d="${ECLASSDIR}/ELT-patches"
+	if [[ ! -d ${d} ]] ; then
+		d="${_EUTILS_ECLASSDIR_LOCAL}/ELT-patches"
+	fi
+	echo "${d}"
+}
+
+# @FUNCTION: epunt_cxx
+# @USAGE: [dir to scan]
+# @DESCRIPTION:
+# Many configure scripts wrongly bail when a C++ compiler could not be
+# detected.  If dir is not specified, then it defaults to ${S}.
+#
+# https://bugs.gentoo.org/73450
+epunt_cxx() {
+	local dir=$1
+	[[ -z ${dir} ]] && dir=${S}
+	ebegin "Removing useless C++ checks"
+	local f p any_found
+	while IFS= read -r -d '' f; do
+		for p in "$(eutils_elt_patch_dir)"/nocxx/*.patch ; do
+			if patch --no-backup-if-mismatch -p1 "${f}" "${p}" >/dev/null ; then
+				any_found=1
+				break
+			fi
+		done
+	done < <(find "${dir}" -name configure -print0)
+
+	if [[ -z ${any_found} ]]; then
+		eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt)."
+	fi
+	eend 0
+}
+
+_EPUNT_CXX_ECLASS=1
+fi #_EPUNT_CXX_ECLASS
diff --git a/eclass/eutils.eclass b/eclass/eutils.eclass
index c932d685c0e9..ea2a76200f09 100644
--- a/eclass/eutils.eclass
+++ b/eclass/eutils.eclass
@@ -20,7 +20,8 @@ _EUTILS_ECLASS=1
 # implicitly inherited (now split) eclasses
 case ${EAPI:-0} in
 0|1|2|3|4|5|6)
-	inherit epatch estack ltprune multilib toolchain-funcs
+	# note: we want to remove epunt-cxx retroactively for #566424
+	inherit epatch epunt-cxx estack ltprune multilib toolchain-funcs
 	;;
 esac
 
@@ -740,47 +741,6 @@ built_with_use() {
 	[[ ${opt} = "-a" ]]
 }
 
-# If an overlay has eclass overrides, but doesn't actually override the
-# libtool.eclass, we'll have ECLASSDIR pointing to the active overlay's
-# eclass/ dir, but libtool.eclass is still in the main Gentoo tree.  So
-# add a check to locate the ELT-patches/ regardless of what's going on.
-# Note: Duplicated in libtool.eclass.
-_EUTILS_ECLASSDIR_LOCAL=${BASH_SOURCE[0]%/*}
-eutils_elt_patch_dir() {
-	local d="${ECLASSDIR}/ELT-patches"
-	if [[ ! -d ${d} ]] ; then
-		d="${_EUTILS_ECLASSDIR_LOCAL}/ELT-patches"
-	fi
-	echo "${d}"
-}
-
-# @FUNCTION: epunt_cxx
-# @USAGE: [dir to scan]
-# @DESCRIPTION:
-# Many configure scripts wrongly bail when a C++ compiler could not be
-# detected.  If dir is not specified, then it defaults to ${S}.
-#
-# https://bugs.gentoo.org/73450
-epunt_cxx() {
-	local dir=$1
-	[[ -z ${dir} ]] && dir=${S}
-	ebegin "Removing useless C++ checks"
-	local f p any_found
-	while IFS= read -r -d '' f; do
-		for p in "$(eutils_elt_patch_dir)"/nocxx/*.patch ; do
-			if patch --no-backup-if-mismatch -p1 "${f}" "${p}" >/dev/null ; then
-				any_found=1
-				break
-			fi
-		done
-	done < <(find "${dir}" -name configure -print0)
-
-	if [[ -z ${any_found} ]]; then
-		eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt)."
-	fi
-	eend 0
-}
-
 # @FUNCTION: make_wrapper
 # @USAGE: <wrapper> <target> [chdir] [libpaths] [installpath]
 # @DESCRIPTION:
-- 
2.12.0



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [gentoo-dev] [PATCH] epunt-cxx.eclass: Split C++ check punting code out of eutils
  2017-03-17 16:57 [gentoo-dev] [PATCH] epunt-cxx.eclass: Split C++ check punting code out of eutils Michał Górny
@ 2017-03-24 16:32 ` Michał Górny
  0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2017-03-24 16:32 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 471 bytes --]

On pią, 2017-03-17 at 17:57 +0100, Michał Górny wrote:
> Split the epunt_cxx (plus internal code) to a dedicated eclass. This is
> rarely needed, usually indicates a dead upstream and requires
> the ELT-patches framework. The patches are going to be split to
> a separate package, and the new eclass will therefore need to DEPEND
> on it. We do not want the dependency to apply to all eutils users
> though.
> 

Merged.

-- 
Best regards,
Michał Górny

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 963 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-03-24 16:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-17 16:57 [gentoo-dev] [PATCH] epunt-cxx.eclass: Split C++ check punting code out of eutils Michał Górny
2017-03-24 16:32 ` Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox