appc/spec

GOARCH is '386' and not 'i386'

nponeccop opened this issue · 4 comments

Apparently runtime.GOARCH value is put into image metadata when building images (it's "386" on 32-bit x86 systems):

https://github.com/appc/spec/blob/master/ace/build_aci#L25

However, during validation "i386" is used (with an extra i):

https://github.com/appc/spec/blob/master/schema/types/labels.go#L24

Sigh, this is an unfortunate side effect of 41fc66c and is probably going to bite us with other combinations too. Any bright ideas here, aside from aliasing a bunch of combinations? /cc @mpasternacki

Well, I actually built 32-bit appc on a 32-bit box. (In fact I tried to build rkt which uses the appc repo as a dependency. So reproduction isn't directly related to the commit. I think operation on 386 is not supported now, but it might be supported in the future.

I see the issue just as a typo - Go compiler developers call 32-bit 386, and you i386. Is it deeper?

Sort of - check out some historical discussion here. We are not strictly using Go's concepts for these values (at the very least since the spec should be language-agnostic)

I am not really sure what to do here aside from removing the whitelist entirely.
@mpasternacki any bright ideas?

The removal of the whitelist looks good. The architecture is commonly called i686, as many post-386 instructions are widely used these days. And the technically correct name (which nobody uses) is IA-32.

However, appc still needs a way to recognize incompatible images, so standard names of popular architectures should be in the standard document and recognized by everybody, I think.

Well, most of my thoughts have already been discussed in the issue mentioned by you.