So I've now done the following steps as you suggested after removing all the previous traces of Go from my machine to start from the scratch.
1. Install go1.4 2. Set GOROOT_BOOTSTRAP to go1.4 3. git clone go1.16 4. Run make.bat to 'make' Go on windows just to confirm that it does build fine (which it clearly does) Now, I suppose I have to 'port' the current go1.16 src folder by creating 'nsx' files similar to 'linux'? I'm now working on them and hopefully will be able to break some ground. But I also have a question - I think the reason we chose to port go 1.4 instead of the latest source is because the latest source requires a pre-existing go compiler and Nonstop (our target) machine didn't have one. I suppose your earlier response suggests that as long as the intermediate system has a pre-existing go compiler that can be used, it doesn't matter if the target environment doesn't have a Go compiler - we can still bootstrap the latest version of the source. I just wanted to confirm this as I continued. Thank you for all the assistance, much appreciated. On Wednesday, April 21, 2021 at 9:10:43 PM UTC+1 Ian Lance Taylor wrote: > On Wed, Apr 21, 2021 at 7:38 AM Shiva <[email protected]> wrote: > > > > Thank you for clearing that up, Ian. I'll set this go1.4 installation > aside and install Go 1.16 on windows then. But I am still a bit unclear on > what you mean by 'porting Go tip to support nsx' - Can you expand on what > you mean by Go tip? > > I mean the code that you get when you run "git clone > https://go.googlesource.com". The code to which we commit changes. > > Ian > > > > On Tuesday, April 20, 2021 at 9:14:13 PM UTC+1 Ian Lance Taylor wrote: > >> > >> On Tue, Apr 20, 2021 at 1:39 AM Shiva <[email protected]> wrote: > >> > > >> > I'm a bit confused now. Let me explain what I have been doing. > >> > 1. Installed go on windows (go version go1.4-bootstrap-20170531 > windows/amd64) > >> > 2. Duped linux files to nsx and added build statements > >> > At this point, I am not supposed to run bootstrap.bash but run > make.bat because my installation is on windows. And when I ran make.bat, it > failed with the following error 'unknown $GOOS nsx', and the error was from > cmd\dist\build.c because it looks for known values in the okgoos array. And > there is no way for me to get past that if I use nsx, so I basically > assumed that I had to 'add support' for a new target OS. It was the same > case with sym.c. The only way I can make it work without updating these > files would be to use goos=linux, I assume. > >> > > >> > My goal has always been to get a cross-compiled version of go1.4 so > that I can move that to nsx and then compile the latest Go version on NSX. > Please let me know if I'm not on the right direction. > >> > >> Sorry, but I don't think you're on the right direction. > >> > >> There is no reason to ever port Go 1.4 to nsx. The only reason we > >> talk about Go 1.4 at all is because it can be built without a > >> previously existing Go compiler. But you have a previously existing > >> Go compiler: Go 1.16 (or any other release) on Windows. Your goal > >> should be to port Go tip to nsx, not Go 1.4. Once you've ported Go > >> tip to support nsx, then you can build it, on Windows, using Go 1.16 > >> and bootstrap.bash. That will give you a Go toolchain that will run > >> on nsx. > >> > >> Porting Go 1.4 to nsx will be a lot of work that you will have to > >> completely redo in order to port Go tip. What you want in the end is > >> Go tip, not Go 1.4. So don't bother with Go 1.4 at all. > >> > >> Ian > >> > >> > >> > >> > On Monday, April 19, 2021 at 6:52:24 PM UTC+1 Ian Lance Taylor wrote: > >> >> > >> >> On Fri, Apr 16, 2021 at 2:28 AM Shiva <[email protected]> > wrote: > >> >> > > >> >> > Since I haven't generated the various ztypes_nsx_GOARCH.go files, > I think I need to use +build nsx and not ignore the build for types_nsx.go. > >> >> > > >> >> > I found a way to run bootstrap.bat on windows but I was told that > I had to run make.bat instead, so I did. I had to add "nsx" to the array > 'okgoos' in cmd\dist\build.c to be able to run make.bat so I did that too. > And the output from make.bat had a lot of the same warning 'this statement > may fall through [-Wimplicit-fallthrough=]' and I ignored them. And I had > to update sym.c (liblink)'s headers array with an entry for nsx which made > me realise that the following files will need to have 'switch cases' for > Hnsx on a bunch of other asm*/obj files under cmd\*l and liblink. So I did > them too. > >> >> > > >> >> > I know that I also have to update cmd\ld\elf.c where I see three > references required for Hnsx - one at elfinit and the other two under > asmbelf function - one while setting interpreter and the other for setting > elf protected headers (?). But I'm uncertain about the changes required in > that file especially the one setting the interpreter because that requires > pointing to the dynamic linker loader (different ones for OABI and EABI) in > asm.c under cmd\*l directories? Can you please advise? > >> >> > >> >> I think you are on the wrong path here. The idea of using > >> >> bootstrap.bash is that you should not have to edit any of the Go 1.4 > C > >> >> code at all. The idea is that you run bootstrap.bash on a system that > >> >> already has a working Go compiler installed. That working Go compiler > >> >> is then used as a cross-compiler to build a toolchain that will run > on > >> >> nsx. That requires editing the Go tip code to support nsx. It does > >> >> not require editing any of the Go 1.4 code, and should not require > >> >> editing any C code at all. > >> >> > >> >> Ian > >> >> > >> >> > >> >> > On Wednesday, April 14, 2021 at 8:25:55 PM UTC+1 Ian Lance Taylor > wrote: > >> >> >> > >> >> >> On Wed, Apr 14, 2021 at 8:25 AM Shiva <[email protected]> > wrote: > >> >> >> > > >> >> >> > One file specifically, types_linux.go which I duped into > types_nsx.go has a build statement that goes like this '+build ignore'. > Github discussions around this suggest to me that I don't have to build > this? But happy to be corrected. > >> >> >> > >> >> >> The "+build ignore" line means that the file will not be built as > part > >> >> >> of an ordinary "go build" or "go install". For a file like > >> >> >> syscall/types_linux.go, that is because the file originally > served as > >> >> >> input to cgo -godefs as part of generating the various > >> >> >> ztypes_linux_GOARCH.go files. > >> >> >> > >> >> >> > Also, can I build the bootstrap on windows or can I only do it > in a POSIX environment - I don't see bootstrap.bat and running > bootstrap.bash with GOOS=nsx and GOARCH=amd64 simply returns back the > prompt? > >> >> >> > >> >> >> You should be able to build a bootstrap on Windows but you'll > have to > >> >> >> either replicate bootstrap.bash in a Windows style, or you'll > have to > >> >> >> use something like cygwin to run the bootstrap.bash shell script. > >> >> >> There aren't that many real commands in bootstrap.bash so I think > that > >> >> >> creating a minimal bootstrap.bat would be fairly simple. > >> >> >> > >> >> >> Ian > >> >> > > >> >> > -- > >> >> > You received this message because you are subscribed to the Google > Groups "golang-nuts" group. > >> >> > To unsubscribe from this group and stop receiving emails from it, > send an email to [email protected]. > >> >> > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/420ce2be-b241-435f-89f9-b5f7c121bb9an%40googlegroups.com > . > >> > > >> > -- > >> > You received this message because you are subscribed to the Google > Groups "golang-nuts" group. > >> > To unsubscribe from this group and stop receiving emails from it, > send an email to [email protected]. > >> > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/3e8a31b9-f349-4984-8538-df7533fccb36n%40googlegroups.com > . > > > > -- > > You received this message because you are subscribed to the Google > Groups "golang-nuts" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/4def7bf3-5e6d-4acf-98be-6860587234e3n%40googlegroups.com > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/5bd31dc5-0ed7-4f12-af9f-230d5371bc76n%40googlegroups.com.
