summaryrefslogtreecommitdiff
path: root/stage
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-10-01 17:06:57 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-10-01 17:06:57 +0200
commitb80502d210428de4471cc8a642dcd19aaa60ef26 (patch)
tree1ca49101920c6208032acca27cd133760b46c9ba /stage
parente38a11dc404b57371b7adcb1731b4cb40f44f037 (diff)
Update stage script
Diffstat (limited to 'stage')
-rwxr-xr-xstage174
1 files changed, 162 insertions, 12 deletions
diff --git a/stage b/stage
index 15d061d..ecca993 100755
--- a/stage
+++ b/stage
@@ -1,19 +1,169 @@
#! /usr/bin/env bash
-# Stage packages in queue to cppget.org/queue.cppget.org.
+# Stage (or queue) build2 packages and distributions.
#
-# Usage: publish [<rsync-options>]
+# -t
+# Toolchain only, no brep.
+# -p
+# packages only, no baseutils/mingw.
+# -q
+# Put packages into the queue instead of staging (distributions still go to
+# staging).
#
-usage="$0 [<rsync-options>]"
+usage="usage: etc/stage"
-trap 'exit 1' ERR
+rsync_ops="--progress"
-cppget.org/publish \
- cppget.org/repository/1/queue/ \
- cppget.org:/var/bpkg/1/queue/ \
- $*
+owd=`pwd`
+trap "{ cd $owd; exit 1; }" ERR
+set -o errtrace # Trap in functions.
-cppget.org/publish \
- cppget.org/repository/1/queue/ \
- queue.cppget.org:/var/bpkg/1/queue/ \
- $*
+function info () { echo "$*" 1>&2; }
+function error () { info "$*"; exit 1; }
+
+v="$(cat build2-toolchain/version)"
+vf="$(echo $v | sed -e 's/^\(.*\)\.\(.*\)\.\([^-]*\).*$/\1.\2.\3/')" # Final.
+
+if [ -z "$v" -o -z "$vf" ]; then
+ error "unable to extract version from `cat build2-toolchain/version`"
+fi
+
+toolchain="libbutl build2 libbpkg bpkg"
+extras="brep"
+base="y"
+
+repo_name="STAGE.BUILD2.ORG"
+repo_dir="staging/repository/1"
+repo_host1="stage.build2.org:/var/bpkg/1"
+repo_host2=
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -t)
+ extras=
+ shift
+ ;;
+ -p)
+ base=n
+ shift
+ ;;
+ -q)
+ repo_name="CPPGET.ORG/QUEUE"
+ repo_dir="cppget.org/repository/1/queue"
+ repo_host1="cppget.org:/var/bpkg/1/queue"
+ repo_host2="queue.cppget.org:/var/bpkg/1/queue"
+ shift
+ ;;
+ *)
+ error "unexpected $1"
+ ;;
+ esac
+done
+
+tools="$toolchain $extras"
+
+mkdir -p "staging/0/$v"
+
+# Generate baseutils if requested.
+#
+if [ "$base" = "y" ]; then
+ cd private/baseutils
+
+ echo "$v" >version
+
+ ./pkdist -n baseutils -d "$vf" -p "$vf/list-i686" \
+-c control -s ./pkpost \
+-z "/tmp/build2-baseutils-$v-i686-windows"
+
+ ./pkdist -n baseutils -d "$vf" -p "$vf/list-x86_64" \
+-c control -s ./pkpost \
+-z "/tmp/build2-baseutils-$v-x86_64-windows"
+
+ ./pkdist -n mingw -d "mingw-$vf" -p "mingw-$vf/list-i686" \
+-c ./control-mingw-i686 -s ./pkpost-mingw -u http://repo.msys2.org/mingw \
+-x "/tmp/build2-mingw-$v-i686-windows"
+
+ ./pkdist -n mingw -d "mingw-$vf" -p "mingw-$vf/list-x86_64" \
+-c ./control-mingw-x86_64 -s ./pkpost-mingw -u http://repo.msys2.org/mingw \
+-x "/tmp/build2-mingw-$v-x86_64-windows"
+
+ cd ../..
+
+ mv "/tmp/build2-baseutils-$v-i686-windows.zip" "staging/0/$v/"
+ mv "/tmp/build2-baseutils-$v-i686-windows.zip.sha256" "staging/0/$v/"
+
+ mv "/tmp/build2-baseutils-$v-x86_64-windows.zip" "staging/0/$v/"
+ mv "/tmp/build2-baseutils-$v-x86_64-windows.zip.sha256" "staging/0/$v/"
+
+ mv "/tmp/build2-mingw-$v-i686-windows.tar.xz" "staging/0/$v/"
+ mv "/tmp/build2-mingw-$v-i686-windows.tar.xz.sha256" "staging/0/$v/"
+
+ mv "/tmp/build2-mingw-$v-x86_64-windows.tar.xz" "staging/0/$v/"
+ mv "/tmp/build2-mingw-$v-x86_64-windows.tar.xz.sha256" "staging/0/$v/"
+fi
+
+# Dist build2-toolchain.
+#
+# @@ .sha256 sums: make sure they don't contain full paths!
+
+b "dist(build2-toolchain-default/)" \
+ "config.dist.archives=$owd/staging/0/$v/tar.xz $owd/staging/0/$v/tar.gz"
+
+cd "$owd/staging/0/$v/"
+sha256sum -b "build2-toolchain-$v.tar.gz" >"build2-toolchain-$v.tar.gz.sha256"
+sha256sum -b "build2-toolchain-$v.tar.xz" >"build2-toolchain-$v.tar.xz.sha256"
+cd "$owd"
+
+# Dist individual packages into the repository.
+#
+function dist() # <dir> <category>
+{
+ local b="$(basename $1)"
+ local o="$repo_dir/$2"
+
+ # Clean up old packages.
+ #
+ mkdir -p "$o"
+ rm -f "$o/$b"-*
+
+ b "dist($1-default/)" "config.dist.archives=$owd/$o/tar.gz"
+}
+
+dist packaging/apr/libapr1 apr
+dist packaging/postgresql/libpq postgresql
+
+dist packaging/sqlite/libsqlite3 sqlite
+dist packaging/sqlite/sqlite3 sqlite
+
+dist ../studxml/libstudxml studxml
+
+dist ../odb/builds/default/libodb odb
+dist ../odb/builds/default/libodb-sqlite odb
+dist ../odb/builds/default/libodb-pgsql odb
+
+dist libbutl build2
+dist build2 build2
+dist libbpkg build2
+dist bpkg build2
+dist brep build2
+
+# Regenerate the repository.
+#
+info "Insert $repo_name signing key and press Enter"
+read
+etc/rep-update "$repo_dir/" \
+ --openssl openssl-1.0.2 \
+ --openssl-option -engine --openssl-option pkcs11 \
+ --openssl-option -keyform --openssl-option engine \
+ --key "label_SIGN key"
+
+# Sync repository and distribution.
+#
+etc/rep-publish "$repo_dir/" "$repo_host1/" $rsync_ops
+
+if [ -n "$repo_host2" ]; then
+ etc/rep-publish "$repo_dir/" "$repo_host2/" $rsync_ops
+fi
+
+rsync -v -rlpt -c --copy-unsafe-links --prune-empty-dirs --delete-after \
+ $rsync_ops staging/0/ stage.build2.org:/var/www/stage.build2.org/public/0/