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 10:45:19 +0000 (UTC)	[thread overview]
Message-ID: <1435229047.2df56853ddc8b2a627c0c6167b8b1c9a2073f135.mrueg@gentoo> (raw)

commit:     2df56853ddc8b2a627c0c6167b8b1c9a2073f135
Author:     Manuel Rüger <mrueg <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 25 10:44:07 2015 +0000
Commit:     Manuel Rüger <mrueg <AT> gentoo <DOT> org>
CommitDate: Thu Jun 25 10:44:07 2015 +0000
URL:        https://gitweb.gentoo.org/dev/mrueg.git/commit/?id=2df56853

[eclass] Initial version of github.eclass.

 eclass/github.eclass | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 135 insertions(+)

diff --git a/eclass/github.eclass b/eclass/github.eclass
new file mode 100644
index 0000000..df0263d
--- /dev/null
+++ b/eclass/github.eclass
@@ -0,0 +1,135 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+# @ECLASS: github.eclass
+# @MAINTAINER:
+# mrueg@gentoo.org
+# @BLURB: Support eclass for packages hosted on Github.
+# @DESCRIPTION:
+# The github.eclass provides support for packages hosted on Github.
+
+if [[ -z ${_GH_ECLASS} ]]; then
+_GH_ECLASS=1
+
+case "${EAPI:-0}" in
+	5)
+		;;
+	*)
+		die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
+		;;
+esac
+
+# @ECLASS-VARIABLE: GH_USER
+# @DESCRIPTION:
+# Github user, usually a project or user.
+: ${GH_USER:=${PN}}
+
+# @ECLASS-VARIABLE: GH_REPO
+# @DESCRIPTION:
+# Github repository name.
+: ${GH_REPO:=${PN}}
+
+# @ECLASS-VARIABLE: GH_BUILD_TYPE
+# @DESCRIPTION:
+# Live ebuilds use "live" here.
+: ${GH_BUILD_TYPE:=default}
+
+# @ECLASS-VARIABLE: GH_PATCHES
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Patches to be fetched and applied from Github by commit id.
+# Example:
+# @CODE
+# GH_PATCHES=( "b02c39fb8dec9043b0ac9d23d5caec19b8b0c337" )
+# @CODE
+
+# @ECLASS-VARIABLE: GH_TAG
+# @DESCRIPTION:
+# Tag/commit that is fetched from Github.
+: ${GH_TAG:=${PV}}
+
+
+inherit eutils
+
+if [[ ${PV} == *9999 ]]; then
+	GH_BUILD_TYPE=live
+fi
+
+if [[ ${GH_BUILD_TYPE} = live ]]; then
+	inherit git-r3
+fi
+
+if [[ ${GH_BUILD_TYPE} = default ]]; then
+	inherit vcs-snapshot
+fi
+
+HOMEPAGE="https://github.com/${GH_USER}/${GH_REPO}"
+
+EXPORT_FUNCTIONS src_prepare src_unpack
+
+# If patches are fetched, calculate their location
+_calculate_patches_uri() {
+	if [[ -n $GH_PATCHES ]]; then
+            _GH_PATCHES=
+            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 )
+            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"
+}
+
+# Determine fetch location for live sources
+_calculate_live_repo() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	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.
+	EGIT_MIRROR=${EGIT_MIRROR:=https://github.com}
+	
+	EGIT_REPO_URI="${EGIT_MIRROR}/${GH_USER}/${GH_REPO}.git"
+}
+
+
+case ${GH_BUILD_TYPE} in
+	live) _calculate_live_repo ;;
+	default) _calculate_src_uri ;;
+esac
+_calculate_patches_uri
+
+debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: SRC_URI is ${SRC_URI}"
+
+# @FUNCTION: github_src_unpack
+# @DESCRIPTION:
+# Function for unpacking Github packages.
+github_src_unpack() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${GH_BUILD_TYPE} = live ]]; then
+		git-r3_src_unpack
+	else
+		vcs-snapshot_src_unpack
+	fi
+}
+
+
+# @FUNCTION: github_src_unpack
+# @DESCRIPTION:
+# Function for applying patches to Github packages.
+github_src_prepare() {
+    [[ $_GH_PATCHES ]] && epatch "${_GH_PATCHES[@]}"
+    epatch_user
+    default
+}
+
+fi


             reply	other threads:[~2015-06-25 10:45 UTC|newest]

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