1Updating
2=====
3
4Assembling some quick notes on maintaining this tree vs. the upstream WebRTC
5project source code.
6
71. The code is currently synced agains whatever revision of the upstream
8   webrtc git repository Chromium uses.
9
102. Instructions on checking out the Chromium tree are on the
11   [Chromium site][get-chromium]. As a shortcut, you can look at the DEPS file
12   in the Chromium tree for the current webrtc version being used, and then
13   just use that commit hash with the webrtc tree.
14
153. [Meld][meld] is a great tool for diffing two directories. Start by running
16   it on ```webrtc-audio-processing/webrtc``` and
17   ```chromium/third_party/webrtc```.
18
19   * For each directory in the ```webrtc-audio-processing``` tree, go over the
20     corresponding code in the ```chromium``` tree.
21
22   * Examine changed files, and pick any new changes. A small number of files
23     in the ```webrtc-audio-processing``` tree have been changed by hand, make
24     sure that those are not overwritten.
25
26   * unittest files have been left out since they are not built or used.
27
28   * BUILD.gn files have been copied to keep track of changes to the build
29     system upstreama.
30
31   * Arch-specific files usually have special handling in the corresponding
32     Makefile.am.
33
344. Once everything has been copied and updated, everything needs to be built.
35   Missing dependencies (files that were not copied, or new modules that are
36   being depended on) will first turn up here.
37
38   * Copy new deps as needed, leaving out testing-only dependencies insofar as
39     this is possible.
40
415. ```webrtc/modules/audio_processing/include/audio_processing.h``` is the main
42   include file, so look for API changes here.
43
44   * The current policy is that we mirror upstream API as-is.
45
46   * Update configure.ac with the appropriate version info  based on how the
47     code has changed. Details on how to do this are included in the
48     [libtool documentation][libtool-version-info].
49
505. Build PulseAudio (and/or any other dependent projects) against the new code.
51   The easy way to do this is via a prefixed install.
52
53   * Run ```configure``` webrtc-audio-processing with
54     ```--prefix=/some/local/path```, then do a ```make``` and
55     ```make install```.
56
57   * Run ```configure``` on PulseAudio with
58     ```PKG_CONFIG_PATH=/some/local/path/lib/pkgconfig```, which will cause the
59     build to pick up the prefixed install. Then do a ```make```, run the built
60     PulseAudio, and load ```module-echo-cancel``` to make sure it loads fine.
61
62   * Run some test streams through the canceller to make sure it is working
63     fine.
64
65[get-chromium]: http://dev.chromium.org/developers/how-tos/get-the-code
66[meld]: http://meldmerge.org/
67[libtool-version-info]: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
68