We have moved to Git. This repository is only provided for compatibility with old installations. Learn how to migrate your installation here.

comparison eclass/x-mgcf-golang-live.eclass @ 249:0685ed0fb913

[sync] imported 2c6bf87..18f98a6 from upstream commit 18f98a6f47cd77c1007b60dbfc7a838ffa99df0c Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Mar 27 21:11:43 2023 +0200 app-crypt/acmetool: version bump to 0.2.2 commit ee2df4ec1deab61cd7bb7de2cd13ffdd066cc41a Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Mar 27 19:30:58 2023 +0200 app-crypt/acmetool: split 0.2.1 from 9999, changed dependencies commit f3c9cf1c7a24619446390b0b71bf5bc090dfce77 Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Mar 27 19:29:33 2023 +0200 removed dependency to go-overlay commit b2057a9b0ba65917f3840a6b121c1e78397c4723 Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Mar 27 19:27:28 2023 +0200 golang eclasses: prefixed exported functions x-mgcf- commit e8d02d1edc997fec9e0b1e5d053a5b82ca4accf2 Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Mar 27 19:08:52 2023 +0200 renamed golang eclasses, updated maintainer, added disclaimer commit 748ea4be8ee777bc788cb2a8801b118b41e6f8aa Author: Daniel Neugebauer <dneuge@energiequant.de> Date: Mon Mar 27 18:43:56 2023 +0200 copied eclasses for Go from go-overlay Reason: These eclasses are used to build app-crypt/acmetool. We previously imported go-overlay as a master repository to use the eclasses defined there but the overlay has been removed from official Gentoo overlay index due to inactivity. The removal broke new initial checkouts for this repository as go-overlay can no longer be found. Gentoo bug for MegaCoffee: https://bugs.gentoo.org/903167 Gentoo bug that caused removal: https://bugs.gentoo.org/864653 Original repository: https://github.com/Dr-Terrible/go-overlay
author Migration Sync <gentoo-overlay@megacoffee.net>
date Mon, 27 Mar 2023 19:15:01 +0000
parents
children 0ad22bd2bcb5
comparison
equal deleted inserted replaced
248:566e55bdfa9a 249:0685ed0fb913
1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Id$
4
5 # @ECLASS: x-mgcf-golang-live.eclass
6 # @MAINTAINER:
7 # MegaCoffee Overlay <gentoo-overlay@megacoffee.net>
8 # @AUTHOR:
9 # Mauro Toffanin <toffanin.mauro@gmail.com>
10 # @BLURB: Eclass for fetching and unpacking HEAD shapshot of go repositories
11 # @DESCRIPTION:
12 # This eclass is written to ease the maintenance of live ebuilds
13 # of software written in the Go programming language.
14
15 inherit x-mgcf-golang-common
16
17 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
18 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
19 # !!! !!!
20 # !!! L E G A C Y E C L A S S !!!
21 # !!! !!!
22 # !!! DO NOT USE OUTSIDE OF MEGACOFFEE OVERLAY !!!
23 # !!! !!!
24 # !!! DO NOT USE FOR NEW EBUILDS !!!
25 # !!! !!!
26 # !!! This eclass has only been copied to megacoffee overlay from !!!
27 # !!! go-overlay: https://github.com/Dr-Terrible/go-overlay !!!
28 # !!! !!!
29 # !!! The only purpose is to keep currently depending ebuilds !!!
30 # !!! until they could be migrated to standard eclasses for Go, !!!
31 # !!! if suitable. !!!
32 # !!! !!!
33 # !!! go-overlay was previously imported by megacoffee until it !!!
34 # !!! got removed from Gentoo overlay index in March 2023, !!!
35 # !!! rendering megacoffee overlay unreachable as a result. !!!
36 # !!! !!!
37 # !!! Related bugs: https://bugs.gentoo.org/864653 !!!
38 # !!! https://bugs.gentoo.org/903167 !!!
39 # !!! !!!
40 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
41 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
42
43
44 EXPORT_FUNCTIONS src_prepare src_unpack src_configure src_compile src_install src_test
45
46 if [[ -z ${_GOLANG_LIVE_ECLASS} ]]; then
47 _GOLANG_LIVE_ECLASS=1
48
49
50 # @ECLASS-VARIABLE: EGO_LIVESTORE_DIR
51 # @INTERNAL
52 # @DESCRIPTION:
53 # Storage directory for Go sources.
54 # Ebuilds must not set it.
55
56 # @ECLASS-VARIABLE: EVCS_UMASK
57 # @DEFAULT_UNSET
58 # @DESCRIPTION:
59 # Set this variable to a custom umask. This is intended to be set by
60 # users. By setting this to something like 002, it can make life easier
61 # for people who do development as non-root (but are in the portage
62 # group), and then switch over to building with FEATURES=userpriv.
63 # Or vice-versa. Shouldn't be a security issue here as anyone who has
64 # portage group write access already can screw the system over in more
65 # creative ways.
66
67
68 # Validates use of GOLANG_PKG_DEPENDENCIES.
69 # NOTE: a live ebuild should not have go dependencies.
70 # TODO: check also if GOLANG_PKG_DEPENDENCIES is an array
71 if [[ -n ${GOLANG_PKG_DEPENDENCIES} ]]; then
72 eerror "Ebuild ${CATEGORY}/${PF} specifies GOLANG_PKG_DEPENDENCIES."
73 eerror "Please, fix it by removing GOLANG_PKG_DEPENDENCIES entirely."
74 die "Banned variable GOLANG_PKG_DEPENDENCIES is set"
75 fi
76
77
78 # @FUNCTION: x-mgcf-golang-live_src_fetch
79 # @DESCRIPTION:
80 # Fetch a go package along with its dependencies.
81 x-mgcf-golang-live_src_fetch() {
82 debug-print-function ${FUNCTION} "$@"
83
84 [[ -z ${EGO_LIVESTORE_DIR} ]] && die "No EGO_LIVESTORE_DIR set (x-mgcf-golang-live_src_unpack not called?)."
85
86 # Fetch the go package
87 [[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}
88
89 set -- env \
90 GOPATH="${EGO_LIVESTORE_DIR}" \
91 go get -d -u -v -t -tags="${GOLANG_PKG_TAGS}" ${@}
92 echo "$@"
93 "$@" || die
94
95 [[ -n ${EVCS_UMASK} ]] && eumask_pop
96 }
97
98 # @FUNCTION: x-mgcf-golang-live_src_unpack
99 # @DESCRIPTION:
100 # Unpack the source archive.
101 x-mgcf-golang-live_src_unpack() {
102 debug-print-function ${FUNCNAME} "$@"
103
104 # Creates EGO_LIVESTORE_DIR if necessary.
105 local distdir=${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}
106 : EGO_LIVESTORE_DIR=${EGO_LIVESTORE_DIR:=${distdir}/go-${PN}-livesrc}
107
108 [[ -n ${EVCS_UMASK} ]] && eumask_push ${EVCS_UMASK}
109
110 if [[ ! -d ${EGO_LIVESTORE_DIR} ]]; then
111 (
112 addwrite /
113 mkdir -p "${EGO_LIVESTORE_DIR}"
114 ) || die "${ECLASS}: unable to create ${EGO_LIVESTORE_DIR}"
115 fi
116
117 addwrite "${EGO_LIVESTORE_DIR}"
118
119 [[ -n ${EVCS_UMASK} ]] && eumask_pop
120
121 # Retrieves the GOLANG_PKG_IMPORTPATH go package.
122 x-mgcf-golang-live_src_fetch "${GOLANG_PKG_IMPORTPATH}/${GOLANG_PKG_NAME}"/...
123
124 # Creates SOURCE directory.
125 mkdir -p "${S}" || die
126 }
127
128
129 # @FUNCTION: x-mgcf-golang-live_src_prepare
130 # @DESCRIPTION:
131 # Prepare source code.
132 x-mgcf-golang-live_src_prepare() {
133 debug-print-function ${FUNCNAME} "${@}"
134
135 # Sets up GoLang build environment.
136 x-mgcf-golang_setup
137
138 # Imports all go dependencies
139 ebegin "Importing all the sources in ${GOPATH}"
140 cp -r "${EGO_LIVESTORE_DIR}/src" "${GOPATH}" || die "Unable to copy sources to ${GOPATH}"
141 eend
142
143 x-mgcf-golang-common_src_prepare
144 }
145
146
147 # @FUNCTION: x-mgcf-golang-live_src_configure
148 # @DESCRIPTION:
149 # Configure the package.
150 x-mgcf-golang-live_src_configure() {
151 debug-print-function ${FUNCNAME} "$@"
152
153 x-mgcf-golang-common_src_configure
154 }
155
156 # @FUNCTION: x-mgcf-golang-live_src_compile
157 # @DESCRIPTION:
158 # Compiles the package.
159 x-mgcf-golang-live_src_compile() {
160 debug-print-function ${FUNCNAME} "$@"
161
162 x-mgcf-golang-common_src_compile
163 }
164
165 # @FUNCTION: x-mgcf-golang-live_src_install
166 # @DESCRIPTION:
167 # Installs binaries and documents from DOCS or HTML_DOCS arrays.
168 x-mgcf-golang-live_src_install() {
169 debug-print-function ${FUNCNAME} "$@"
170
171 x-mgcf-golang-common_src_install
172 }
173
174 # @FUNCTION: x-mgcf-golang-live_src_test
175 # @DESCRIPTION:
176 # Runs the unit tests for the main package.
177 x-mgcf-golang-live_src_test() {
178 debug-print-function ${FUNCNAME} "$@"
179
180 x-mgcf-golang-common_src_test
181 }
182
183
184 fi