File: rules

package info (click to toggle)
lilypond 2.19.81+really-2.18.2-13
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 68,528 kB
  • sloc: cpp: 76,619; ansic: 75,407; lisp: 56,140; xml: 31,046; python: 20,799; sh: 7,946; yacc: 3,266; perl: 3,045; asm: 1,587; lex: 1,405; makefile: 1,048; tcl: 457; awk: 199; php: 53; csh: 50
file content (203 lines) | stat: -rwxr-xr-x 8,138 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
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#!/usr/bin/make -f
# debian/rules for LilyPond in Debian.
#
# This is free software; see the GNU General Public Licence
# version 2 or later for copying conditions.  There is NO warranty.
#

include VERSION

export MAILADDRESS = lilypond@packages.debian.org

DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS)
ifneq (,$(filter $(DEB_HOST_ARCH), i386 kfreebsd-i386))
  config_opt = --disable-optimising
  CFLAGS := $(filter-out -O%, $(CFLAGS))
  CXXFLAGS := $(filter-out -O%, $(CXXFLAGS))
else
ifneq (,$(filter $(DEB_BUILD_OPTIONS),noopt))
  config_opt = --disable-optimising
else
  config_opt = --enable-optimising
endif
endif

DOC_OPTIONS := WEB_TARGETS="offline"
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	DOC_OPTIONS := $(DOC_OPTIONS) CPU_COUNT=$(firstword $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))))
	guile_make_args := -j$(firstword $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))))
endif

########################################################################
# START: Definitions from the old guile-1.8 (1.8.8+1-10) package
########################################################################

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

ifeq (alpha,$(shell dpkg-architecture -qDEB_HOST_ARCH))
  # The -O2 option breaks make check on alpha right now.
  guile_deb_cflags := -Os -g
else ifeq (sh4,$(shell dpkg-architecture -qDEB_HOST_ARCH))
  # Renesas SH(sh4) needs -mieee.  Without it, test-conversion fails.
  # (Bug: 531378)
  guile_deb_cflags := -O2 -g -mieee
else
  guile_deb_cflags := -O2 -g
endif

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -g
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

guile_configure_args = \
  --host=$(DEB_HOST_GNU_TYPE) \
  --build=$(DEB_BUILD_GNU_TYPE) \
  --with-threads=no \
  --disable-error-on-warning \
  --prefix=/usr

ifeq (hurd-i386,$(shell dpkg-architecture -qDEB_HOST_ARCH))
  guile_configure_args += LIBS=-lpthread
endif

########################################################################
# END: Definitions from the old guile-1.8 (1.8.8+1-10) package
########################################################################

export PATH := $(CURDIR)/out/guile/usr/bin:$(PATH)
export LD_LIBRARY_PATH := $(CURDIR)/out/guile/usr/lib:$(LD_LIBRARY_PATH)
export GUILE_LOAD_PATH := $(CURDIR)/out/guile/usr/share/guile/1.8
export LILYPOND_VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)

%.reloc: %.reloc.in
	sed < $< > $@ \
		-e 's!@LILYPOND_VERSION@!$(LILYPOND_VERSION)!g'

%.sh: %.sh.in
	sed < $< > $@ \
		-e 's!@DEB_HOST_MULTIARCH@!$(DEB_HOST_MULTIARCH)!g' \
		-e 's!@LILYPOND_VERSION@!$(LILYPOND_VERSION)!g'

# Do not use debhelper's autoreconf, the build currently
# fails with this option and we take care of that
# ourselves anyway.
%:
	dh $@ --without autoreconf --with python2

## we need to nuke the parser files, because if there is a mismatch
## between upstreams bison and our bison, the build will fail epically
override_dh_auto_configure:
	$(eval unexport GUILE_LOAD_PATH)
	cd guile18 && ./autogen.sh
	cd guile18 && CFLAGS="$(guile_deb_cflags)" ./configure ${guile_configure_args}
	cd guile18 && $(MAKE) ${guile_make_args}
	$(MAKE) -C guile18 install DESTDIR=$(CURDIR)/out/guile
	rm -f lily/out/parser.*
	./autogen.sh --noconfigure
	GUILE_LOAD_PATH="$(GUILE_LOAD_PATH)" \
		dh_auto_configure -- --disable-checking --enable-debugging $(config_opt)

override_dh_auto_build-indep:
	dh_auto_build -i
	$(MAKE) doc $(DOC_OPTIONS)

## Unfortunately, lilypond is kind of broken, and installs the wrong
## info documentation (missing images) if we call their makefile
## directly. They also don't provide an install rule which doesn't
## install the documentation, which we don't care about for the
## architecture dependent build
override_dh_auto_install-arch: debian/lilypond.sh debian/lilypond-invoke-editor.sh
	for dir in `echo */*makefile|xargs -n 1 dirname|grep -v Documentation`; do \
		$(MAKE) --no-builtin-rules PACKAGE=LILYPOND package=lilypond -C $$dir install $(DOC_OPTIONS) prefix=$(CURDIR)/debian/tmp/usr/; \
	done
	sed -i -e '1s!$(CURDIR)/out/guile/usr/bin/guile!/usr/bin/guile!' \
		debian/tmp/usr/bin/lilypond-invoke-editor

## We need the non-Documentation arch-independent files installed by
## the arch-dependent "$(MAKE) install" too, hence the dependency
## on override_dh_auto_install-arch
override_dh_auto_install-indep: override_dh_auto_install-arch debian/guile.reloc
	$(MAKE) install-doc $(DOC_OPTIONS) prefix=$(CURDIR)/debian/tmp/usr/
	$(MAKE) install-info $(DOC_OPTIONS) prefix=$(CURDIR)/debian/tmp/usr
	rm -rf $(CURDIR)/debian/tmp/usr/share/omf
	rm -rf $(CURDIR)/debian/tmp/usr/share/doc/lilypond/html/input
	perl debian/move_info_images_from_html_doc $(CURDIR)/debian/tmp/usr/share/info/ $(CURDIR)/debian/tmp/usr/share/doc/lilypond/html/Documentation/
	perl debian/symlink_html_images_to_info_images $(CURDIR)/debian/tmp/usr/share/info/lilypond
	perl debian/remove_w3c_callback $(CURDIR)/debian/tmp/usr/share/doc/lilypond/ $(CURDIR)/debian/tmp/usr/share/info/

## we need to nuke the parser files, because if there is a mismatch
## between upstreams bison and our bison, the build will fail epically
override_dh_auto_clean:
	[ ! -f guile18/Makefile ] || $(MAKE) -C guile18 maintainer-clean
	rm -f lily/out/parser.*
	dh_auto_clean --no-parallel

override_dh_install-arch:
	dh_install -a --list-missing

## we need to install only the png, jpg, css, ly and english html
## files into the doc-html package, and only the english pdfs into the
## doc-pdf package. Because dh_install doesn't support regexes, we'll
## use find to replace the contents of the .install file before we
## call dh_install
override_dh_install-indep:
	/bin/echo -e 'usr/share/doc/lilypond/html/*/*/*.ly\nusr/share/doc/lilypond/html/*/*/*.png' \
		> $(CURDIR)/debian/lilypond-doc-html.install
	/bin/echo -e 'usr/share/doc/lilypond/html/*/*/*.jpg\nusr/share/doc/lilypond/html/*/*/*.css' \
		>> $(CURDIR)/debian/lilypond-doc-html.install
	find $(CURDIR)/debian/tmp/ -type f \
		-regex '.*usr/share/doc/lilypond/.*/[^\.]+.html' \
		-printf '%P\n' >> $(CURDIR)/debian/lilypond-doc-html.install
	/bin/echo -e ''> $(CURDIR)/debian/lilypond-doc-pdf.install
	find $(CURDIR)/debian/tmp/ -type f \
		-regex '.*usr/share/doc/lilypond/.*/[^\.]+.pdf' \
		-printf '%P\n' >> $(CURDIR)/debian/lilypond-doc-pdf.install
	find $(CURDIR)/debian/tmp/ -type f \
		-regex '.*usr/share/doc/lilypond/.*/[^\.]+.preview.pdf' \
		-printf '%P\n' >> $(CURDIR)/debian/lilypond-doc-pdf.install
	dh_install -i --list-missing

override_dh_python2:
	dh_python2 --verbose
	dh_python2 --verbose usr/share/lilypond/$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)/python/

override_dh_compress:
	dh_compress -X.ly -X.pdf

override_dh_installdocs:
	dh_installdocs
	for a in $(wildcard $(CURDIR)/debian/*.doc-base-special); do \
		package=`basename $$a .doc-base-special`; \
		install -d debian/$$package/usr/share/doc-base; \
		install -m0644 $$a debian/$$package/usr/share/doc-base/$$package; \
	done

override_dh_shlibdeps-arch:
	$(eval unexport LD_LIBRARY_PATH)
	dh_shlibdeps -a -lusr/lib/$(DEB_HOST_MULTIARCH)/lilypond/$(LILYPOND_VERSION)/guile

# Skip tests for architecture-dependent-only build because
# the test would fail without built documentation.
override_dh_auto_test-arch:

override_dh_auto_test-indep:
ifeq (,$(filter $(DEB_BUILD_OPTIONS),nocheck))
	$(MAKE) test-baseline
	$(MAKE) test
endif

## this rule will update debian/control and the per-language install
## files; all of the files it generates/modifies should be included in
## the Debian package and should not need to be regenerated or
## modified.
update-doc-packages:
	perl debian/update_doc_packages