#! /usr/bin/env bash # Prepare build2 distribution. # # Usage: dist [-t] [-s] # # -t # Toolchain only. # # -s # Skip checks. # usage="usage: $0 [-t] [-s]" 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" skip=n while [ $# -gt 0 ]; do case $1 in -t) extras= shift ;; -s) skip=y 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 if [ "$skip" != "y" ]; then # 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/ fi # # mkdir -p build2-$v # Can pass additional list of archives to copy. # function dist() # [...] { local p=$1; shift local pv=`cat $p/version` rm -f build2-$v/$p-$pv.* b "dist($p-default/)" local f local e for e in $* tar.gz; do f="$p-$pv.$e" cp /tmp/$f build2-$v/ cd build2-$v sha256sum -b $f >$f.sha256 cd .. done 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 zip # Regenerate repository manifests. # cppget.org/update cppget.org/repository/1/queue cd $owd info "distribution in build2-$v/"