public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Manuel Rüger" <mrueg@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] dev/mrueg:master commit in: eclass/
Date: Thu, 25 Jun 2015 15:39:11 +0000 (UTC)	[thread overview]
Message-ID: <1435246743.b65dc4182faa8eddf83fc679855d54443db60049.mrueg@gentoo> (raw)

commit:     b65dc4182faa8eddf83fc679855d54443db60049
Author:     Manuel Rüger <mrueg <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 25 15:39:03 2015 +0000
Commit:     Manuel Rüger <mrueg <AT> gentoo <DOT> org>
CommitDate: Thu Jun 25 15:39:03 2015 +0000
URL:        https://gitweb.gentoo.org/dev/mrueg.git/commit/?id=b65dc418

[eclass] Rework patches. Add support for forks.

 eclass/github.eclass | 85 ++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 62 insertions(+), 23 deletions(-)

diff --git a/eclass/github.eclass b/eclass/github.eclass
index a80d03d..ab5a66f 100644
--- a/eclass/github.eclass
+++ b/eclass/github.eclass
@@ -39,22 +39,16 @@ esac
 # @ECLASS-VARIABLE: GH_PATCHES
 # @DEFAULT_UNSET
 # @DESCRIPTION:
-# Patches to be fetched and applied from Github by commit id.
+# Patches, pull requests, patches from forks to be fetched and applied.
+# Prefix:
+# f: - Regular patch from FILESDIR
+# c: - Patch identified by commit, optional: fork name
+# p: - Patch identified by pull request id, optional: fork name
 # Example:
 # @CODE
-# GH_PATCHES=("b02c39fb8dec9043b0ac9d23d5caec19b8b0c337" "b0c337b02c39fb8dec9043b0ac9d23d5caec19b8" )
+# GH_PATCHES=("c:b02c39fb8dec9043b0ac9d23d5caec19b8b0c337" "c:gentoo/b0c337b02c39fb8dec9043b0ac9d23d5caec19b8" "foo.patch" "p:1" "p:gentoo/17" )
 # @CODE
 
-# @ECLASS-VARIABLE: GH_PULLREQS
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# Pull requests to be fetched and applied from Github by its id.
-# Example:
-# @CODE
-# GH_PULLREQS=(17 19)
-# @CODE
-
-
 # @ECLASS-VARIABLE: GH_TAG
 # @DESCRIPTION:
 # Tag/commit that is fetched from Github.
@@ -63,6 +57,10 @@ esac
 
 inherit eutils
 
+if [[ ${PV} != *9999 && ${GH_BUILD_TYPE} == live ]]; then
+    eqawarn "Uncommon package version for a live ebuild."
+fi 
+
 if [[ -z ${GH_BUILD_TYPE}  ]]; then
 	if [[ ${PV} == *9999 ]]; then
 		_GH_BUILD_TYPE=live
@@ -85,27 +83,68 @@ HOMEPAGE="https://github.com/${GH_USER}/${GH_REPO}"
 
 EXPORT_FUNCTIONS src_prepare src_unpack
 
+_patch_calc_commit() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local gh_filepatch="$1"
+	_GH_PATCHES+=($gh_filepatch)
+}
+
+_patch_calc_commit() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local gh_patch="$1"
+	local gh_commit=${gh_patch##*/}
+	local gh_fork=${GH_USER}
+	local gh_forkedby=""
+	if [[ "${gh_patch}" == */* ]]; then 
+		gh_fork=${gh_patch%%/*}
+		gh_forkedby=${gh_fork}-
+	fi
+	SRC_URI+=" https://github.com/${GH_USER}/${GH_REPO}/commit/${gh_commit}.patch -> ${PN}-${gh_forkedby}${gh_commit}.patch"
+	_GH_PATCHES+=("${DISTDIR}"/${PN}-${gh_forkedby}${gh_commit}.patch)
+}
+
+_patch_calc_pull-request() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local gh_patch="$1"
+	local gh_pullreq=${gh_patch##*/}
+	local gh_fork=${GH_USER}
+	local gh_forkedby=""
+
+	if [[ "${gh_patch}" == */* ]]; then 
+		gh_fork=${gh_patch%%/*}
+		gh_forkedby=${gh_fork}-
+	fi
+ 
+	SRC_URI+=" https://github.com/${gh_fork}/${GH_REPO}/pull/${gh_pullreq}.patch -> ${PN}-pr${gh_forkedby}-${gh_pullreq}.patch"
+	_GH_PATCHES+=("${DISTDIR}"/${PN}-pr-${gh_forkedby}${gh_pullreq}.patch)
+}
 
 # If patches are fetched, calculate their location
 _calculate_patches_uri() {
 	if [[ -n $GH_PATCHES ]]; then
 		for gh_commit in "${GH_PATCHES[@]}"; do
-			SRC_URI+=" https://github.com/${GH_USER}/${GH_REPO}/commit/${gh_commit}.patch -> ${PN}-${gh_commit}.patch"
-			_GH_PATCHES+=("${DISTDIR}"/${PN}-${gh_commit}.patch)
+			case ${gh_commit:0:1} in
+				f) _patch_calc_filesdir "${gh_commit:2}"
+				;;
+				c) _patch_calc_commit "${gh_commit:2}"
+				;;
+				p) _patch_calc-pull_request "${gh_commit:2}"
+				;;
+				*) die "Wrong patch pattern: ${gh_commit}"
+				;;
+			esac
 		done
 	fi
-	if [[ -n $GH_PULLREQ ]]; then 
-		for gh_pullreq in "${GH_PULLREQS[@]}"; do
-			SRC_URI+=" https://github.com/${GH_USER}/${GH_REPO}/pull/${gh_pullreq}.patch -> ${PN}-pr-${gh_pullreq}.patch"
-			_GH_PATCHES+=("${DISTDIR}"/${PN}-pr-${gh_pullreq}.patch)
-		done
-        fi
 }
 
 
 # Determine fetch location for tarballs and patches
 _calculate_src_uri() {
 	debug-print-function ${FUNCNAME} "$@"
+
 	SRC_URI="https://github.com/${GH_USER}/${GH_REPO}/archive/${GH_TAG}.tar.gz -> ${P}.tar.gz"
 }
 
@@ -115,9 +154,9 @@ _calculate_live_repo() {
 
 	SRC_URI=""
 	# @ECLASS-VARIABLE: EGIT_MIRROR
-        # @DESCRIPTION:
-	# This variable allows easy overriding of default kde mirror service
-	# (anongit) with anything else you might want to use.
+	# @DESCRIPTION:
+	# This variable allows easy overriding of github uri.
+	# (uses https) with anything else you might want to use.
 	EGIT_MIRROR=${EGIT_MIRROR:=https://github.com}
 	
 	EGIT_REPO_URI="${EGIT_MIRROR}/${GH_USER}/${GH_REPO}.git"


             reply	other threads:[~2015-06-25 15:39 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-25 15:39 Manuel Rüger [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-12-31 11:42 [gentoo-commits] dev/mrueg:master commit in: eclass/ Manuel Rüger
2015-06-25 16:55 Manuel Rüger
2015-06-25 11:50 Manuel Rüger
2015-06-25 11:47 Manuel Rüger
2015-06-25 11:46 Manuel Rüger
2015-06-25 11:45 Manuel Rüger
2015-06-25 11:45 Manuel Rüger
2015-06-25 11:38 Manuel Rüger
2015-06-25 11:18 Manuel Rüger
2015-06-25 11:11 Manuel Rüger
2015-06-25 11:09 Manuel Rüger
2015-06-25 11:07 Manuel Rüger
2015-06-25 11:03 Manuel Rüger
2015-06-25 10:47 Manuel Rüger
2015-06-25 10:45 Manuel Rüger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1435246743.b65dc4182faa8eddf83fc679855d54443db60049.mrueg@gentoo \
    --to=mrueg@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox