Skip to content

Instantly share code, notes, and snippets.

@vinzent
Created June 10, 2015 09:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vinzent/9fd4985d07741d19d77e to your computer and use it in GitHub Desktop.
Save vinzent/9fd4985d07741d19d77e to your computer and use it in GitHub Desktop.
puppetserver-create-gem-rpm
#!/bin/bash
# Author: Thomas Mueller <thomas@chaschperli.ch>
# Date: 2015-06-10
# enable to exit on first error
# set -e
# list gem's to create rpm's seperated by space
# example for 2 gems: gem_list="r10k trocla"
gem_list="trocla hocon"
export PATH="/opt/puppetlabs/server/data/puppetserver/jruby-gems/bin:/opt/puppetlabs/bin:/opt/puppetlabs/puppet/bin:$PATH"
trap cleanup EXIT
puppetserver_gem=$(mktemp /tmp/puppetserver_gem.XXXXXX)
cleanup() {
rm -f "$puppetserver_gem"
}
# requires the IMHO nice packaging tool fpm
# (https://github.com/jordansissel/fpm)
# try to install fpm if not found
if ! [ -e "/opt/puppetlabs/server/data/puppetserver/jruby-gems/bin/fpm" ]; then
puppetserver gem install fpm
fi
# install gem's to a temp directory
gem install --no-ri --no-rdoc --install-dir /tmp/gems $gem_list
timestamp=$(date +%Y%m%d%H%M%S)
pkg_path="/tmp/gems/pkg_${timestamp}"
mkdir -p "$pkg_path"
cd "$pkg_path"
# gem v.1.2.0 fpm produces dependency to exact version 1.2 (without .0)
# use gem-disable-dependency to disable this one
find /tmp/gems/cache -name '*.gem' | \
xargs -rn1 \
puppetserver ruby /opt/puppetlabs/server/data/puppetserver/jruby-gems/bin/fpm \
--gem-gem "$puppetserver_gem" \
--gem-bin-path "/opt/puppetlabs/server/data/puppetserver/jruby-gems/bin" \
--depends 'puppetserver >= 2.0.0' \
--iteration 0.el6 \
--epoch 0 \
--gem-package-name-prefix puppetserver-rubygem \
--gem-disable-dependency colored \
-s gem \
-t rpm
echo "RPM's are in folder: ${pkg_path}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment