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"
next 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