b2g-util-python
===============
.. image:: https://travis-ci.org/askeing/b2g-util-python.svg?branch=master
:target: https://travis-ci.org/askeing/b2g-util-python
B2G python utilities library, and some tools.
Installation
------------
To install **b2g_util**, simply running then following command.
Note: You might have to add **sudo** for getting more permission when install it into your system.
.. code-block:: bash
$ pip install -U b2g_util
And the **pip** and **setuptools** should be upgraded to latest version before install.
.. code-block:: bash
$ sudo pip install -U pip setuptools
Tools Usages
------------
There are some available b2g tools.
- b2g_backup_restore_profile
- b2g_check_versions
- b2g_enable_certapps_devtools
- b2g_flash_taskcluster
- b2g_get_crashreports
- b2g_quick_flash
- b2g_reset_phone
- b2g_shallow_flash
b2g_backup_restore_profile
++++++++++++++++++++++++++
**Note**: This is a workaround backup/restore solution due to b2g doesn't have tool to backup/restore profile.
.. code-block:: bash
usage: b2g_backup_restore_profile [-h] [-s SERIAL] (-b | -r) [--sdcard]
[--no-reboot] [-p PROFILE_DIR]
[--skip-version-check] [-v]
Workaround for backing up and restoring Firefox OS profiles. (BETA)
optional arguments:
-h, --help show this help message and exit
-s SERIAL, --serial SERIAL
Directs command to the device or emulator with the
given serial number. Overrides ANDROID_SERIAL
environment variable. (default: None)
-b, --backup Backup user profile. (default: False)
-r, --restore Restore user profile. (default: False)
--sdcard Also backup/restore SD card. (default: False)
--no-reboot Do not reboot B2G after backup/restore. (default:
False)
-p PROFILE_DIR, --profile-dir PROFILE_DIR
Specify the profile folder. (default: mozilla-profile)
--skip-version-check Turn off version check between backup profile and
device. (default: False)
-v, --verbose Turn on verbose output, with all the debug logger.
(default: False)
b2g_check_versions
++++++++++++++++++
.. code-block:: bash
usage: b2g_check_versions [-h] [--no-color] [-s SERIAL] [--log-text LOG_TEXT]
[--log-json LOG_JSON] [-v]
Check the version information of Firefox OS.
optional arguments:
-h, --help show this help message and exit
--no-color Do not print with color. NO_COLOR will overrides this
option. (default: False)
-s SERIAL, --serial SERIAL
Directs command to the device or emulator with the
given serial number. Overrides ANDROID_SERIAL
environment variable. (default: None)
--log-text LOG_TEXT Text ouput. (default: None)
--log-json LOG_JSON JSON output. (default: None)
-v, --verbose Turn on verbose output, with all the debug logger.
(default: False)
b2g_enable_certapps_devtools
++++++++++++++++++++++++++++
.. code-block:: bash
usage: b2g_enable_certapps_devtools [-h] [-s SERIAL] [--disable] [-v]
Enable/disable Certified Apps Debugging.
optional arguments:
-h, --help show this help message and exit
-s SERIAL, --serial SERIAL
Directs command to the device or emulator with the
given serial number. Overrides ANDROID_SERIAL
environment variable. (default: None)
--disable Disable the privileges. (default: False)
-v, --verbose Turn on verbose output, with all the debug logger.
(default: False)
Please enable "ADB and Devtools" of device.
Ref:
- https://developer.mozilla.org/en-US/docs/Tools/WebIDE
- https://developer.mozilla.org/en-US/docs/Tools/WebIDE/Running_and_debugging_apps#Debugging_apps
b2g_flash_taskcluster
+++++++++++++++++++++
.. code-block:: bash
usage: b2g_flash_taskcluster [-h] [--credentials CREDENTIALS] [-n NAMESPACE]
[-d DEST_DIR] [-v]
The simple GUI tool for flashing B2G from Taskcluster.
optional arguments:
-h, --help show this help message and exit
--credentials CREDENTIALS
The credential JSON file
(default: /home/askeing/tc_credentials.json)
-n NAMESPACE, --namespace NAMESPACE
The namespace of task
-d DEST_DIR, --dest-dir DEST_DIR
The dest folder (default: current working folder)
-v, --verbose Turn on verbose output, with all the debug logger.
For more information of Taskcluster, see:
- http://docs.taskcluster.net/
- https://pypi.python.org/pypi/taskcluster_util
The tc_credentials.json Template:
{
"clientId": "",
"accessToken": "",
"certificate": {
"version":1,
"scopes":["*"],
"start":xxx,
"expiry":xxx,
"seed":"xxx",
"signature":"xxx"
}
}
Temporary Credentials
*********************
You can get your temporary credentials from https://auth.taskcluster.net/ (using Persona with LDAP account).
The temporary credentials will remain valid for 31 days.
Or you can just run **taskcluster_login** to get your credentials. (Note: it will remove your old credentials file.)
tc_credentials.json
~~~~~~~~~~~~~~~~~~~
You can put the credentials into **tc_credentials.json** file under your home folder.
.. code-block:: bash
$ <YOUR_EDITOR> ~/tc_credentials.json
The file format will be:
.. code-block::
{
"clientId": "<YOUR_CLIENTID>",
"accessToken": "<YOUR_ACCESSTOKEN>",
"certificate": <YOUR_CERTIFICATE>
}
b2g_get_crashreports
++++++++++++++++++++
.. code-block:: bash
usage: b2g_get_crashreports [-h] [-s SERIAL] [-v]
Get the Crash Reports from Firefox OS Phone.
optional arguments:
-h, --help show this help message and exit
-s SERIAL, --serial SERIAL
Directs command to the device or emulator with the
given serial number. Overrides ANDROID_SERIAL
environment variable. (default: None)
-v, --verbose Turn on verbose output, with all the debug logger.
(default: False)
b2g_quick_flash
+++++++++++++++
.. code-block:: bash
usage: b2g_quick_flash [-h] [-l] [-v]
Simply flash B2G into device. Ver. 0.0.1
optional arguments:
-h, --help show this help message and exit
-l, --list List supported devices and branches. (default: False)
-v, --verbose Turn on verbose output, with all the debug logger. (default:
False)
Temporary Credentials
*********************
See **b2g_flash_taskcluster** session.
b2g_reset_phone
+++++++++++++++
.. code-block:: bash
usage: b2g_reset_phone [-h] [-s SERIAL] [-v]
Reset Firefox OS Phone.
optional arguments:
-h, --help show this help message and exit
-s SERIAL, --serial SERIAL
Directs command to the device or emulator with the
given serial number. Overrides ANDROID_SERIAL
environment variable. (default: None)
-v, --verbose Turn on verbose output, with all the debug logger.
(default: False)
b2g_shallow_flash
+++++++++++++++++
.. code-block:: bash
usage: b2g_shallow_flash [-h] [-s SERIAL] [-g GAIA] [-G GECKO]
[--keep-profile] [-v]
Workaround for shallow flash Gaia or Gecko into device.
optional arguments:
-h, --help show this help message and exit
-s SERIAL, --serial SERIAL
Directs command to the device or emulator with the
given serial number. Overrides ANDROID_SERIAL
environment variable. (default: None)
-g GAIA, --gaia GAIA Specify the Gaia package. (zip format) (default: None)
-G GECKO, --gecko GECKO
Specify the Gecko package. (tar.gz format) (default:
None)
--keep-profile Keep user profile of device. Only work with shallow
flash Gaia. (BETA) (default: False)
-v, --verbose Turn on verbose output, with all the debug logger.
(default: False)
Development
-----------
To develop the **b2g_util**, fork project from `Github <https://github.com/askeing/b2g-util-python.git>`_ and simply:
.. code-block:: bash
$ git clone https://github.com/<YOUR_ACCOUNT>/b2g-util-python.git
$ cd b2g-util-python
$ make dev-env
$ source env-python/bin/activate
Or you can run tests:
.. code-block:: bash
$ make test
You also can create the document, and then you can open **docs/index.html** to access the document.
.. code-block:: bash
$ make docs
SSL InsecurePlatformWarning
---------------------------
If you got the following error message when running the tools, please install **requests[security]** package.
.. code-block:: bash
InsecurePlatformWarning: A true SSLContext object is not available.
This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail.
For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
Install package by pip install. Please note it's not required for Python 2.7.9+.
.. code-block:: bash
pip install requests[security]
If you got **Setup script exited with error: command 'gcc' failed with exit status 1** error when install **requests[security]**, please install **libffi-dev**. (Ubuntu)
.. code-block:: bash
sudo apt-get install libffi-dev
The Other Issues
----------------
If you meet any issues related to urllib3, SSL, or tk, please install following packages. (Ubuntu)
.. code-block:: bash
sudo apt-get install python python-dev python-setuptools libffi-dev libssl-dev python-tk
sudo easy_install pip
sudo pip install -U pip setuptools
sudo pip install -U requests
sudo pip install -U requests[security]
Release History
---------------
0.0.19 (2016-03-04)
+++++++++++++++++++
**Features and Improvements**
- Add D5833 supoort of b2g_quick_flash
0.0.18 (2016-01-29)
+++++++++++++++++++
**Features and Improvements**
- Enable adb for dev tool debugging
- Update taskcluster_util to 0.0.30
**bugfixes**
- Fix the bug of adb forward.
0.0.17 (2016-01-05)
+++++++++++++++++++
**Features and Improvements**
- Update taskcluster_util to 0.0.27
0.0.16 (2015-12-24)
+++++++++++++++++++
**Features and Improvements**
- Update taskcluster_util to 0.0.26
- Add b2g_quick_flash
0.0.15 (2015-11-30)
+++++++++++++++++++
**Features and Improvements**
- Update taskcluster_util to 0.0.25
0.0.14 (2015-11-23)
+++++++++++++++++++
**Features and Improvements**
- Update taskcluster_util to 0.0.24
0.0.13 (2015-11-02)
+++++++++++++++++++
**Features and Improvements**
- Add b2g_flash_taskcluster
0.0.12 (2015-09-15)
+++++++++++++++++++
**Features and Improvements**
- Add space in filepath support for AdbWrapper's pull and push.
- Add pending/submitted filepath into result dict object for get_crashreports.
0.0.11 (2015-09-10)
+++++++++++++++++++
**Features and Improvements**
- Add keep profile feature of b2g_shallow_flash.
- Remove gecko.mstone value from pref.js when backup profile.
0.0.10 (2015-09-09)
+++++++++++++++++++
**Features and Improvements**
- Add b2g_shallow_flash tool.
- Add adb remount and adb wait-for-device.
- Modify the decompressor's method to classmethod.
0.0.9 (2015-09-09)
++++++++++++++++++
- missing some files...
0.0.8 (2015-09-07)
++++++++++++++++++
**Features and Improvements**
- Modify tools for more reusable.
- Refactoring.
- Add JSON output for get_crashreports.
**bugfixes**
- Remove unused import.
- Fix the docstrings from single-quoted to double-quoted string format.
0.0.7 (2015-08-20)
++++++++++++++++++
**Features and Improvements**
- Stop backup profil when the folder already exists.
- Refactoring all tools, move prepare() method from __init__() to run().
- Add new argument "--skip-version-check" for backup_restore_profile.
- Extract compare_version(), get_profile_path(), and get_version_from_profile() methods.
- Add docstring for creating the document.
- Add unittest for backup_restore_profile, and adb_helper.
- Update README.
**bugfixes**
- Remove unused code.
- Remove the logger from downloader and decompressor.
0.0.6 (2015-08-14)
++++++++++++++++++
**Features and Improvements**
- Use B2GHelper in b2g_backup_restore_profile.
- Refactoring the check_versions.
- Refactoring the backup_restore_profile
**bugfixes**
- Skip adding setting of enable_certapps_devtools when it doesn't need to restart.
0.0.5 (2015-08-13)
++++++++++++++++++
**Features and Improvements**
- Add **b2g_enable_certapps_devtools** tool.
- Add B2GHelper class for Firefox OS operations.
**bugfixes**
- some command will stop device with no returncode. e.g. adb shell reboot recovery.
0.0.4 (2015-08-12)
++++++++++++++++++
**Features and Improvements**
- Add **b2g_get_crashreports** tool
- Refactoring the ADBWrapper, it will raise exception when command failed.
- Return stdout and return code from device when running adb shell command.
**bugfixes**
- Set backup/restore arguments as required and put them into same group.
- Wait a moment when restarting adbd.
0.0.3 (2015-08-06)
++++++++++++++++++
**Features and Improvements**
- Added the method **AdbHelper.get_serial()** for getting the adb serial number
- Modified the classes of adb_helper
- Modified the code of tools for making them clear
**bugfixes**
- Fixed the **list index out of range** when adb server doesn't start
- Fixed the logger handle issue of tools
0.0.2 (2015-08-05)
++++++++++++++++++
- Rename the tools
- Added the prefix **b2g_** of tools
- Write the README file
0.0.1 (2015-08-05)
++++++++++++++++++
- Initiate the project
- Basic ADB commands support
- The **b2g_backup_restore_profile** (workaround) tool
- The **b2g_check_versions** tool
- The **b2g_reset_phone** tool