#!/bin/bash usage () { cat << EOF usage: $0 PSIBUILD EOF } BUILD_FILE=${@: -1} [[ $# = 0 ]] && usage && epsit 1 [ -f "$FILE" ] && echo "$BUILD_FILE not found" && epsit 1 source $BUILD_FILE PKG_NAME=$(basename $BUILD_FILE .psibuild) PSI_ROOT=$(pwd) PKGS_OUTPUT=$PSI_ROOT/psipkgs PKG_BUILD_DIR=$PSI_ROOT/tmp/$PKG_NAME PKG_DEST=$PKG_BUILD_DIR/package # make the directories mkdir -p $PKG_DEST cd $PKG_BUILD_DIR # fetch, build then package the package fetch build package # go back to root, make things easier cd $PSI_ROOT # bundle the package to a targz in the output dir mkdir -p $PKGS_OUTPUT PKG_FILE=$PKGS_OUTPUT/$PKG_NAME.psipkg tar -C $PKG_BUILD_DIR/package -czf $PKG_FILE ./ # create info file PKG_INFO=$PKGS_OUTPUT/$PKG_NAME.psipkg.info echo "" > $PKG_INFO echo "NAME=$PKG_NAME" >> $PKG_INFO echo "PKG_FILE=$PKG_NAME.psipkg" >> $PKG_INFO echo "CHECKSUM=$(md5sum $PKG_FILE | awk '{ print $1 }')" >> $PKG_INFO echo "DATE=$(date)" >> $PKG_INFO echo "DEPS=(${DEPS[*]})" >> $PKG_INFO # sign the package PRIV_KEY=$PSI_ROOT/keychain/psi.pem PUB_KEY=$PSI_ROOT/keychain/psi.pub if [ -f "$PRIV_KEY" ]; then echo "SIGNATURE=" >> $PKG_INFO openssl dgst -sign $PRIV_KEY $PKG_FILE >> $PKG_INFO else echo "SIGNATURE=">> $PKG_INFO echo "unsigned">> $PKG_INFO >&2 echo "WARNING! no private key: unsigned packages!" fi # clean up rm -rf $PKG_BUILD_DIR rmdir $PSI_ROOT/tmp