github-act-runner icon indicating copy to clipboard operation
github-act-runner copied to clipboard

FreeBSD ppc64 and ppc64le aren't supported (yet?)

Open mcmilk opened this issue 2 years ago • 11 comments

Hello,

of cause, this is a go-lang issue, so I asked there also: https://github.com/golang/go/issues/59614 Just for info.

mcmilk avatar Apr 28 '23 16:04 mcmilk

AlmaLinux 8 (x86_64) has problems with the 'static' go binary:

[runner@amd64-almalinux-8 ~]$ ./github-act-runner
./github-act-runner: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./github-act-runner)
./github-act-runner: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./github-act-runner)

There are aware of this: https://github.com/golang/go/issues/58550 (and others) - so maybe an upcoming version will fix this.

mcmilk avatar Apr 29 '23 07:04 mcmilk

AlmaLinux 8 (x86_64) has problems with the 'static' go binary:

[runner@amd64-almalinux-8 ~]$ ./github-act-runner
./github-act-runner: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./github-act-runner)
./github-act-runner: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./github-act-runner)

There are aware of this: golang/go#58550 (and others) - so maybe an upcoming version will fix this.

When build with CGO_ENABLED=0 for linux (https://github.com/ChristopherHX/github-act-runner/commit/10c214d650176d89ae493531ec4a32854e533609) - it will work also on older linux boxes. The binary size is nearly the same.

mcmilk avatar Apr 29 '23 08:04 mcmilk

I have added CGO_ENABLED: 0 as default job env variable, the android cgo step set it to 1 for android ndk.

Seems like golang is playing with default values, with cgo is the binary not 'static' and linked to glibc of ubuntu-latest

ChristopherHX avatar Apr 29 '23 10:04 ChristopherHX

I have added CGO_ENABLED: 0 as default job env variable, the android cgo step set it to 1 for android ndk.

Seems like golang is playing with default values, with cgo is the binary not 'static' and linked to glibc of ubuntu-latest

The go env within "Setup go" in this build sets CGO_ENABLED="1" ...

And of cause: ignore the other changes in my commits... I did this just for fast rebuilding...

mcmilk avatar Apr 29 '23 10:04 mcmilk

Could we try to use gccgo for this arch? Have you tried this alternative go compiler somewehre?

mcmilk avatar Jul 05 '23 11:07 mcmilk

No, I have never used gccgo.

Could we try to use gccgo for this arch?

Does gcc supports go on freebsd/ppc64? I have no such hardware and would have to use full system emulation. I guess you would have to compile gcc with go enabled and hope it works.

Have you tried qemu-user for the runner?

Since I didn't made a c++ runner, is a normal g++/clang++ not enough.

ChristopherHX avatar Jul 05 '23 14:07 ChristopherHX

The default gcc package on FreeBSD does not include the gccgo part, so I need to build this myself I think. But in some first try, I would test this on amd64 platform first... when when this works, I would test it on ppc64.

FreeBSD on amd64,ppc64 and ppc64le is build with --enable-languages=c,c++,objc,fortran,jit I can give you full access to those systems if you want.... (FreeBSD on arm64, ppc64, ppc64le and amd64)

Porting golang to freebsd/ppc64 seems more complicated, and I do not have the time for getting into this.... :(

mcmilk avatar Jul 05 '23 15:07 mcmilk

Since ubuntu-22.04 has a gccgo package.... Seems like gccgo-12 doesn't work with some of the dependencies on linux:

# github.com/klauspost/compress/flate
go1: internal compiler error: in do_get_backend, at go/gofrontend/expressions.cc:13792
0x6cbe2b Array_index_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:13792
0x73c764 Set_and_use_temporary_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:1332
0x73ca08 Slice_info_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:18295
0x73c764 Set_and_use_temporary_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:1332
0x7d203a Temporary_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:632
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7cdf56 If_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:3808
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7ccf20 Block_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:2231
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x78e167 Function::build(Gogo*, Named_object*)
	../../src/gcc/go/gofrontend/gogo.cc:6639
0x7980a7 Gogo::write_globals()
	../../src/gcc/go/gofrontend/gogo.cc:1595
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions.
# github.com/cloudflare/circl/math/fp25519
../go/pkg/mod/github.com/cloudflare/[email protected]/math/fp25519/fp_amd64.s:3:10: fatal error: textflag.h: Datei oder Verzeichnis nicht gefunden
    3 | #include "textflag.h"
      |          ^~~~~~~~~~~~
compilation terminated.
# github.com/cloudflare/circl/math/fp448
../go/pkg/mod/github.com/cloudflare/[email protected]/math/fp448/fp_amd64.s:3:10: fatal error: textflag.h: Datei oder Verzeichnis nicht gefunden
    3 | #include "textflag.h"
      |          ^~~~~~~~~~~~
compilation terminated.
# github.com/rivo/uniseg
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:137:20: error: expected ‘(’
  137 | func propertySearch[E interface{ [3]int | [4]int }](dictionary []E, r rune) (result E) {
      |                    ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:137:23: error: expected ‘]’
  137 | func propertySearch[E interface{ [3]int | [4]int }](dictionary []E, r rune) (result E) {
      |                       ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:137:23: error: expected ‘;’ or newline after top level declaration
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:140:9: error: expected declaration
  140 |         to := len(dictionary)
      |         ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:141:9: error: expected declaration
  141 |         for to > from {
      |         ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:143:17: error: expected declaration
  143 |                 cpRange := dictionary[middle]
      |                 ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:144:17: error: expected declaration
  144 |                 if int(r) < cpRange[0] {
      |                 ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:146:25: error: expected declaration
  146 |                         continue
      |                         ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:147:17: error: expected declaration
  147 |                 }
      |                 ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:148:17: error: expected declaration
  148 |                 if int(r) > cpRange[1] {
      |                 ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:150:25: error: expected declaration
  150 |                         continue
      |                         ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:151:17: error: expected declaration
  151 |                 }
      |                 ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:152:17: error: expected declaration
  152 |                 return cpRange
      |                 ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:153:9: error: expected declaration
  153 |         }
      |         ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:154:9: error: expected declaration
  154 |         return
      |         ^
../go/pkg/mod/github.com/rivo/[email protected]/properties.go:155:1: error: expected declaration
  155 | }
      | ^
# github.com/klauspost/compress/huff0
go1: internal compiler error: in do_get_backend, at go/gofrontend/types.cc:4246
0x6cf507 Integer_type::do_get_backend(Gogo*)
	../../src/gcc/go/gofrontend/types.cc:4246
0x6cf507 Integer_type::do_get_backend(Gogo*)
	../../src/gcc/go/gofrontend/types.cc:4242
0x7e22db Type::get_btype_without_hash(Gogo*)
	../../src/gcc/go/gofrontend/types.cc:1069
0x7f9d0a Type::get_backend(Gogo*)
	../../src/gcc/go/gofrontend/types.cc:1038
0x7494c0 Binary_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:7160
0x75ed15 Array_index_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:13836
0x73c764 Set_and_use_temporary_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:1332
0x73ca08 Slice_info_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:18295
0x73c764 Set_and_use_temporary_expression::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/expressions.cc:1332
0x7d203a Temporary_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:632
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7cdf56 If_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:3808
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7ccf20 Block_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:2231
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7ccf20 Block_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:2231
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7ccf20 Block_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:2231
0x78d578 Block::get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/gogo.cc:7104
0x7ccf20 Block_statement::do_get_backend(Translate_context*)
	../../src/gcc/go/gofrontend/statements.cc:2231
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions.

Cryptic errors

go build -compiler gccgo

Using gccgo directly seems to be require creating a makefile from scatch a lot of import errors.

I read that go 1.18 generics are still unsupported in gccgo, but there is also a different errors.

ChristopherHX avatar Jul 05 '23 20:07 ChristopherHX

Tag v0.6.2 is the last tag of this runner, which compiles without nektos/act. (the new websocket dependency breaks gccgo).

This means it is possible to build a smaller runner, which runs commands and connect to github.

Would still require gccgo for freebsd/ppc64.

ChristopherHX avatar Jul 05 '23 20:07 ChristopherHX

You can use https://github.com/ChristopherHX/megascaler to test building with gccgo-12. It doesn't reference nektos/act.

ChristopherHX avatar Jul 05 '23 20:07 ChristopherHX

Cool, I will try and give feedback

mcmilk avatar Jul 05 '23 21:07 mcmilk