File: rules

package info (click to toggle)
diffoscope 297
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 11,304 kB
  • sloc: python: 17,166; sh: 114; makefile: 97; xml: 36; javascript: 2
file content (87 lines) | stat: -rwxr-xr-x 3,318 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/make -f

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

SHELL := /bin/bash  # for the <(echo …) below, this was the easiest way.
PY_VERSION := $(shell awk '/^VERSION = / {gsub(/"/, "", $$3); print $$3}' diffoscope/__init__.py )
CHECK_VERSION := $(shell grep '^$(PY_VERSION)[^0-9].*$$' <(echo $(DEB_VERSION)))

ifneq ($(DEB_VERSION),$(PY_VERSION))
 ifneq ($(DEB_DISTRIBUTION),UNRELEASED)
  $(info $(CHECK_VERSION))
  ifneq (,$(CHECK_VERSION))
   $(info Accepting version mismatch $(PY_VERSION) <-> $(DEB_VERSION))
  else
   $(error Version in debian/changelog ($(DEB_VERSION)) does not match diffoscope version ($(PY_VERSION)))
  endif
 endif
endif

export PATH := $(CURDIR)/bin:$(PATH)
export PYBUILD_DESTDIR = debian/diffoscope-minimal
export PYBUILD_TEST_ARGS = -vv -r sxX -l --cov=diffoscope --cov-report=term-missing --cov-report=html
export PYBUILD_BEFORE_TEST = flake8 --config=/dev/null --select=F821
export PYBUILD_AFTER_TEST = debian/tests/basic-command-line
# the /debian/ one is required in buster-backports - unclear what creates that and why it's not present in bullseye
export PYBUILD_AFTER_INSTALL = rm -rvf '{destdir}/{install_dir}/htmlcov' '{destdir}/{install_dir}/.coverage' '{destdir}/{install_dir}/debian'

ifneq ($(JENKINS_EXPORTS_DIR),)
  export PYBUILD_BEFORE_TEST += && mkdir -pv $(JENKINS_EXPORTS_DIR)/test-results
  export PYBUILD_TEST_ARGS += --junit-xml=$(JENKINS_EXPORTS_DIR)/test-results/tests.xml
endif


%:
	dh $@ --with python3 --with bash-completion --buildsystem=pybuild

doc/%.1:
	$(MAKE) -C doc $*.1

debian/diffoscope-minimal.bash-completion:
	(register-python-argcomplete diffoscope || register-python-argcomplete3 diffoscope) > $@

execute_after_dh_auto_build: debian/diffoscope-minimal.bash-completion
	dh_auto_build -O--buildsystem=makefile -Ddoc

override_dh_python3:
	# dh_python3 will only work on binaries shipping files
	dh_python3 -p diffoscope-minimal \
		--depends-section=distro_detection \
		--recommends-section=cmdline \
		--recommends-section=comparators
	grep Recommends debian/diffoscope-minimal.substvars >> debian/diffoscope.substvars
	# Remove big Recommends from the -minimal package, leaving them only in the full one
	sed -i 's/python3-guestfs,//' debian/diffoscope-minimal.substvars
	sed -i 's/python3-binwalk,//' debian/diffoscope-minimal.substvars

execute_before_dh_gencontrol:
	bin/diffoscope --list-debian-substvars | tee \
		>(sed '/^diffoscope-minimal:/d' >> debian/diffoscope.substvars) | \
		sed '/^diffoscope:R/d' >> debian/diffoscope-minimal.substvars
	head debian/*.substvars

diffoscope/presenters/icon.py: favicon.png
	(echo '# Generated from $@'; \
	 echo 'FAVICON_BASE64 = """'; \
	 base64 $<; \
	 echo '""".replace("\\n", "")'; \
	) > $@

favicon.png: doc/logo.svg
	inkscape -w 32 -h 32 -e $@ $<

override_dh_auto_clean:
	debian/tests/control.sh
	@set -e ; if ! diff -q debian/tests/control debian/tests/control.tmp ; then \
		echo ;\
		echo "The generated control file differs from the actual one." ;\
		echo "A sourceful upload of this package is needed." ;\
		echo ;\
		echo "Differences:" ;\
		diff -u debian/tests/control debian/tests/control.tmp ;\
	else \
		rm debian/tests/control.tmp ;\
	fi
	dh_auto_clean -O--buildsystem=pybuild
	dh_auto_clean -O--buildsystem=makefile -Ddoc
	find -type d -name '__pycache__' -empty -delete