microsoft / vscode-azure-iot-tools

The ultimate collection of extensions for working with Azure IoT in VS Code!
https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-tools
MIT License
21 stars 18 forks source link

Edge module Cross compilation issue By using the VS code 1.60.1. #44

Open sumadhurakalyan opened 3 years ago

sumadhurakalyan commented 3 years ago

Hi Team, Am trying to Cross compile the edge module by using the VS code version 1.60.1 which fallen in to comparability issue with following error.

Sending build context to Docker daemon 21.5kB Step 1/14 : FROM arm32v7/ubuntu:bionic AS base ---> 4fb51db5234a Step 2/14 : RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common && add-apt-repository -y ppa:aziotsdklinux/ppa-azureiot && apt-get update && apt-get install -y azure-iot-sdk-c-dev && rm -rf /var/lib/apt/lists/* ---> [Warning] The requested image's platform (linux/arm/v7) does not match the detected host platform (linux/amd64) and no specific platform was requested ---> Running in 24b6634392b0 standard_init_linux.go:228: exec user process caused: exec format error

Below are the environment details: Host machine: Ubuntu :20.04. sudo docker info [sudo] password for ssk: Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Build with BuildKit (Docker Inc., v0.6.1-docker) scan: Docker Scan (Docker Inc., v0.8.0)

Server: Containers: 13 Running: 0 Paused: 0 Stopped: 13 Images: 4 Server Version: 20.10.8 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: e25210fe30a0a703442421b0f60afac609f950a3 runc version: v1.0.1-0-g4144b63 init version: de40ad0 Security Options: apparmor seccomp Profile: default Kernel Version: 5.11.0-34-generic Operating System: Ubuntu 20.04.3 LTS OSType: linux Architecture: x86_64 CPUs: 16 Total Memory: 15.38GiB Name: ssk-inspiron-7510 ID: HQSB:LAMF:VILT:U3ZG:SWMZ:KCP7:ZDM2:VZYH:2IKV:LDYK:UCWN:NHCH Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false

Target platfotm:

Raspberry pi 4 model B.

Note: when i select the platform as amd64 no issue is found.

Tutorial link :

https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-c-module?view=iotedge-2018-06

marianan commented 3 years ago

@sumadhurakalyan thanks for filing this issue. Docker multi arch support for Windows and Mac is built in Docker Desktop, which is why the arm build on amd64 host succeeds without any additional configurations for Mac and Windows. On Linux however docker needs a cli plugin - buildx to successfully build multi arch.

Here are some of the references I found online. Please let us know if this works for your scenario. Thanks

https://docs.docker.com/desktop/multi-arch/#multi-arch-support-on-docker-desktop https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/ https://docs.docker.com/buildx/working-with-buildx/