Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 01 Mar 2020 01:50:38 +0000
From:      bugzilla-noreply@freebsd.org
To:        ports-bugs@FreeBSD.org
Subject:   [Bug 244532] www/chromium - Makefile.local contrib for ensuring ccache is used during build
Message-ID:  <bug-244532-7788@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D244532

            Bug ID: 244532
           Summary: www/chromium - Makefile.local contrib for ensuring
                    ccache is used during build
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: chromium@FreeBSD.org
          Reporter: lab+bsd@thinkum.space
          Assignee: chromium@FreeBSD.org
             Flags: maintainer-feedback?(chromium@FreeBSD.org)
 Attachment #212063 text/plain
         mime type:

Created attachment 212063
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D212063&action=
=3Dedit
www/chromium - Makefile.local contrib for ensuring ccache is used during bu=
ild

When building www/chromium under poudriere, locally - after some local
configuration for ensuring ccache is used during port builds  - then taking=
 a
look at the shell cmds being used during the build, I'd noticed what seemed=
 to
indicate that ccache was not being used throughout the build. This was cont=
rary
to expectation, under local build configuration.

The following is an excerpt of the process log for the www/chormium build u=
nder
poudriere - indicating direct calls to cc and c++ such that may not appear =
to
be using any ccache wrappers, under the initial build configuration
~~~~
[root@buildhost ~ ]# procs
    0     0     0     0 -      0 -16    0:08.08 swapin   [kernel]
    1     1     0     0 -      0  52    0:00.03 wait     - /sbin/init --
{sic}
 6646  6646  1000  1000 pts/2  0  20    0:00.00 wait     | |-- -bash (bash)
 6696  6696     0     0 pts/2  0  20    0:00.00 wait     | | `-- su
 6705  6705     0     0 pts/2  0  20    0:00.00 wait     | |   `--
/usr/local/bin/bash -l
95303 95303     0     0 pts/2  0  26    0:01.20 select   | |     `--
/usr/local/libexec/poudriere/sh -e /usr/local/share/poudriere/bulk.sh -j
builder-12~1 -p local -C www/chromium
16866 95303     0     0 pts/2  0  20    0:00.00 piperd   | |       |--
/usr/local/libexec/poudriere/sh -e /usr/local/share/poudriere/bulk.sh -j
builder-12~1 -p local -C www/chromium
16873 16873     0     0 pts/2  0  20    0:00.05 select   | |       |-- sh:
poudriere[builder-12~1-local][01]: build_pkg (chromium-79.0.3945.130) (sh)
43090 16873     0     0 pts/2  0  20    0:00.00 wait     | |       | `-- sh:
poudriere[builder-12~1-local][01]: build_pkg (chromium-79.0.3945.130) (sh)
43091 16873     0     0 pts/2  0  52    0:00.00 wait     | |       |   `--
/usr/bin/make -C /usr/ports/www/chromium build
43094 16873     0     0 pts/2  0  52    0:00.00 wait     | |       |     `--
/bin/sh -e -c (cd /wrkdirs/usr/ports/www/chromium/work/chromium-79.0.3945.1=
30;
{sic}
43095 16873     0     0 pts/2  0  52    0:04.46 select   | |       |       =
`--
ninja -j3 -C out/Release -v chrome
87028 87028     0     0 pts/2  0  26    0:00.01 wait     | |       |=20=20=
=20=20=20=20=20=20
|-- c++ -MMD -MF
obj/chrome/common/extensions/api/generated_api_types/accessibility_private.=
o.d
{sic}
87029 87028     0     0 pts/2  0  76    0:03.01 -        | |       |       =
  |
`-- /usr/bin/c++ -cc1 -triple x86_64-unknown-freebsd12.1 -emit-obj {sic}
87073 87073     0     0 pts/2  0  52    0:00.01 wait     | |       |=20=20=
=20=20=20=20=20=20
|-- c++ -MMD -MF
obj/chrome/common/extensions/api/generated_api_types/activity_log_private.o=
.d
{sic}
87074 87073     0     0 pts/2  0  76    0:02.82 -        | |       |       =
  |
`-- /usr/bin/c++ -cc1 -triple x86_64-unknown-freebsd12.1 -emit-obj {sic}
87146 87146     0     0 pts/2  0  52    0:00.01 wait     | |       |=20=20=
=20=20=20=20=20=20
`-- c++ -MMD -MF
obj/chrome/common/extensions/api/generated_api_types/cast_streaming_receive=
r_session.o.d
{sic}87147 87146     0     0 pts/2  0  74    0:01.40 -        | |       |=
=20=20=20=20=20=20
    `-- /usr/bin/c++ -cc1 -triple x86_64-unknown-freebsd12.1 -emit-obj {sic}
96231 95303     0     0 pts/2  0  52    0:09.53 piperd   | |       `--
/usr/local/libexec/poudriere/sh -e /usr/local/share/poudriere/bulk.sh -j
builder-12~1 -p local -C www/chromium
87238 95303     0     0 pts/2  0  52    0:00.00 wait     | |         `--
/usr/local/libexec/poudriere/sh -e /usr/local/share/poudriere/bulk.sh -j
builder-12~1 -p local -C www/chromium
87240 95303     0     0 pts/2  0  72    0:00.00 -        | |           |--
/usr/local/libexec/poudriere/sh -e /usr/local/share/poudriere/bulk.sh -j
builder-12~1 -p local -C www/chromium
87241 95303     0     0 pts/2  0  72    0:00.00 -        | |           `--
/usr/local/libexec/poudriere/sh -e /usr/local/share/poudriere/bulk.sh -j
builder-12~1 -p local -C www/chromium
{sic}
~~~~


Considering that the local build configuration had provided a ccache libexec
wraper for LLVM 9.0 clang and clang++, one may've expected that that would =
be
used throughout the build.

Subsequently, after trying to modify GN_ARGS for using the locally declared=
 CC,
CXX, .... it seemed that the build was still using 'cc' and 'c++' cmds

So, I've put together a Makefile.local for the www/chromium port, such that
appears to serve to ensure that ccache will be used throughout the build. A=
fter
some initial build testing, I hope it might be helpful to share the outcome,
here - if perhaps others may notice any similar situation of ccache not bei=
ng
used throughout, though it may have been expected to have been used through=
out,
during the chromium build.


In the methdology used in this Makefile.local, a set of trivial wrapper scr=
ipts
are generated for each of cc and c++ such that should simply call the CC or=
 CXX
cmd provided to the build. This may represent something of a trivial analogy
onto cwrapper scripts used in pkgsrc.

Additionally, this Makefile.local should serve to ensure that any libtool-l=
ike
cmds configured in the build - e.g llvm-ar as AR - will be used in the buil=
d,
if the build would have called those cmds via any generic name such as e.g
'ar'.


Candidly, I'd tried using simply a modification on BINARY_ALIAS for CC and =
CXX,
in this Makefile.local. Due to the characteristics of ccache configuration
under arbitrary PATH and/or CCACHE_PATH, that did not work out for calling =
the
intended CC and CXX, e.g when not using the base system cc as the
ccache-wrapped CC, or similarly, for c++

If any contents of this Makefile.local could be of any use for the main port
Makefile or under /usr/ports/Mk/Uses/ I think that would be great. If so or=
 if
not, I would present this contribution with the disclaimers: No warranty.
#YMMV.

As I'm not sure if this concern about ccache may be occurring elsewhere, I
simply thought it might be useful to share this item of build configuration
here, for www/chromium builds.

Concerns:

- This does not provide any complex cwrapper system for the build, such as =
may
be available in pkgsrc

- My own local make.conf may have affected the build configuration by side
effect, in some way such that this Makefile.local may not be necessary with=
out
such a make.conf. I believe that this Makefile.local should be generally
portable for other build configurations, with or without using ccache. I've=
 not
tested it under any other build configuration, though.

- Due to the methodolgy used for making an early binding on BINARY_LINKDIR =
in
this Makefile.local, it cannot be used without modification when building
ports-mgmt/pkg


Attached: Makefile.local contrib for www/chromium, as denoted

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-244532-7788>