Development tips: Difference between revisions
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!