From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id CB15B1381F3 for ; Mon, 19 Nov 2012 20:35:36 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3008421C0C2; Mon, 19 Nov 2012 20:35:19 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9CD9B21C0C2 for ; Mon, 19 Nov 2012 20:35:18 +0000 (UTC) Received: from flycatcher.gentoo.org (flycatcher.gentoo.org [81.93.255.6]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 96D5233C6B6 for ; Mon, 19 Nov 2012 20:35:17 +0000 (UTC) Received: by flycatcher.gentoo.org (Postfix, from userid 2272) id 606F220C65; Mon, 19 Nov 2012 20:35:16 +0000 (UTC) From: "Sergei Trofimovich (slyfox)" To: gentoo-commits@lists.gentoo.org Reply-To: gentoo-dev@lists.gentoo.org, slyfox@gentoo.org Subject: [gentoo-commits] gentoo-x86 commit in eclass: ChangeLog haskell-cabal.eclass X-VCS-Repository: gentoo-x86 X-VCS-Files: ChangeLog haskell-cabal.eclass X-VCS-Directories: eclass X-VCS-Committer: slyfox X-VCS-Committer-Name: Sergei Trofimovich Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Message-Id: <20121119203516.606F220C65@flycatcher.gentoo.org> Date: Mon, 19 Nov 2012 20:35:16 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: f134f6f8-fef6-4ef2-976f-2ed2e219c105 X-Archives-Hash: 8405f38068e6a7d4b6f2f21572751a47 slyfox 12/11/19 20:35:16 Modified: ChangeLog haskell-cabal.eclass Log: Added new helper function 'cabal_chdeps' and and debug variable 'CABAL_DEBUG_LOOSENING' for it. Revision Changes Path 1.512 eclass/ChangeLog file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.512&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.512&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?r1=1.511&r2=1.512 Index: ChangeLog =================================================================== RCS file: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v retrieving revision 1.511 retrieving revision 1.512 diff -u -r1.511 -r1.512 --- ChangeLog 17 Nov 2012 16:02:17 -0000 1.511 +++ ChangeLog 19 Nov 2012 20:35:16 -0000 1.512 @@ -1,6 +1,10 @@ # ChangeLog for eclass directory # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.511 2012/11/17 16:02:17 floppym Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.512 2012/11/19 20:35:16 slyfox Exp $ + + 19 Nov 2012; Sergei Trofimovich haskell-cabal.eclass: + Added new helper function 'cabal_chdeps' and and debug variable + 'CABAL_DEBUG_LOOSENING' for it. 17 Nov 2012; Mike Gilbert enlightenment.eclass: Remove the minimum restriction from PYTHON_DEPEND; any version of python from 1.36 eclass/haskell-cabal.eclass file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/haskell-cabal.eclass?rev=1.36&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/haskell-cabal.eclass?rev=1.36&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/haskell-cabal.eclass?r1=1.35&r2=1.36 Index: haskell-cabal.eclass =================================================================== RCS file: /var/cvsroot/gentoo-x86/eclass/haskell-cabal.eclass,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- haskell-cabal.eclass 16 Nov 2012 15:47:17 -0000 1.35 +++ haskell-cabal.eclass 19 Nov 2012 20:35:16 -0000 1.36 @@ -1,6 +1,6 @@ # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/haskell-cabal.eclass,v 1.35 2012/11/16 15:47:17 slyfox Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/haskell-cabal.eclass,v 1.36 2012/11/19 20:35:16 slyfox Exp $ # @ECLASS: haskell-cabal.eclass # @MAINTAINER: @@ -55,6 +55,12 @@ # linking 'setup' faster. : ${GHC_BOOTSTRAP_FLAGS:=} +# @ECLASS-VARIABLE: CABAL_DEBUG_LOOSENING +# @DESCRIPTION: +# Show debug output for 'cabal_chdeps' function if set. +# Needs working 'diff'. +: ${CABAL_DEBUG_LOOSENING:=} + HASKELL_CABAL_EXPF="pkg_setup src_compile src_test src_install" case "${EAPI:-0}" in @@ -535,3 +541,68 @@ return 0 } + +# @FUNCTION: cabal_chdeps +# @DESCRIPTION: +# Allows easier patching of $CABAL_FILE (${S}/${PN}.cabal by default) +# depends +# +# Accepts argument list as pairs of substitutions: ... +# +# Dies on error. +# +# Usage examples: +# +# src_prepare() { +# cabal_chdeps \ +# 'base >= 4.2 && < 4.6' 'base >= 4.2 && < 4.7' \ +# 'containers ==0.4.*' 'containers >= 0.4 && < 0.6' +#} +# or +# src_prepare() { +# CABAL_FILE=${S}/${MY_PN}.cabal cabal_chdeps \ +# 'base >= 4.2 && < 4.6' 'base >= 4.2 && < 4.7' +# CABAL_FILE=${S}/${MY_PN}-tools.cabal cabal_chdeps \ +# 'base == 3.*' 'base >= 4.2 && < 4.7' +#} +# +cabal_chdeps() { + local cf=${CABAL_FILE:-${S}/${PN}.cabal} + local from_ss # ss - substring + local to_ss + local orig_c # c - contents + local new_c + + [[ -f $cf ]] || die "cabal file '$cf' does not exist" + + orig_c=$(< "$cf") + + while :; do + from_pat=$1 + to_str=$2 + einfo "CHDEP: '${from_pat}' -> '${to_str}'" + + [[ -n ${from_pat} ]] || break + [[ -n ${to_str} ]] || die "'${from_str}' does not have 'to' part" + + # escape pattern-like symbols + from_pat=${from_pat//\*/\\*} + from_pat=${from_pat//\[/\\[} + + new_c=${orig_c//${from_pat}/${to_str}} + + if [[ -n $CABAL_DEBUG_LOOSENING ]]; then + echo "${orig_c}" >"${T}/${cf}".pre + echo "${new_c}" >"${T}/${cf}".post + diff -u "${T}/${cf}".{pre,post} + fi + + [[ "${orig_c}" == "${new_c}" ]] && die "no trigger for '${from_ss}'" + orig_c=${new_c} + shift + shift + done + + echo "${new_c}" > "$cf" || + die "failed to update" +}