Development tips: Difference between revisions

From miki
Jump to navigation Jump to search
Line 13: Line 13:
:* At the very least, this means in the same repository. Ideally code and tests are updated together in the same commit.
:* At the very least, this means in the same repository. Ideally code and tests are updated together in the same commit.
* Make your startup / boot / init sequence independent of system configuration. Avoid early optimization.
* Make your startup / boot / init sequence independent of system configuration. Avoid early optimization.

== Reproducible build ==
=== libraries / ar ===
With libraries produced with <code>ar</code>, use option <code>D</code> to produce '''deterministic build'''.
<source lang="bash">
ar rcsD mylib.a foo.o bar.o
</source>

Alternatively one can run <code>ranlib</code> in deterministic mode:
<source lang="bash">
ranlib -D mylib.a
</source>

I also made a custom python script <code>ardee.py</code> (that also works on libraries produce by ARM toolchain <code>armar</code>, which doesn't have the <code>D</code> flag)
<source lang="bash">
ardee.py mylib.a
</source>


== Calendars ==
== Calendars ==

Revision as of 20:51, 2 March 2022

Summary of things I do frequently or that I learned the hard way

Console tips

  • Search for whole words occurence:
ag "\bWHOLEWORD\b" # or
ag -w WHOLEWORD

Advices

  • Always keep your tests in sync with your source code.
  • At the very least, this means in the same repository. Ideally code and tests are updated together in the same commit.
  • Make your startup / boot / init sequence independent of system configuration. Avoid early optimization.

Reproducible build

libraries / ar

With libraries produced with ar, use option D to produce deterministic build.

ar rcsD mylib.a foo.o bar.o

Alternatively one can run ranlib in deterministic mode:

ranlib -D mylib.a

I also made a custom python script ardee.py (that also works on libraries produce by ARM toolchain armar, which doesn't have the D flag)

ardee.py mylib.a

Calendars

Use ICU libraries that deal with all subtleties!