Unable to build a ROS snap


#1

I am trying to create a snap for a ROS workspace. When I view the traceback it tells me that the source: directory is not a directory. The text is below, followed by the snapcraft output, and my yaml file. I have confirmed the path is indeed a directory and spelled correctly and it is the base of the ROS workspace (e.g the src directory is in there). Thanks in advance for any help.

copy_tree
** raise NotADirectoryError("{!r} is not a directory".format(source_tree))**
NotADirectoryError: ‘/home/harvester/projects/harvester_machine’ is not a directory

Output from snapcraft

Using 'snap/snapcraft.yaml': Project assets will be searched for from the 'snap' directory.
Launching a VM.
Using 'snap/snapcraft.yaml': Project assets will be searched for from the 'snap' directory.
Hit http://archive.ubuntu.com/ubuntu bionic InRelease                                                  
Hit http://archive.ubuntu.com/ubuntu bionic-updates InRelease                                          
Get:1 http://archive.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]                             
Hit http://packages.ros.org/ros/ubuntu bionic InRelease                                                
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]                            
Fetched 177 kB in 0s (0 B/s)                                                                           
Pulling workspace 
Sorry, an error occurred in Snapcraft.
We would appreciate it if you anonymously reported this issue.
No other data than the traceback and the version of snapcraft in use will be sent.
Would you like to send this error data? (Yes/No/Always/View) [no]:

My yaml

name: harvester-machine
base: core18
version: '1.2'
summary:  Harvester Machine Software
description: |
  The Perfect Produce Picking Platform Package.

grade: devel
confinement: devmode

parts:
  workspace:
    plugin: catkin
    source: /home/harvester/projects/harvester_machine
    source-space: src
    source-type: local
    catkin-packages: [harvester_machine] 

apps:
  roscore:
    command: roscore
    plugs: [network, network-bind]

#2

My guess is that “source” wants a relative directory instead of an absolute?

Try adding a snap directory inside harvester_machine and putting your snapcraft.yaml file in there. Next, change the value of the “source” key to “.” to indicate that the source code is in the current directory. Then, cd to /home/harvester/projects/harvester_machine and run snapcraft there.


#3

Thanks- I had everything set up that way but I guess I never tried ‘.’ for the source string.
Now I have build problems, but that is another post…