williamh    15/06/16 21:40:51

  Modified:             ChangeLog
  Added:                golang-vcs.eclass
  Log:
  Add golang-vcs.eclass to retrieve go packages from vcs repositories for 
software written in the Go programming language

Revision  Changes    Path
1.1669               eclass/ChangeLog

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1669&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?rev=1.1669&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/ChangeLog?r1=1.1668&r2=1.1669

Index: ChangeLog
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v
retrieving revision 1.1668
retrieving revision 1.1669
diff -u -r1.1668 -r1.1669
--- ChangeLog   16 Jun 2015 21:38:00 -0000      1.1668
+++ ChangeLog   16 Jun 2015 21:40:51 -0000      1.1669
@@ -1,6 +1,10 @@
 # ChangeLog for eclass directory
 # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1668 2015/06/16 
21:38:00 pesa Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/ChangeLog,v 1.1669 2015/06/16 
21:40:51 williamh Exp $
+
+  16 Jun 2015; William Hubbs <willi...@gentoo.org> +golang-vcs.eclass:
+  Add golang-vcs.eclass to retrieve go packages from vcs repositories
+  for live ebuilds of software written in the Go programming language.
 
   16 Jun 2015; Davide Pesavento <p...@gentoo.org> qt4-build-multilib.eclass:
   Minor changes to reduce diff with qt5-build.eclass



1.1                  eclass/golang-vcs.eclass

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/golang-vcs.eclass?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/golang-vcs.eclass?rev=1.1&content-type=text/plain

Index: golang-vcs.eclass
===================================================================
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/eclass/golang-vcs.eclass,v 1.1 2015/06/16 
21:40:51 williamh Exp $

# @ECLASS: golang-vcs.eclass
# @MAINTAINER:
# William Hubbs <willi...@gentoo.org>
# @BLURB: Eclass for fetching and unpacking go repositories.
# @DESCRIPTION:
# This eclass is written to ease the maintenance of live ebuilds
# of software written in the Go programming language.

inherit eutils

case "${EAPI:-0}" in
        5)
                ;;
        *)
                die "${ECLASS}: Unsupported eapi (EAPI=${EAPI})"
                ;;
esac

EXPORT_FUNCTIONS src_unpack

if [[ -z ${_GOLANG_VCS} ]]; then

_GOLANG_VCS=1

DEPEND=">=dev-lang/go-1.4.2"

# @ECLASS-VARIABLE: EGO_PN
# @REQUIRED
# @DESCRIPTION:
# This is the import path for the go package(s). Please emerge dev-lang/go
# and read "go help importpath" for syntax.
#
# Example:
# @CODE
# EGO_PN="github.com/user/package"
# EGO_PN="github.com/user1/package1 github.com/user2/package2"
# @CODE

# @ECLASS-VARIABLE: EGO_STORE_DIR
# @DESCRIPTION:
# Storage directory for Go sources.
#
# This is intended to be set by the user in make.conf. Ebuilds must not set
# it.
#
# EGO_STORE_DIR=${DISTDIR}/go-src

# @ECLASS-VARIABLE: EVCS_OFFLINE
# @DEFAULT_UNSET
# @DESCRIPTION:
# If non-empty, this variable prevents any online operations.

# @ECLASS-VARIABLE: EVCS_UMASK
# @DEFAULT_UNSET
# @DESCRIPTION:
# Set this variable to a custom umask. This is intended to be set by
# users. By setting this to something like 002, it can make life easier
# for people who do development as non-root (but are in the portage
# group) and use FEATURES=userpriv.

# @FUNCTION: _golang-vcs_env_setup
# @INTERNAL
# @DESCRIPTION:
# Create EGO_STORE_DIR if necessary and set GOPATH.
_golang-vcs_env_setup() {
        debug-print-function ${FUNCNAME} "$@"

        local distdir=${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}
        : ${EGO_STORE_DIR:=${distdir}/go-src}

        [[ -n ${EVCS_UMASK} ]] && eumask_push $EVCS_UMASK

        if [[ ! -d ${EGO_STORE_DIR} ]]; then
                (
                        addwrite /
                        mkdir -p "${EGO_STORE_DIR}"
                ) || die "${ECLASS}: unable to create ${EGO_STORE_DIR}"
        fi

        addwrite "${EGO_STORE_DIR}"
        export GOPATH="${EGO_STORE_DIR}"

        [[ -n ${EVCS_UMASK} ]] && eumask_pop
        mkdir -p "${S}" ||
                die "${ECLASS}: unable to create ${S}"
        return 0
}

# @FUNCTION: _golang-vcs_fetch
# @INTERNAL
# @DESCRIPTION:
# Retrieve the EGO_PN go package along with its dependencies.
_golang-vcs_fetch() {
        debug-print-function ${FUNCNAME} "$@"

        [[ -z ${EGO_PN} ]] &&
                die "${ECLASS}: EGO_PN is not set"

        if [[ -n ${EVCS_OFFLINE} ]]; then
                export GOPATH="${S}:${GOPATH}"
                return 0
        fi

        [[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}

        set -- go get -d -t -u -v -x "${EGO_PN}"
        echo "$@"
        "$@" || die
        # The above dies if you pass repositories in EGO_PN instead of
        # packages, e.g. golang.org/x/tools instead of 
golang.org/x/tools/cmd/vet.
        # This is being discussed in the following upstream issue:
        # https://github.com/golang/go/issues/11090
        # I am hoping this will be fixed so "go get -d" is successful if
        # downloading the top level repository is successful.

        [[ -n ${EVCS_UMASK} ]] && eumask_pop
        export GOPATH="${S}:${EGO_STORE_DIR}"
        return 0
}

golang-vcs_src_fetch() {
        debug-print-function ${FUNCNAME} "$@"

        _golang-vcs_env_setup
        _golang-vcs_fetch
}

golang-vcs_src_unpack() {
        debug-print-function ${FUNCNAME} "$@"

        golang-vcs_src_fetch
}

fi




Reply via email to