All of lore.kernel.org
 help / color / mirror / Atom feed
* Integrating Golang
@ 2014-03-05 21:55 Leo Schwab
  2014-04-16 19:10 ` Hermanus Botha
  2014-04-17  8:49 ` Martin Donnelly
  0 siblings, 2 replies; 13+ messages in thread
From: Leo Schwab @ 2014-03-05 21:55 UTC (permalink / raw)
  To: yocto

We have gotten it into our minds to write some of the apps on our
device in Go, a shiny new compiled language from Google (
http://golang.org/ ).  However, Go has very -- shall we say --
independent ideas about how to organize, fetch, build, and deploy code
which would, at first glance, appear to conflict with Yocto's
mechanisms for same.  Go's support for cross-compilation is also
fairly new and undergoing refinement.  We've kluged together a couple
of recipes which are target-specific, but a general solution for
Go-built targets in Yocto has not revealed itself.

Has anyone else done any work here?  Is there anything that I can
steal^H^H^H^H^Htake inspiration from?  Or am I in completely
unexplored territory?

Thanks in advance,
Schwab


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-03-05 21:55 Integrating Golang Leo Schwab
@ 2014-04-16 19:10 ` Hermanus Botha
  2014-04-16 19:23   ` Hermanus Botha
  2014-04-16 22:57   ` Khem Raj
  2014-04-17  8:49 ` Martin Donnelly
  1 sibling, 2 replies; 13+ messages in thread
From: Hermanus Botha @ 2014-04-16 19:10 UTC (permalink / raw)
  To: yocto

So I don't really know much about Yocto. But I would also like to see some 
more Go-lang action on Yocto.

This section of their manual seems promising. 
http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#cross-
development-toolchain-generation



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-04-16 19:10 ` Hermanus Botha
@ 2014-04-16 19:23   ` Hermanus Botha
  2014-04-16 22:57   ` Khem Raj
  1 sibling, 0 replies; 13+ messages in thread
From: Hermanus Botha @ 2014-04-16 19:23 UTC (permalink / raw)
  To: yocto

Hermanus Botha <wkj.id10t@...> writes:

> 
> So I don't really know much about Yocto. But I would also like to see some 
> more Go-lang action on Yocto.
> 
> This section of their manual seems promising. 
> http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#cross-
> development-toolchain-generation
> 


I guess this link is broken. In that manual, it's section: 
"4.2. Cross-Development Toolchain Generation"

Manual: 
http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-04-16 19:10 ` Hermanus Botha
  2014-04-16 19:23   ` Hermanus Botha
@ 2014-04-16 22:57   ` Khem Raj
  1 sibling, 0 replies; 13+ messages in thread
From: Khem Raj @ 2014-04-16 22:57 UTC (permalink / raw)
  To: Hermanus Botha; +Cc: yocto

On Wed, Apr 16, 2014 at 12:10 PM, Hermanus Botha <wkj.id10t@gmail.com> wrote:
> So I don't really know much about Yocto. But I would also like to see some
> more Go-lang action on Yocto.

Start by generating the gcc runtime  and language support in gcc
recipes. add it to RUNTIMETARGET and adjust PACKAGES
you also need to add it to LANGUAGES that should get it to some point.

>
> This section of their manual seems promising.
> http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#cross-
> development-toolchain-generation
>
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-03-05 21:55 Integrating Golang Leo Schwab
  2014-04-16 19:10 ` Hermanus Botha
@ 2014-04-17  8:49 ` Martin Donnelly
  2014-04-17 16:46   ` Khem Raj
  2014-04-17 19:54   ` Leo Schwab
  1 sibling, 2 replies; 13+ messages in thread
From: Martin Donnelly @ 2014-04-17  8:49 UTC (permalink / raw)
  To: Leo Schwab, yocto

On 05/03/2014 21:55, Leo Schwab wrote:
> Has anyone else done any work here?  Is there anything that I can 
> steal^H^H^H^H^Htake inspiration from?  Or am I in completely 
> unexplored territory?

I posted an RFC patch set last year but it didn't get any traction and
we subsequently ruled out use of go so I never followed up on it but it
might be a useful starting point.

http://lists.openembedded.org/pipermail/openembedded-core/2013-May/078606.html

Cheers

- Martin


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-04-17  8:49 ` Martin Donnelly
@ 2014-04-17 16:46   ` Khem Raj
  2014-04-17 19:54   ` Leo Schwab
  1 sibling, 0 replies; 13+ messages in thread
From: Khem Raj @ 2014-04-17 16:46 UTC (permalink / raw)
  To: Martin Donnelly; +Cc: yocto, Leo Schwab

On Thu, Apr 17, 2014 at 1:49 AM, Martin Donnelly <martin.donnelly@ge.com> wrote:
> On 05/03/2014 21:55, Leo Schwab wrote:
>> Has anyone else done any work here?  Is there anything that I can
>> steal^H^H^H^H^Htake inspiration from?  Or am I in completely
>> unexplored territory?
>
> I posted an RFC patch set last year but it didn't get any traction and
> we subsequently ruled out use of go so I never followed up on it but it
> might be a useful starting point.
>
> http://lists.openembedded.org/pipermail/openembedded-core/2013-May/078606.html
>

Thats looks reasonable patch to me. Provided it can be forward ported
to gcc 4.8+
you should resubmit it for master

> Cheers
>
> - Martin
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-04-17  8:49 ` Martin Donnelly
  2014-04-17 16:46   ` Khem Raj
@ 2014-04-17 19:54   ` Leo Schwab
  2014-08-30 18:44     ` Ilya Dmitrichenko
  1 sibling, 1 reply; 13+ messages in thread
From: Leo Schwab @ 2014-04-17 19:54 UTC (permalink / raw)
  To: Martin Donnelly; +Cc: yocto, Leo Schwab

On Thu, Apr 17, 2014 at 1:49 AM, Martin Donnelly <martin.donnelly@ge.com> wrote:
> On 05/03/2014 21:55, Leo Schwab wrote:
>> Has anyone else done any work here?  Is there anything that I can
>> steal^H^H^H^H^Htake inspiration from?  Or am I in completely
>> unexplored territory?
>
> I posted an RFC patch set last year but it didn't get any traction and
> we subsequently ruled out use of go so I never followed up on it but it
> might be a useful starting point.
>
> http://lists.openembedded.org/pipermail/openembedded-core/2013-May/078606.html
>
We cobbled together our own recipes to build the Go compiler
(available upon request), which seem to be working well enough.  We
didn't need to make any changes to the recipes building the GCC
toolchain.

What I was more interested in learning was how people were integrating
the building of Go applications into Yocto.  Specifically: 'go get
foo' will build 'foo' and, in the process, fetch and build all its
dependencies.  This conflicts directly with Yocto's duties -- fetching
and building dependencies.

My current not-solution is rather ugly:  Create a repository that is a
standard Go build environment pre-populated with the app source code
and all of its dependencies.  The idea is that 'go get foo' will find
everything it needs already there and won't try and fetch anything
else.  Then create a simple Yocto recipe that fetches this repository
and builds it using 'go get ...'.  The repository itself is maintained
via rather delicate use of git-subtree.

This gets the job done, and prevents Go and Yocto having a fight about
who fetches what and how, but it's damned ugly...

Schwab


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-04-17 19:54   ` Leo Schwab
@ 2014-08-30 18:44     ` Ilya Dmitrichenko
  2014-09-10 12:53       ` Ilya Dmitrichenko
  0 siblings, 1 reply; 13+ messages in thread
From: Ilya Dmitrichenko @ 2014-08-30 18:44 UTC (permalink / raw)
  To: Leo Schwab; +Cc: yocto

Hi Leo and Martin,

On 17 April 2014 20:54, Leo Schwab <lschwab@sensity.com> wrote:
> On Thu, Apr 17, 2014 at 1:49 AM, Martin Donnelly <martin.donnelly@ge.com> wrote:
>> On 05/03/2014 21:55, Leo Schwab wrote:
>>> Has anyone else done any work here?  Is there anything that I can
>>> steal^H^H^H^H^Htake inspiration from?  Or am I in completely
>>> unexplored territory?
>>
>> I posted an RFC patch set last year but it didn't get any traction and
>> we subsequently ruled out use of go so I never followed up on it but it
>> might be a useful starting point.
>>
>> http://lists.openembedded.org/pipermail/openembedded-core/2013-May/078606.html
>>
> We cobbled together our own recipes to build the Go compiler
> (available upon request), which seem to be working well enough.  We
> didn't need to make any changes to the recipes building the GCC
> toolchain.

I would be very much interested to take a look at what you did. My
use-case right now is to build Docker with Yocto.

Are using gogcc? From what understood it doen't build static binary
like gc does... which is, to be honest, my favourite feature of Go.

> What I was more interested in learning was how people were integrating
> the building of Go applications into Yocto.  Specifically: 'go get
> foo' will build 'foo' and, in the process, fetch and build all its
> dependencies.  This conflicts directly with Yocto's duties -- fetching
> and building dependencies.

I understand your concern with `go get` fetching dependencies that
bitbake should rather fetch. However, I would rather avoid using
global $GOPATH and set it to be relative to the build directory, i.e.
have per-project $GOPATH. That way `go get` is just a step in the
build process and doesn't intervine with bitbake in any way.

I have previously written a few recipes for some Python packages, and
do know that Yocto doesn't use any of the convinient tools (i.e.
easy_install or pip), but I would debate that it should and, perhaps,
in combination with virtualenv as well. There is currently no support
for Python 3 in Yocto, which is something that needs looking into and
I would also look into using pip then also.

> My current not-solution is rather ugly:  Create a repository that is a
> standard Go build environment pre-populated with the app source code
> and all of its dependencies.  The idea is that 'go get foo' will find
> everything it needs already there and won't try and fetch anything
> else.  Then create a simple Yocto recipe that fetches this repository
> and builds it using 'go get ...'.  The repository itself is maintained
> via rather delicate use of git-subtree.
> This gets the job done, and prevents Go and Yocto having a fight about
> who fetches what and how, but it's damned ugly...

This is kind of an okay solution, as Go community is not interested to
have `go get` to handle versions of dependcy, which is somewhat fair.
So if you needs to pin specific revisions, you will have to do either
subtree or submodule or script that just clones those deps or or
anything else of this kind.

I don't think it's any useful if you have to write bitbake recipe for
each little Go library you might be using, this is not C and `go get`
just works for most part. And when it doesn't, I would either fork and
import from my own fork or checkout a working revision of give
dependency and do git add on it, checking it into my project's main
tree.

I think at this stage it's improtant to provide a working Go compiler
for the Yocto community to use on their own projects. There are
currently only very few things that one might treat as system-level
tools, well, I can only recall of one actually, and it's the one I'm
attempting to integrate - Docker.

Cheers,
-- 
Ilya


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-08-30 18:44     ` Ilya Dmitrichenko
@ 2014-09-10 12:53       ` Ilya Dmitrichenko
  2014-09-10 13:36         ` Burton, Ross
  2014-10-30  9:47         ` Maciej Borzecki
  0 siblings, 2 replies; 13+ messages in thread
From: Ilya Dmitrichenko @ 2014-09-10 12:53 UTC (permalink / raw)
  To: Leo Schwab; +Cc: yocto

Just a quick update, thought I'd let you know that I have a basic
working layer here:

https://github.com/errordeveloper/oe-meta-go


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-09-10 12:53       ` Ilya Dmitrichenko
@ 2014-09-10 13:36         ` Burton, Ross
  2014-09-10 13:43           ` Paul Eggleton
  2014-10-30  9:47         ` Maciej Borzecki
  1 sibling, 1 reply; 13+ messages in thread
From: Burton, Ross @ 2014-09-10 13:36 UTC (permalink / raw)
  To: Ilya Dmitrichenko; +Cc: yocto, Leo Schwab

On 10 September 2014 13:53, Ilya Dmitrichenko <errordeveloper@gmail.com> wrote:
> Just a quick update, thought I'd let you know that I have a basic
> working layer here:
>
> https://github.com/errordeveloper/oe-meta-go

Could you consider submitting this to the layer index, layers.openembedded.org?

Cheers,
Ross


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-09-10 13:36         ` Burton, Ross
@ 2014-09-10 13:43           ` Paul Eggleton
  0 siblings, 0 replies; 13+ messages in thread
From: Paul Eggleton @ 2014-09-10 13:43 UTC (permalink / raw)
  To: Burton, Ross; +Cc: yocto, Leo Schwab

On Wednesday 10 September 2014 14:36:37 Burton, Ross wrote:
> On 10 September 2014 13:53, Ilya Dmitrichenko <errordeveloper@gmail.com> 
wrote:
> > Just a quick update, thought I'd let you know that I have a basic
> > working layer here:
> > 
> > https://github.com/errordeveloper/oe-meta-go
> 
> Could you consider submitting this to the layer index,
> layers.openembedded.org?

He has and it's been published. Thanks for the reminder though ;)

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-09-10 12:53       ` Ilya Dmitrichenko
  2014-09-10 13:36         ` Burton, Ross
@ 2014-10-30  9:47         ` Maciej Borzecki
  2014-10-30 14:43           ` Chris Elledge
  1 sibling, 1 reply; 13+ messages in thread
From: Maciej Borzecki @ 2014-10-30  9:47 UTC (permalink / raw)
  To: yocto; +Cc: Chris Elledge, Leo Schwab

On Wednesday 10 of September 2014 13:53:14 Ilya Dmitrichenko wrote:
> Just a quick update, thought I'd let you know that I have a basic
> working layer here:
> 
> https://github.com/errordeveloper/oe-meta-go

There's also https://github.com/digitallumens/meta-golang

Based on that I've prepped some patches not long ago that integrate go into 
OE-core base on what Chris did in meta-golang. The patches are for both meta--
golang and OE-core. OE-core piece enables Go GCC frontend and libgo same way 
as Fortran or Java is handled. Also, Chris has already defined a usable 
golang.bbclass that handles gccgo build for you. So far it seems to work with 
some simple use cases on BeagleBone Black and Raspberry.

If there's interest I can update the patches to current master and post them 
to the list.

-- 

Maciej Borzęcki 
Senior Software Engineer Open-RnD Sp. z o.o. 
www.open-rnd.pl, Facebook, Twitter 
mobile: +48 telefon, fax: +48 42 657 9079 

Niniejsza wiadomość wraz z załącznikami może zawierać chronione prawem lub 
poufne informacje i została wysłana wyłącznie do wiadomości i użytku osób, do 
których została zaadresowana. Jeśli wiadomość została otrzymana przypadkowo 
zabrania się jej kopiowania lub rozsyłania do osób trzecich. W takim przypadku 
uprasza się o natychmiastowe zniszczenie wiadomości oraz poinformowanie 
nadawcy o zaistniałej sytuacji za pomocą wiadomości zwrotnej. Dziękujemy. 

This message, including any attachments hereto, may contain privileged or 
confidential information and is sent solely for the attention and use of the 
intended addressee(s). If you are not an intended addressee, you may neither 
use this message nor copy or deliver it to anyone. In such case, you should 
immediately destroy this message and kindly notify the sender by reply email. 
Thank you.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Integrating Golang
  2014-10-30  9:47         ` Maciej Borzecki
@ 2014-10-30 14:43           ` Chris Elledge
  0 siblings, 0 replies; 13+ messages in thread
From: Chris Elledge @ 2014-10-30 14:43 UTC (permalink / raw)
  To: Maciej Borzecki; +Cc: yocto, Leo Schwab

I'm actively using meta-golang for development and continuing to add features as I find them necessary. If anyone has suggestions on what would be useful as a developer of embedded go applications, let me know. 

Specifically, I am most interested on input for what would be useful configuration variables to have available for golang based recipes:
* Ways to request how to breakdown a golang project into combinations of shared libraries, static libraries, and executables.
* Being able to define which golang packages are to be placed into libraries vs statically linked into the executables.

If someone manages to get this properly integrated into yocto, I would be happy to move my development directly to the project.

-Chris

On Oct 30, 2014, at 5:47 AM, Maciej Borzecki <maciej.borzecki@open-rnd.pl> wrote:
> There's also https://github.com/digitallumens/meta-golang
> 
> Based on that I've prepped some patches not long ago that integrate go into 
> OE-core base on what Chris did in meta-golang. The patches are for both meta--
> golang and OE-core. OE-core piece enables Go GCC frontend and libgo same way 
> as Fortran or Java is handled. Also, Chris has already defined a usable 
> golang.bbclass that handles gccgo build for you. So far it seems to work with 
> some simple use cases on BeagleBone Black and Raspberry.
> 
> If there's interest I can update the patches to current master and post them 
> to the list.



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2014-10-30 14:44 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-05 21:55 Integrating Golang Leo Schwab
2014-04-16 19:10 ` Hermanus Botha
2014-04-16 19:23   ` Hermanus Botha
2014-04-16 22:57   ` Khem Raj
2014-04-17  8:49 ` Martin Donnelly
2014-04-17 16:46   ` Khem Raj
2014-04-17 19:54   ` Leo Schwab
2014-08-30 18:44     ` Ilya Dmitrichenko
2014-09-10 12:53       ` Ilya Dmitrichenko
2014-09-10 13:36         ` Burton, Ross
2014-09-10 13:43           ` Paul Eggleton
2014-10-30  9:47         ` Maciej Borzecki
2014-10-30 14:43           ` Chris Elledge

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.