Copyright (c) 2017 The LineageOS Project
- Add your device to devices.json, sorted alphanumerically by codename. Fields are documented below.
- Submit your change to gerrit (this repository is configured for use with
git review
)
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 totrue
.lineage_recovery
: (optional) whether or not to offer Lineage recovery downloads for this device. Defaults totrue
.
- Install requirements with
pip install -r requirements.txt
- Configure your environment appropriately - see
config.py
for possible variables. - Supply a device_deps.json, devices.json, and optional devices_local.json. (See https://github.com/LineageOS/hudson/tree/main/updater for example)
- Run with
FLASK_APP=app.py flask run
Obtaining rom list for a device:
GET /api/v1/<device>/<romtype>/<incremental>?after=<utc_timestamp>&version=<14.1>
(incremental can be anything, it is currently unused)
<device>
- Name of device. Example: d2vzw
<romtype>
- Type of rom. Example: nightly
<incremental>
- Caller device's incremental ID (ro.build.incr). Can be anything.
<after>
- Timestamp for current build on device. (optional)
<romversion>
- Version of rom. Example: 14.1
(optional)
This project depends on a mirrorbits server (https://github.com/etix/mirrorbits) running our mirrorbits API (https://github.com/lineageos-infra/mirrorbits-api). Please see the README in that project for more information.
To run the server stand-alone you can use the included docker-compose
script to bring up a simple nginx server to host your builds for you.
- Place your builds in
./nginx/builds/
. These will be exposed on http://example.com/builds when you start the server. They don't need to be android builds, just make sure they have differing sha256s and match the filename format foobar-VERSION-BUILDDATE-BUILDTYPE-DEVICE-foobar.zip. - Run
python gen_mirror_json.py ./nginx/builds > ./nginx/builds.json
- Make sure you have device_deps.json, devices.json, and optional devices_local.json in the root directory of this repo.
- Install
docker-compose
on your system. - Make sure that
docker-compose.yml
and./nginx/default.conf
use suitable hostnames for your setup (rather than "updater" and "nginx", you should use the address of the computer running docker).
- To build, use
docker-compose build
in the root of the repo. - To start the server, run
docker-compose up
in the root of the repo (include a-d
flag to run in detached mode) - To stop the server, run
docker-compose down
in the root of the repo.