Giter Club home page Giter Club logo

updater's Introduction

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.

Development set up:

  1. Install requirements with pip install -r requirements.txt
  2. Configure your environment appropriately - see config.py for possible variables.
  3. Supply a device_deps.json, devices.json, and optional devices_local.json. (See https://github.com/LineageOS/hudson/tree/master/updater for example)
  4. Run with FLASK_APP=app.py flask run

Example API Calls:

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.

Don't want to run mirrorbits/mirrorbits-api?

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.

Setup

  1. 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.
  2. Run python gen_mirror_json.py ./nginx/builds > ./nginx/builds.json
  3. Make sure you have device_deps.json, devices.json, and optional devices_local.json in the root directory of this repo.
  4. Install docker-compose on your system.
  5. 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).

Building and Running

  1. To build, use docker-compose build in the root of the repo.
  2. To start the server, run docker-compose up in the root of the repo (include a -d flag to run in detached mode)
  3. To stop the server, run docker-compose down in the root of the repo.

updater's People

Contributors

zifnab06 avatar fourkbomb avatar luk1337 avatar invisiblek avatar harryyoud avatar mikeng avatar jrior001 avatar razorloves avatar tincho5588 avatar syphyr avatar luca020400 avatar haggertk avatar stricted avatar vince2678 avatar deadman96385 avatar rashed97 avatar flex1911 avatar bgcngm avatar alberto97 avatar stucki avatar n1kolaa avatar npjohnson avatar olefb avatar olivier97 avatar javelinanddart avatar tortel avatar h8rift avatar shr3ps avatar thescarastic avatar thompatry avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.