File: rules

package info (click to toggle)
puppetserver 7.9.5-2%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 6,360 kB
  • sloc: ruby: 13,820; java: 6,279; sh: 1,123; makefile: 185; xml: 140
file content (140 lines) | stat: -rwxr-xr-x 6,711 bytes parent folder | download
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