#! /usr/bin/env bash # Prepare build2 distribution. # # Usage: dist [-t] # # -t # Toolchain only. # usage="usage: $0 [-t]" owd=`pwd` trap "{ cd $owd; exit 1; }" ERR set -o errtrace # Trap in functions. function info () { echo "$*" 1>&2; } function error () { info "$*"; exit 1; } toolchain="libbutl build2 libbpkg bpkg" extras="brep" while [ $# -gt 0 ]; do case $1 in -t) extras= shift ;; *) error "unexpected $1" ;; esac done tools="$toolchain $extras" v=`sed -e 's/^\(.*\)\.\(.*\)\..*$/\1.\2/' build2-toolchain/version` if [ -z "$v" ]; then error "unable to extract version from `cat build2-toolchain/version`" fi # Check that everything is committed and pushed. # info "checking repositories..." for t in $tools build2-toolchain; do git/check --master --clean --synced --submodule $t done # Update the development build since we use it to dist/package. # info "making sure everythings is up to date..." b build2/ bpkg/ # # mkdir -p build2-$v function dist() { local p=$1; shift local pv=`cat $p/version` local f="$p-$pv.tar.gz" b "dist($p-default/)" rm -f build2-$v/$p-$pv.* cp /tmp/$f build2-$v/ cd build2-$v sha256sum -b $f >$f.sha256 cd .. echo build2-$v/$f } for t in $tools; do f=`dist $t` mkdir -p cppget.org/repository/1/queue/$t cp $f cppget.org/repository/1/queue/$t/ done dist build2-toolchain # Regenerate repository manifests. # cppget.org/update cppget.org/repository/1/queue cd $owd info "distribution in build2-$v/"