Is there a way to run pre-release jobs for a package for ARM architectures (i.e. armhf
or arm64
) locally? I tried to change the input parameters to generate_prerelease_script.py
with no luck.
It looks like we don’t have full support for that at the moment.
When you mutate the parameters to a supported platform. Such as if you want to switch to arm64 you need to switch to debian jessie as well.
It’s not caught well but you get an error like:
$ generate_prerelease_script.py https://raw.githubusercontent.com/ros-infrastructure/ros_buildfarm_config/production/index.yaml kinetic default ubuntu xenial arm64 angles --level 0 --output-dir ./
Fetching buildfarm configuration...
Fetching rosdistro cache...
Evaluating job templates...
Traceback (most recent call last):
File "/usr/bin/generate_prerelease_script.py", line 286, in <module>
sys.exit(main())
File "/usr/bin/generate_prerelease_script.py", line 180, in main
build_targets=release_targets_combined)
File "/usr/lib/python2.7/dist-packages/ros_buildfarm/devel_job.py", line 258, in configure_devel_job
build_file.targets[os_name][os_code_name])))
ros_buildfarm.common.JobValidationError
But once that works there appears to be some files only partially templated for debian support. So debian jessie arm64 fails. I’ve ticketed it here: https://github.com/ros-infrastructure/ros_buildfarm/issues/311
But I successfully ran a prerelease on ubuntu xenial armhf.
Thanks Tully.
My ubuntu xenial armhf
pre-release jobs fail after some initial progress with the following [docker] error:
rpc error: code = 2 desc = "oci runtime error: exec format error"
I tested the pre-release job on two different hosts (both running 64 bit Ubuntu Trusty) and got the same error. The error shows up when osrf/ubuntu_armhf
is being pulled:
Build step 7
+ sleep 1
+ python3 -u /tmp/prerelease_job/ros_buildfarm/scripts/subprocess_reaper.py 8221 --cid-file /tmp/prerelease_job/docker_build_and_install/docker.cid
+ echo # BEGIN SECTION: Build Dockerfile - build and install
# BEGIN SECTION: Build Dockerfile - build and install
+ cd /tmp/prerelease_job/docker_build_and_install
+ python3 -u /tmp/prerelease_job/ros_buildfarm/scripts/misc/docker_pull_baseimage.py
Get base image name from Dockerfile 'Dockerfile': osrf/ubuntu_armhf:xenial
Check docker base image for updates: docker pull osrf/ubuntu_armhf:xenial
xenial: Pulling from osrf/ubuntu_armhf
672333315f72: Pulling fs layer
0bc83d369be1: Pulling fs layer
0bc83d369be1: Verifying Checksum
0bc83d369be1: Download complete
672333315f72: Verifying Checksum
672333315f72: Download complete
672333315f72: Pull complete
0bc83d369be1: Pull complete
Digest: sha256:453c7f833907ee9f3fa875d7ad246e9694485332cef9b507120720e03f6e8942
Status: Downloaded newer image for osrf/ubuntu_armhf:xenial
+ docker build --force-rm -t devel_build_and_install.kinetic_prerelease .
Sending build context to Docker daemon 16.38 kB
Step 1 : FROM osrf/ubuntu_armhf:xenial
---> 821da8bb09e7
Step 2 : MAINTAINER (removed)
---> Running in 13cec68abb49
---> 835447f1563e
Removing intermediate container 13cec68abb49
Step 3 : VOLUME /var/cache/apt/archives
---> Running in a3a310ea801f
---> 679cd5230b7b
Removing intermediate container a3a310ea801f
Step 4 : ENV DEBIAN_FRONTEND noninteractive
---> Running in c668b4661cbc
---> 0913c51e48e4
Removing intermediate container c668b4661cbc
Step 5 : RUN locale-gen en_US.UTF-8
---> Running in af587de0db33
Removing intermediate container af587de0db33
rpc error: code = 2 desc = "oci runtime error: exec format error"
I was seeing that error as well when I didn’t have the ‘qemu-user-static’ package installed.
Try adding the static qemu:
apt-get install qemu-user-static