Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Jun 2022 06:34:47 +0300
From:      Rozhuk Ivan <rozhuk.im@gmail.com>
To:        freebsd-current@freebsd.org, freebsd-hackers@freebsd.org, Rozhuk Ivan <Rozhuk.IM@gmail.com>
Subject:   ccache during system build
Message-ID:  <20220610063447.10ff8004@rimwks.local>

next in thread | raw e-mail | index | archive | help
--MP_/EaWb/ZuBLx5HcyfQ9sZFz/p
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi!


Just few tips.


1. bsd.compiler.mk set COMPILERCHECK env var:
============================================================================
# Handle bootstrapped compiler changes properly by hashing their content
# rather than checking mtime.  For external compilers it should be safe
# to use the more optimal mtime check.
# XXX: CCACHE_COMPILERCHECK= string:<compiler_version, compiler_build_rev, compiler_patch_rev, compiler_default_target, compiler_default_sysroot>
.if ${CC:N${CCACHE_BIN}:[1]:M/*} == ""
CCACHE_COMPILERCHECK?=	content
.else
CCACHE_COMPILERCHECK?=	mtime
.endif
============================================================================
this overrides ccache.conf setting and increase build time.
CCACHE_COMPILERCHECK='%compiler% -dumpversion'
makes first build and second system rebuild faster.


2. To allow ccache hit in case with different src and obj location
a) obj must be placed inside src
b) OBJTOP env var must be set to new obj location
without this obj path will contain src path and not hit to ccache.
c) CCACHE_BASEDIR must be set to src
d) CCACHE_NOHASHDIR=yes
e) CCACHE_COMPILERCHECK='%compiler% -dumpversion'
f) MAKEOBJDIRPREFIX=''
g) -o nocache must be used with mount_nullfs to avoid error during install:
exec(btxld) failed (No such file or directory) and obj via nullfs


As example, attached scripts build kernel and world using obj stored inside /tmp,
after build files from temp obj moved to /usr/obj dir.
Using simular technic for build FreeBSD inside other src and obj locations I got
ccache hit and reduce build time.

I got ccache miss only for kernel build in case different KERNCONF, because it is mapped
to obj dir path. Probably overwriting OBJROOT will fix it.



--MP_/EaWb/ZuBLx5HcyfQ9sZFz/p
Content-Type: application/x-shellscript
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=fbsd_build_kernel.sh

IyEvYmluL3NoCiMjIyBSb3podWsgSXZhbiAyMDE5LTIwMjIKIyMjIGZic2RfYnVpbGRfa2VybmVs
CiMjIyAKCgojIEV4aXQgb24gZXJyb3IuCnNldCAtZQoKCiMgSW5pdCBjb25zdGFucy4KOiAke1NS
Q19ESVI9L3Vzci9zcmN9CkFVVE9fVEhSRUFEUz1gZ2V0Y29uZiBOUFJPQ0VTU09SU19PTkxOIHwg
dHIgLWNkICdbOnByaW50Ol0nYApNQUtFT0JKRElSX09SSUc9YG1ha2UgLUMgJHtTUkNfRElSfSAt
ViBNQUtFT0JKRElSYApPQkpESVJfU1JDPSIke1NSQ19ESVJ9L29ial90bXAiCk9CSkRJUl9UTVA9
YG1rdGVtcCAtZCAtcSAvdG1wL29iai5YWFhYWFhYWGAKaWYgWyAkez99IC1uZSAwIF07IHRoZW4K
CWVjaG8gIiR7MH06IENhbid0IGNyZWF0ZSB0ZW1wIGRpciwgZXhpdGluZy4uLiIKCWV4aXQgMQpm
aQpleHBvcnQgQ0NBQ0hFX0JBU0VESVI9IiR7U1JDX0RJUn0iCmV4cG9ydCBDQ0FDSEVfTk9IQVNI
RElSPSd5ZXMnCmV4cG9ydCBDQ0FDSEVfQ09NUElMRVJDSEVDSz0nJWNvbXBpbGVyJSAtZHVtcHZl
cnNpb24nCmV4cG9ydCBNQUtFT0JKRElSUFJFRklYPScnCmV4cG9ydCBPQkpUT1A9IiR7T0JKRElS
X1NSQ30iCmlmIFsgISAtZCAiJHtPQkpESVJfU1JDfSIgXTsgdGhlbgoJcm0gLXJmICIke09CSkRJ
Ul9TUkN9IgoJbWtkaXIgLXAgIiR7T0JKRElSX1NSQ30iCmZpCgoKIyBDbGVhbiBhbGwgcHJldiBk
YXRhLgpmb3IgX19NTlRfUE9JTlQgaW4gYG1vdW50IHwgZ3JlcCAiIG9uICR7T0JKRElSX1NSQ30i
IHwgYXdrICd7cHJpbnQgJDE7fSdgIDsgZG8KCXJtIC1yZiAiJHtfX01OVF9QT0lOVH0iID4vZGV2
L251bGwgMj4mMQoJdW1vdW50IC1mICIke09CSkRJUl9TUkN9IiA+L2Rldi9udWxsIDI+JjEKZG9u
ZQoKCiMgLW8gbm9jYWNoZSB0byBmaXggZXJyb3I6IGV4ZWMoYnR4bGQpIGZhaWxlZCAoTm8gc3Vj
aCBmaWxlIG9yIGRpcmVjdG9yeSkKbW91bnRfbnVsbGZzIC1vIHJ3IC1vIG5vY2FjaGUgLW8gbm9h
dGltZSAtbyBub2V4ZWMgLW8gbm9zdWlkICIke09CSkRJUl9UTVB9IiAiJHtPQkpESVJfU1JDfSIK
CgojIEJ1aWxkLgovdXNyL2Jpbi9uaWNlIC1uIDE1IFwKCS91c3IvYmluL3RpbWUgLWggXAoJbWFr
ZQktaiIke0FVVE9fVEhSRUFEU30iIFwKCQktQyAiJHtTUkNfRElSfSIgXAoJCS1zIFwKCQktREFM
V0FZU19DSEVDS19NQUtFIFwKCQktRE5PX0NMRUFOIFwKCQlidWlsZGtlcm5lbAojIEZvcmNlIHNl
dCBmaWxlcyB0aW1lcy4KZmluZCAiJHtPQkpESVJfVE1QfSIgLXR5cGUgZiAtZXhlYyB0b3VjaCB7
fSArCgoKIyBDb3B5IGJhY2sgdG8gL3Vzci9vYmoKX19TUkNfRElSPSIke09CSkRJUl9UTVB9L3N5
cyIKX19EU1RfRElSPSIke01BS0VPQkpESVJfT1JJR30vc3lzIgplY2hvICJTYXZpbmc6ICR7X19T
UkNfRElSfSAtPiAke19fRFNUX0RJUn0iCnJtIC1yZiAiJHtfX0RTVF9ESVJ9Igpta2RpciAtcCAi
JHtfX0RTVF9ESVJ9IgpjaG1vZCBhK3JYICIke19fRFNUX0RJUn0iCmNobW9kIGErclggIiR7TUFL
RU9CSkRJUl9PUklHfSIKY2htb2QgLVIgYStyWCAiJHtfX1NSQ19ESVJ9IgpjcCAtYWYgIiR7X19T
UkNfRElSfS8iICIke19fRFNUX0RJUn0iCgoKIyBDbGVhbnVwLgp1bW91bnQgIiR7T0JKRElSX1NS
Q30iCnJtIC1yZiAiJHtPQkpESVJfVE1QfSIKc3luYwoKCmV4aXQgMAo=

--MP_/EaWb/ZuBLx5HcyfQ9sZFz/p
Content-Type: application/x-shellscript
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=fbsd_build_world.sh

IyEvYmluL3NoCiMjIyBSb3podWsgSXZhbiAyMDE5LTIwMjIKIyMjIGZic2RfYnVpbGRfd29ybGQK
IyMjIAoKCiMgRXhpdCBvbiBlcnJvci4Kc2V0IC1lCgoKIyBJbml0IGNvbnN0YW5zLgo6ICR7U1JD
X0RJUj0vdXNyL3NyY30KQVVUT19USFJFQURTPWBnZXRjb25mIE5QUk9DRVNTT1JTX09OTE4gfCB0
ciAtY2QgJ1s6cHJpbnQ6XSdgCk1BS0VPQkpESVJfT1JJRz1gbWFrZSAtQyAke1NSQ19ESVJ9IC1W
IE1BS0VPQkpESVJgCk9CSkRJUl9TUkM9IiR7U1JDX0RJUn0vb2JqX3RtcCIKT0JKRElSX1RNUD1g
bWt0ZW1wIC1kIC1xIC90bXAvb2JqLlhYWFhYWFhYYAppZiBbICR7P30gLW5lIDAgXTsgdGhlbgoJ
ZWNobyAiJHswfTogQ2FuJ3QgY3JlYXRlIHRlbXAgZGlyLCBleGl0aW5nLi4uIgoJZXhpdCAxCmZp
CmV4cG9ydCBDQ0FDSEVfQkFTRURJUj0iJHtTUkNfRElSfSIKZXhwb3J0IENDQUNIRV9OT0hBU0hE
SVI9J3llcycKZXhwb3J0IENDQUNIRV9DT01QSUxFUkNIRUNLPSclY29tcGlsZXIlIC1kdW1wdmVy
c2lvbicKZXhwb3J0IE1BS0VPQkpESVJQUkVGSVg9JycKZXhwb3J0IE9CSlRPUD0iJHtPQkpESVJf
U1JDfSIKaWYgWyAhIC1kICIke09CSkRJUl9TUkN9IiBdOyB0aGVuCglybSAtcmYgIiR7T0JKRElS
X1NSQ30iCglta2RpciAtcCAiJHtPQkpESVJfU1JDfSIKZmkKCgojIENsZWFuIGFsbCBwcmV2IGRh
dGEuCmZvciBfX01OVF9QT0lOVCBpbiBgbW91bnQgfCBncmVwICIgb24gJHtPQkpESVJfU1JDfSIg
fCBhd2sgJ3twcmludCAkMTt9J2AgOyBkbwoJcm0gLXJmICIke19fTU5UX1BPSU5UfSIgPi9kZXYv
bnVsbCAyPiYxCgl1bW91bnQgLWYgIiR7T0JKRElSX1NSQ30iID4vZGV2L251bGwgMj4mMQpkb25l
CgoKIyAtbyBub2NhY2hlIHRvIGZpeCBlcnJvcjogZXhlYyhidHhsZCkgZmFpbGVkIChObyBzdWNo
IGZpbGUgb3IgZGlyZWN0b3J5KQptb3VudF9udWxsZnMgLW8gcncgLW8gbm9jYWNoZSAtbyBub2F0
aW1lICIke09CSkRJUl9UTVB9IiAiJHtPQkpESVJfU1JDfSIKCgojIEJ1aWxkLgovdXNyL2Jpbi9u
aWNlIC1uIDE1IFwKCS91c3IvYmluL3RpbWUgLWggXAoJbWFrZQktaiIke0FVVE9fVEhSRUFEU30i
IFwKCQktQyAiJHtTUkNfRElSfSIgXAoJCS1zIFwKCQktREFMV0FZU19DSEVDS19NQUtFIFwKCQkt
RE5PX0NMRUFOIFwKCQlidWlsZHdvcmxkCiMgRm9yY2Ugc2V0IGZpbGVzIHRpbWVzLgpmaW5kICIk
e09CSkRJUl9UTVB9IiAtdHlwZSBmIC1leGVjIHRvdWNoIHt9ICsKCgojIENvcHkgYmFjayB0byAv
dXNyL29iagpfX1NSQ19ESVI9IiR7T0JKRElSX1RNUH0iCl9fRFNUX0RJUj0iJHtNQUtFT0JKRElS
X09SSUd9IgplY2hvICJTYXZpbmc6ICR7X19TUkNfRElSfSAtPiAke19fRFNUX0RJUn0iCm1rZGly
IC1wICIke19fRFNUX0RJUn0iCmNobW9kIGErclggIiR7X19EU1RfRElSfSIKY2htb2QgLVIgYSty
WCAiJHtfX1NSQ19ESVJ9IgpybSAtcmYgIiR7X19TUkNfRElSfS9zeXMiCmZvciBfX0RTVF9TVUJf
RElSIGluIGBmaW5kICIke19fRFNUX0RJUn0vIiAtbWF4ZGVwdGggMSAtbm90IC1uYW1lICcnYDsg
ZG8KCVsgIiR7X19EU1RfU1VCX0RJUn0iID09ICIke19fRFNUX0RJUn0vc3lzIiBdICYmIGNvbnRp
bnVlCglybSAtcmYgIiR7X19EU1RfU1VCX0RJUn0iCmRvbmUKY3AgLWFmICIke19fU1JDX0RJUn0v
IiAiJHtfX0RTVF9ESVJ9IgoKCiMgQ2xlYW51cC4KdW1vdW50ICIke09CSkRJUl9TUkN9IgpybSAt
cmYgIiR7T0JKRElSX1RNUH0iCnN5bmMKCgpleGl0IDAK

--MP_/EaWb/ZuBLx5HcyfQ9sZFz/p--



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