Cool. Are DoFn (et al) references compatible across cross-compiled binaries?
On Tue, Jan 26, 2021 at 11:23 AM Robert Burke <rob...@frantil.com> wrote: > Go cross compilation is as simple as setting the right flag env variables > [1], but can be as complicated as requiring a cross compiling GCC instance > installed if CGO[2] is necessary. I think we're probably clear on just > needing the flag though for the various Boot executables. > > For go pipelines we'd need to update the shared runner code to support > selecting the cross compiled worker binary environment. I believe it's hard > set to amd64 linux at present, but that's a separate issue. > > [1] https://golangcookbook.com/chapters/running/cross-compiling/ > [2] https://golang.org/cmd/cgo/ > > On Tue, Jan 26, 2021, 10:25 AM Robert Bradshaw <rober...@google.com> > wrote: > >> +1 >> >> I don't think it would be that hard to build and release arm-based docker >> images. (Perhaps just a matter of changing the docker file to depend on a >> different base, and doing some cross-compile. That would suss out whether >> we're inadvertently taking on any incompatible dependencies.) >> >> Theoretically, if one does that and manually specifies the container, it >> could just work for Python (assuming no wheel files are specified as manual >> dependencies). For Java, if one builds/deploys an uberjar (on a different >> architecture), there may be issues in any transitive dependency that has >> JNI code (us or users). I'd imagine this issue is common to and being >> explored by many of the other Java big data systems in use; it'd be >> interesting to know what solutions are out there. >> >> For go, the executable is uploaded directly into the container. We'd >> probably have to do something fancier like cross-compiling the executable >> (and making sure the UserFn references, which I think are just pointers >> into the binary, still work if the launcher is one architecture and the >> workers another). >> >> Definitely worth exploring. >> >> >> >> >> On Tue, Jan 26, 2021 at 10:09 AM Ismaël Mejía <ieme...@gmail.com> wrote: >> >>> I stumbled today on this user request: >>> BEAM-10982 Wheel support for linux aarch64 >>> >>> It made me wonder if with the advent of ARM64 processors not only in >>> the client but server side (Graviton and others) if it is worth that >>> we start to think about having support for this architecture on the >>> python installers and in the docker images. It seems that for the >>> latter it should not be that difficult given that our parent images >>> are already multi-arch. >>> >>> Are there some possible issues or binary/platform specific >>> dependencies that impede us from doing this? >>> >>