Comments (18)
Did you use https://github.com/siemens/meta-iot2000/commits/jan/docker?
from meta-iot2000.
I just tried to rebuild my image with the bsp from that branch... the problem still persists. I'm currently building your kas-with-docker.yml, I will let you know the result as soon it completes
from meta-iot2000.
Unfortunately, the build fails during do_rootfs. I attached the log of the stage. The actual error seems to be opkg_solver_install: Cannot install package docker
on line 8512
from meta-iot2000.
Package does not exist - the error must have happened earlier.
BTW, are you building natively or inside the kas docker image? The latter succeeded 2 months ago here.
from meta-iot2000.
Could you point me to a log that could be useful to identify the problem?
I'm building natively on Ubuntu 16.04.3, from a fresh git clone
from meta-iot2000.
First step would be the full console log. From that we can look into which detailed log is needed (if any).
from meta-iot2000.
I didn't have infinite scrollback on my terminal emulator at that time, so the stuff left was not very useful.
Anyway, I got it to work some way. Because the build system was clearly patching go-cross, I thought that maybe the problem was in the patches themselves, so i manually patched and compiled go 1.6.4, and with that I compiled the same docker version used by meta-virtualization, and finally no more SIGILLs from docker executables.
I think the problem could be in the go-wrapper script, because after deleting it and creating two .bbappend files for docker and containerd like this:
do_compile_prepend(){
export GO386=quark
}
I managed to recompile my bsp + docker recipe image, and this time it run. So I guess that somehow go is not picking up the GO386 parameter and consequently producing code not compatible with Quark.
Regarding the problem I had with the kas-with-docker.yml image, I deleted the dummy recipe in the docker folder, and the package manager stopped complaining. I don't know if this was just a coincidence though
from meta-iot2000.
Hi, looks like the go-cross patches are working only for the docker executable. Other dependency packages like containerd and runc still give illegal instruction.
from meta-iot2000.
Not when building the jan/docker branch. I have tested the patches locally with an hello-world Go app using oe-meta-go, and that worked as well.
from meta-iot2000.
Yes, the problem lies specifically in containerd and runc. I did a gdb run and both are crashing on a xorps instruction. But I don't understand why the instruction is inside the runtime.check() function of the glibc library. Do you know a proper (yocto) way to force a global -mno-mmx flag for all the generated code?
from meta-iot2000.
containerd and runc are built with different makefiles in the docker, but they are still built with the Go compiler, not gcc. And that is being told by go-wrapper (774746e#diff-bada823f163f0098a601378434ac3160) that it should switch to 386 mode (GOARCH).
When does it crash, directly during startup? Do you have a backtrace at hand?
from meta-iot2000.
That's why I find it very strange. They should use all the same C library and the same (patched) go compiler
from meta-iot2000.
Your code is in go/src/runtime/runtime1.go, check(), not in glibc. So your compilation via Go went wrong.
from meta-iot2000.
But I'm a using a clean BSP from jan/docker, why is it working with docker and not with the rest?
from meta-iot2000.
I don't have a version of my build at hand, I can only tell that I used to have problems with those two targets as well until I added that go-wrapper concept. After that, I checked all docker binaries for unsupported MMX instructions and found none anymore.
If you are building that branch as-is via the kas config, something must be going wrong in your setup with that wrapper. Maybe instrument it and rebuild containerd to check if it is being used at all.
from meta-iot2000.
I tried to build containerd first with only the go-wrapper, then with the wrapper and a .bbappend file that enforces GO386=quark in do_compile (I wrote about that some comments ago). In both cases it doesn't work.
containerd-only-wrapper.txt
containerd-wrapper-bbappend.txt
Are you sure the wrapper is working properly? I always see this line in log builds:
containerd-0.2.2+git0ac3cd1be170d180b2baed755e8f0da547ceb267-r0 do_compile: build: unexpected operator
Also, I still can't get to run docker with only the wrapper. When I add my .bbappend in my layer instead, it's fine
from meta-iot2000.
Finally! I found the problem! It's the script indeed.
I run manually go-wrapper and this is what I was getting:
./go-wrapper: 2: [: unexpected operator
The script is run with /bin/sh and not /bin/bash, so the ==
operator on line 2 is not supported. Changing it to =
made it compatible with dash, which implements sh on Ubuntu 16.04.
This explains also why everything was fine in your container build, our environments were different.
And maybe I have an explanation on why my bbappend files were working only for docker. I think it's in the way the packages are compiled. In the docker case bitbake calls a custom script inside the docker source tree, in the other two cases instead the oe_runmake static
command is used. The latter was not picking the environment variable set beforehand, maybe.
Man, I was losing my mind on this. Do you want me to submit a PR?
from meta-iot2000.
Oh, sorry for that. I'm indeed only on distros with sh=bash, so this slips through from time to time. Please send a PR!
And, yes, that difference in building the docker binaries led to the not really clean but effective wrapper method. I tried to inject the necessary vars via bitbake means before that but eventually gave up.
from meta-iot2000.
Related Issues (20)
- Nodejs Error HOT 4
- Question: Communication between Linux and Arduino HOT 2
- Enabling CONFIG_TUN HOT 2
- Installing NodeJS 10 or above HOT 4
- udhcpc can't handle ethernet hotplug HOT 2
- No .wic file generated HOT 6
- swupdate remote HOT 20
- Error while trying to add node-red-contrib-msg-queue to a custom image HOT 4
- building the kas-example image 5 tasks failed, image not created HOT 14
- Replace node-red-contrib-iiot-opcua with node-red-contrib-opcua HOT 3
- Problem with Digital input/outputs iot 2040 HOT 15
- build error HOT 10
- Example Image not Bootable HOT 8
- Writing DQs with node-red-node-intel-gpio causes constant output of 1 HOT 2
- Pre-installed Modbus node is not compatible and leads to crash of Node-Red HOT 4
- build of an image failed with exit code '1' HOT 3
- Not possible to install nodes with V3.1.1 HOT 4
- node-red iot2040 image 3.1.1 node-red-admin not found
- Error compilation with nodejs-native version 8
- Default Siemens security policy
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from meta-iot2000.