Skip to content

Instantly share code, notes, and snippets.

@zeevro
Last active November 8, 2021 08:30
Show Gist options
  • Save zeevro/ce20d0d74a869d73119e9d1522b7caa7 to your computer and use it in GitHub Desktop.
Save zeevro/ce20d0d74a869d73119e9d1522b7caa7 to your computer and use it in GitHub Desktop.
Pebble SDK installation script

Now that Pebble servers are gone, some old components in the SDK need to be patched or replaced so they can fetch what they need from Rebble.

This script downloads and installes everything needed to build projects and also run the emulator.

Was tested on Ubuntu 18.04.2 on WSL.

#!/bin/sh
# Python 2.7 + pip + virtualenv
sudo apt install -y python2.7 python2.7-dev python2.7-pip
sudo -H python2.7 -m pip install -U pip setuptools wheel virtualenv
# Node.js + npm
sudo apt install -y libssl1.0-dev nodejs-dev npm
# Emulator dependencies
sudo apt install -y libsdl1.2debian libfdt1 libpixman-1-0
[ -e ~/pebble-dev ] || mkdir ~/pebble-dev
cd ~/pebble-dev
# Get SDK base
[ -e pebble-sdk-4.5-linux64.tar.bz2 ] || wget https://developer.rebble.io/s3.amazonaws.com/assets.getpebble.com/pebble-tool/pebble-sdk-4.5-linux64.tar.bz2
[ -e pebble-sdk-4.5-linux64 ] || tar -xf pebble-sdk-4.5-linux64.tar.bz2
cd pebble-sdk-4.5-linux64
# Add to PATH
if [ -z "$(grep 'pebble-sdk-4.5-linux64' ~/.bashrc)" ]; then
echo 'export PATH=~/pebble-dev/pebble-sdk-4.5-linux64/bin:$PATH' >> ~/.bashrc
fi
. ~/.bashrc
# Fix pypkjs in requirements.txt
if [ "$(grep 'pebble-sdk-homebrew' requirements.txt)" ]; then
cp requirements.txt requirements.txt.OLD
grep -v pypkjs requirements.txt.OLD > requirements.txt
echo 'git+https://github.com/pebble/pypkjs.git' >> requirements.txt
fi
# Replace pebble-tool
if [ "$(grep 'sdk.getpebble.com' pebble-tool/pebble_tool/sdk/manager.py)" ]; then
mv pebble-tool pebble-tool.OLD
git clone https://github.com/pebble-dev/pebble-tool.git
fi
# Install requirements
[ -e .env ] || virtualenv --no-site-packages .env
. .env/bin/activate
pip install -r requirements.txt
pip install -r pebble-tool/requirements.txt
deactivate
# Install latest SDK
echo y | pebble sdk install latest
@wolframroesler
Copy link

Thanks a lot. I got the following error:

...
  Downloading https://files.pythonhosted.org/packages/24/45/e62191d13873b1c68ebaf23aebb919576dfbb9712649ce0529a14a3a2cae/sourcemap-0.2.0-py2.py3-none-any.whl
Requirement already satisfied: websocket-client==0.32.0 in ./.env/lib/python2.7/site-packages (from -r pebble-tool/requirements.txt (line 15)) (0.32.0)
Requirement already satisfied: wheel==0.24.0 in ./.env/lib/python2.7/site-packages (from -r pebble-tool/requirements.txt (line 16)) (0.24.0)
Requirement already satisfied: colorama==0.3.3 in ./.env/lib/python2.7/site-packages (from -r pebble-tool/requirements.txt (line 17)) (0.3.3)
Requirement already satisfied: packaging==16.7 in ./.env/lib/python2.7/site-packages (from -r pebble-tool/requirements.txt (line 18)) (16.7)
Requirement already satisfied: pyparsing in ./.env/lib/python2.7/site-packages (from packaging==16.7->-r pebble-tool/requirements.txt (line 18)) (2.4.2)
Installing collected packages: sourcemap
Successfully installed sourcemap-0.2.0
Traceback (most recent call last):
  File "/opt/pebble-dev/pebble-sdk-4.5-linux64/pebble-tool/pebble.py", line 4, in <module>
    import pebble_tool
  File "/opt/pebble-dev/pebble-sdk-4.5-linux64/pebble-tool/pebble_tool/__init__.py", line 8, in <module>
    import requests.packages.urllib3 as urllib3
ImportError: No module named requests.packages.urllib3

Remedy (thanks certbot/certbot#5104):

$ pip install requests urllib3 pyOpenSSL progressbar packaging httplib2 oauth2client websocket libpebble2 colorama pypng pyqrcode --force --upgrade

Then run install_pebble_sdk.sh again.

Thanks a lot!

@dentonlt
Copy link

dentonlt commented Jan 1, 2020

I'm on Ubuntu/WSL/Windows 10. I get an error as python2.7-pip doesn't exist. At line 4, change is to python-pip.

I also get a persistent failure during pebble sdk install latest. When installing JS deps, there is a silent error and then the installer rolls back. Removing the --silent args in manager.py reveals an npm cache file permissions error. npm responds with a recommended solution:

sudo chown -R 1000:1000 "~/.npm"
`
Thanks so much for the script - saves much work and digging around!

FWIW ~

DLT

@raenye
Copy link

raenye commented May 30, 2020

Thanks for the script.
--no-site-packages is no longer needed (or accepted) by virtualenv; it's the default now.

@elektronchika
Copy link

I get the following error in WSL with Ubuntu 20.04 LTS:

install_pebble_sdk.sh: 41: virtualenv: not found
install_pebble_sdk.sh: 42: .: Can't open .env/bin/activate

What am I missing? Thank you!

@dentonlt
Copy link

dentonlt commented Sep 24, 2020

Looks like virtualenv failed to install. Try manually installing it - check the code in line 5 of the script.

If the installation worked, it might be a PATH problem. Make sure the script can find virtualenv in your PATH.

The line 42 error message is only because of the failure on line 41.

Good luck out there =p

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment