Thank you for your help. Installing the glibc.i686 package fixed the arm-none-eabi-gcc part of the problem, but I also had to install vim-common to provide the xxd command, and perl-Archive-Zip-1.58-1.fc24.noarch to provide to crc32 command. Installing these 3 extra packages makes po-util work perfectly on my Fedora virtual machine.
I suspect that to fix the problem on Arch, I will have to install something like glibc.
Installing lib32-glibc, vim and yaourt with pacman and installing perl-archive-zip from yaourt worked for Arch.
Installing the libc6-i386 package on Ubuntu fixes the problem for Travis CI.
I have added these packages to the installation part of po-util, and it should now work on all of these distributions.
I think arm-none-eabi-gcc requires the 32bit libraries for C.
I have now built a Library manager into po-util. It lets you download and use libraries hosted on GitHub easily in multiple project directories by creating symbolic links. Here is a preview of the commands for the Libray manager:
"po library": The Particle Library manager for po-util.
Libraries are kept in ~/.po-util/lib
get Download a Particle Library from GitHub and optionally name it.
po lib get https://github.com/user/libraryName libraryName
add Add a downloaded library to a po-util project.
import Libraries are added in the firmware directory as soft links.
po lib add libraryName
remove Remove a library from a po-util project.
rm Just the soft links are deleted.
po lib rm libraryName
create Create a library from C++ files in the project directory.
po lib create someLibrary
purge Uninstall (delete) a library from ~/.po-util/lib
po lib purge someLibrary
list Show all libraries in ~/.po-util/lib
help Show this help documentation.
I have also fixed some minor bugs.
I made a post about how to use the library manager to download a library available on the Web IDE.
I have added support for Atom Build shortcuts for po-util. The shortcuts are interpreted by the atom build package, and the corresponding po-util command is run.
Atom Build Shortcuts:
Build CTRL-ALT-1 These shortcuts allow you This requires the
Flash CTRL-ALT-2 to run common po-util "build" package for
Clean CTRL-ALT-3 commands quickly while Atom. Get it with:
DFU CTRL-ALT-4 using Atom. "apm install build"
I have updated the library manager commands to automatically add and remove includes to and from the firmware/main.cpp file when a library is added to a project, just like how the Web IDE adds includes when libraries are added.
First, thanks a lot for this amazing tool. I finally managed to get everything as I wanted : to be able to work off-line.
Three requests/questions regarding your tool:
When adding a library that has more than one set of .cpp/.h, only the files named by the library is imported. Example: I’m fetching Adafruit_SSD1306 from https://github.com/pkourany/Adafruit_SSD1306.git and I had to manually add the symbolic links to the Adafruit_GFX.* files.
Not sure if you can do something about this one. The following library: Adafruit_GFX has its file within a firware directory which doesnt’t seem to be consistent with what you’re expecting. As I want to kept the “git” update available, I don’t want to mess with the directory in ~.po-util/lib.
Adding automatically the header may be fine for some user but in my case, and I shouldn’t be the only one ;), the main.cpp is not where I want to add the headers. So maybe keep this as an option ?
Once again, your tools is pretty amazing, and really usefull !
po-util can now download libraries from Particle Libraries 2.0 using particle-cli.
Libraries can be downloaded using the po lib get command, supplying the name of the library instead of a URL to a repository.
Libraries are added to the central library folder ~/.po-util/lib just like Git libraries.
$ po lib get neopixel
po-util will use particle-cli to download the library because the argument is not a URL.
If you enter an invalid library name, po-util will use particle-cli to search for libraries instead, so that you can find the library you want.
$ po lib get liquid
Attempting to download liquid using Particle Libraries 2.0...
Checking library liquid...
Library liquid not found
> Found 4 libraries matching liquid
LiquidCrystal 0.0.3 1121 LiquidCrystal on Spark Core
LiquidCrystal_I2C_Spark 1.1.0 816 LiquidCrystal_I2C ported for Spark Core
Adafruit_LiquidCrystal 1.0.2 125 A fork of Adafruit LiquidCrystal library that support i2c / SPI character LCD backpack.
liquid-crystal-spi 0.0.1 88 A Hardware and Software SPI driven LiquidCrystal library for Spark Core.
You can add a library to a project the same way you would add a Git library:
It could be that it doesn’t like that your folder has a space in it. Never really seen this error before but I would definitely try renaming JazaHub Controller.
I just confirmed this on my machine, a directory path with a space in it will produce this error. I’ll try to find a fix for this. In the meantime I think po-util will work if you rename the JazaHub Controller directory to something more friendly like JazaHub-Controller.
Not that I know of really. Po-util will intelligently create the #include "folder1/folder1.h" statements when adding a library to a project however. I’m not sure how to flatten the file structure without making po-util do unnecessary work.