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
|
#!/usr/bin/make -f
lib_tmp=debian/tmp-lib
dev_tmp=debian/tmp-dev
LIB=libbaz1
DEV=libbaz1-dev
VENDORARCH := $(shell perl -MConfig -wE'say substr($$Config{vendorarch},1)')
build-arch:
$(MAKE)
build-indep:
build: build-arch build-indep
clean:
$(MAKE) clean
dh_clean -plibbaz2 -plibbaz2-dev
rm -f debian/files debian/substvars
rm -rf $(lib_tmp) $(dev_tmp)
# Now the correct libbaz2-dev package
binary-correct:
install -d debian/libbaz2-dev/usr/lib
cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib
# usually, I'd also include some .h files to /usr/include
# Now the correct libbaz2 package
install -d debian/libbaz2/usr/lib
cp -a libbaz2.so.* debian/libbaz2/usr/lib
chmod a-x debian/libbaz2/usr/lib/*
# General stuff that is tested in other testsets:
dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
# Mess up the libbaz2 changelog files to test the symlink handling.
ln -s /usr/share/doc/lintian/changelog.gz \
debian/libbaz2/usr/share/doc/libbaz2/changelog.gz
install -m 644 debian/changelog \
debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo
ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog
# Okay, if either line is omitted, it should be noted
dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev
dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
# and again, regular packaging stuff
dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs
dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg
# and the incorrect one
binary-arch: build-arch binary-correct
# first, the lib package
install -d $(lib_tmp)/usr/lib
# resp. no soname (check), wrong soname (check), and no-pic (check)
cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib
cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b
install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b
# let's include the .a in the non-dev too (TODO)
# Also, libbaz1.a hasn't a symbol table (TODO)
cp -a *.a $(lib_tmp)/usr/lib
# And a wrong .so symlink (wrong, only in -dev, TODO)
ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so
# And a wrong .so.X symlink (wrong, should point to a real existing
# shlib, TODO)
ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9
# And a plain .so (wrong, TODO)
touch $(lib_tmp)/usr/lib/libbar2.so
# And a non-versioned SONAME.
install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so
strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so
# Pretend to be a Perl module to test a lack of Perl dependencies.
install -d $(lib_tmp)/$(VENDORARCH)/auto/Foo
install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
strip $(lib_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
install -d $(lib_tmp)/usr/share/doc/$(LIB)
install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB)
install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB)
gzip -n -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog
install -d $(lib_tmp)/DEBIAN
install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst
install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm
touch $(lib_tmp)/usr/share/doc/README.Debian
#dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0
install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs
install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols
dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp)
dpkg --build $(lib_tmp) ..
# now the -dev package
install -d $(dev_tmp)/usr/include
install -d $(lib_tmp)/usr/lib
# let's also install the .so at the same time... (wrong, TODO)
cp -a *.a *.so.* $(lib_tmp)/usr/lib
# and fuck up permission (TODO)
chmod a+x $(lib_tmp)/usr/lib/*.a
# Pretend to be a Perl module to test a lack of Perl dependencies.
install -d $(dev_tmp)/$(VENDORARCH)/auto/Foo
install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
strip $(dev_tmp)/$(VENDORARCH)/auto/Foo/Foo.so
install -d $(dev_tmp)/usr/share/doc
ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV)
install -d $(dev_tmp)/DEBIAN
install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst
install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm
dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp)
dpkg --build $(dev_tmp) ..
binary: binary-arch
# The mention of binary-indep here should be sufficient to suppress the
# warning that it's not present.
.PHONY: build-arch build-indep build binary-arch binary-indep binary clean
|