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.pyfor 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-composeon your system. - Make sure that
docker-compose.ymland./nginx/default.confuse 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 buildin the root of the repo. - To start the server, run
docker-compose upin the root of the repo (include a-dflag to run in detached mode) - To stop the server, run
docker-compose downin the root of the repo.