Age | Commit message (Collapse) | Author |
|
A lot of the dependencies in the "just" repository are not for
building just itself, but are used the the just-mr tool or for
testing. As the bootstrap process, however, only bootstraps the just
tool itself, drop those dependencies from the bootstrap process.
|
|
|
|
|
|
|
|
... which privately depends on pthreads.
|
|
Both ["", "ssl"] and ["", "crypto"] are targets of "boringssl"
that are intended for use outside this repository. Both depend on
the ["CC", "library"]-target ["", "crytpo-lib"], in fact even visibly,
as ssl has a library-dependency on the crypto library. Therefore,
we have to follow the standard export pattern that all uses of this
library go through the same (closest) export target. Fix this!
|
|
|
|
|
|
|
|
Removed superfluous "OS" env var
|
|
Compared to the previous commit, the action graphs for just
and its unit tests are unchanged.
- Git hash of action graph for ["",""]:
c6e75f17abd7ffaab6ff9bb725ad67ec0bf6c973
- Git hash of action graph for ["test/buildtool","TESTS"]:
8063dfb3dd7daa9ae01d95c177e14946f785c57e
Refactor:
- "local cflags" to "private-cflags"
- "local defines" to "private-defines"
- "link externals" to "private-ldflags"
- "deps" to "private-deps" for (test) binaries
- "proto" to "private-proto" for binaries
Improvements:
- consistent variable declaration order:
OS, ARCH, HOST_ARCH, TARGET_ARCH,
CC, CXX, CFLAGS, CXXFLAGS, ADD_CFLAGS, ADD_CXXFLAGS,
AR, ENV, PATH
- use fields close to their definition (in RULES)
- use common expression for binaries and test binaries
- split expression "flags" and "compiler"
... to separate ones for CC and CXX.
- rename "transition" to "deps-transition"
... to avoid conflicts with other transitions.
- support "defaults-transition" for CC expressions
Implement:
- "cflags" for libraries
- "private-cflags" for (test) binaries
- "private-defines" for test binaries
- "private-ldflags" for test binaries
- (public) "defines" for libraries
|
|
... in favor of the "tree" built-in rule.
|
|
|
|
In our packaging of git2, do not carry out a configuration transition
that is visible to dependencies. While its dependencies, ssl and
zlib, accept that TARGET_ARCH is defaulted to ARCH if unset and
still return the same result, regardless which export targets are
cached, we still should not enforce any configuration transition on
dependencies as this has the potential to cause subtle conflicts.
The implicit default of TARGET_ARCH to ARCH in zlib and ssl can
stay, as those libraries do not depend on any other repositories.
|
|
And in this way avoid that two configuration differing only in an
unset TARGET_ARCH set to ARCH can be different due to one configration
being in target-level cache, but not the other.
|
|
In this way, we achieve that the target to be used by targets outside
this repository is the same, regardless if an unset TARGET_ARCH
is replaced by the value of ARCH. This is an assumption consuming
targets (legitimately) make and that was violated if one of those
configs is in target-level cache, but not the other.
|
|
|
|
In this way, they can be more easily found using the standard
just-mr --main com_github_libgit2_libgit2 describe '' git2
instead of searching for the documentation file next to the
targets files in the import directory.
|
|
|
|
|
|
... in the same way, as we support different names for cc and c++.
|
|
... also in the first phases of the bootstrap procedure.
Co-authored-by: Oliver Reiche <oliver.reiche@huawei.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
So far, we did not export ["@", "grpc", "", "grpc++_codegen_proto"]
and ["@", "grpc", "src/compiler", "grpc_cpp_plugin"]. Those targets
where used implicitly in the generation of protobuf. As flexible
config we use all variables those targets currently depend upon.
This will have to be extended once cross compilation will be
added. So far, the "TARGET_ARCH" is only used by targets that have
different source files (typically inline assembly) for different
target architectures. With cross compilation, also the tool chain
will depend on the target architecture.
|
|
|
|
In particular, also add a target that explicitly all dependencies
besides python3 and the C++ compiler which also serves as a machine
checkable documentation.
|
|
For quick development, it is convenient to only need a C++ compiler
and python3 and get all dependencies downloaded at the beginning
of the bootstrap process. For packaging the tool, however, this
is not a valid approach; dependencies should be managed by the
packing tool there (so that security updates have to be fixed only
at one place). So, for building our tool, the dependencies look
like installed to the ambient environment.
|