From 99f24abf8dbbe65b7c8722a44977e6e30d17b5e4 Mon Sep 17 00:00:00 2001 From: Alexey Rogachevskiy Date: Tue, 11 Feb 2020 18:46:23 +0300 Subject: [PATCH] builder: Build against python3 --- aruco_pose/cfg/DetectorParams.cfg | 2 +- aruco_pose/src/genmap.py | 2 +- aruco_pose/test/largemap.py | 2 +- builder/assets/butterfly.service | 2 +- builder/assets/clever/setup.py | 2 +- builder/assets/python3.yaml | 9 +++++++++ builder/image-ros.sh | 10 ++++++---- builder/image-software.sh | 28 +++++++++++++++++----------- builder/image-validate.sh | 1 + builder/test/tests.py | 2 +- builder/test/tests.sh | 6 ++++-- builder/test/tests_clever.py | 2 +- clover/package.xml | 8 +++++--- clover/requirements.txt | 6 +++--- clover/src/selfcheck.py | 2 +- clover/test/basic.py | 2 +- 16 files changed, 54 insertions(+), 32 deletions(-) create mode 100644 builder/assets/python3.yaml diff --git a/aruco_pose/cfg/DetectorParams.cfg b/aruco_pose/cfg/DetectorParams.cfg index c96c942b..ed4a18d3 100755 --- a/aruco_pose/cfg/DetectorParams.cfg +++ b/aruco_pose/cfg/DetectorParams.cfg @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 PACKAGE = "aruco_pose" from dynamic_reconfigure.parameter_generator_catkin import * diff --git a/aruco_pose/src/genmap.py b/aruco_pose/src/genmap.py index 0bc6fbca..72400c52 100755 --- a/aruco_pose/src/genmap.py +++ b/aruco_pose/src/genmap.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (C) 2018 Copter Express Technologies # diff --git a/aruco_pose/test/largemap.py b/aruco_pose/test/largemap.py index 56e06837..e27fe570 100755 --- a/aruco_pose/test/largemap.py +++ b/aruco_pose/test/largemap.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import sys import unittest import json diff --git a/builder/assets/butterfly.service b/builder/assets/butterfly.service index a822c816..7b7c890d 100644 --- a/builder/assets/butterfly.service +++ b/builder/assets/butterfly.service @@ -2,5 +2,5 @@ Description=Butterfly Terminal Server [Service] -ExecStart=/usr/local/bin/butterfly.server.py --host="0.0.0.0" --unsecure +ExecStart=/bin/bash -c ". /root/butterfly_env/bin/activate; butterfly.server.py --host="0.0.0.0" --unsecure" User=pi diff --git a/builder/assets/clever/setup.py b/builder/assets/clever/setup.py index 1ed75dee..d2169cdb 100755 --- a/builder/assets/clever/setup.py +++ b/builder/assets/clever/setup.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 from distutils.core import setup diff --git a/builder/assets/python3.yaml b/builder/assets/python3.yaml new file mode 100644 index 00000000..330d5912 --- /dev/null +++ b/builder/assets/python3.yaml @@ -0,0 +1,9 @@ +python3-wxgtk: + debian: + buster: [python3-wxgtk4.0] + python3-serial: + debian: + buster: [python3-serial] + python3-requests: + debian: + buster: [python3-requests] diff --git a/builder/image-ros.sh b/builder/image-ros.sh index fef4aec3..25e7b88f 100755 --- a/builder/image-ros.sh +++ b/builder/image-ros.sh @@ -68,7 +68,8 @@ my_travis_retry() { # TODO: 'kinetic-rosdep-clover.yaml' should add only if we use our repo? echo_stamp "Init rosdep" my_travis_retry rosdep init -echo "yaml file:///etc/ros/rosdep/melodic-rosdep-clover.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list +echo "yaml file:///etc/ros/rosdep/melodic-rosdep-clover.yaml" > /etc/ros/rosdep/sources.list.d/30-clover.list +echo "yaml file:///etc/ros/rosdep/python3.yaml" > /etc/ros/rosdep/sources.list.d/40-python3.list my_travis_retry rosdep update echo_stamp "Populate rosdep for ROS user" @@ -87,6 +88,7 @@ resolve_rosdep() { } export ROS_IP='127.0.0.1' # needed for running tests +export ROS_PYTHON_VERSION=3 echo_stamp "Reconfiguring Clover repository for simplier unshallowing" cd /home/pi/catkin_ws/src/clover @@ -95,8 +97,8 @@ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" echo_stamp "Build and install Clover" cd /home/pi/catkin_ws resolve_rosdep $(pwd) -my_travis_retry pip install wheel -my_travis_retry pip install -r /home/pi/catkin_ws/src/clover/clover/requirements.txt +my_travis_retry pip3 install wheel +my_travis_retry pip3 install -r /home/pi/catkin_ws/src/clover/clover/requirements.txt source /opt/ros/melodic/setup.bash catkin_make -j2 -DCMAKE_BUILD_TYPE=Release @@ -133,7 +135,7 @@ echo_stamp "Install GeographicLib datasets (needed for mavros)" \ # FIXME: Buster comes with tornado==5.1.1 but we need tornado==4.2.1 for rosbridge_suite # (note that Python 3 will still have a more recent version) -pip install tornado==4.2.1 +pip3 install tornado==4.2.1 echo_stamp "Running tests" cd /home/pi/catkin_ws diff --git a/builder/image-software.sh b/builder/image-software.sh index bb8fec54..9786d6ef 100755 --- a/builder/image-software.sh +++ b/builder/image-software.sh @@ -67,7 +67,7 @@ apt-get update \ echo "deb http://packages.ros.org/ros/ubuntu buster main" > /etc/apt/sources.list.d/ros-latest.list echo "deb http://deb.coex.tech/opencv3 buster main" > /etc/apt/sources.list.d/opencv3.list -echo "deb http://deb.coex.tech/rpi-ros-melodic buster main" > /etc/apt/sources.list.d/rpi-ros-melodic.list +echo "deb http://deb.coex.tech/meodic-py3 buster main" > /etc/apt/sources.list.d/rpi-ros-melodic.list echo "deb http://deb.coex.tech/clover buster main" > /etc/apt/sources.list.d/clover.list echo_stamp "Update apt cache" @@ -95,20 +95,21 @@ libjpeg8 \ tcpdump \ ltrace \ libpoco-dev \ -python-rosdep \ -python-rosinstall-generator \ -python-wstool \ -python-rosinstall \ +python3-rosdep \ +python3-rosinstall-generator \ +python3-wstool \ +python3-rosinstall \ build-essential \ libffi-dev \ monkey \ pigpio python-pigpio python3-pigpio \ i2c-tools \ -espeak espeak-data python-espeak \ +espeak espeak-data python3-espeak \ ntpdate \ python-dev \ python3-dev \ -python-systemd \ +python3-venv \ +python3-systemd \ mjpg-streamer \ python3-opencv \ && echo_stamp "Everything was installed!" "SUCCESS" \ @@ -121,7 +122,8 @@ sed -i "s/updates_available//" /usr/share/byobu/status/status echo_stamp "Installing pip" curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py -python get-pip.py +# Don't even bother installing pip for python2.7 +# python get-pip.py rm get-pip.py #my_travis_retry pip install --upgrade pip #my_travis_retry pip3 install --upgrade pip @@ -132,10 +134,14 @@ pip3 --version echo_stamp "Install and enable Butterfly (web terminal)" echo_stamp "Workaround for tornado >= 6.0 breaking butterfly" -my_travis_retry pip3 install tornado==5.1.1 -my_travis_retry pip3 install butterfly -my_travis_retry pip3 install butterfly[systemd] +cd /root +python3 -m venv butterfly_env +source butterfly_env/bin/activate +my_travis_retry pip install tornado==5.1.1 +my_travis_retry pip install butterfly +my_travis_retry pip install butterfly[systemd] systemctl enable butterfly.socket +deactivate echo_stamp "Install ws281x library" my_travis_retry pip install --prefer-binary rpi_ws281x diff --git a/builder/image-validate.sh b/builder/image-validate.sh index a95beecd..be9bb2e9 100755 --- a/builder/image-validate.sh +++ b/builder/image-validate.sh @@ -18,6 +18,7 @@ echo "Run image tests" export ROS_DISTRO='melodic' export ROS_IP='127.0.0.1' +export ROS_PYTHON_VERSION=3 source /opt/ros/melodic/setup.bash source /home/pi/catkin_ws/devel/setup.bash diff --git a/builder/test/tests.py b/builder/test/tests.py index f676020e..ae2f6f00 100755 --- a/builder/test/tests.py +++ b/builder/test/tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # validate all required modules installed diff --git a/builder/test/tests.sh b/builder/test/tests.sh index ef3c39b1..aff0171a 100755 --- a/builder/test/tests.sh +++ b/builder/test/tests.sh @@ -20,14 +20,16 @@ nmap --version lsof -v git --version vim --version -pip --version -pip2 --version pip3 --version tcpdump --version monkey --version pigpiod -v i2cdetect -V +# butterfly uses its own venv, so we honor that +. /root/butterfly_env/bin/activate butterfly -h +# deactivate venv as needed +deactivate espeak --version mjpg_streamer --version diff --git a/builder/test/tests_clever.py b/builder/test/tests_clever.py index 8db8b6b0..ffe251cc 100755 --- a/builder/test/tests_clever.py +++ b/builder/test/tests_clever.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # test backwards compatibility diff --git a/clover/package.xml b/clover/package.xml index 8a9a0c7e..80a8b4d6 100644 --- a/clover/package.xml +++ b/clover/package.xml @@ -1,5 +1,5 @@ - + clover 0.0.1 The Clover package @@ -37,8 +37,10 @@ rosbridge_server web_video_server tf2_web_republisher - python-lxml - python-pymavlink + python-lxml + python3-lxml + python-pymavlink + python-pymavlink diff --git a/clover/requirements.txt b/clover/requirements.txt index 94174188..27eac312 100644 --- a/clover/requirements.txt +++ b/clover/requirements.txt @@ -1,5 +1,5 @@ flask==1.1.1 docopt==0.6.2 -geopy==1.11.0 -smbus2==0.2.1 -VL53L1X==0.0.2 +geopy==1.20.0 +smbus2==0.3.0 +VL53L1X==0.0.4 diff --git a/clover/src/selfcheck.py b/clover/src/selfcheck.py index c2340784..3ffa40b3 100755 --- a/clover/src/selfcheck.py +++ b/clover/src/selfcheck.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # coding=utf-8 # Copyright (C) 2018 Copter Express Technologies diff --git a/clover/test/basic.py b/clover/test/basic.py index 39efc0bb..885f9f8b 100755 --- a/clover/test/basic.py +++ b/clover/test/basic.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import rospy import pytest from mavros_msgs.msg import State