[Bug 244532] www/chromium - Makefile.local contrib for ensuring ccache is used during build
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun Mar 1 01:50:44 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244532
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 at FreeBSD.org
Reporter: lab+bsd at thinkum.space
Assignee: chromium at FreeBSD.org
Flags: maintainer-feedback?(chromium at FreeBSD.org)
Attachment #212063 text/plain
mime type:
Created attachment 212063
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=212063&action=edit
www/chromium - Makefile.local contrib for ensuring ccache is used during build
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 contrary
to expectation, under local build configuration.
The following is an excerpt of the process log for the www/chormium build under
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 at 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.130;
{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 | | |
|-- 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 | | |
|-- 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 | | |
`-- c++ -MMD -MF
obj/chrome/common/extensions/api/generated_api_types/cast_streaming_receiver_session.o.d
{sic}87147 87146 0 0 pts/2 0 74 0:01.40 - | | |
`-- /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. After
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 being
used throughout, though it may have been expected to have been used throughout,
during the chromium build.
In the methdology used in this Makefile.local, a set of trivial wrapper scripts
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-like
cmds configured in the build - e.g llvm-ar as AR - will be used in the build,
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 without
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
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-ports-bugs
mailing list