Skip to content

Latest commit

 

History

History
48 lines (31 loc) · 2.32 KB

DEVELOPER.md

File metadata and controls

48 lines (31 loc) · 2.32 KB

Developer Readme

Information about development matters related to Graphite.

Build system

To build the project, first run ./configure. There are some configuration options available, see ./configure --help, and by default all possible platforms are built. Then, run make build to compile the project.

Template system

We use Jinja2 as a templating system to handle elements that need to be repeated in multiple files, such as configuration defaults, messaging keys or the version number. Then, files like package.json are build from a template (package.template.json). For most files, we use a custom inline template syntax, though, which is directly inside the source files. For instance, you might find something like this:

// -- autogen
// -- #define GRAPHITE_N_CONFIG {{ num_config_items }}
#define GRAPHITE_N_CONFIG 10
// -- end autogen

This is a section that gets automatically generated. All lines starting with // -- after the autogen line are the template, which can refer to template variables such as num_config_items. Then following lines are then the instantiation of that template, automatically generated by the templating system. To update the section if the template variables change, run make initialize. All template variables are defined in scripts/initialize.py.

Releasing a New Version

To release a new version, do the following:

  • Make changes to Graphite.
  • Update screenshots if necessary (in particular, if there are new widgets).
  • Document changes in README.md in the changelog.
  • Update version number in scripts/initialize.py.
  • Update table in README.md that relates app version numbers with configuration version numbers.
    • Publish a new branch config-X if a new configuration version X was necessary. Can be done using make config_new_version.
  • Build a clean release version: make release.
  • Commit new files in release folder.
  • Upload and publish new version.
  • Update website if necessary.

Crashes

If after adding a new feature, Graphite crashes, it might be because Graphite ran out of memory. The resources need at runtime (fonts and icons), and the buffer used by pebble-fctx use a lot of memory.

Pebble Screen Sizes

  • Pebble Original: 144x168
  • Pebble Time: 144x168
  • Pebble Round: 180x180
  • Pebble 2: 144x168
  • Pebble Time 2: 200x228