überSpark: Add überSpark compiler, assembler, linker bridges for gcc, gnu-as and gnu-ld (amd64/armv8_32)

This task will add gcc, gnu-as, and gnu-ld compiler, assembler and linker bridges respectively for armv8_32 architecture and amd64 container within überSpark.

The ideal versions of gcc for this task will be 4.9.3, gnu-as and gnu-ld will be 2.25.1 (this is what we have been using to compiler überXMHF-rpi3 currently).

The bridges themselves will be in the following locations within the uberspark.git repository:

src-nextgen/bridges/cc-bridge/container/amd64/armv8_32/generic/gcc/v4.9.3/
src-nextgen/bridges/as-bridge/container/amd64/armv8_32/generic/gnu-as/v2.25.1/
src-nextgen/bridges/ld-bridge/container/amd64/armv8_32/generic/gnu-ld/v2.25.1/

See

src-nextgen/bridges/cc-bridge/container/amd64/x86_32/generic/gcc/v5.4.0/
src-nextgen/bridges/as-bridge/container/amd64/x86_32/generic/gnu-as/v2.26.1/
src-nextgen/bridges/as-bridge/container/amd64/x86_32/generic/gnu-ld/v2.26.1/

for examples of how this is done for gcc, gnu-as, and gnu-ld for amd64/x86_32

Also useful is the uberspark manifest reference related to compiler, assembler and linker bridges ( uberspark-bridge-{cc,as,ld}), https://docs.uberspark.org/nextgen-toolkit/reference/manifest.html#manifest-nodes-for-bridges

Linked PR:

@amitvasudevan, thanks!

I’m struggling a little to find an easy way to install gnu-{as, ld} v2.25.1. The current default by apt-get is v2.26.1. I have created containers with v2.26.1.

Also, looking at the manifest documents. Are there any modifications to the parameters that are needed? Currently I left the armv8_32 ones the same as the x86_32 ones.

I have submitted a PR with these initial containers. I also added a */default configuration. This was to have documented what the current vanilla package manager provides (and ideally to be a base for making other versions from).

The PR adds the following bridges:
x86_32:

  • gcc: v5.5.0
    armv8_32:
  • gcc: v4.9.3, v5.4.0
  • gnu-as: v2.26.1
  • gnu-ld: v2.26.1

I have submitted a PR with these initial containers.

Thanks @Cap. I have linked the PR into the OP.

I’m struggling a little to find an easy way to install gnu-{as, ld} v2.25.1. The current default by apt-get is v2.26.1. I have created containers with v2.26.1.

That should be perfectly fine.

Also, looking at the manifest documents. Are there any modifications to the parameters that are needed? Currently I left the armv8_32 ones the same as the x86_32 ones.

They have to be tweaked for the armv8_32 arch. I will leave some comments on my review of the PR and ping back.

I also added a */default configuration. This was to have documented what the current vanilla package manager provides (and ideally to be a base for making other versions from).

Nice addition. Thanks!

@Cap, have reviewed the PR and left my comments to address.

To summarize:

  • Please add your name/email to the list of files you modify/add – this will help us with attribution
  • arm gcc,ld,as bridges in general have no extra parameters within their manifest (“params” : [])
  • Can you summarize in this thread which versions of ARM gcc/ld/as your PR adds? I remember seeing at least two versions of the ARM gcc compiler.

Thanks!

@amitvasudevan,
My understanding is that Docker is deprecating the MAINTAINER field. I can add the ideas in under LABEL maintainer=name1<email1>, author=name<email>

Perfect! Sounds good. Would be great if you propagate the same to existing bridges as well.

Also, can you confirm if you can build your new bridges via the uberspark bridge config command line?

For example, to build the x86_32 gcc v5.4.0 compiler bridge you would issue:

uberspark bridge config amd64/x86_32/generic/gcc/v5.4.0 --cc --build --root-dir=<root_dir>

where <root_dir> is where you installed überSpark within your development environment

You can use --as and --ld for assembler and linker bridges respectively in the above command instead of --cc.

Thanks @Cap!

Pushed a changeset to address comments. Changing MAINTAINER to LABEL.

I can build the original baseline bridges (e.g., gcc v5.4.0). However, I might be missing a step to add the new bridges to a manifest (~/uberpsark/staging/generic-platform/uberspark/config/uberspark.json) to support the additional bridges I added being built.

Also, I added the version information to my initial post about the PR submission.

However, I might be missing a step to add the new bridges to a manifest ( ~/uberpsark/staging/generic-platform/uberspark/config/uberspark.json ) to support the additional bridges I added being built.

I think I might have missed this during my review. Your armv8_32 bridges have arch listed as x86_32, which is incorrect.

...
"devenv" : "amd64",
"arch" : "x86_32",
"cpu" : "generic",
"version" : "v2.26.1",
...

Fixed the manifest files. Also did a test build of the new bridges for armv8_32, successfully build. New commits pushed to PR to correct these issues.

Also, as a note. You must make install uberspark before being able to build these (to transfer them from the git repo to the uberspark root dir).

Thanks @Cap. PR merged:

Am closing this task.