summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-05-08 19:30:55 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-05-08 19:30:55 +0200
commitdc7f3cd85d61ca7af6a935c30b32d71026efdffe (patch)
treec6f4cee93b1fd68f47ae557b50f13e10f3ac320a
parent64c272dfc5a40082b2a8f488e99bf758223f8a8a (diff)
Add intro2 scripts
-rwxr-xr-xintro4
-rwxr-xr-xintro2-tldr73
-rw-r--r--intro2-tldr.orig97
-rwxr-xr-xintro2-tour201
-rw-r--r--intro2-tour.orig431
5 files changed, 804 insertions, 2 deletions
diff --git a/intro b/intro
index 6587f37..6b2b747 100755
--- a/intro
+++ b/intro
@@ -1,8 +1,8 @@
#! /usr/bin/env bash
-# Test examples from the into.
+# Test examples from the intro.
#
-# Usage: install [options] <hello-repo>
+# Usage: intro [options] <hello-repo>
#
# -t <toolchain>
# Specify the build2 toolchain install/stage directory. The script will
diff --git a/intro2-tldr b/intro2-tldr
new file mode 100755
index 0000000..31d5f49
--- /dev/null
+++ b/intro2-tldr
@@ -0,0 +1,73 @@
+#! /usr/bin/env bash
+
+# Test examples from the intro2, the TL;DR section.
+#
+# Usage: intro [options]
+#
+usage="usage: $0 [options]"
+
+owd=`pwd`
+trap "{ cd $owd; exit 1; }" ERR
+set -o errtrace # Trap in functions.
+
+function error () { echo "$*" 1>&2; exit 1; }
+
+tmp=/tmp
+show=y
+
+function show () # <cmd> ...
+{
+ if [ $show = "y" ]; then
+ echo
+ echo "+ $*"
+ "${@}"
+ else
+ "${@}"
+ fi
+}
+
+cd "$tmp"
+
+rm -rf hello.git hello hello-gcc
+
+# Prepare hello.git repository.
+#
+bdep new -t exe -l c++ --no-init -d hello.git hello
+cd hello.git
+sed -i -re 's/version: .+/version: 0.1.0/' manifest
+git add .
+git commit -m "first commit"
+cd ..
+
+show git clone file://$tmp/hello.git
+show tree hello
+
+show cd hello
+show bdep init --config-create ../hello-gcc cc config.cxx=g++
+show b
+show hello/hello World
+
+cat <<EOF >>repositories.manifest
+:
+role: prerequisite
+location: https://git.build2.org/hello/libhello.git#v1.0.0
+EOF
+cat <<EOF >>manifest
+depends: libhello ^1.0.0
+EOF
+sed -i -re 's/#import/import/' hello/buildfile
+cat <<EOF >>hello/hello.cxx
+#include <libhello/hello.hxx>
+EOF
+
+show b
+
+sed -i -re 's/#v1.0.0//' repositories.manifest
+show bdep fetch
+bdep sync
+show bdep status -i
+
+show bdep sync libhello
+show bdep sync libhello/1.0.0
+
+cd ..
diff --git a/intro2-tldr.orig b/intro2-tldr.orig
new file mode 100644
index 0000000..02a2f65
--- /dev/null
+++ b/intro2-tldr.orig
@@ -0,0 +1,97 @@
+created new executable project hello in /tmp/hello.git/
+[master (root-commit) 6782952] first commit
+ 11 files changed, 99 insertions(+)
+ create mode 100644 .gitignore
+ create mode 100644 build/.gitignore
+ create mode 100644 build/bootstrap.build
+ create mode 100644 build/root.build
+ create mode 100644 buildfile
+ create mode 100644 hello/.gitignore
+ create mode 100644 hello/buildfile
+ create mode 100644 hello/hello.cxx
+ create mode 100644 hello/testscript
+ create mode 100644 manifest
+ create mode 100644 repositories.manifest
+
++ git clone file:///tmp/hello.git
+Cloning into 'hello'...
+
++ tree hello
+hello
+├── build
+│   ├── bootstrap.build
+│   └── root.build
+├── buildfile
+├── hello
+│   ├── buildfile
+│   ├── hello.cxx
+│   └── testscript
+├── manifest
+└── repositories.manifest
+
+2 directories, 8 files
+
++ cd hello
+
++ bdep init --config-create ../hello-gcc cc config.cxx=g++
+initializing project /tmp/hello/
+created configuration /tmp/hello-gcc/ (1, default, forwarded, auto-synchronized)
+synchronizing:
+ new hello/0.1.0
+
++ b
+mkdir ../hello-gcc/hello/fsdir{hello/}
+c++ hello/cxx{hello}@../hello-gcc/hello/hello/
+ld ../hello-gcc/hello/hello/exe{hello}
+ln ../hello-gcc/hello/hello/exe{hello} -> hello/
+
++ hello/hello World
+Hello, World!
+
++ b
+fetching git:build2.org/hello/libhello#v1.0.0 (prerequisite of dir:/tmp/hello)
+querying https://git.build2.org/hello/libhello.git
+fetching from https://git.build2.org/hello/libhello.git
+synchronizing /tmp/hello-gcc/:
+ new libhello/1.0.0 (required by hello)
+ upgrade hello/0.1.0#1
+distributing libhello/1.0.0
+ver ../hello-gcc/libhello-1.0.0/libhello/version.hxx.in
+c++ ../hello-gcc/libhello-1.0.0/libhello/cxx{hello}
+c++ hello/cxx{hello}@../hello-gcc/hello/hello/
+ld ../hello-gcc/libhello-1.0.0/libhello/libs{hello}
+ld ../hello-gcc/hello/hello/exe{hello}
+ln ../hello-gcc/hello/hello/exe{hello} -> hello/
+
++ bdep fetch
+fetching git:build2.org/hello/libhello (prerequisite of dir:/tmp/hello)
+querying https://git.build2.org/hello/libhello.git
+fetching from https://git.build2.org/hello/libhello.git
+fetching git:build2.org/hello/libformat##HEAD (prerequisite of git:build2.org/hello/libhello)
+querying https://git.build2.org/hello/libformat.git
+fetching from https://git.build2.org/hello/libformat.git
+fetching git:build2.org/hello/libprint##HEAD (prerequisite of git:build2.org/hello/libhello)
+querying https://git.build2.org/hello/libprint.git
+fetching from https://git.build2.org/hello/libprint.git
+
++ bdep status -i
+hello configured 0.1.0#1
+ libhello ^1.0.0 configured 1.0.0 available [1.1.0]
+
++ bdep sync libhello
+synchronizing:
+ new libformat/1.0.0 (required by libhello)
+ new libprint/1.0.0 (required by libhello)
+ upgrade libhello/1.1.0
+ reconfigure hello/0.1.0#1
+distributing libformat/1.0.0
+distributing libprint/1.0.0
+distributing libhello/1.1.0
+
++ bdep sync libhello/1.0.0
+synchronizing:
+ drop libprint/1.0.0 (unused)
+ drop libformat/1.0.0 (unused)
+ downgrade libhello/1.0.0
+ reconfigure hello/0.1.0#1
+distributing libhello/1.0.0
diff --git a/intro2-tour b/intro2-tour
new file mode 100755
index 0000000..d9ef011
--- /dev/null
+++ b/intro2-tour
@@ -0,0 +1,201 @@
+#! /usr/bin/env bash
+
+# Test examples from the intro2, the Tour section. The optional <repo>
+# and <trust> arguments specify the pkg repository and its fingerpring
+# that contain libhello-1.0.0.
+#
+# Usage: intro [options] [<repo> <trust>]
+#
+usage="usage: $0 [options]"
+
+owd=`pwd`
+trap "{ cd $owd; exit 1; }" ERR
+set -o errtrace # Trap in functions.
+
+function error () { echo "$*" 1>&2; exit 1; }
+
+tmp=/tmp
+show=y
+
+gcc=g++
+clang=clang++-5.0
+msvc=cl-15
+repo=https://stage.build2.org/1/
+trust="37:CE:2C:A5:1D:CF:93:81:D7:07:46:AD:66:B3:C3:90:83:B8:96:9E:34:F0:E7:B3:A2:B0:6C:EF:66:A4:BE:65"
+
+function show () # <cmd> ...
+{
+ if [ $show = "y" ]; then
+ echo
+ echo "+ $*"
+ "${@}"
+ else
+ "${@}"
+ fi
+}
+
+cd "$tmp"
+
+function clean ()
+{
+ rm -rf hello hello-gcc hello-clang hello-vc-* hello-mingw
+}
+
+##if false; then
+
+clean
+
+show bdep new -t exe -l c++ hello
+show tree hello
+show cd hello
+show cat hello/hello.cxx
+show cat hello/buildfile
+show cat hello/testscript
+show cat manifest
+
+show bdep init -C ../hello-gcc @gcc cc config.cxx=$gcc
+show bdep init -C ../hello-clang @clang cc config.cxx=$clang
+show ls -d -1 ../hello*
+
+show bdep init -C ../hello-vc-debug @debug cc config.cxx=$msvc \
+ "config.cc.coptions=/MDd /Z7" config.cc.loptions=/DEBUG
+show bdep init -C ../hello-vc-release @release cc config.cxx=$msvc \
+ config.cc.coptions=/O2
+
+show bdep status
+show b
+show b test
+show hello/hello World
+
+show bdep status @clang
+show b ../hello-clang/hello/
+show b test: ../hello-clang/hello/
+show ../hello-clang/hello/hello/hello World
+
+show bdep init -C ../hello-mingw @mingw cc config.cxx=x86_64-w64-mingw32-g++
+show b ../hello-mingw/hello/
+show b test: ../hello-mingw/hello/
+show ../hello-mingw/hello/hello/hello.exe Windows
+
+cd ..
+##fi
+
+##if false; then
+
+clean
+show bdep new -C hello-gcc @gcc -t exe -l c++ hello cc config.cxx=$gcc
+cd hello
+show bdep init -C ../hello-clang @clang cc config.cxx=$clang
+
+# Package Repositories
+#
+show bpkg rep-info https://git.build2.org/hello/libhello.git
+show bpkg rep-info https://git.build2.org/hello/libhello.git#HEAD
+
+# Adding and Removing Dependencies
+#
+cat <<EOF >>repositories.manifest
+:
+role: prerequisite
+location: $repo
+EOF
+cat <<EOF >>manifest
+depends: libhello ^1.0.0
+EOF
+sed -i -re 's/^#import/import/' hello/buildfile
+cat <<EOF >hello/hello.cxx
+#include <iostream>
+
+#include <libhello/hello.hxx>
+
+using namespace std;
+
+int main (int argc, char* argv[])
+{
+ if (argc < 2)
+ {
+ cerr << "error: missing name" << endl;
+ return 1;
+ }
+
+ hello::say_hello (cout, "World");
+}
+EOF
+
+show bdep status
+
+cat <<EOF >>repositories.manifest
+trust: $trust
+EOF
+
+show bdep sync
+
+echo '' >>manifest
+show b
+
+show bdep status -ai
+show bdep sync -a
+
+sed -i -re 's/^import/#import/' hello/buildfile
+sed -i -re 's/^depends: libhello/#depends: libhello/' manifest
+
+show bdep status
+show bdep sync
+
+# Upgrading and Downgrading Dependencies
+#
+sed -i -re 's/^#import/import/' hello/buildfile
+sed -i -re 's/^#depends: libhello/depends: libhello/' manifest
+bdep sync
+
+cat <<EOF >>repositories.manifest
+:
+role: prerequisite
+location: https://git.build2.org/hello/libhello.git
+EOF
+
+show bdep fetch
+show bdep status libhello
+show bdep sync libhello
+
+show bdep status -r
+
+show bdep status -o libhello
+show bdep sync libhello/1.0.0
+
+# Versioning and Release Management.
+#
+git add .
+git commit -m "Start hello project"
+
+show bdep status
+show b info
+show bdep sync
+show bdep status
+
+echo '' >>buildfile
+git commit -a -m "Another commit"
+
+show bdep status
+
+cd ..
+##fi
+
+# Package Consumption.
+#
+rm -rf tools
+
+show bpkg create -d tools cc \
+ config.cxx=$gcc \
+ config.cc.coptions=-O3 \
+ config.install.root=/opt/tools \
+ config.install.sudo=sudo \
+ config.bin.rpath=/opt/tools/lib
+
+show cd tools
+
+show bpkg build hello@https://git.build2.org/hello/hello.git
+show bpkg install hello
+show /opt/tools/bin/hello World
+show bpkg uninstall hello
+show bpkg drop hello
diff --git a/intro2-tour.orig b/intro2-tour.orig
new file mode 100644
index 0000000..d1473a7
--- /dev/null
+++ b/intro2-tour.orig
@@ -0,0 +1,431 @@
+
++ bdep new -t exe -l c++ hello
+created new executable project hello in /tmp/hello/
+
++ tree hello
+hello
+├── build
+│   ├── bootstrap.build
+│   └── root.build
+├── buildfile
+├── hello
+│   ├── buildfile
+│   ├── hello.cxx
+│   └── testscript
+├── manifest
+└── repositories.manifest
+
+2 directories, 8 files
+
++ cd hello
+
++ cat hello/hello.cxx
+#include <iostream>
+
+using namespace std;
+
+int main (int argc, char* argv[])
+{
+ if (argc < 2)
+ {
+ cerr << "error: missing name" << endl;
+ return 1;
+ }
+
+ cout << "Hello, " << argv[1] << '!' << endl;
+}
+
++ cat hello/buildfile
+libs =
+#import libs += libhello%lib{hello}
+
+exe{hello}: {hxx ixx txx cxx}{*} $libs test{testscript}
+
+cxx.poptions =+ "-I$out_root" "-I$src_root"
+
++ cat hello/testscript
+: basics
+:
+$* 'World' >'Hello, World!'
+
+: missing-name
+:
+$* 2>>EOE != 0
+error: missing name
+EOE
+
++ cat manifest
+: 1
+name: hello
+version: 0.1.0-a.0.z
+summary: hello executable project
+license: proprietary
+url: https://example.org/hello
+email: you@example.org
+depends: * build2 >= 0.7.0-
+depends: * bpkg >= 0.7.0-
+#depends: libhello ^1.0.0
+
++ bdep init -C ../hello-gcc @gcc cc config.cxx=g++
+initializing project /tmp/hello/
+created configuration @gcc /tmp/hello-gcc/ (1, default, forwarded, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ bdep init -C ../hello-clang @clang cc config.cxx=clang++-5.0
+initializing project /tmp/hello/
+created configuration @clang /tmp/hello-clang/ (2, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ ls -d -1 ../hello ../hello1 ../hello1-gcc ../hello2 ../hello2-gcc ../hello-clang ../hello-gcc ../hello.git
+../hello
+../hello1
+../hello1-gcc
+../hello2
+../hello2-gcc
+../hello-clang
+../hello-gcc
+../hello.git
+
++ bdep init -C ../hello-vc-debug @debug cc config.cxx=cl-15 config.cc.coptions=/MDd /Z7 config.cc.loptions=/DEBUG
+initializing project /tmp/hello/
+created configuration @debug /tmp/hello-vc-debug/ (3, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ bdep init -C ../hello-vc-release @release cc config.cxx=cl-15 config.cc.coptions=/O2
+initializing project /tmp/hello/
+created configuration @release /tmp/hello-vc-release/ (4, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ bdep status
+hello configured 0.1.0-a.0.19700101000000
+
++ b
+mkdir ../hello-gcc/hello/fsdir{hello/}
+c++ hello/cxx{hello}@../hello-gcc/hello/hello/
+ld ../hello-gcc/hello/hello/exe{hello}
+ln ../hello-gcc/hello/hello/exe{hello} -> hello/
+
++ b test
+test hello/test{testscript}@../hello-gcc/hello/hello/ ../hello-gcc/hello/hello/exe{hello}
+
++ hello/hello World
+Hello, World!
+
++ bdep status @clang
+hello configured 0.1.0-a.0.19700101000000
+
++ b ../hello-clang/hello/
+mkdir ../hello-clang/hello/fsdir{hello/}
+c++ hello/cxx{hello}@../hello-clang/hello/hello/
+ld ../hello-clang/hello/hello/exe{hello}
+
++ b test: ../hello-clang/hello/
+test hello/test{testscript}@../hello-clang/hello/hello/ ../hello-clang/hello/hello/exe{hello}
+
++ ../hello-clang/hello/hello/hello World
+Hello, World!
+
++ bdep init -C ../hello-mingw @mingw cc config.cxx=x86_64-w64-mingw32-g++
+initializing project /tmp/hello/
+created configuration @mingw /tmp/hello-mingw/ (5, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ b ../hello-mingw/hello/
+mkdir ../hello-mingw/hello/fsdir{hello/}
+c++ hello/cxx{hello}@../hello-mingw/hello/hello/
+ld ../hello-mingw/hello/hello/exe{hello}
+
++ b test: ../hello-mingw/hello/
+test hello/test{testscript}@../hello-mingw/hello/hello/ ../hello-mingw/hello/hello/exe{hello}
+
++ ../hello-mingw/hello/hello/hello.exe Windows
+Hello, Windows!
+
++ bdep new -C hello-gcc @gcc -t exe -l c++ hello cc config.cxx=g++
+created new executable project hello in /tmp/hello/
+created configuration @gcc /tmp/hello-gcc/ (1, default, forwarded, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ bdep init -C ../hello-clang @clang cc config.cxx=clang++-5.0
+initializing project /tmp/hello/
+created configuration @clang /tmp/hello-clang/ (2, auto-synchronized)
+synchronizing:
+ new hello/0.1.0-a.0.19700101000000
+
++ bpkg rep-info https://git.build2.org/hello/libhello.git
+querying https://git.build2.org/hello/libhello.git
+fetching from https://git.build2.org/hello/libhello.git
+git:build2.org/hello/libhello https://git.build2.org/hello/libhello.git
+prerequisite git:build2.org/hello/libprint##HEAD https://git.build2.org/hello/libprint.git##HEAD
+prerequisite git:build2.org/hello/libformat##HEAD https://git.build2.org/hello/libformat.git##HEAD
+
+libhello/1.0.0
+libmhello/1.0.0
+libhello/1.1.0
+libmhello/1.1.0
+
++ bpkg rep-info https://git.build2.org/hello/libhello.git#HEAD
+querying https://git.build2.org/hello/libhello.git
+fetching from https://git.build2.org/hello/libhello.git
+git:build2.org/hello/libhello#HEAD https://git.build2.org/hello/libhello.git#HEAD
+prerequisite git:build2.org/hello/libprint##HEAD https://git.build2.org/hello/libprint.git##HEAD
+prerequisite git:build2.org/hello/libformat##HEAD https://git.build2.org/hello/libformat.git##HEAD
+
+libhello/1.1.0
+libmhello/1.1.0
+
++ bdep status
+fetching pkg:stage.build2.org (prerequisite of dir:/tmp/hello)
+warning: authenticity of the certificate for repository pkg:stage.build2.org cannot be established
+certificate is for **stage.build2.org, "Code Synthesis" <stage-admin@build2.org>
+certificate SHA256 fingerprint:
+37:CE:2C:A5:1D:CF:93:81:D7:07:46:AD:66:B3:C3:90:83:B8:96:9E:34:F0:E7:B3:A2:B0:6C:EF:66:A4:BE:65
+trust this certificate? [y/n] hello configured 0.1.0-a.0.19700101000000 available 0.1.0-a.0.19700101000000#1
+
++ bdep sync
+synchronizing:
+ new libhello/1.0.0 (required by hello)
+ upgrade hello/0.1.0-a.0.19700101000000#1
+
+ 0K ... 100% 95.5M=0s
++ b
+synchronizing /tmp/hello-gcc/:
+ upgrade hello/0.1.0-a.0.19700101000000#2
+mkdir ../hello-gcc/hello/fsdir{hello/}
+ver ../hello-gcc/libhello-1.0.0/libhello/version.hxx.in
+c++ ../hello-gcc/libhello-1.0.0/libhello/cxx{hello}
+c++ hello/cxx{hello}@../hello-gcc/hello/hello/
+ld ../hello-gcc/libhello-1.0.0/libhello/libs{hello}
+ld ../hello-gcc/hello/hello/exe{hello}
+ln ../hello-gcc/hello/hello/exe{hello} -> hello/
+
++ bdep status -ai
+in configuration @gcc:
+hello configured 0.1.0-a.0.19700101000000#2
+ libhello ^1.0.0 configured 1.0.0
+
+in configuration @clang:
+fetching pkg:stage.build2.org (prerequisite of dir:/tmp/hello)
+hello configured 0.1.0-a.0.19700101000000 available 0.1.0-a.0.19700101000000#1
+
++ bdep sync -a
+in configuration @gcc:
+
+in configuration @clang:
+synchronizing:
+ new libhello/1.0.0 (required by hello)
+ upgrade hello/0.1.0-a.0.19700101000000#1
+
+ 0K ... 100% 97.3M=0s
++ bdep status
+hello configured 0.1.0-a.0.19700101000000#2 available 0.1.0-a.0.19700101000000#3
+
++ bdep sync
+synchronizing:
+ drop libhello/1.0.0 (unused)
+ upgrade hello/0.1.0-a.0.19700101000000#3
+synchronizing:
+ new libhello/1.0.0 (required by hello)
+ upgrade hello/0.1.0-a.0.19700101000000#4
+
+ 0K ... 100% 89.0M=0s
++ bdep fetch
+fetching git:build2.org/hello/libhello (prerequisite of dir:/tmp/hello)
+querying https://git.build2.org/hello/libhello.git
+fetching from https://git.build2.org/hello/libhello.git
+fetching git:build2.org/hello/libformat##HEAD (prerequisite of git:build2.org/hello/libhello)
+querying https://git.build2.org/hello/libformat.git
+fetching from https://git.build2.org/hello/libformat.git
+fetching git:build2.org/hello/libprint##HEAD (prerequisite of git:build2.org/hello/libhello)
+querying https://git.build2.org/hello/libprint.git
+fetching from https://git.build2.org/hello/libprint.git
+fetching pkg:stage.build2.org (prerequisite of dir:/tmp/hello)
+
++ bdep status libhello
+libhello configured 1.0.0 available [1.1.0]
+
++ bdep sync libhello
+synchronizing:
+ new libformat/1.0.0 (required by libhello)
+ new libprint/1.0.0 (required by libhello)
+ upgrade libhello/1.1.0
+ reconfigure hello/0.1.0-a.0.19700101000000#4
+distributing libformat/1.0.0
+distributing libprint/1.0.0
+distributing libhello/1.1.0
+
++ bdep status -r
+hello configured 0.1.0-a.0.19700101000000#4
+ libhello ^1.0.0 configured 1.1.0
+ libformat ^1.0.0 configured 1.0.0
+ libprint ^1.0.0 configured 1.0.0
+
++ bdep status -o libhello
+libhello configured 1.1.0 available (1.1.0) [1.0.0]
+
++ bdep sync libhello/1.0.0
+synchronizing:
+ drop libprint/1.0.0 (unused)
+ drop libformat/1.0.0 (unused)
+ downgrade libhello/1.0.0
+ reconfigure hello/0.1.0-a.0.19700101000000#4
+distributing libhello/1.0.0
+[master (root-commit) 7183b8d] Start hello project
+ 11 files changed, 110 insertions(+)
+ create mode 100644 .gitignore
+ create mode 100644 build/.gitignore
+ create mode 100644 build/bootstrap.build
+ create mode 100644 build/root.build
+ create mode 100644 buildfile
+ create mode 100644 hello/.gitignore
+ create mode 100644 hello/buildfile
+ create mode 100644 hello/hello.cxx
+ create mode 100644 hello/testscript
+ create mode 100644 manifest
+ create mode 100644 repositories.manifest
+
++ bdep status
+hello configured 0.1.0-a.0.19700101000000#4 available 0.1.0-a.0.20180507065733.7183b8d4b235
+
++ b info
+project: hello
+version: 0.1.0-a.0.20180507065733.7183b8d4b235
+summary: hello executable project
+url: https://example.org/hello
+src_root: /tmp/hello/
+out_root: /tmp/hello-gcc/hello/
+amalgamation: ../
+subprojects:
+
++ bdep sync
+synchronizing:
+ upgrade hello/0.1.0-a.0.20180507065733.7183b8d4b235
+
++ bdep status
+hello configured 0.1.0-a.0.20180507065733.7183b8d4b235
+[master 9628993] Another commit
+ 1 file changed, 1 insertion(+)
+
++ bdep status
+hello configured 0.1.0-a.0.20180507065733.7183b8d4b235 available 0.1.0-a.0.20180507065734.9628993ae538
+
++ bpkg create -d tools cc config.cxx=g++ config.cc.coptions=-O3 config.install.root=/opt/tools config.install.sudo=sudo config.bin.rpath=/opt/tools/lib
+created new configuration in /tmp/tools/
+
++ cd tools
+
++ bpkg build hello@https://git.build2.org/hello/hello.git
+added git:build2.org/hello/hello
+fetching git:build2.org/hello/hello
+querying https://git.build2.org/hello/hello.git
+fetching from https://git.build2.org/hello/hello.git
+fetching git:build2.org/hello/libhello (prerequisite of git:build2.org/hello/hello)
+querying https://git.build2.org/hello/libhello.git
+fetching from https://git.build2.org/hello/libhello.git
+fetching git:build2.org/hello/libformat##HEAD (prerequisite of git:build2.org/hello/libhello)
+querying https://git.build2.org/hello/libformat.git
+fetching from https://git.build2.org/hello/libformat.git
+fetching git:build2.org/hello/libprint##HEAD (prerequisite of git:build2.org/hello/libhello)
+querying https://git.build2.org/hello/libprint.git
+fetching from https://git.build2.org/hello/libprint.git
+ new libformat/1.0.0 (required by libhello)
+ new libprint/1.0.0 (required by libhello)
+ new libhello/1.1.0 (required by hello)
+ new hello/1.0.0
+continue? [Y/n] distributing libformat/1.0.0
+checked out libformat/1.0.0
+configured libformat/1.0.0
+distributing libprint/1.0.0
+checked out libprint/1.0.0
+configured libprint/1.0.0
+distributing libhello/1.1.0
+checked out libhello/1.1.0
+configured libhello/1.1.0
+distributing hello/1.0.0
+checked out hello/1.0.0
+configured hello/1.0.0
+ver libhello-1.1.0/libhello/version.hxx.in
+ver libprint-1.0.0/libprint/version.hxx.in
+ver libformat-1.0.0/libformat/version.hxx.in
+c++ libprint-1.0.0/libprint/cxx{print}
+c++ libhello-1.1.0/libhello/cxx{hello}
+c++ libformat-1.0.0/libformat/cxx{format}
+c++ hello-1.0.0/hello/cxx{hello}
+ld libprint-1.0.0/libprint/libs{print}
+ld libformat-1.0.0/libformat/libs{format}
+ld libhello-1.1.0/libhello/libs{hello}
+ld hello-1.0.0/hello/exe{hello}
+updated hello/1.0.0
+
++ bpkg install hello
+ld libhello-1.1.0/libhello/libs{hello}
+ld hello-1.0.0/hello/exe{hello}
+install /opt/tools/
+install /opt/tools/include/
+install /opt/tools/include/libhello/
+install libhello-1.1.0/libhello/hxx{export}
+install libhello-1.1.0/libhello/hxx{hello}
+install libhello-1.1.0/libhello/hxx{version}
+install /opt/tools/include/libprint/
+install libprint-1.0.0/libprint/hxx{print}
+install libprint-1.0.0/libprint/hxx{export}
+install libprint-1.0.0/libprint/hxx{version}
+install libprint-1.0.0/libprint/libs{print}
+install /opt/tools/include/libformat/
+install libformat-1.0.0/libformat/hxx{export}
+install libformat-1.0.0/libformat/hxx{format}
+install libformat-1.0.0/libformat/hxx{version}
+install libformat-1.0.0/libformat/libs{format}
+install libhello-1.1.0/libhello/libs{hello}
+install /opt/tools/bin/
+install hello-1.0.0/hello/exe{hello}
+installed hello/1.0.0
+
++ /opt/tools/bin/hello World
+Hello, World!
+
++ bpkg uninstall hello
+uninstall hello-1.0.0/hello/exe{hello}
+uninstall /opt/tools/bin/
+uninstall libhello-1.1.0/libhello/libs{hello}
+uninstall libformat-1.0.0/libformat/libs{format}
+uninstall libformat-1.0.0/libformat/hxx{version}
+uninstall libformat-1.0.0/libformat/hxx{format}
+uninstall libformat-1.0.0/libformat/hxx{export}
+uninstall /opt/tools/include/libformat/
+uninstall libprint-1.0.0/libprint/libs{print}
+uninstall libprint-1.0.0/libprint/hxx{version}
+uninstall libprint-1.0.0/libprint/hxx{export}
+uninstall libprint-1.0.0/libprint/hxx{print}
+uninstall /opt/tools/include/libprint/
+uninstall libhello-1.1.0/libhello/hxx{version}
+uninstall libhello-1.1.0/libhello/hxx{hello}
+uninstall libhello-1.1.0/libhello/hxx{export}
+uninstall /opt/tools/include/libhello/
+uninstall /opt/tools/include/
+uninstall /opt/tools/
+uninstalled hello/1.0.0
+
++ bpkg drop hello
+following dependencies were automatically built but will no longer be used:
+ libhello
+ libformat
+ libprint
+drop unused packages? [Y/n] drop hello
+ drop libhello
+ drop libformat
+ drop libprint
+continue? [Y/n] disfigured hello
+disfigured libhello
+disfigured libformat
+disfigured libprint
+purged hello
+purged libhello
+purged libformat
+purged libprint