Hello, I'm relatively new to OpenEmbedded and Yocto, so I'm still wrapping my head around building recipes and using SDK's based on bitbake-created images.
I'm working with a combination of ROS and Yocto for the Raspberry Pi. I'm trying to put together a workflow for application development. I'm able to create ROS recipes that install and run on the RasPi directly using bitbake and writing an SD image, but it's a time-consuming process if I'm working on testing application code that is hardware dependent (ie -- requires sensor connections to run properly). What I'd prefer is something more like what's described in this thread: https://github.com/bmwcarit/meta-ros/issues/380 These are the steps I followed - I created some .bbappend files in my own layer to add nativesdk support as per referenced thread for - python-catkin-pkg, - python-empy, - catkin, - catkin-runtime. - I created an SDK using the 'raspberrypi2' machine from 'meta-raspberrypi' - MACHINE="raspberrypi2" bitbake ngt-alpha3-sdk -c populate_sdk - I installed the SDK and ran the environment script. - I fixed the ROS environment variables to point to the SDK path versions of the software. (No ROS setup file is generated in the SDK, and I haven't looked into fixing that so this is manual - Create a catkin workspace and run 'catkin_init_workspace': $ . > ~/opt/phytec-yogurt/2.0.2/environment-setup-cortexa7hf-vfp-vfpv4-neon-phytec-linux-gnueabi > $ mkdir src > $ cd src/ > $ catkin_init_workspace > Traceback (most recent call last): > File > "/home/amos/opt/phytec-yogurt/2.0.2/sysroots/x86_64-yogurtsdk-linux/usr/lib/python2.7/site.py", > > line 553, in <module> > main() > File > "/home/amos/opt/phytec-yogurt/2.0.2/sysroots/x86_64-yogurtsdk-linux/usr/lib/python2.7/site.py", > > line 535, in main > known_paths = addusersitepackages(known_paths) > File > "/home/amos/opt/phytec-yogurt/2.0.2/sysroots/x86_64-yogurtsdk-linux/usr/lib/python2.7/site.py", > > line 266, in addusersitepackages > user_site = getusersitepackages() > File > "/home/amos/opt/phytec-yogurt/2.0.2/sysroots/x86_64-yogurtsdk-linux/usr/lib/python2.7/site.py", > > line 241, in getusersitepackages > user_base = getuserbase() # this will also set USER_BASE > File > "/home/amos/opt/phytec-yogurt/2.0.2/sysroots/x86_64-yogurtsdk-linux/usr/lib/python2.7/site.py", > > line 230, in getuserbase > from sysconfig import get_config_var > File > "/home/amos/opt/phytec-yogurt/2.0.2/sysroots/x86_64-yogurtsdk-linux/usr/lib/python2.7/sysconfig.py", > > line 10, in <module> > 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}', > AttributeError: 'module' object has no attribute 'lib' > I feel like there's some python configuration somewhere I'm missing, or possibly a package. The same python script (sysconfig.py) on my base system (Ubuntu Trusty) doesn't refer to 'sys.lib'. Has anyone had success in getting this to work? Is there a step somewhere I'm missing? Thanks, -Amos Image Recipe: inherit core-image extrausers catkin > > USERNAME = "testuser" > > EXTRA_USERS_PARAMS = "useradd -P '${USERNAME}' ${USERNAME};" > > IMAGE_ROOTFS_SIZE ?= "8192" > > IMAGE_INSTALL = " \ > packagegroup-machine-base \ > packagegroup-core-boot \ > packagegroup-hwtools \ > packagegroup-benchmark \ > packagegroup-userland \ > " > > IMAGE_INSTALL += "opkg rosbash roslaunch rosout rostopic ngt-control > geometry-msgs" > IMAGE_INSTALL += "git gcc kernel-dev tcp-wrappers nfs-utils > python-catkin-pkg python catkin" > IMAGE_INSTALL += "ngt-control-systemd-alpha3" > IMAGE_INSTALL_append_raspberrypi2 = " wiringpi" > > IMAGE_FEATURES += "dev-pkgs tools-debug eclipse-debug tools-profile > tools-testapps debug-tweaks" > IMAGE_FEATURES_beagleboneblack-1 += "tools-sdk" > IMAGE_FEATURES_phycore-am335x-1 += "tools-sdk" > > TOOLCHAIN_HOST_TASK += " \ > nativesdk-cmake \ > nativesdk-catkin \ > nativesdk-catkin-dev \ > nativesdk-python-catkin-pkg \ > nativesdk-python-catkin-pkg-dev \ > nativesdk-catkin-runtime \ > nativesdk-catkin-runtime-dev \ > " > > export IMAGE_BASENAME = "ngt-alpha3-sdk" >
