#!/bin/bash # msgUsage: show a usage message and exit msgUsage() { echo "Usage: $(basename $0) [TMP_DIR] [PKG_DIR] [RELEASE_DIR] [RELEASE_NAME]" echo "Examples:" echo " \$ $(basename $0) tmp ports/core-cross releases crux-arm-rootfs-2.7" echo " \$ $(basename $0) tmp ports/core-cross releases crux-arm-rootfs-2.6" echo " \$ $(basename $0) tmp ports/core-cross-noeabi releases crux-arm-rootfs-2.6-noeabi" exit 0 } # msgWarn: show a warning message msgWarn() { echo "Warning, $@" 2>&1 } # msgError: show a error message and exit msgError() { echo "Error, $@" 2>&1 exit 1 } # checkCommands: checks for command dependencies checkCommands() { for cmd in sudo pkgmk tar md5sum; do if ! which $cmd 2>&1 >/dev/null; then msgError "'$cmd' is not in your \$PATH and you need it to execute this script" fi done } # checkVars: checks for user given arguments # # params: # $1 - TMP_DIR # $2 - PKG_DIR # $3 - RELEASE_DIR # $4 - RELEASE_NAME checkVars() { [ $# -lt 1 ] && msgUsage [ ! -z "$1" ] && TMP_DIR="$1" [ "$TMP_DIR" = "/tmp" ] && msgError "you can't use /tmp as TMP_DIR" [ ! -z "$2" ] && PKG_DIR="$2" [ ! -z "$3" ] && RELEASE_DIR="$3" [ ! -z "$4" ] && RELEASE_NAME="$4" # check for directories, if not create them for dir in $TMP_DIR $RELEASE_DIR; do if [ ! -d "$dir" ]; then msgWarn "creating directory '$dir'" && install -d $dir || exit 1 fi done TMP_DIR="$(cd $TMP_DIR; pwd)" PKG_DIR="$(cd $PKG_DIR; pwd)" RELEASE_DIR="$(cd $RELEASE_DIR; pwd)" [ -z "$PACKAGES" ] && PACKAGES="$(find $PKG_DIR -type f -name '*#*pkg.tar.gz')" } # global variables PWD_DIR="$(pwd)" TMP_DIR="$PWD_DIR/tmp" PKG_DIR="$PWD_DIR/pkg" RELEASE_DIR="$PWD_DIR/releases" RELEASE_NAME="crux-arm-rootfs-2.7" PACKAGES="" checkCommands checkVars $@ # create the database stuff for pkgutils sudo install -d -m 0755 $TMP_DIR/var/lib/pkg sudo touch $TMP_DIR/var/lib/pkg/db sudo chmod 0444 $TMP_DIR/var/lib/pkg/db # install all packages pkgnum=0 for pkg in $PACKAGES; do sudo pkgadd -r $TMP_DIR $pkg && echo "Installing $pkg" || exit 1 let pkgnum=$pkgnum+1 done # create the tarball and the md5sum cd $TMP_DIR && sudo tar cvjf $RELEASE_DIR/$RELEASE_NAME.tar.bz2 * && cd .. cd $RELEASE_DIR && md5sum $RELEASE_NAME.tar.bz2 > $RELEASE_NAME.tar.bz2.md5 && cd .. echo "Installed packages: $pkgnum" sudo rm -rf $TMP_DIR echo "Release done: $RELEASE_DIR/$RELEASE_NAME.tar.bz2" # End of file