adding rudimentary debian package building support
This commit is contained in:
76
tools/mk_deb_fpmdir
Executable file
76
tools/mk_deb_fpmdir
Executable file
@@ -0,0 +1,76 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Use fpm to package up files into a DEB .
|
||||
|
||||
# Usage:
|
||||
# mk_deb_fpmdir PACKAGENAME MANIFEST1 MANIFEST2 ...
|
||||
|
||||
# Example:
|
||||
# Make a package foopkg manifest.txt
|
||||
# Where "manifest.txt" contains:
|
||||
# exec /usr/bin/stack_makefqdn misc/stack_makefqdn.py
|
||||
# exec /usr/bin/bar bar/bar.sh
|
||||
# read /usr/man/man1/bar.1 bar/bar.1.man
|
||||
# 0444 /etc/foo.conf bar/foo.conf
|
||||
|
||||
set -e
|
||||
|
||||
# Parameters for this DEB:
|
||||
PACKAGENAME=${1?"First arg must be the package name."}
|
||||
shift
|
||||
|
||||
# Defaults that can be overridden:
|
||||
# All packages are 1.0 unless otherwise specifed:
|
||||
: ${PKGVERSION:=1.0} ;
|
||||
# If there is no iteration setting, assume "1":
|
||||
: ${PKGRELEASE:=1}
|
||||
# If there is no epoch, assume 0
|
||||
: ${PKGEPOCH:=0}
|
||||
|
||||
# The DEB is output here: (should be a place that can be wiped)
|
||||
OUTPUTDIR="${HOME}/debbuild-$PACKAGENAME"
|
||||
# The TeamCity templates expect to find the list of artifacts here:
|
||||
DEB_BIN_LIST="${OUTPUTDIR}/bin-packages.txt"
|
||||
|
||||
# -- Now the real work can be done.
|
||||
|
||||
# Clean the output dir.
|
||||
rm -rf "$OUTPUTDIR"
|
||||
mkdir -p "$OUTPUTDIR/installroot"
|
||||
|
||||
# Copy the files into place:
|
||||
set -o pipefail # Error out if any manifest is not found.
|
||||
cat """$@""" | while read -a arr ; do
|
||||
PERM="${arr[0]}"
|
||||
case $PERM in
|
||||
\#*) continue ;; # Skip comments.
|
||||
exec) PERM=0755 ;;
|
||||
read) PERM=0744 ;;
|
||||
*) ;;
|
||||
esac
|
||||
DST="$OUTPUTDIR/installroot/${arr[1]}"
|
||||
SRC="${arr[2]}"
|
||||
if [[ $SRC == "cmd/"* || $SRC == *"/cmd/"* ]]; then
|
||||
( cd $(dirname "$SRC" ) && go build -a -v )
|
||||
fi
|
||||
install -D -T -b -m "$PERM" -T "$SRC" "$DST"
|
||||
done
|
||||
|
||||
# Build the DEB:
|
||||
cd "$OUTPUTDIR" && fpm -s dir -t deb \
|
||||
-a x86_64 \
|
||||
-n "${PACKAGENAME}" \
|
||||
--epoch "${PKGEPOCH}" \
|
||||
--version "${PKGVERSION}" \
|
||||
--iteration "${PKGRELEASE}" \
|
||||
${PKGDESCRIPTION:+ --description="${PKGDESCRIPTION}"} \
|
||||
${PKGVENDOR:+ --vendor="${PKGVENDOR}"} \
|
||||
-C "$OUTPUTDIR/installroot" \
|
||||
.
|
||||
|
||||
# TeamCity templates for DEBS expect to find
|
||||
# the list of all packages created in bin-packages.txt.
|
||||
# Generate that list:
|
||||
find "$OUTPUTDIR" -maxdepth 1 -name '*.deb' >"$DEB_BIN_LIST"
|
||||
# Output it for debugging purposes:
|
||||
cat "$DEB_BIN_LIST"
|
||||
15
tools/mk_deb_fpmdir.stack_blackbox.txt
Normal file
15
tools/mk_deb_fpmdir.stack_blackbox.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
read /etc/profile.d/usrblackbox.sh profile.d-usrblackbox.sh
|
||||
exec /usr/blackbox/bin/_blackbox_common.sh ../bin/_blackbox_common.sh
|
||||
exec /usr/blackbox/bin/_stack_lib.sh ../bin/_stack_lib.sh
|
||||
exec /usr/blackbox/bin/blackbox_addadmin ../bin/blackbox_addadmin
|
||||
exec /usr/blackbox/bin/blackbox_cat ../bin/blackbox_cat
|
||||
exec /usr/blackbox/bin/blackbox_edit ../bin/blackbox_edit
|
||||
exec /usr/blackbox/bin/blackbox_edit_end ../bin/blackbox_edit_end
|
||||
exec /usr/blackbox/bin/blackbox_edit_start ../bin/blackbox_edit_start
|
||||
exec /usr/blackbox/bin/blackbox_initialize ../bin/blackbox_initialize
|
||||
exec /usr/blackbox/bin/blackbox_postdeploy ../bin/blackbox_postdeploy
|
||||
exec /usr/blackbox/bin/blackbox_register_new_file ../bin/blackbox_register_new_file
|
||||
exec /usr/blackbox/bin/blackbox_removeadmin ../bin/blackbox_removeadmin
|
||||
exec /usr/blackbox/bin/blackbox_shred_all_files ../bin/blackbox_shred_all_files
|
||||
exec /usr/blackbox/bin/blackbox_update_all_files ../bin/blackbox_update_all_files
|
||||
exec /usr/blackbox/bin/blackbox_list_files ../bin/blackbox_list_files
|
||||
Reference in New Issue
Block a user