aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/install
AgeCommit message (Collapse)AuthorFilesLines
2022-11-08Make process exit diagnostics consistentBoris Kolpackov1-8/+22
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-6/+11
2022-10-13Improve diagnosticsBoris Kolpackov1-0/+12
2022-10-13Optimize by going straight to public variable pool where applicableBoris Kolpackov2-13/+16
2022-10-13Switch to public/private variables modelBoris Kolpackov3-35/+41
Now unqualified variables are project-private and can be typified.
2022-10-10Preparatory work for public/private variable distinctionBoris Kolpackov1-0/+2
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool().
2022-05-23Cache build.host value in contextBoris Kolpackov1-2/+2
2022-04-19Switch recipe from std::function to butl::move_only_function_exBoris Kolpackov1-1/+1
2022-04-07Rename {match,execute}() to *_sync(), add *_complete()Boris Kolpackov1-5/+5
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-19/+18
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-21Filter out exe{} prerequisites in install group rule similar to file ruleBoris Kolpackov2-0/+29
2022-03-21Make sure install group rule take precedence over fallback file ruleBoris Kolpackov1-2/+8
2022-03-07Fix operation-specific variables logic for inner/outer operationsBoris Kolpackov2-9/+18
2022-03-02Add update operation-specific variable with unmatch|match additional valuesBoris Kolpackov2-10/+29
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.
2022-01-26Make bash module install into bin/<project>.bash/ to avoid clashesBoris Kolpackov1-1/+0
Also, expect the first component in the import path to be full project name even in case it has the .bash extension.
2021-12-16Pass context to (meta-)operation hooksBoris Kolpackov1-3/+6
2021-11-04Do not apply install scope to update-for-install pre-operationBoris Kolpackov2-2/+6
2021-10-07Allow forcing installation of exe{} prerequisites of file targetsBoris Kolpackov2-2/+12
This can be achieved with prerequisite-specific install=true, for example: exe{foo}: exe{bar}: install = true # foo runs bar
2021-10-07Minor install-related cleanupsBoris Kolpackov2-2/+15
2021-10-06Do not install exe{} prerequisites of file targetsBoris Kolpackov2-7/+18
2021-09-29Add notion of bundle amalgamation scopeBoris Kolpackov2-0/+3
2021-09-28Adapt to libbutl headers extension change from .mxx to .hxxKaren Arutyunov2-2/+2
2021-09-17Add fallback update-for-uninstall rule to global scopeBoris Kolpackov1-3/+6
2021-09-14Fix few issues with new config.install.scopeBoris Kolpackov1-32/+31
2021-09-14Consistently install prerequisites from any scope by defaultBoris Kolpackov5-24/+111
It is also now possible to adjust this behavior with global config.install.scope override. Valid values for this variable are: project -- only from project strong -- from strong amalgamation weak -- from weak amalgamation global -- from all projects (default)
2021-05-04Add config.install.root with data_root/etc/ defaultBoris Kolpackov1-0/+2
2021-04-22Add <version> install directory substitution in addition to <project>Boris Kolpackov1-5/+20
2021-04-07Register environment variables for hermetic build configurationsBoris Kolpackov1-0/+34
2021-02-09Minor simplificationBoris Kolpackov1-2/+2
2020-12-04Mark Buildfile functions as pure or impureBoris Kolpackov1-1/+3
2020-12-01Add clarifying commentBoris Kolpackov1-2/+3
2020-11-30Don't fail if unable to remove empty directory on uninstallBoris Kolpackov1-3/+15
2020-10-20Add operation callback for adhoc rule match and applyBoris Kolpackov1-1/+7
2020-08-25Add missing move() callBoris Kolpackov1-1/+3
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-3/+3
2020-07-10Tweak rule namesBoris Kolpackov1-1/+1
2020-07-09Make sure update-for-{test,install} works for files out of any projectBoris Kolpackov1-0/+6
2020-07-09Relax prerequisite filtering semantics of aliases in test and install rulesBoris Kolpackov2-4/+2
2020-07-01Add support for private installationsBoris Kolpackov1-42/+109
2020-07-01Use <project> substitution in install directoriesBoris Kolpackov1-21/+24
2020-06-30Add support for <var>-substitutions in config.install.* valuesBoris Kolpackov1-8/+66
For now, the only recognized variable name is <project> which is substituted with the project name. This can be used along these lines: $ b config.install.libexec='exec_root/lib/<project>/' install
2020-06-29Add config.install.share variableBoris Kolpackov1-4/+6
Its default value is data_root/share/ and it is now used as a common root for config.install.{data,doc,man} variables.
2020-06-29Add legal{} target type and config.install.legal variableBoris Kolpackov1-10/+14
This allows separation of legal files (LICENSE, AUTHORS, etc) from other documentation. For example: ./: ... doc{README} legal{LICENSE} $ b install ... config.install.legal=/usr/share/licenses/hello/
2020-06-25Add more instrumentation for unassigned path raceBoris Kolpackov1-2/+2
2020-06-16Add $bin.link_member() functionBoris Kolpackov1-2/+0
Given a linker output target type ("exe", "lib[as]", or "libu[eas]") return the target type of lib{} group member ("liba" or "libs") that will be picked when linking a lib{} group to this target type.
2020-04-30Rename target::member to target::adhoc_memberBoris Kolpackov1-2/+6
2020-03-31Use find instead of insert for variable lookup in install_{path,mode}()Boris Kolpackov1-2/+4
2020-03-31Switch to project variable visibility by defaultBoris Kolpackov1-12/+6
2020-03-20Don't install ad hoc members with nonexistent timestampBoris Kolpackov1-3/+3