summaryrefslogtreecommitdiff
path: root/intro2-tour
diff options
context:
space:
mode:
Diffstat (limited to 'intro2-tour')
-rwxr-xr-xintro2-tour142
1 files changed, 125 insertions, 17 deletions
diff --git a/intro2-tour b/intro2-tour
index 4adbac7..8af8fea 100755
--- a/intro2-tour
+++ b/intro2-tour
@@ -18,27 +18,40 @@ tmp=/tmp
show=y
gcc=g++
-clang=clang++-5.0
+clang=clang++-16
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"
+trust="EC:50:13:E2:3D:F7:92:B4:50:0B:BF:2A:1F:7D:31:04:C6:57:6F:BC:BE:04:2E:E0:58:14:FA:66:66:21:1F:14"
+# Keep in sync with *-tldr.
+#
function show () # <cmd> ...
{
if [ $show = "y" ]; then
echo
echo "+ $*"
- "${@}"
- else
- "${@}"
fi
+
+ local p=("$1")
+
+ if [ "$1" = b -o "$1" = bpkg -o "$1" = bdep ]; then
+ p+=(--no-progress)
+ fi
+
+ if [ "$1" = tree ]; then
+ p+=(-n) # No color.
+ fi
+
+ shift
+
+ "${p[@]}" "${@}"
}
cd "$tmp"
function clean ()
{
- rm -rf hello hello-gcc hello-clang hello-vc-* hello-mingw
+ rm -rf hello hello-host hello-build2 hello-base hello-gcc hello-gcc-1 hello-clang hello-vc-* hello-mingw
}
## if false; then
@@ -74,19 +87,19 @@ show b ../hello-clang/hello/
show b test: ../hello-clang/hello/
show ../hello-clang/hello/hello/hello World
-b clean: ../hello-clang/hello/
+b --no-progress clean: ../hello-clang/hello/
show bdep test @clang
show bdep test @gcc @clang
show bdep init -C ../hello-mingw @mingw cc config.cxx=x86_64-w64-mingw32-g++
show bdep update @mingw
show bdep test @mingw
-show ../hello-mingw/hello/hello/hello.exe Windows
+show ../hello-mingw/hello/hello/hello.exe Windows | cat # Strip term junk.
show git add .
show git commit -m "Initial implementation"
show git remote add origin git@github.com:boris-kolpackov/hello.git
-show git push origin master -u --force
+show git push --no-progress origin master -u --force
show bdep ci --simulate success
show bdep deinit @gcc @clang
@@ -160,7 +173,7 @@ show bdep sync
#
sed -i -re 's/^#import/import/' hello/buildfile
sed -i -re 's/^#depends: libhello/depends: libhello/' manifest
-bdep sync
+bdep sync --no-progress
cat <<EOF >>repositories.manifest
:
@@ -221,6 +234,102 @@ show bdep sync ?sys:libsqlite3
cd ..
+# Build-time Dependencies.
+#
+clean
+show bdep new -t exe -l c++ hello
+cd hello
+show bdep init -C @gcc cc config.cxx=$gcc
+show bdep init -C @clang cc config.cxx=$clang
+
+cat <<EOF >>repositories.manifest
+:
+role: prerequisite
+location: https://pkg.cppget.org/1/alpha
+trust: 70:64:FE:E4:E0:F3:60:F1:B4:51:E1:FA:12:5C:E0:B3:DB:DF:96:33:39:B9:2E:E5:C2:68:63:4C:A6:47:39:43
+EOF
+echo 'depends: * xxd >= 8.2.0' >>manifest
+cat <<EOF >hello/buildfile
+import! [metadata] xxd = xxd%exe{xxd}
+
+exe{hello}: {hxx ixx txx cxx}{** -names} cxx{names} $libs testscript
+
+cxx{names}: file{names.txt} \$xxd
+{{
+ i = \$path(\$<[0])
+ env --cwd \$directory(\$i) -- \$xxd -i \$leaf(\$i) >\$path(\$>)
+}}
+EOF
+cat <<EOF >hello/hello.cxx
+#include <iostream>
+#include <string>
+
+extern unsigned char names_txt[];
+extern unsigned int names_txt_len;
+
+int main (int argc, char* argv[])
+{
+ using namespace std;
+
+ if (argc < 2)
+ {
+ cerr << "error: missing name" << endl;
+ return 1;
+ }
+
+ cout << string (reinterpret_cast<const char*> (names_txt), names_txt_len) << ", " << argv[1] << '!' << endl;
+}
+EOF
+echo -n "Hello" >hello/names.txt
+
+show bdep config list
+#show bdep sync --create-host-config # Needed if not terminal.
+show b
+b --no-progress test
+show bdep config list
+show bdep update @clang
+
+echo 'depends: * libbuild2-hello' >>manifest
+echo 'using hello' >>hello/buildfile
+
+#show bdep sync --create-build2-config # Needed if not terminal.
+show b
+show bdep config list
+show bdep update @clang
+
+cd ..
+
+
+# Linked Configurations.
+#
+clean
+show bdep new -t exe -l c++ hello
+cd hello
+
+cat <<EOF >>repositories.manifest
+:
+role: prerequisite
+location: $repo
+trust: $trust
+EOF
+sed -i -re 's/^#depends: libhello/depends: libhello/' manifest # ^1.0.0
+sed -i -re 's/^#import/import/' hello/buildfile
+
+show bdep config create ../hello-base @base --no-default cc config.cxx=$gcc
+show bdep config create ../hello-gcc @gcc --default cc config.cxx=$gcc
+show bdep config create ../hello-clang @clang cc config.cxx=$clang
+
+show bdep config link @gcc @base
+show bdep config link @clang @base
+
+show bdep init @gcc { @base }+ ?libhello
+show bdep init @clang
+
+show bdep update @gcc
+show bdep update @clang
+
+cd ..
+
# Versioning and Release Management.
#
clean
@@ -228,13 +337,13 @@ show bdep new -C hello-gcc @gcc -t exe -l c++ hello cc config.cxx=$gcc
cd hello
git remote add origin git@github.com:boris-kolpackov/hello.git
-git push origin :build2-control || true
-git push -d origin v0.1.0-a.1 || true
-git push -d origin v0.1.0 || true
+git push --no-progress origin :build2-control || true
+git push --no-progress -d origin v0.1.0-a.1 || true
+git push --no-progress -d origin v0.1.0 || true
git add .
git commit -m "Initial implementation"
-git push -f -u
+git push --no-progress -f -u
show bdep status
show b info
@@ -249,7 +358,7 @@ show bdep status
show bdep release --alpha --push
show bdep release --no-open --push
-show bdep publish --simulate success
+show bdep publish --simulate success --repository https://stage.build2.org
show bdep release --open --push
@@ -267,6 +376,7 @@ show bdep init -C ../hello-clang @clang cc config.cxx=$clang
cd ..
show bdep new -t lib -l c++ libhello
+show tree libhello
show cd libhello
show bdep init -A ../hello-gcc @gcc
@@ -330,5 +440,3 @@ show /opt/tools/bin/hello World
show tree /opt/tools
show bpkg uninstall hello
show bpkg drop hello
-
-echo "finished"