File: rules

package info (click to toggle)
puppetserver 8.7.0-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,476 kB
  • sloc: ruby: 5,764; sh: 997; java: 221; xml: 111; makefile: 94
file content (132 lines) | stat: -rwxr-xr-x 6,931 bytes parent folder | download | duplicates (2)
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
#!/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

# ruby gems to include in puppetserver's jruby environment
JRUBY_GEMS := $(shell cd resources/ext/build-scripts && cat jruby-gem-list.txt mri-gem-list-no-dependencies.txt | cut -d' ' -f1)

# fake home directory for the testsuite
FAKE_HOME := $(shell mktemp -d)

CLASSPATH=/usr/share/java/clojure.jar:/usr/share/java/slingshot.jar:/usr/share/java/snakeyaml.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:
	# create symlink tree for vendored-jruby-gems
	for gem in $(JRUBY_GEMS); do \
		PUPPETSERVER_GEM_HOME=target/vendored-jruby-gems ./debian/puppetserver_gem_helper.sh $$gem; \
	done
	# 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 facter and puppet gems available to the testsuite
	# upstream uses git submodules here, but we can use Debian sources instead
	for component in 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
	# symlink vendored gems to the test suite's custom gem-home
	# (see test/unit/puppetlabs/services/jruby/jruby_puppet_testutils.clj)
	mkdir -p $(FAKE_HOME)/.puppetlabs/opt/server/data/puppetserver
	ln -s $(CURDIR)/target/vendored-jruby-gems $(FAKE_HOME)/.puppetlabs/opt/server/data/puppetserver/jruby-gems
	# regenerate tls certificates used in https tests
	cd dev-resources/puppetlabs && ( \
		for testdir in puppetserver/ruby/http_client_test puppetserver/certificate_authority_test/master/conf puppetserver/certificate_authority_test/update_crls services/ca/certificate_authority_core_test/update_crls services/certificate_authority/certificate_authority_int_test/ca_true_test/master/conf services/certificate_authority/certificate_authority_int_test/infracrl_test/master/conf; do \
			cp -a $$testdir $${testdir}.clean; \
		done )
	ruby $(CURDIR)/dev-resources/regen_certs.rb
	# run unit and integration tests
	_JAVA_OPTIONS=-Duser.home=$(FAKE_HOME) lein test
endif

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:
	# tighten the binary Depends:
	# due to the ruby gem symlinks, see bug #1029299
	for gem in $(JRUBY_GEMS); do \
		package=$$(ruby -e "require 'gem2deb/package_name_mapping'; @mapping = Gem2Deb::PackageNameMapping.new(false); puts @mapping['$${gem}']") \
		ver=$$(dpkg-query -f '$${source:Upstream-Version}' -W $${package}); \
		ruby_depends="$${ruby_depends}, $${package} (<< $${ver}.), $${package} (>= $${ver}~~)"; \
	done; \
	dh_gencontrol -- -VrubyDepends="$${ruby_depends}"

override_dh_installman:
	cd debian/manpages; \
	for man in *.rst; do \
		rst2man --exit-status=2 --report=1 $${man} "$${man%%.*}".1; \
	done
	dh_installman debian/manpages/*.1

override_dh_clean:
	rm -f debian/maven-repo debian/manpages/*.1
	rm -Rf .lein .lein-failures target
	rm -rf resources/puppetlabs resources/locales.clj
	rm -rf ruby/facter/* ruby/puppet/* ruby/resource_api/*
	# cleanup regenerated certificates
	-cd dev-resources/puppetlabs && ( \
		for testdir in puppetserver/ruby/http_client_test puppetserver/certificate_authority_test/master/conf puppetserver/certificate_authority_test/update_crls services/ca/certificate_authority_core_test/update_crls services/certificate_authority/certificate_authority_int_test/ca_true_test/master/conf services/certificate_authority/certificate_authority_int_test/infracrl_test/master/conf; do \
			test -d $${testdir}.clean && ( rm -rf $$testdir; mv $${testdir}.clean $$testdir ); \
		done )
	dh_clean -Xacceptance