79 lines
2 KiB
Bash
Executable file
79 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Debian Packaging Script
|
|
# Currently Intended to build on ubuntu14.04
|
|
|
|
SOURCE="${BASH_SOURCE[0]}"
|
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
|
SOURCE="$(readlink "$SOURCE")"
|
|
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
done
|
|
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
|
|
|
|
source "$DIR/_common.sh"
|
|
|
|
if [ "$UNAME" != "Linux" ]; then
|
|
errro "Debian Package build only supported on Linux"
|
|
exit 1
|
|
fi
|
|
|
|
REPO_ROOT=$(readlink -f $DIR/..)
|
|
|
|
OUTPUT_DIR="$REPO_ROOT/artifacts"
|
|
PACKAGE_LAYOUT_DIR="$OUTPUT_DIR/deb_intermediate"
|
|
PACKAGE_OUTPUT_DIR="$OUTPUT_DIR/packages/debian"
|
|
REPO_BINARIES_DIR="$REPO_ROOT/artifacts/ubuntu.14.04-x64/stage2"
|
|
|
|
execute(){
|
|
create_empty_debian_layout
|
|
copy_files_to_debian_layout
|
|
create_debian_package
|
|
test_debian_package
|
|
}
|
|
|
|
create_empty_debian_layout(){
|
|
banner "Creating empty debian package layout"
|
|
|
|
rm -rf $PACKAGE_LAYOUT_DIR
|
|
mkdir -p $PACKAGE_LAYOUT_DIR
|
|
|
|
mkdir "$PACKAGE_LAYOUT_DIR/\$"
|
|
mkdir "$PACKAGE_LAYOUT_DIR/package_root"
|
|
mkdir "$PACKAGE_LAYOUT_DIR/samples"
|
|
mkdir "$PACKAGE_LAYOUT_DIR/docs"
|
|
}
|
|
|
|
copy_files_to_debian_layout(){
|
|
banner "Copying files to debian layout"
|
|
|
|
# Copy Built Binaries
|
|
cp -a "$REPO_BINARIES_DIR/." "$PACKAGE_LAYOUT_DIR/package_root"
|
|
|
|
# Copy config file
|
|
cp "$REPO_ROOT/debian_config.json" "$PACKAGE_LAYOUT_DIR"
|
|
}
|
|
|
|
create_debian_package(){
|
|
banner "Packing .deb"
|
|
|
|
mkdir -p $PACKAGE_OUTPUT_DIR
|
|
|
|
$REPO_ROOT/package_tool/package_tool $PACKAGE_LAYOUT_DIR $PACKAGE_OUTPUT_DIR
|
|
}
|
|
|
|
test_debian_package(){
|
|
banner "Testing debian package"
|
|
|
|
git clone https://github.com/sstephenson/bats.git /tmp/bats
|
|
pushd /tmp/bats
|
|
./install.sh /usr/local
|
|
popd
|
|
|
|
bats $PACKAGE_OUTPUT_DIR/test_package.bats
|
|
}
|
|
|
|
execute
|
|
|
|
DEBIAN_FILE=$(find $PACKAGE_OUTPUT_DIR -iname "*.deb")
|
|
$DIR/publish.sh $DEBIAN_FILE
|