[ISSUE] Unable to build locally on either osx or linux with fresh Workbench install

Hello,

I’ve tried installing Workbench on both OSX and Ubuntu and gotten similar results, so I thought I’d report them here and ask for help. Basically I:

  • follow the installation instructions for Workbench (on both platform)
  • download files from a working Argon project from the WebIDE
  • modify the project.properties file to include a name
  • import the project into Workbench
  • install all of the libraries required by the project using “Install Library”. This install appears to complete succesfully
  • “cloud compile” works fine, as expected
  • In a Terminal, running the CLI command particle compile argon works fine. I’m subsequently able to particle flash --usb .. and verify the code works the same as if it were flashed OTA from the WebIDE
  • Attempting to compile locally from Workbench results in this kind of error:
> Executing task: make -f '/Users/foo/.particle/toolchains/buildscripts/1.9.2/Makefile' compile-user -s <


:::: COMPILING APPLICATION

Creating /..../proj/web_display_photon02/target/1.5.2/argon/platform_user_ram.ld ...
/..../proj/proj/web_display_photon02/web-display-photon02.ino:2:35: fatal error: JsonParserGeneratorRK.h: No such file or directory
compilation terminated.
make[3]: *** [../build/target/user/platform-12-m/web_display_photon02/web-display-photon02.o] Error 1
make[2]: *** [user] Error 2
make[1]: *** [modules/argon/user-part] Error 2
make: *** [compile-user] Error 2
The terminal process "/bin/bash '-c', 'make -f '/Users/foo/.particle/toolchains/buildscripts/1.9.2/Makefile' compile-user -s'" terminated with exit code: 2.

JsonParserGeneratorRK was previously installed using the “Install library” command. If I reorder the include order of libraries in my .ino file, make will complain about a different missing library (eg Adafruit_GFX_RK). So apparently installed libraries are not found by the local build.

My project.properties looks like this:

name=web_display_photon02
dependencies.Adafruit_SSD1306_RK=1.3.2
dependencies.Adafruit_GFX_RK=1.5.8
dependencies.JsonParserGeneratorRK=0.1.3

I’m probably missing some key step to my Workbench install process. I’ll paste the (edited) Audit Environment results below. Thanks for any help! I really want to get local builds and debugging working with Workbench.



{
    "workspace": {
        "name": "display_argon",
        "isWorkspace": false,
        "folders": [
            {
                "location": "/Users/foo/Documents/proj/display_argon",
                "hasValidPath": true,
                "settings": {
                    "firmwareName": "deviceOS",
                    "firmwareVersion": "1.5.2",
                    "targetDevice": "argonst",
                    "targetPlatform": "argon",
                    "compileButtonAction": "localAppDeviceOS",
                    "flashButtonAction": "localAppDeviceOS",
                    "disableWelcomeScreen": false,
                    "disableDeviceOSOutdatedCheck": false,
                    "disableLocalCompilerDirtyCheck": false,
                    "enableVerboseLocalCompilerLogging": false,
                    "compileDefines": [],
                    "customDeviceOSLocation": "",
                    "maxAllowedToolchains": 4
                },
                "files": [
                    ".git",
                    ".git/COMMIT_EDITMSG",
                    ".git/HEAD",
                    ".git/config",
                    ".git/description",
                    ".git/hooks",
                    ".git/index",
                    ".git/info",
                    ".git/logs",
                    ".git/objects",
                    ".git/refs",
                    ".vscode",
                    ".vscode/launch.json",
                    ".vscode/settings.json",
                    "argon_firmware_1603388463469.bin",
                    "argon_firmware_1603388702477.bin",
                    "argon_firmware_1603389098010.bin",
                    "argon_firmware_1603389258065.bin",
                    "argon_firmware_1603389579478.bin",
                    "argon_firmware_1603390185521.bin",
                    "argon_firmware_1603390938206.bin",
                    "project.properties",
                    "target",
                    "target/1.5.2",
                    "display_argon.cpp",
                    "display_argon.ino"
                ]
            }
        ]
    },
    "cli": {
        "binpath": "/Users/foo/.vscode/extensions/particle.particle-vscode-core-1.12.5/src/cli/bin/darwin/amd64/particle",
        "ok": true,
        "version": "2.8.1",
        "installed": 1602269951849
    },
    "localCompiler": {
        "ok": true,
        "dependencies": [
            {
                "id": "deviceOS@1.5.4-rc.2",
                "ok": true
            },
            {
                "id": "gcc-arm@5.3.1",
                "ok": true
            },
            {
                "id": "buildtools@1.1.1",
                "ok": true
            },
            {
                "id": "buildscripts@1.9.2",
                "ok": true
            },
            {
                "id": "openocd@0.11.2-adhoc6ea4372.0",
                "ok": true
            },
            {
                "id": "deviceOS@1.5.2",
                "ok": true
            }
        ]
    },
    "platform": {
        "os": "darwin",
        "type": "Darwin",
        "release": "19.6.0",
        "arch": "x64",
        "path": {
            "key": "PATH",
            "value": "/Users/foo/.pyenv/shims:/Users/foo/.cargo/bin:/usr/local/bin:/usr/local/sbin:/Users/foo/bin:/Users/foo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin"
        },
        "homeDir": "/Users/foo",
        "particleDir": "/Users/foo/.particle",
        "localCompilerToolchainDir": "/Users/foo/.particle/toolchains"
    },
    "env": {
        "ELECTRON_RUN_AS_NODE": "1",
        "USER": "foo",
        "DISPLAY": "/private/tmp/com.apple.launchd.S8CuT2mhrn/org.macosforge.xquartz:0",
        "LOGNAME": "foo",
        "PATH": "/Users/foo/.pyenv/shims:/Users/foo/.cargo/bin:/usr/local/bin:/usr/local/sbin:/Users/foo/bin:/Users/foo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin",
        "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.AKdZQuPlMg/Listeners",
        "HOME": "/Users/foo",
        "SHELL": "/bin/zsh",
        "__CF_USER_TEXT_ENCODING": "0x1F5:0x0:0x0",
        "TMPDIR": "/var/folders/7n/hvxxf92n2czg2lv862k0v5bm0000gn/T/",
        "XPC_SERVICE_NAME": "com.microsoft.VSCode.17804",
        "XPC_FLAGS": "0x0",
        "ORIGINAL_XDG_CURRENT_DESKTOP": "undefined",
        "VSCODE_NLS_CONFIG": "{\"locale\":\"en-us\",\"availableLanguages\":{},\"_languagePackSupport\":true}",
        "VSCODE_NODE_CACHED_DATA_DIR": "/Users/foo/Library/Application Support/Code/CachedData/d2e414d9e4239a252d1ab117bd7067f125afd80a",
        "VSCODE_LOGS": "/Users/foo/Library/Application Support/Code/logs/20201022T111629",
        "VSCODE_IPC_HOOK": "/Users/foo/Library/Application Support/Code/1.50.1-main.sock",
        "VSCODE_PID": "34925",
        "SHLVL": "0",
        "PWD": "/",
        "OLDPWD": "/",
        "PYENV_SHELL": "zsh",
        "_": "/Users/foo/Applications/Visual Studio Code.app/Contents/MacOS/Electron",
        "AMD_ENTRYPOINT": "vs/workbench/services/extensions/node/extensionHostProcess",
        "PIPE_LOGGING": "true",
        "VERBOSE_LOGGING": "true",
        "VSCODE_IPC_HOOK_EXTHOST": "/var/folders/7n/hvxxf92n2czg2lv862k0v5bm0000gn/T/vscode-ipc-d14dc424-f689-493c-af08-436b5060622e.sock",
        "VSCODE_HANDLES_UNCAUGHT_ERRORS": "true",
        "VSCODE_LOG_STACK": "false",
        "APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL": "true"
    },
    "versions": {
        "node": "12.14.1",
        "v8": "8.3.110.13-electron.0",
        "uv": "1.33.1",
        "zlib": "1.2.11",
        "brotli": "1.0.7",
        "ares": "1.15.0",
        "modules": "80",
        "nghttp2": "1.40.0",
        "napi": "5",
        "llhttp": "2.0.1",
        "http_parser": "2.8.0",
        "openssl": "1.1.0",
        "cldr": "36.0",
        "icu": "65.1",
        "tz": "2020a",
        "unicode": "12.1",
        "electron": "9.2.1"
    },
    "vscode": {
        "appName": "Visual Studio Code",
        "appRoot": "/Users/foo/Applications/Visual Studio Code.app/Contents/Resources/app",
        "machineId": "8276f2e77c61acb501900d2f9863bd67b28534e52b30b6129675b99b058d3859",
        "sessionId": "3282013f-4f94-4310-aa46-ea1535e3d2f21603391401118",
        "version": "1.50.1"
    },
    "extensions": [
        {
            "id": "ms-vscode.js-debug",
            "version": "1.50.2"
        },
        {
            "id": "ms-vscode.js-debug-companion",
            "version": "1.0.8"
        },
        {
            "id": "ms-vscode.node-debug",
            "version": "1.44.14"
        },
        {
            "id": "ms-vscode.node-debug2",
            "version": "1.42.5"
        },
        {
            "id": "ms-vscode.references-view",
            "version": "0.0.68"
        },
        {
            "id": "ms-vscode.vscode-js-profile-table",
            "version": "0.0.11"
        },
        {
            "id": "marus25.cortex-debug",
            "version": "0.3.7"
        },
        {
            "id": "ms-vscode.cpptools",
            "version": "1.0.1"
        },
        {
            "id": "particle.particle-vscode-core",
            "version": "1.12.5"
        },
        {
            "id": "particle.particle-vscode-pack",
            "version": "1.12.5"
        },
        {
            "id": "particle.particle-vscode-snippets",
            "version": "1.12.5"
        },
        {
            "id": "particle.particle-vscode-theme",
            "version": "1.12.5"
        }
    ]
}




You may want to start with a project that you create via image
And then drop the files from the Web IDE project into their respective places.

AFAICT the Web IDE does hold the project sources next to the project.properties but Workbench places them in its src folder.

1 Like

Thank you for the suggestion. I tried recreating the project with Create New Project, edited the project.properties to include the required libraries, and replaced the template .ino file content. Trying to compile the project gave the same error (missing library). I then tried re-installing the required libraries and rebuilt.

So if I understand correctly, installing libraries is per-project rather than a Workbench global setting? And Workbench does not automatically parse project.properties to understand which libraries need to be installed?

Also it appears that importing a project directly from WebIDE doesn’t work (need to first add the name= property, then need to ensure that the directory structure matches what Workbench generates with a new project).

Correct. The dependencies in project.properties are only used for cloud builds.
A local/offline build would make little sense without the required library sources already downloaded.

That is correct too. But you are not the first to long for such a feature.
@m_m may have it on a wish list already :wink:

2 Likes

Yep everything that @ScruffR said :pray:

Particle Workbench has an import command - cmd+shift+p and then pick the Particle: Import Project entry.

Unfortunately, the WebIDE does not always export projects in a form that Workbench understands. To be compatible, your project should use the following layout:

my-project
├── src
│    └── my-project.ino
├── project.properties
└── README.md

and have a project.properties that at a minimum contains a name field:

name=my-project

if your project uses libraries, the Particle: Import Project command will ensure those are installed - e.g. a project.properties file like:

name=my-project
dependencies.dotstar=0.0.4
dependencies.MQTT=0.4.28

…will yield a project structure like:

my-project
├── .vscode
│    ├── settings.json
│    └── ...
├── lib
│    ├── dotstar
│    │    └── ...
│    └── MQTT
│    │    └── ..
├── src
│    └── my-project.ino
├── project.properties
└── README.md

also if you haven’t already seen them, we have a bunch of docs and walk-thru videos:

in particular, you might want to check out:

Getting Started with Particle Workbench:

Building Firmware Locally with Particle Workbench:

hope it helps :+1:

3 Likes

Thanks for all the helpful details. It appears that a missing README.md file was causing project import to fail (and causing automatic library install to fail). Once I added a placeholder readme in the project layout recommended, project import proceeded smoothly.

Thanks again!