1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
#!/usr/bin/make -f
include /usr/share/dpkg/pkg-info.mk
include /usr/share/javahelper/java-vars.mk
export LEIN_HOME=$(CURDIR)/.lein
export LEIN_OFFLINE=true
NAME=puppetserver
DEBIAN_GEMS=deep_merge fast_gettext hocon gettext locale puppetserver-ca text semantic_puppet
# used to generate dependencies on the upstream versions of these packages
RUBY_PACKAGES=ruby-deep-merge ruby-fast-gettext ruby-gettext ruby-hocon ruby-locale ruby-puppetserver-ca-cli ruby-semantic-puppet ruby-text
CLASSPATH=/usr/share/java/clojure.jar:/usr/share/java/slingshot.jar:/usr/share/java/clj-yaml.jar:/usr/share/java/snakeyaml-1.x.jar:/usr/share/java/commons-lang.jar:/usr/share/java/commons-io.jar:/usr/share/java/clj-time.jar:/usr/share/java/clj-semver.jar:/usr/share/java/schema.jar:/usr/share/java/fs.jar:/usr/share/java/liberator.jar:/usr/share/java/commons-exec.jar:/usr/share/java/metrics-core.jar:/usr/share/java/jruby-utils.jar:/usr/share/java/clj-shell-utils.jar:/usr/share/java/trapperkeeper.jar:/usr/share/java/trapperkeeper-status.jar:/usr/share/java/trapperkeeper-scheduler.jar:/usr/share/java/trapperkeeper-webserver-jetty9.jar:/usr/share/java/trapperkeeper-authorization.jar:/usr/share/java/trapperkeeper-comidi-metrics.jar:/usr/share/java/trapperkeeper-metrics.jar:/usr/share/java/trapperkeeper-filesystem-watcher.jar:/usr/share/java/kitchensink.jar:/usr/share/java/ssl-utils.jar:/usr/share/java/ring-middleware.jar:/usr/share/java/dujour-version-check.jar:/usr/share/java/http-client.jar:/usr/share/java/comidi.jar:/usr/share/java/i18n.jar:/usr/share/java/semver.jar:/usr/share/java/libtrapperkeeper-comidi-metrics-clojure.jar
%:
dh $@ --with javahelper
override_dh_auto_configure:
cd debian && ln -sf /usr/share/maven-repo .
override_dh_auto_build:
# main build
lein i18n make
lein jar
execute_after_dh_auto_build:
# bundle gems shipped as component tarballs
mkdir -p target/vendored-jruby-gems
cp -a rubygem-*/gems target/vendored-jruby-gems
cp -a rubygem-*/specifications target/vendored-jruby-gems
# create symlink tree for vendored-jruby-gems
mkdir -p target/vendored-jruby-gems/gems
mkdir -p target/vendored-jruby-gems/specifications
$(foreach gem_name,$(DEBIAN_GEMS), \
set -e; \
gem=$(shell ls -1 /usr/share/rubygems-integration/all/specifications | grep -Po "^$(gem_name)-[0-9\.]+(?=\.gemspec)"); \
ln -s /usr/share/rubygems-integration/all/specifications/$${gem}.gemspec target/vendored-jruby-gems/specifications; \
if [ -e /usr/share/rubygems-integration/all/gems/$${gem} ]; then \
ln -s /usr/share/rubygems-integration/all/gems/$${gem} target/vendored-jruby-gems/gems; \
else \
mkdir -p target/vendored-jruby-gems/gems/$${gem}/lib; \
cp -as /usr/lib/ruby/vendor_ruby/$(gem_name)*.rb target/vendored-jruby-gems/gems/$${gem}/lib; \
ln -s /usr/lib/ruby/vendor_ruby/$(gem_name) target/vendored-jruby-gems/gems/$${gem}/lib; \
fi; \
)
# prepare main binary
mkdir -p target/bin
sed -e 's/%DEB_VERSION_UPSTREAM%/$(DEB_VERSION_UPSTREAM)/' < debian/bin/puppetserver.in > target/bin/puppetserver
# prepare cli subcommands defaults script
# inject the jar classpath into cli-defaults.sh
mkdir -p target/cli
sed -e "s#%CLASSPATH%#$(CLASSPATH)#" < debian/bin/cli-defaults.sh.in > target/cli/cli-defaults.sh
# prepare cli subcommands
mkdir -p target/cli/apps
cp debian/bin/cli/* target/cli/apps
cp resources/ext/cli/* target/cli/apps
find target/cli -name \*.erb | xargs sed -i \
-e 's/<%= EZBake::Config\[:uberjar_name\] %>/puppetserver.jar/' \
-e '1s|^#!/opt/puppetlabs/puppet/bin/ruby|#!/usr/bin/ruby|' \
-e '1s|^#!/usr/bin/env bash|#!/bin/bash|'
rename --filename -e 's/\.erb$$//' target/cli/**/*
chmod +x target/cli/**/*
# dropsonde unsupported
@rm -f target/cli/apps/dropsonde
override_dh_auto_test:
ifeq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
# make hiera, facter and puppet gems available to the testsuite
# upstream uses git submodules here, but we can use Debian sources instead
for component in hiera facter puppet resource_api; do \
mkdir -p ruby/$${component}/lib; \
if [ "$$component" = "puppet" ]; then package=puppet-agent ; \
elif [ "$$component" = "resource_api" ]; then package=ruby-puppet-resource-api ; \
else package=$$component; fi; \
dpkg -L $$package | grep -Po "^/usr/lib/ruby/vendor_ruby/\K.*" | \
while read file; do \
if [ -d /usr/lib/ruby/vendor_ruby/$$file ]; then \
mkdir -p ruby/$${component}/lib/$$file; \
else \
ln -sf /usr/lib/ruby/vendor_ruby/$$file ruby/$${component}/lib/$$file; \
fi; \
done; \
done
# testsuite looks for gems in this directory
cd target && ln -sf vendored-jruby-gems jruby-gem-home
# run unit and integration tests
PUPPETSERVER_HEAP_SIZE=6G lein test
endif
execute_before_dh_install:
# cleanup vendored jruby gems
@rm -rf target/vendored-jruby-gems/cache/*
@rm -rf target/vendored-jruby-gems/gems/*/ext
@rm -rf target/vendored-jruby-gems/gems/*/test
@rm -rf target/vendored-jruby-gems/gems/*/samples
@rm -rf target/vendored-jruby-gems/gems/*/spec
execute_before_dh_link:
# create unversioned jar symlinks
dh_link usr/share/puppetserver/puppetserver-$(DEB_VERSION_UPSTREAM).jar usr/share/puppetserver/puppetserver.jar
# create private vendor_ruby directory for puppetserver's jruby
mkdir -p debian/puppetserver/usr/lib/puppetserver/ruby/vendor_ruby
for component in hiera facter puppet; do \
ln -s /usr/lib/ruby/vendor_ruby/$$component debian/puppetserver/usr/lib/puppetserver/ruby/vendor_ruby/$$component; \
ln -s /usr/lib/ruby/vendor_ruby/$${component}*.rb debian/puppetserver/usr/lib/puppetserver/ruby/vendor_ruby; \
done
override_dh_installsystemd:
dh_installsystemd --no-enable
override_dh_fixperms:
# cli scripts need to have execute permission
dh_fixperms -Xusr/share/puppetserver/cli
override_jh_manifest:
jh_manifest -c "$(subst :, ,$(CLASSPATH))" -m puppetlabs.trapperkeeper.main usr/share/puppetserver/puppetserver-$(DEB_VERSION_UPSTREAM).jar
override_dh_gencontrol:
# needed to tighten the binary Depends:
# due to the ruby gem symlinks, see bug #1029299
for dep in $(RUBY_PACKAGES); do \
ver=$$(dpkg-query -f '$${source:Upstream-Version}' -W $${dep}); \
ruby_depends="$${ruby_depends}, $${dep} (<< $${ver}.), $${dep} (>= $${ver}~~)"; \
done; \
dh_gencontrol -- -VrubyDepends="$${ruby_depends}" -VclojureAotDepends="$${aot_depends}"
override_dh_installman:
mkdir debian/tmp/man
for manpage_path in debian/manpages/*.rst; do \
manpage=$$(basename $$manpage_path); \
rst2man --exit-status=2 --report=1 $${manpage_path} "debian/tmp/man/$${manpage%%.*}".1; \
done
dh_installman debian/tmp/man/*.1
override_dh_clean:
rm -f debian/maven-repo
rm -Rf target ruby
dh_clean -Xacceptance
|