I just wanted to know if MT is willing to publish the *container.npk*, if not then there is no point in trying to do anything as was said in some posts before.
I don't see a reason to be that black-and-white about it. All we need at this early stage is a pledge from MT that once someone produces a working TILE-based container that runs under emulation, MT will then produce the container.npk package needed to run it natively on the hardware. Having it before we have the toolchain has zero value. It's only necessary to make the last step, from emulation to native execution.
I do understand the argument that someone wouldn't want to start work on producing that toolchain without knowing whether MT will ever provide this, but understand my point in return: all we need at this stage is the
pledge, not the actuality.
That said, compiling container.npk for TILE shouldn't be more than an hour's work. The only problem with doing that early is the inverse of the prior problem: without a working container to test whether the built NPK works, MT's software developers and QA staff can do little more than throw it over the wall and pray. This is why I suggested above that it be provided under a non-warranty; "if it breaks, you get to keep both pieces" kind of thing.
Mikrotik has to have the infrastructure done because otherwise they would not be able to create ROS7 for tile.
That only helps them build container.npk for TILE. It doesn't help anyone else build OCI containers that run atop it.
MikroTik don't need a QEMU TILE emulator at all. Maybe they have it anyway, such as to speed the compile-test-debug cycle time, but it isn't a hard requirement for them, as it is with OCI container build systems. If they don't have it ready to hand and freely distributable, someone's going to have to resurrect it, which in turn is likely to require a contemporaneous (e.g. out of support for the last decade) version of Linux. Good luck finding a balance between that and the need for a version of Linux that will run a modern OCI build system. RHEL 7 still ships with Podman 1.6.4, for instance, whereas the current version is 4.9.3.
Following from that lack of a hard requirement for QEMU, MikroTik's developers also don't need TILE binfmt recognition in their development systems' kernel to pass "foreign" binaries transparently down to QEMU. This is the easiest piece to provide, but it'll likely require that you run a custom kernel on your build systems.
I have no internal information, but I fully expect that MT's developers are doing traditional cross-compilation instead, where their C compiler runs natively on x86_64 but generates TILE instructions. Nowhere is QEMU involved in this. What Docker and Podman do is entirely different: they run a native TILE compiler under QEMU to produce TILE binaries. As far as the build environment knows, there isn't any cross-compilation or emulation going on at all; code running inside it thinks it's all running native on TILE.
That in turn means that if MT were to drop their C compilation toolchain for TILE onto a file server in a tarball right this instant, the only use it would have in the project proposed in this thread is to help bootstrap the next step. Eventually that will have to be thrown away because BuildKit and Buildah require a TILE-native C compiler toolchain that produces TILE binaries, not an x86_64 to TILE cross-compiler.
That next step is a doozy compared to all the rest, a full-time project for months: a Linux distro cross-compiled for TILE, for use as a container base image.
Oh, and by "distro" I don't mean "RouterOS". The bare minimum is something like Alpine with enough of the package repo as needed to build the desired containers. Dockerfile RUN commands require a target-native Busybox runtime environment at least, and nearly all will require a package manager of some kind. When that package manager is invoked (e.g. "RUN apk add clang") you not only need it to deliver up a TILE build of Clang, but also all its dependencies: binutils, musl-dev, etc.
You don't need to port the entire Alpine package repo, but you do need to port enough of it to support your desired containers.
And then, once you've done that, you'll want to build a second container, and chances are decent it isn't going to be "FROM alpine…" but "FROM ubuntu…" or something else instead. Now you have a hard choice: either port these other containers from Ubuntu to Alpine, or undertake a repetition of the prior effort, porting Ubuntu to TILE, too.
This is not easy, by any stretch.