summaryrefslogtreecommitdiffstats
path: root/meta/classes/go.bbclass
diff options
context:
space:
mode:
authorMatt Madison <matt@madison.systems>2017-09-08 18:04:41 -0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-09-11 17:30:30 +0100
commit7149219b7630cb8cfb70caf4610d4b64a4eccff3 (patch)
tree2a1f72555a5ec5c5c8524f3c2379b6a4cda1b2d2 /meta/classes/go.bbclass
parent07ef4dd93dcb21418647932f3324ee09bc514895 (diff)
downloadpoky-7149219b7630cb8cfb70caf4610d4b64a4eccff3.tar.gz
go.bbclass: add do_unpack function to handle common cases
Go source trees have a particular structure, with all sources located under ${GOROOT}/src/<import-path>. The fetcher step implemented by the 'go get' command automatically follows this structure, so we need to do the same here. Since most Go packages are hosted in git repositories, this adds a custom do_unpack() function that sets the destsuffix to match the expected directory structure, for any git SRC_URIs that haven't had a destsuffix explicitly set in the recipe. This simplifies recipe writing for the most common cases. (From OE-Core rev: efcf6513b71021ea4bfe6fbaa326e6591dee487d) Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/go.bbclass')
-rw-r--r--meta/classes/go.bbclass20
1 files changed, 19 insertions, 1 deletions
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass
index cfe773e13d..c1ef01fafe 100644
--- a/meta/classes/go.bbclass
+++ b/meta/classes/go.bbclass
@@ -55,6 +55,24 @@ GO_INSTALL ?= "${GO_IMPORT}/..."
55 55
56B = "${WORKDIR}/build" 56B = "${WORKDIR}/build"
57 57
58python go_do_unpack() {
59 src_uri = (d.getVar('SRC_URI') or "").split()
60 if len(src_uri) == 0:
61 return
62
63 try:
64 fetcher = bb.fetch2.Fetch(src_uri, d)
65 for url in fetcher.urls:
66 if fetcher.ud[url].type == 'git':
67 if fetcher.ud[url].parm.get('destsuffix') is None:
68 s_dirname = os.path.basename(d.getVar('S'))
69 fetcher.ud[url].parm['destsuffix'] = os.path.join(s_dirname, 'src',
70 d.getVar('GO_IMPORT')) + '/'
71 fetcher.unpack(d.getVar('WORKDIR'))
72 except bb.fetch2.BBFetchException as e:
73 raise bb.build.FuncFailed(e)
74}
75
58go_do_configure() { 76go_do_configure() {
59 ln -snf ${S}/src ${B}/ 77 ln -snf ${S}/src ${B}/
60} 78}
@@ -79,4 +97,4 @@ go_do_install() {
79 fi 97 fi
80} 98}
81 99
82EXPORT_FUNCTIONS do_configure do_compile do_install 100EXPORT_FUNCTIONS do_unpack do_configure do_compile do_install