Discussion:
[9fans] Go (again) on plan9/arm
(too old to reply)
l***@proxima.alt.za
2013-04-10 19:21:00 UTC
Permalink
Gorka has made good progress with his port of Go, his implementation
on the Raspberry PI tests to completion and only a few tests are
failing. The outstanding failures are being investigated and will
be corrected.

On the Sheevaplug the problem is a bit more complicated. Gorka and I
are in perfect (if there is such a state) synchronisation regarding
the Go sources: we are presently working with a copy of the "tip" Hg
release onto which CL 7987044 has been applied. The description in
the CL goes into details regarding additional adjustments required,
but is silent about the nature of the changes that were needed to the
Plan 9 distribution.

Given that Gorka and I are working on different ARM platforms, it is
not surprising that on my side testing is not as successful. On the
one hand, there may still be issues in the Go sources, but it is also
very difficult to synchronise the Plan 9 installations and at this
point I don't know what differences there may be in there.

We are expecting a release from Bell Labs of Plan 9 with 21-bit runes
replacing the current 16-bit version. This is big and difficult and
almost certainly extremely painful, so I doubt it will be completed
quickly (feel free to surprise me, guys!). I noticed some changes
being applied today, I think Geoff and Co. are approaching the problem
circumspectly and, this is my guess, by making adjustments that can be
kept self-contained. I do wish them speedy success.

In the meantime, I'd like some 9fans who may own a Sheevaplug,
possibly also other ARM equipment supported by Plan 9 - 9fans with
some interest in Go - to try to install Go on their devices. The
instructions are detailed in "codereview" CL 7987044, see the Go
documentation on how to contribute for guidelines. Briefly, the idea
is to clone the "tip" (default) Go development tree and build it
_after_ applying CL 7987044 as a patch. To the best of my knowledge,
"make.rc" will build the Go distribution and "run.rc --no-rebuild"
will run the tests.

Ideally, I'm looking for a breakthrough with a pristine Plan 9
distribution. This would require building the ARM (5?) development
toolchain, then the entirety of the runtime for the ARM as well as the
appropriate kernel(s). I guess the interested parties already know
this, as well as how to boot the ARM equipment with the most recent
available ARM kernel.

There are additional changes that must be applied to the Plan 9
distribution before we approach a successful Go build (the build is
easier, but the Go runtime needs a good few changes). The idea would
be, in parallel with Bell Labs proceeding on their own path, to
identify the changes that are absolutely critical and document them so
that we can have Go running without putting undo pressure on Bell
Labs.

I'm keen to coordinate these efforts, but Gorka, Richard Miller and
Ron Minnich may also want to participate and/or lead; I am not
volunteering their involvement, I merely mention those I know have the
interest and knwoledge to take part. There are quite a few others and
they are welcome to introduce themselves if they want to be involved.
I can't offer the same code review infrastructure as Go does, but I
believe that coreboot.org has a similar system - that's outside my
realm and each party may want to specify what rules apply to them.

I hope I'm not treading on any sensitive toes this time.

Lucio.
erik quanstrom
2013-04-10 19:53:46 UTC
Permalink
Post by l***@proxima.alt.za
We are expecting a release from Bell Labs of Plan 9 with 21-bit runes
replacing the current 16-bit version. This is big and difficult and
almost certainly extremely painful, so I doubt it will be completed
quickly (feel free to surprise me, guys!). I noticed some changes
being applied today, I think Geoff and Co. are approaching the problem
circumspectly and, this is my guess, by making adjustments that can be
kept self-contained. I do wish them speedy success.
i transitioned to 20 bit runes a few years ago, and the process was
really pain-free. Runemax is handy to have instead of just hard-coding
0xffff, and character arrays on the stack are a bit suspicious, since they
often mean UTFmax or UTFmax+1. but most programs are good-to-go
for large runes. notible exceptions that i can think of off the top of my head
are in no order:

- wc
- ed, sed, sort
- rc
- grep (for bursting rune ranges)

these are fixed in 9atom, and not a problem unless you actually use them.
there are a few problems in the libraries, also fixed. mostly in the font code.

there are also tools in 9atom to create new tables for libc in /sys/src/cmd/rune,
including a unicode 6.1 /lib/unicode.

because who doesn't want to grin

; grep grin /lib/unicode
01f600 grinning face
01f601 grinning face with smiling eyes
01f638 grinning cat face with smiling eyes
; ; unicode 01f600 01f601 01f638
😀
😁
😸

- erik
l***@proxima.alt.za
2013-04-11 05:48:30 UTC
Permalink
Post by erik quanstrom
these are fixed in 9atom, and not a problem unless you actually use them.
there are a few problems in the libraries, also fixed. mostly in the font code.
I have little doubt that your efforts will not be overloked, although
I am in no ways speaking for Bell Labs. My assumption is that Bell
Labs are making sure that any regression is detected and addressed
before releasing changes - something for which they have been
criticised in the past and which some of us consider to be their
strongest suit.

I say, let them do their job and let's assist them as far as possible.
Others are welcome to tackle this differently, no one is stopping
them. I, personally, want to submit a patch set to the Go developers
that is based on the Bell Labs distribution of Plan 9 for the Intel
386 and for some of the ARM processors; there are others that have
enhanced the Go distribution for 9atom and/or for mxn (is that the
right name?). The Go developers, I presume, will be the final arbiters
on the matter.

++L

Bakul Shah
2013-04-10 20:20:19 UTC
Permalink
Post by l***@proxima.alt.za
In the meantime, I'd like some 9fans who may own a Sheevaplug,
possibly also other ARM equipment supported by Plan 9 - 9fans with
some interest in Go - to try to install Go on their devices.
Can't go be cross-built? Having multiple cross compilers work
right is one of the best things about plan9's userland.
Skip Tavakkolian
2013-04-10 22:56:45 UTC
Permalink
the process is probably a lot easier with the right cpu type. i think it is
something like:

for each architecture (arm, 386), cpu into a machine with that architecture
and:

for (i in arm 386) {
GOARCH=$i GOBIN=/$cputype/bin ./all.rc
}

for Sheeva/Guru targets, a GOARM=5 is also needed for arm targets.

still, not as bad as what is required for other OS:
http://dave.cheney.net/2012/09/08/an-introduction-to-cross-compilation-with-go
Post by Bakul Shah
Post by l***@proxima.alt.za
In the meantime, I'd like some 9fans who may own a Sheevaplug,
possibly also other ARM equipment supported by Plan 9 - 9fans with
some interest in Go - to try to install Go on their devices.
Can't go be cross-built? Having multiple cross compilers work
right is one of the best things about plan9's userland.
l***@proxima.alt.za
2013-04-11 05:40:00 UTC
Permalink
Post by Bakul Shah
Can't go be cross-built? Having multiple cross compilers work
right is one of the best things about plan9's userland.
Yes, it is possible - to answer your question - although I've found
that having Plan 9 as a special, simpler case is actually a (minor)
liability.

I'm not sure how your question relates to the portion of my message
you quoted, my intention here is two-fold: to locate bugs in the build
procedure and testing on the one hand and to help me identify the
essential changes to the Plan 9 distribution that the Go build needs.

The latter is perhaps interference on my part, but the lack of a code
review facility for Plan 9 means that an outsider has no mechanism to
track a parallel development like the Plan 9 distribution. It also
means that no one can be sure (with all the different forks of the
Plan 9 base) what is needed for Go to build on a given one.

It's not my job either to attempt to dictate to Plan 9 developers
anywhere what they need to have in their distributions, nor to grant
Bell Labs higher authority than any of the subsequent forks as the
discriminator. But given that, in my opinion, Go is for Plan 9 is
likely to reach an insurmountable obstacle, this is how I have
approached the problem. Other suggestions are welcome.

++L
Skip Tavakkolian
2013-04-10 21:31:08 UTC
Permalink
Post by l***@proxima.alt.za
In the meantime, I'd like some 9fans who may own a Sheevaplug,
possibly also other ARM equipment supported by Plan 9 - 9fans with
some interest in Go - to try to install Go on their devices. The
instructions are detailed in "codereview" CL 7987044, see the Go
documentation on how to contribute for guidelines. Briefly, the idea
is to clone the "tip" (default) Go development tree and build it
_after_ applying CL 7987044 as a patch. To the best of my knowledge,
"make.rc" will build the Go distribution and "run.rc --no-rebuild"
will run the tests.
Ideally, I'm looking for a breakthrough with a pristine Plan 9
distribution. This would require building the ARM (5?) development
toolchain, then the entirety of the runtime for the ARM as well as the
appropriate kernel(s). I guess the interested parties already know
this, as well as how to boot the ARM equipment with the most recent
available ARM kernel.
I've been planning to try Plan9/ARM Go, so I'll give it a go. I can it on
Sheeva and GuruPlugs and possibly TrimSlice -- I need to figure out the how
to net boot it.

-Skip
Christopher Nielsen
2013-04-10 23:53:49 UTC
Permalink
I have a dreamplug I've been meaning to put Plan 9 on. I should have time
this week to get that done for testing.
--
Christopher Nielsen
"They who can give up essential liberty for temporary safety, deserve
neither liberty nor safety." --Benjamin Franklin
"The tree of liberty must be refreshed from time to time with the blood of
patriots & tyrants." --Thomas Jefferson
"The duty of a patriot is to protect his country from its government."
--Thomas Paine
Post by l***@proxima.alt.za
Gorka has made good progress with his port of Go, his implementation
on the Raspberry PI tests to completion and only a few tests are
failing. The outstanding failures are being investigated and will
be corrected.
On the Sheevaplug the problem is a bit more complicated. Gorka and I
are in perfect (if there is such a state) synchronisation regarding
the Go sources: we are presently working with a copy of the "tip" Hg
release onto which CL 7987044 has been applied. The description in
the CL goes into details regarding additional adjustments required,
but is silent about the nature of the changes that were needed to the
Plan 9 distribution.
Given that Gorka and I are working on different ARM platforms, it is
not surprising that on my side testing is not as successful. On the
one hand, there may still be issues in the Go sources, but it is also
very difficult to synchronise the Plan 9 installations and at this
point I don't know what differences there may be in there.
We are expecting a release from Bell Labs of Plan 9 with 21-bit runes
replacing the current 16-bit version. This is big and difficult and
almost certainly extremely painful, so I doubt it will be completed
quickly (feel free to surprise me, guys!). I noticed some changes
being applied today, I think Geoff and Co. are approaching the problem
circumspectly and, this is my guess, by making adjustments that can be
kept self-contained. I do wish them speedy success.
In the meantime, I'd like some 9fans who may own a Sheevaplug,
possibly also other ARM equipment supported by Plan 9 - 9fans with
some interest in Go - to try to install Go on their devices. The
instructions are detailed in "codereview" CL 7987044, see the Go
documentation on how to contribute for guidelines. Briefly, the idea
is to clone the "tip" (default) Go development tree and build it
_after_ applying CL 7987044 as a patch. To the best of my knowledge,
"make.rc" will build the Go distribution and "run.rc --no-rebuild"
will run the tests.
Ideally, I'm looking for a breakthrough with a pristine Plan 9
distribution. This would require building the ARM (5?) development
toolchain, then the entirety of the runtime for the ARM as well as the
appropriate kernel(s). I guess the interested parties already know
this, as well as how to boot the ARM equipment with the most recent
available ARM kernel.
There are additional changes that must be applied to the Plan 9
distribution before we approach a successful Go build (the build is
easier, but the Go runtime needs a good few changes). The idea would
be, in parallel with Bell Labs proceeding on their own path, to
identify the changes that are absolutely critical and document them so
that we can have Go running without putting undo pressure on Bell
Labs.
I'm keen to coordinate these efforts, but Gorka, Richard Miller and
Ron Minnich may also want to participate and/or lead; I am not
volunteering their involvement, I merely mention those I know have the
interest and knwoledge to take part. There are quite a few others and
they are welcome to introduce themselves if they want to be involved.
I can't offer the same code review infrastructure as Go does, but I
believe that coreboot.org has a similar system - that's outside my
realm and each party may want to specify what rules apply to them.
I hope I'm not treading on any sensitive toes this time.
Lucio.
Continue reading on narkive:
Loading...