File: rules

package info (click to toggle)
ruby2.7 2.7.4-1%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 112,576 kB
  • sloc: ruby: 849,454; ansic: 697,834; yacc: 45,100; xml: 25,367; pascal: 10,051; javascript: 6,575; sh: 3,848; makefile: 759; cpp: 713; asm: 333; python: 295; lisp: 97; sed: 94; perl: 62; awk: 36
file content (158 lines) | stat: -rwxr-xr-x 6,900 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/usr/bin/make -f
# -*- makefile -*-

export DH_VERBOSE=1

export DEBIAN_DISABLE_RUBYGEMS_INTEGRATION = 1

# This has to be exported to make some magic below work.
export DH_OPTIONS
TESTOPTS += -v
export TESTOPTS

DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

include /usr/share/dpkg/pkg-info.mk

export RUBY_VERSION       := $(patsubst ruby%,%,$(DEB_SOURCE))
export RUBY_API_VERSION   := $(RUBY_VERSION).0

configure_options += --prefix=/usr
configure_options += --enable-multiarch
configure_options += --target=$(DEB_HOST_MULTIARCH)
configure_options += --program-suffix=$(RUBY_VERSION)
configure_options += --with-soname=ruby-$(RUBY_VERSION)
configure_options += --enable-shared
configure_options += --disable-rpath
configure_options += --with-sitedir='/usr/local/lib/site_ruby'
configure_options += --with-sitearchdir="/usr/local/lib/$(DEB_HOST_MULTIARCH)/site_ruby"
configure_options += --runstatedir=/var/run
configure_options += --localstatedir=/var
configure_options += --sysconfdir=/etc

# These are embedded in rbconfig.rb and should be triplet-prefixed for
# cross compilation.
configure_options += AS=$(DEB_HOST_GNU_TYPE)-as
configure_options += CC=$(DEB_HOST_GNU_TYPE)-gcc
configure_options += CXX=$(DEB_HOST_GNU_TYPE)-g++
configure_options += LD=$(DEB_HOST_GNU_TYPE)-ld

ifneq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
# Cross-building. This is the same logic that debhelper's
# lib/Debian/Debhelper/Buildsystem/autoconf.pm uses.
# note that you also need --with-baseruby, so use the "cross" build-profile.
configure_options += --build=$(DEB_BUILD_GNU_TYPE)
configure_options += --host=$(DEB_HOST_GNU_TYPE)
endif
ifneq ($(filter cross,$(DEB_BUILD_PROFILES)),)
configure_options += --with-baseruby=/usr/bin/ruby
endif

# the following are ignored by ./configure, but used by some extconf.rb scripts
configure_options += --enable-ipv6
configure_options += --with-dbm-type=gdbm_compat

# do not compress debug sections for arch-dep Ruby packages with dh_compat 12
configure_options += --with-compress-debug-sections=no

# hardening and other standard Debian build flags
export DEB_BUILD_MAINT_OPTIONS = hardening=+bindnow
configure_options += $(shell dpkg-buildflags --export=configure)

# See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93808
ifneq (,$(filter $(DEB_HOST_ARCH),sh3 sh4))
export DEB_CFLAGS_MAINT_APPEND += -fno-crossjumping
endif

# Always build with /bin/bash, to get consistent rbconfig.rb (which embeds SHELL).
export SHELL := /bin/bash

# Some tests rely on $HOME
export HOME := $(shell mktemp -d)
export LANG := C.UTF-8

%:
	dh $@

override_dh_auto_configure:
	cp /usr/share/misc/config.guess tool
	cp /usr/share/misc/config.sub tool
ifeq (riscv64,$(DEB_HOST_ARCH))
	LIBS="-latomic" ./configure $(configure_options)
else
	./configure $(configure_options)
endif

override_dh_auto_clean:
	$(MAKE) clean || true
	$(MAKE) distclean-ext || true
	rm -f tool/config.guess tool/config.sub
	$(RM) test/excludes/$(DEB_HOST_ARCH)
	$(RM) -r .ext
	$(RM) -r doc/capi
	$(RM) .installed.list GNUmakefile Makefile builtin_binary.inc \
		config.status enc.mk uncommon.mk verconf.h

override_dh_auto_build-arch:
	dh_auto_build -- main V=1

# see full list in common.mk (search for /^check:/)
TEST_TARGETS := test test-tool test-all # missing test-spec

excludes =
excludes += --excludes-dir=debian/tests/excludes/any/
excludes += --excludes-dir=debian/tests/excludes/$(DEB_HOST_ARCH)/
ifneq (,$(DEBIAN_RUBY_EXTRA_TEST_EXCLUDES))
	excludes += --excludes-dir=debian/tests/excludes/$(DEBIAN_RUBY_EXTRA_TEST_EXCLUDES)/
endif
override_dh_auto_test-arch:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	$(MAKE) $(TEST_TARGETS) V=1 RUBY_TESTOPTS=-v TESTS="$(excludes)" OPENSSL_CONF=$(CURDIR)/debian/openssl.cnf
endif

override_dh_auto_install-arch:
	$(MAKE) install-nodoc V=1 DESTDIR=$(CURDIR)/debian/tmp
	# handle embedded copy of jquery
	$(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/js/jquery.js
	dh_link -plibruby$(RUBY_VERSION) /usr/share/javascript/jquery/jquery.min.js /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/js/jquery.js
	# handle embedded copy of Lato (font)
	$(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf
	dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-Regular.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf
	$(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf
	dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-Italic.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf
	$(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf
	dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-Light.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf
	$(RM) $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf
	dh_link -plibruby$(RUBY_VERSION) /usr/share/fonts/truetype/lato/Lato-LightItalic.ttf /usr/lib/ruby/$(RUBY_API_VERSION)/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf
	# remove embedded SSL certificates (replaced using ca-certificates via rubygems-integration)
	$(RM) -r $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/rubygems/ssl_certs/*
	$(RM) -r $(CURDIR)/debian/tmp/usr/lib/ruby/$(RUBY_API_VERSION)/bundler/ssl_certs/*
	# ship rubygems system install directory
	mkdir -p $(CURDIR)/debian/tmp/var/lib/gems/$(RUBY_API_VERSION)
	# fix pkg-config
	# FIXME there is probably less brutal way of doing this
	sed -i -e 's/^DLDFLAGS=.*/DLDFLAGS=/' \
		$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/ruby-$(RUBY_VERSION).pc
	# sanity check
	debian/sanity_check

override_dh_auto_build-indep:
	$(MAKE) docs V=1

override_dh_auto_install-indep:
	$(MAKE) install-doc V=1 DESTDIR=$(CURDIR)/debian/ruby$(RUBY_VERSION)-doc
	find $(CURDIR)/debian/ruby$(RUBY_VERSION)-doc -name created.rid -delete

override_dh_install-arch:
	# install SystemTap tapfile
	mkdir -p $(CURDIR)/debian/tmp/usr/share/systemtap/tapset
	sed 's|@LIBRARY_PATH@|/usr/lib/$(DEB_HOST_MULTIARCH)/libruby-$(RUBY_VERSION).so|g' $(CURDIR)/debian/libruby.stp > $(CURDIR)/debian/tmp/usr/share/systemtap/tapset/libruby$(RUBY_VERSION)-$(DEB_HOST_MULTIARCH).stp
	dh_install

override_dh_gencontrol:
	./debian/genprovides $(CURDIR)/debian/libruby2.7/usr/lib/ruby/gems/2.7.0/specifications/default/ \
		>> debian/libruby2.7.substvars
	dh_gencontrol