Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 10 additions & 44 deletions doc/Jamfile.v2
Original file line number Diff line number Diff line change
@@ -1,57 +1,23 @@
import generate ;
import path ;
import property-set ;
import virtual-target ;
# Copyright 2026 Joaquin M Lopez Munoz
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

path-constant HERE : . ;
make html_ : build_antora.sh : @run-script ;

make html/index.html : build_antora.sh : @run-script ;
generate files-to-install : html/index.html : <generating-rule>@delayed-glob ;
install install
: files-to-install
: <location>html
<install-source-root>html/unordered
;
explicit html/index.html files-to-install ;

# this runs the antora script
actions run-script
{
bash $(>)
}

# this globs after its sources are created
rule delayed-glob ( project name : property-set : sources * )
{
for local src in $(sources)
{
# the next line causes the source to be generated immediately
# and not later (which it normally would)
UPDATE_NOW [ $(src).actualize ] ;
}

# we need to construct the path to the globbed directory;
# this path would be <current-project>/antora
local root = [ path.root html [ $(project).location ] ] ;
local files ;
make cleanup_node_modules_ : html_ : @cleanup-node-modules ;

# actual globbing happens here
for local file in [ path.glob-tree $(root) : * ]
{
# we have to skip directories, because our match expression accepts anything
if [ CHECK_IF_FILE $(file) ]
{
# we construct a list of targets to copy
files += [ virtual-target.from-file $(file:D=) : $(file:D) : $(project) ] ;
}
}

# we prepend empty usage requirements to the result
return [ property-set.empty ] $(files) ;
actions cleanup-node-modules
{
bash -c "rm -rf node_modules"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bash -c shouldn't be necessary here. It is needed in run-script because otherwise building from the doc directory would invoke build_antora.sh (and not the relative path to that script), which will fail.

rm is a shell command, so it doesn't need another shell wrapper. On the other hand, node_modules is incorrect, as it only works if b2 is invoked from the doc directory. Replace with this:

import path ;
path-constant DOC_DIR : . ;
.node_modules = [ path.join $(DOC_DIR) node_modules ] ;

actions cleanup-node-modules
{
    rm -rf $(.node_modules)
}

}

###############################################################################
alias boostdoc ;
explicit boostdoc ;
alias boostrelease : install ;
explicit boostrelease ;
alias boostrelease : html_ ;
explicit boostrelease ;
Loading