[libvirt-jenkins-ci PATCH 7/7] lcitool: Create and expose ccache wrappers

Daniel P. Berrangé berrange at redhat.com
Mon Mar 30 11:52:27 UTC 2020


On Fri, Mar 27, 2020 at 08:34:59PM +0100, Andrea Bolognani wrote:
> VM-based builds have used ccache by default for a very long time,
> and now container-based builds will too.
> 
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
> ---
>  guests/lcitool | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/guests/lcitool b/guests/lcitool
> index 117e1a5..011fc07 100755
> --- a/guests/lcitool
> +++ b/guests/lcitool
> @@ -651,6 +651,8 @@ class Application:
>              varmap = self._dockerfile_build_varmap_rpm(facts, mappings, pip_mappings, projects, cross_arch)
>  
>          varmap["package_manager"] = facts["package_manager"]
> +        varmap["cc"] = facts["cc"]
> +        varmap["ccache"] = facts["ccache"]
>          varmap["make"] = facts["make"]
>          varmap["ninja"] = facts["ninja"]
>          varmap["python"] = facts["python"]
> @@ -864,6 +866,21 @@ class Application:
>                      "{package_manager} clean all -y",
>                  ])
>  
> +        commands.extend([
> +            "mkdir -p /usr/local/share/ccache-wrappers",
> +        ])
> +
> +        if cross_arch:
> +            commands.extend([
> +                "ln -s {ccache} /usr/local/share/ccache-wrappers/{cross_abi}-cc",
> +                "ln -s {ccache} /usr/local/share/ccache-wrappers/{cross_abi}-$(basename {cc})",
> +            ])
> +        else:
> +            commands.extend([
> +                "ln -s {ccache} /usr/local/share/ccache-wrappers/cc",
> +                "ln -s {ccache} /usr/local/share/ccache-wrappers/$(basename {cc})",
> +            ])
> +
>          script = "\nRUN " + (" && \\\n    ".join(commands)) + "\n"
>          sys.stdout.write(script.format(**varmap))

This part makes sense.

> @@ -900,6 +917,7 @@ class Application:
>  
>          sys.stdout.write(textwrap.dedent("""
>              ENV LANG "en_US.UTF-8"
> +            ENV PATH "/usr/local/share/ccache-wrappers:$PATH"

I don't think we should do this though.

When doing local container builds "make ci-build at BLAH" the container
content is throwaway, so using ccache is adding extra I/O to store
the cache arifacts but will not speed up compile as the cache will
always be initially empty.

I think we only want to set $PATH in the .gitlab-ci.yml file where
we have explicitly provided a persistent cache to use.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list