Skip to content
No description, website, or topics provided.
Python HTML JavaScript CSS Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
updater
.gitignore
.gitreview
LICENSE.md
MANIFEST.in
README.md
app.cfg.example
device_deps.json
devices.json
requirements.txt
seed.sh
setup.py

README.md

LineageOS Updater Backend

Copyright (c) 2017 The LineageOS Project

Adding a new device

  1. Add your device to devices.json, sorted alphanumerically by codename. Fields are documented below.
  2. Submit your change to gerrit (this repository is configured for use with git review)

devices.json

devices.json is an array of objects, each with several fields:

  • model: should be the first thing on the line, and is the device's codename (PRODUCT_DEVICE) - e.g. i9300.
  • oem: the manufacturer of the device. (PRODUCT_BRAND) - e.g. Samsung.
  • name: the user-friendly name of the device - e.g. Galaxy S III (Intl). Long values will overflow and look bad, so limit this to around 25 characters.
  • has_recovery: (optional) whether or not the device has a separate recovery partition. Defaults to true.

This file is no longer read from disk by the application and must be loaded into mongo. To do so, run:

FLASK_APP=updater/app.py flask import_devices

Development set up:

  1. Install requirements with pip install -r requirements.txt
  2. Install editable updater module with pip install -e .
  3. Copy app.cfg.example to app.cfg
  4. Import the devices list with FLASK_APP=updater/app.py flask import_devices
  5. Run with FLASK_APP=updater/app.py flask run

API Keys

Any method with the @api_key_required decorate requires an API key. You can generate one by running:
FLASK_APP=updater/app.py flask api_key [OPTIONS]"

Options:
  --comment TEXT
  --remove TEXT
  --print
  --help          Show this message and exit.

Adding and removing entries:

To add use FLASK_APP=updater/app.py flask addrom [OPTIONS]

Options:
  -f, --filename TEXT   [required] (Example: lineage-14.1-20170114-NIGHTLY-v500.zip)
  -d, --device TEXT     [required] (Example: v500)
  -v, --version TEXT    [required] (Example: 14.1)
  -t, --datetime TEXT   [required] (Example: "2017-01-14 13:59:25")
  -r, --romtype TEXT    [required] (Example: nightly)
  -m, --md5sum TEXT     [required] (Example: 0f80ec88915e8d02f13cfe83d05f4a05)
  -u, --url TEXT        [required] (Example: https://mirrobits.lineageos.org/full/lineage-14.1-20170114-NIGHTLY-v500.zip)
  --help                Show this message and exit.

To remove use FLASK_APP=updater/app.py flask delrom [OPTIONS]

Options:
  -f, --filename TEXT  [required]
  --help               Show this message and exit.

Example API Calls:

Obtaining rom list for a device:
GET /api/v1/<device>/<romtype>/<incremental>?after=<utc_timestamp>&version=<14.1> <device> - Name of device. Example: d2vzw
<romtype> - Type of rom. Example: nightly
<incremental> - Caller device's incremental ID (ro.build.incr). If any zips are available that updates the given incremental version, those are provided rather than full roms.
<after> - Timestamp for current build on device. (optional)
<romversion> - Version of rom. Example: 14.1(optional)

Adding a build (requires an API key, see above)
POST /api/v1/add_build

{
  "device": "str",
  "filename": "str",
  "md5sum": "str",
  "romtype": "str",
  "url": "str",
  "version": "str"
}

To remove a build (requires an API key, see above)
POST /api/v1/del_build

{
  "id": "str"
}

where "id" is a value returned by /api/v1/<device>/<romtype>/<incremental>.

TODO

  • Lots I'm sure
You can’t perform that action at this time.