diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-04-22 15:50:27 +0200 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2024-04-23 12:47:11 +0200 |
commit | 72d8bb2c3bf74f24e5def6b16c932c9c0165c6ee (patch) | |
tree | 2f40406c2fb2cfbe79e815479a8c14bdf048ce70 /doc/tutorial/third-party-software.md | |
parent | 66ee4bff8d5d54e63517f89ec1a2927e9c29638d (diff) | |
download | justbuild-72d8bb2c3bf74f24e5def6b16c932c9c0165c6ee.tar.gz |
tutorial: Update outputs and other improvements
When tutorial docs were changed to showcase running commands with
just-mr instead of just, the outputs were not changed. This is now
fixed to showcase the results run with current master just-mr (and
just), together with other small improvements and fixes.
Diffstat (limited to 'doc/tutorial/third-party-software.md')
-rw-r--r-- | doc/tutorial/third-party-software.md | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/doc/tutorial/third-party-software.md b/doc/tutorial/third-party-software.md index 38909ca4..4c57a11c 100644 --- a/doc/tutorial/third-party-software.md +++ b/doc/tutorial/third-party-software.md @@ -16,8 +16,8 @@ a native build description. For the remainder of this section, we expect to have the project files available resulting from successfully completing the tutorial section on -*Building C++ Hello World*. We will demonstrate how to use the -open-source project [fmtlib](https://github.com/fmtlib/fmt) as an +[*Building C++ Hello World*](./hello-world.md). We will demonstrate how to use +the open-source project [fmtlib](https://github.com/fmtlib/fmt) as an example for integrating third-party software to a *justbuild* project. Creating the target overlay layer for fmtlib @@ -57,8 +57,8 @@ code base's structure. It is also good practice to provide a top-level Let's create the overlay structure: ``` sh -$ mkdir -p fmt-layer/include/fmt -$ mkdir -p fmt-layer/src +$ mkdir -p ./fmt-layer/include/fmt +$ mkdir -p ./fmt-layer/src ``` The directory `include/fmt` contains only header files. As we want all @@ -203,6 +203,9 @@ repositories: ``` sh $ just-mr build helloworld +INFO: Performing repositories setup +INFO: Found 5 repositories to set up +INFO: Setup finished, exec ["just","build","-C","...","helloworld"] INFO: Requested target is [["@","tutorial","","helloworld"],{}] INFO: Analysed target [["@","tutorial","","helloworld"],{}] INFO: Export targets found: 0 cached, 0 uncached, 1 not eligible for caching @@ -219,6 +222,9 @@ repository `fmtlib` must be specified via the `--main` option: ``` sh $ just-mr --main fmtlib build fmt +INFO: Performing repositories setup +INFO: Found 4 repositories to set up +INFO: Setup finished, exec ["just","build","-C","...","fmt"] INFO: Requested target is [["@","fmtlib","","fmt"],{}] INFO: Analysed target [["@","fmtlib","","fmt"],{}] INFO: Export targets found: 0 cached, 0 uncached, 1 not eligible for caching @@ -245,7 +251,13 @@ versioning first: ``` sh $ git init . $ git add tutorial-defaults fmt-layer -$ git commit -m"fix compile flags and fmt targets layer" +$ git commit -m "fix compile flags and fmt targets layer" +[master (root-commit) 9c3a98b] fix compile flags and fmt targets layer + 4 files changed, 29 insertions(+) + create mode 100644 fmt-layer/TARGETS + create mode 100644 fmt-layer/include/fmt/TARGETS + create mode 100644 fmt-layer/src/TARGETS + create mode 100644 tutorial-defaults/CC/TARGETS ``` Note that `rules-cc` already is under Git versioning. @@ -305,6 +317,9 @@ the benefits of the target cache should be visible on the second build: ``` sh $ just-mr build helloworld +INFO: Performing repositories setup +INFO: Found 5 repositories to set up +INFO: Setup finished, exec ["just","build","-C","...","helloworld"] INFO: Requested target is [["@","tutorial","","helloworld"],{}] INFO: Analysed target [["@","tutorial","","helloworld"],{}] INFO: Export targets found: 0 cached, 1 uncached, 0 not eligible for caching @@ -313,8 +328,12 @@ INFO: Building [["@","tutorial","","helloworld"],{}]. INFO: Processed 7 actions, 7 cache hits. INFO: Artifacts built, logical paths are: helloworld [18d25e828a0176cef6fb029bfd83e1862712ec87:132736:x] +INFO: Backing up artifacts of 1 export targets $ $ just-mr build helloworld +INFO: Performing repositories setup +INFO: Found 5 repositories to set up +INFO: Setup finished, exec ["just","build","-C","...","helloworld"] INFO: Requested target is [["@","tutorial","","helloworld"],{}] INFO: Analysed target [["@","tutorial","","helloworld"],{}] INFO: Export targets found: 1 cached, 0 uncached, 0 not eligible for caching @@ -330,6 +349,13 @@ Note that in the second run the export target `"fmt"` was taken from cache and its 3 actions were eliminated, as their result has been recorded to the high-level target cache during the first run. +Also note the final message in the first run. As that was the first time the +export target `"fmt"` was built (i.e., target `"fmt"` with default +configuration flags), an entry in the target-level cache was created. The +log message showcases that when a remote-execution endpoint is involved, any +artifacts referenced by a built export target needs to be ensured to be +available. + Combining overlay layers for multiple projects ---------------------------------------------- @@ -478,7 +504,7 @@ provide as well. So there is a rule to import libraries that way and the actual packaging-build version of `libfmt`, as provided in `etc/import.pkgconfig`, looks as follows. -``` {.jsonc srcname="etc/import.pkgconfig/TARGETS.fmt} +``` {.jsonc srcname="etc/import.pkgconfig/TARGETS.fmt"} { "fmt": {"type": ["@", "rules", "CC/pkgconfig", "system_library"], "name": ["fmt"]} } |