You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
generator: Cache the lld binary after extracting it from the LLVM archive (#149)
Extracting `lld` from the `llvm` archive takes about 40s on my machine, and
after the binary has been extracted a 5.5GB directory is left behind in the
`Artifacts` directory.
This change uses `tar` filters to reduce the number of files unpacked from
the archive and caches the resulting `lld` binary.
Excluding the time to download the archives, building an SDK from
Debian packages before `lld` has been cached takes about 57s on an
M3 MacBook Air. A subsequent build with `lld` cached takes about
17s.
The SDKs generated by the old and new methods are identical.
This PR adds `CacheKey` conformance to `Array`, as suggested by
@yingguqing in #106. Adding this conformance to `Range` was not
necessary in this case.
--
* generator: Adopt CacheKey conformance for [FilePath.Component]
This is needed to cache arrays of [FilePath.Component], so a subsequent commit
can cache the slow extraction of the `ld.lld` binary from the `llvm` tar archive.
This problem was also reported by @yingguqing in #106, although Range conformance
does not seem to be required to cache lld.
Suggested-by: @yingguqing
* generator: Cache the lld binary after extracting it from the LLVM archive
Extracting `lld` from the `llvm` archive takes about 40s on my
machine, and after the binary has been extracted a 5.5GB directory
is left in the `Artifacts` directory.
This change uses `tar` filters to reduce the number of files unpacked from
the archive and caches the resulting `lld` binary.
Excluding the time to download the archives, building an SDK from
Debian packages before `lld` has been cached takes about 57s on an
M3 MacBook Air. A subsequent build with `lld` cached takes about
17s.
The SDKs generated by the old and new methods are identical.
0 commit comments