xref: /aosp_15_r20/external/openscreen/third_party/README.md (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard# Third-Party Dependencies
2*3f982cf4SFabien Sanglard
3*3f982cf4SFabien SanglardThe Open Screen library includes its dependencies as DEPS in the source
4*3f982cf4SFabien Sanglardtree under the `//third_party/` directory.  They are structured as follows:
5*3f982cf4SFabien Sanglard
6*3f982cf4SFabien Sanglard```
7*3f982cf4SFabien Sanglard  //third_party/<library>
8*3f982cf4SFabien Sanglard   BUILD.gn
9*3f982cf4SFabien Sanglard   ...other necessary adapter files...
10*3f982cf4SFabien Sanglard   src/
11*3f982cf4SFabien Sanglard     <library>'s source
12*3f982cf4SFabien Sanglard```
13*3f982cf4SFabien Sanglard
14*3f982cf4SFabien Sanglard## Adding a new dependency
15*3f982cf4SFabien Sanglard
16*3f982cf4SFabien SanglardWhen adding a new dependency to the project, you should first add an entry
17*3f982cf4SFabien Sanglardto the DEPS file. For example, let's say we want to add a
18*3f982cf4SFabien Sanglardnew library called `alpha`. Opening up DEPS, you would add
19*3f982cf4SFabien Sanglard
20*3f982cf4SFabien Sanglard``` python
21*3f982cf4SFabien Sanglard  deps = {
22*3f982cf4SFabien Sanglard    ...
23*3f982cf4SFabien Sanglard    'src/third_party/alpha/src': 'https://repo.com/path/to/alpha.git'
24*3f982cf4SFabien Sanglard        + '@' + '<revision>'
25*3f982cf4SFabien Sanglard```
26*3f982cf4SFabien Sanglard
27*3f982cf4SFabien SanglardThen you need to add a BUILD.gn file for it under `//third_party/alpha`,
28*3f982cf4SFabien Sanglardassuming it doesn't already provide its own BUILD.gn.
29*3f982cf4SFabien Sanglard
30*3f982cf4SFabien SanglardFinally, add a new entry for the "src" directory of your dependency to
31*3f982cf4SFabien Sanglardthe //third_party/.gitignore.
32*3f982cf4SFabien Sanglard
33*3f982cf4SFabien Sanglard## Roll a dependency to a new version
34*3f982cf4SFabien Sanglard
35*3f982cf4SFabien SanglardRolling a dependency forward (or to any different version really) consists of
36*3f982cf4SFabien Sanglardtwo steps:
37*3f982cf4SFabien Sanglard  1. Update the revision string for the dependency in the DEPS file.
38*3f982cf4SFabien Sanglard  1. `git add` the DEPS file and commit, then run gclient sync.
39*3f982cf4SFabien Sanglard
40*3f982cf4SFabien SanglardOf course, you should also make sure that the new change is still compatible
41*3f982cf4SFabien Sanglardwith the rest of the project, including any adapter files under
42*3f982cf4SFabien Sanglard`//third_party/<library>` (e.g. BUILD.gn).  Any necessary updates to make the
43*3f982cf4SFabien Sanglardrest of the project work with the new dependency version should happen in the
44*3f982cf4SFabien Sanglardsame change.
45*3f982cf4SFabien Sanglard
46*3f982cf4SFabien Sanglard## Build Failures
47*3f982cf4SFabien Sanglard
48*3f982cf4SFabien SanglardIf after running `gclient sync`, your build starts failing due to errors in
49*3f982cf4SFabien Sanglard`//third_party/`, then do the following:
50*3f982cf4SFabien Sanglard
51*3f982cf4SFabien Sanglard  1. Delete the `//out/` directory.
52*3f982cf4SFabien Sanglard  1. Delete the `src/` directory of the failing `//third_party` library.
53*3f982cf4SFabien Sanglard  1. Re-run `gclient sync`.
54*3f982cf4SFabien Sanglard
55*3f982cf4SFabien SanglardThis will remove any directories and files which were removed in the updated
56*3f982cf4SFabien Sanglardlibrary but not deleted by `gclient sync`.
57