Hello! I’m a web developer new to Pebble development (though I’ve worn Pebbles since 2016 and have always wanted to develop for them).
I’ve been trying to start developing a watchface with Rocky following this tutorial but have not been able to get the initialized watchface to build.
I tried setting up my environment locally on my MacOS device as well as in the VSCode Cloud IDE. In both environments, I created a new Rocky watchface project with the SDK like the tutorial says using pebble new-project –rocky rockyface, cd rockyface, but when I run pebble build I get this Python TypeError: expected str, bytes or os.PathLike object, not list …
$ pebble build
Setting top to : /workspaces/codespaces-pebble/rockyface
Setting out to : /workspaces/codespaces-pebble/rockyface/build
Checking for program 'webpack' : /home/vscode/.pebble-sdk/SDKs/current/node_modules/.bin/webpack
Checking for program 'node, nodejs' : /usr/local/share/nvm/versions/node/v24.11.1/bin/node
Found Pebble SDK for flint in: : /home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/flint
Checking for program 'gcc, cc' : arm-none-eabi-gcc
Checking for program 'ar' : arm-none-eabi-ar
Checking if the -o link must be split from arguments : yes
Found Pebble SDK for emery in: : /home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/emery
Checking for program 'gcc, cc' : arm-none-eabi-gcc
Checking for program 'ar' : arm-none-eabi-ar
Checking if the -o link must be split from arguments : yes
Found Pebble SDK for diorite in: : /home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/diorite
Checking for program 'gcc, cc' : arm-none-eabi-gcc
Checking for program 'ar' : arm-none-eabi-ar
Checking if the -o link must be split from arguments : yes
Found Pebble SDK for chalk in: : /home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/chalk
Checking for program 'gcc, cc' : arm-none-eabi-gcc
Checking for program 'ar' : arm-none-eabi-ar
Checking if the -o link must be split from arguments : yes
Found Pebble SDK for basalt in: : /home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt
Checking for program 'gcc, cc' : arm-none-eabi-gcc
Checking for program 'ar' : arm-none-eabi-ar
Checking if the -o link must be split from arguments : yes
'configure' finished successfully (0.794s)
Waf: Entering directory `/workspaces/codespaces-pebble/rockyface/build'
[ 5/20] Compiling flint | reso: build/resources/rocky-app.js -> build/flint/resources/rocky-app.js.JS_SNAPSHOT.reso
[11/20] Processing flint | lint_js: src/rocky/index.js
Waf: Leaving directory `/workspaces/codespaces-pebble/rockyface/build'
Build failed
Traceback (most recent call last):
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/.waf3-2.1.4-e7919c666152db2545b931e52107c4b8/waflib/Task.py", line 179, in process
ret=self.run()
^^^^^^^^^^
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/.waf3-2.1.4-e7919c666152db2545b931e52107c4b8/waflib/extras/process_js.py", line 132, in run
proc=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.12/subprocess.py", line 1826, in _execute_child
and os.path.dirname(executable)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen posixpath>", line 181, in dirname
TypeError: expected str, bytes or os.PathLike object, not list
Traceback (most recent call last):
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/.waf3-2.1.4-e7919c666152db2545b931e52107c4b8/waflib/Task.py", line 179, in process
ret=self.run()
^^^^^^^^^^
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/.waf3-2.1.4-e7919c666152db2545b931e52107c4b8/waflib/extras/generate_resource_ball.py", line 13, in run
reso=resource_generator.generate_object(self,self.definition)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/common/waftools/resources/resource_map/resource_generator.py", line 90, in generate_object
return cls.generate_object(task, definition)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/common/waftools/resources/resource_map/resource_generator_js.py", line 55, in generate_object
task.generator.bld.fatal("JS compilation failed.\n"
File "/home/vscode/.pebble-sdk/SDKs/current/sdk-core/pebble/.waf3-2.1.4-e7919c666152db2545b931e52107c4b8/waflib/Context.py", line 263, in fatal
raise self.errors.ConfigurationError(msg,ex=ex)
waflib.Errors.ConfigurationError: JS compilation failed.
STDOUT:
STDERR: node:fs:560
return binding.open(
^
Error: ENOENT: no such file or directory, open '/home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.wasm'
at Object.openSync (node:fs:560:18)
at Object.readFileSync (node:fs:444:35)
at S (/home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.js:2:423)
at sa (/home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.js:1:270)
at /home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.js:11:468
at /home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.js:11:491
at Object.<anonymous> (/home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.js:18:333)
at Module._compile (node:internal/modules/cjs/loader:1761:14)
at Object..js (node:internal/modules/cjs/loader:1893:10)
at Module.load (node:internal/modules/cjs/loader:1481:32) {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/home/vscode/.pebble-sdk/SDKs/4.9.77/sdk-core/pebble/common/tools/js_tooling.wasm'
}
Node.js v24.11.1
Build failed.
Searching the error on StackOverflow and other help forums has been inconclusive, and I’m not sure what I would even change to try and get this working with Pebble since this is deep down in the Python call stack.
Any help would be appreciated! Thanks!