diff --git a/Makefile b/Makefile index eb5858f..13dc3b0 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,4 @@ SHELL=/bin/sh -BIN=tools PKGNAME=stack_blackbox @@ -20,7 +19,7 @@ packages: packages-rpm # packages-rpm: - PKGRELEASE="$${PKGRELEASE}" $(BIN)/build_rpm.sh stack_blackbox tools/rpm_filelist.txt + cd tools && PKGRELEASE="$${PKGRELEASE}" PKGDESCRIPTION="Safely store secrets in git/hg/svn repos using GPG encryption" ./mk_rpm_fpmdir stack_blackbox mk_rpm_fpmdir.blackbox.txt packages-rpm-debug: @echo BUILD: diff --git a/tools/build_rpm.sh b/tools/mk_rpm_fpmdir similarity index 52% rename from tools/build_rpm.sh rename to tools/mk_rpm_fpmdir index 9aa1f59..359d986 100755 --- a/tools/build_rpm.sh +++ b/tools/mk_rpm_fpmdir @@ -1,21 +1,17 @@ -#!/bin/bash +#! /usr/bin/env bash -# build_rpm.sh - Build an RPM of these files. (uses FPM) +# Use fpm to package up files into an RPM. # Usage: -# make_rpm.sh PACKAGENAME MANIFEST1 MANIFEST2 ... +# mk_rpm_fpmdir PACKAGENAME MANIFEST1 MANIFEST2 ... # Example: # Make a package foopkg manifest.txt # Where "manifest.txt" contains: -# exec /usr/bin/foo foo/foo -# exec /usr/bin/bar bar/bar.sh -# read /usr/man/man1/bar.1 bar/bar.1.man -# 0444 /etc/foo.conf bar/foo.conf -# -# Col1 chmod-style permissions or "exec" for 0755, "read" for 0744. -# Col2 Installation location. -# Col3 Source of the file. +# 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 @@ -23,7 +19,7 @@ set -e PACKAGENAME=${1?"First arg must be the package name."} shift -# Defaults that can be overridden via env variables: +# Defaults that can be overridden: # All packages are 1.0 unless otherwise specifed: : ${PKGVERSION:=1.0} ; # If there is no iteration setting, assume "1": @@ -31,7 +27,7 @@ shift # The RPM is output here: (should be a place that can be wiped) OUTPUTDIR="${HOME}/rpmbuild-$PACKAGENAME" -# Our build system expects to find the list of artifacts here: +# The TeamCity templates expect to find the list of artifacts here: RPM_BIN_LIST="${OUTPUTDIR}/bin-packages.txt" # -- Now the real work can be done. @@ -41,19 +37,20 @@ rm -rf "$OUTPUTDIR" mkdir -p "$OUTPUTDIR/installroot" # Copy the files into place: -cat """$@""" | grep -v '^$' | while read -a arr ; do +cat """$@""" | while read -a arr ; do PERM="${arr[0]}" - DEST="${arr[1]}" - SRC="${arr[2]}" - echo ========== "$PERM $DEST" case $PERM in \#*) continue ;; # Skip comments. exec) PERM=0755 ;; read) PERM=0744 ;; *) ;; esac - FULLDEST="$OUTPUTDIR/installroot/${arr[1]}" - install -D -T -b -m "$PERM" -T "$SRC" "$FULLDEST" + 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 RPM: @@ -63,13 +60,13 @@ cd "$OUTPUTDIR" && fpm -s dir -t rpm \ -n "${PACKAGENAME}" \ --version "${PKGVERSION}" \ --iteration "${PKGRELEASE}" \ - --description 'Safely store secrets in Git/Hg repos using GPG encryption' \ -C "$OUTPUTDIR/installroot" \ + --description="$PKGDESCRIPTION" \ . -# Our build system expects to find the list of all packages created -# in bin-packages.txt. Generate that list: +# TeamCity templates for RPMS expect to find +# the list of all packages created in bin-packages.txt. +# Generate that list: find "$OUTPUTDIR" -maxdepth 1 -name '*.rpm' >"$RPM_BIN_LIST" -# Output the list for debugging purposes: -echo ========== "$RPM_BIN_LIST" +# Output it for debugging purposes: cat "$RPM_BIN_LIST" diff --git a/tools/mk_rpm_fpmdir.blackbox.txt b/tools/mk_rpm_fpmdir.blackbox.txt new file mode 100644 index 0000000..fa0093b --- /dev/null +++ b/tools/mk_rpm_fpmdir.blackbox.txt @@ -0,0 +1,14 @@ +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 diff --git a/tools/rpm_filelist.txt b/tools/rpm_filelist.txt deleted file mode 100644 index 62d4f1f..0000000 --- a/tools/rpm_filelist.txt +++ /dev/null @@ -1,14 +0,0 @@ -read /etc/profile.d/usrblackbox.sh tools/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