aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/dist
AgeCommit message (Collapse)AuthorFilesLines
2023-12-03Reimplement search_existing() functions via target_type::searchBoris Kolpackov1-2/+2
This allows us to automatically get the target type-specific behavior with regards to the out_only semantics (added in the previous commit) instead of passing it explicitly from each call site.
2023-09-20Fix issue with fallback rule priority in dist moduleBoris Kolpackov1-2/+7
While at it, also remove workarounds for the same issue in the config and test modules.
2023-05-29Handle see-through groups with dynamic members in distBoris Kolpackov2-25/+126
2023-05-16Implement dist meta-operation without invoking install (GH issue #190)Boris Kolpackov2-54/+122
The use of install (or another install-like program) can still be forced with config.dist.cmd=install.
2023-05-09Add --load-only option in addition to --match-onlyBoris Kolpackov1-2/+2
This option has the effect of loading all the subdirectory buildfiles that are not explicitly included.
2023-03-17Tweak/add few commentsBoris Kolpackov1-2/+4
2023-03-01Add support for installation manifestBoris Kolpackov1-12/+50
2022-12-12Adapt to dir_iterator API changeKaren Arutyunov1-1/+1
2022-12-01Make dist::rule reusable as baseBoris Kolpackov6-38/+41
2022-11-30Deal with order dependence in dist ruleBoris Kolpackov6-60/+191
2022-11-16Initial low verbosity diagnostics reworkBoris Kolpackov1-8/+8
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-5/+13
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored.
2022-11-08More work on child process diagnostics bufferingBoris Kolpackov1-15/+17
2022-10-20Ignore post hoc prerequisites in dist ruleBoris Kolpackov1-1/+7
2022-10-19Add support for post hoc prerequisitesBoris Kolpackov2-14/+20
Unlike normal and ad hoc prerequisites, a post hoc prerequisite is built after the target, not before. It may also form a dependency cycle together with normal/ad hoc prerequisites. In other words, all this form of dependency guarantees is that a post hoc prerequisite will be built if its dependent target is built. See the NEWS file for details and an example.
2022-10-13Optimize by going straight to public variable pool where applicableBoris Kolpackov1-23/+29
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov1-1/+1
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool().
2022-09-16Register fallback dist meta-operation rule for out of project targetsBoris Kolpackov1-1/+11
The problematic scenario this fixes is an ad hoc pattern rule (which we register for dist in order to inject any additional sources; see parser.cxx for details) that pulls a tool imported from the system (say /usr/bin/xxd).
2022-09-06Add ability to remap paths in distributionBoris Kolpackov2-29/+102
Specifically, the dist target-specific variable now can specify a path besides true or false. This path is the "imaginary" source location which is used to derive the corresponding distribution local. This location can be either a directory path (to remap with the same file name) or a file path (to remap with a different name). If the path is relative, then it's treated relative to the target directory. Note that to make things less error prone, simple paths without any directory separators are not allowed (use ./<name> instead). Note that if multiple targets end up with the same source location, the behavior is undefined and no diagnostics is issued. Note also that such remapping has no effect in the bootstrap distribution mode.
2022-07-21Don't issue conditional dependency declaration warning for imported projectsBoris Kolpackov2-2/+27
2022-05-27Don't pass --format to OpenBSD tar (ustar is default)Boris Kolpackov1-22/+25
2022-05-06Minor terminology fix in diagnostics and commentsBoris Kolpackov2-3/+3
2022-04-19Switch to using std::function for target::data_padBoris Kolpackov1-1/+1
2022-04-07Rename {match,execute}() to *_sync(), add *_complete()Boris Kolpackov1-1/+1
In particular, the match() rename makes sure it doesn't clash with rule::match() which, after removal of the hint argument in simple_rule, has exactly the same signature, thus making it error-prone to calling recursively.
2022-04-06Add support for rule hintsBoris Kolpackov3-3/+3
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match.
2022-03-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov1-1/+6
Note that the unmatch (match but do not update) and match (update during match) values are only supported by certain rules (and potentially only for certain prerequisite types). Additionally: - All operation-specific variables are now checked for false as an override for the prerequisite-specific include value. In particular, this can now be used to disable a prerequisite for update, for example: ./: exe{test}: update = false - The cc::link_rule now supports the update=match value for headers and ad hoc prerequisites. In particular, this can be used to make sure all the library headers are updated before matching any of its (or dependent's) object files.
2021-12-16Pass context to (meta-)operation hooksBoris Kolpackov1-9/+9
2021-11-16Ignore (with warning) directory symlink cycles in bootstrap distBoris Kolpackov1-3/+44
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov1-2/+2
2021-04-07Register environment variables for hermetic build configurationsBoris Kolpackov1-0/+22
2021-04-02Add support for propagating project environmentBoris Kolpackov1-0/+7
2021-03-19Redo entering of src directories into scope_mapBoris Kolpackov1-3/+5
2021-02-08Enter scope src directories into scope mapBoris Kolpackov1-1/+1
2021-01-30Rework include translation supportBoris Kolpackov1-2/+0
See the config.cxx.translate_include variable documentation in cxx/init.cxx for details.
2020-11-02Set executable bit for ad hoc buildscript rule executable target on POSIXKaren Arutyunov1-1/+1
2020-10-27Tweak dist rule to handle prerequisites outside projectBoris Kolpackov1-7/+21
2020-10-07Add ability to specify extra adhoc files for distributionBoris Kolpackov2-6/+58
2020-09-29Add bootstrap distribution mode (!config.dist.bootstrap=true)Boris Kolpackov4-233/+435
In this mode the dist meta-operation does not load the project (but does bootstrap it) and adds all the source files into the distribution only ignoring files and directories that start with a dot. This mode is primarily meant for situation where the project cannot (yet) be loaded due to missing dependencies.
2020-08-16Add ability to initialize bootstrapped modules after loading root.buildBoris Kolpackov1-3/+1
2020-07-13Add ability to extend rule interface in source-compatible mannerBoris Kolpackov1-1/+1
2020-07-12Cache subprojects variable value in scope::root_extraBoris Kolpackov1-4/+4
2020-05-27Initial support for ad hoc recipes (still work in progress)Boris Kolpackov1-1/+1
2020-03-31Switch to project variable visibility by defaultBoris Kolpackov1-9/+6
2020-03-17Rework config::{omitted,required,optional}() into unified config_lookup()Boris Kolpackov1-8/+11
2020-02-12Add convenience run_start() overloadBoris Kolpackov1-1/+1
2020-02-11Add match_only flag to contextBoris Kolpackov1-41/+44
2020-02-07Drop copyright notice from source codeKaren Arutyunov8-8/+0
2020-01-29Rename module_base to module, redo module boot/init argument passingBoris Kolpackov3-19/+4
2020-01-28Use scope::var_pool()Boris Kolpackov1-1/+1
2020-01-28Use scope::insert_rule()Boris Kolpackov1-2/+2