File: rules

package info (click to toggle)
ia32-libs 2.7%2Blenny4
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 289,860 kB
  • ctags: 37
  • sloc: sh: 289; makefile: 225
file content (333 lines) | stat: -rwxr-xr-x 11,024 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
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
#!/usr/bin/make -f

export DH_COMPAT=4

DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

# Lowest version with fully ABI compatible libraries
SHLIB_VERSION=2.4

OSVER=$(shell lsb_release -s -i)
ifeq (Debian,$(OSVER))
	ROOT=/emul/ia32-linux/
	ROOTL=emul_ia32-linux_
	SUFFIX=
	SUFFIXL=
else
	ROOT=/
	ROOTL=
	SUFFIX=32
	SUFFIXL=32
endif

# Set Arch specific variables
# On amd64 some package compile 32bit debs directly.
# Skip converting them and Depend on them instead.
ifeq (amd64,$(DEB_HOST_ARCH))
  lib_depends = libc6-i386 (>= 2.3.6-2), lib32z1, lib32stdc++6, lib32asound2, lib32ncurses5
  FILTER = zlib1g libc6 libgcc1 libasound2 libstdc++6 libncurses5
  EXTRA_INSTALL =
else
  lib_depends = 
  FILTER = libgcc1
  EXTRA_INSTALL = install-ia32-libs-dev install-lib32gcc1
  LIBGCC_VERSION := $(shell dpkg -I pkgs/libgcc1_*deb | awk '/Version/ {print $$2; exit}')
  LIBGCC_VER1 := $(shell echo $(LIBGCC_VERSION) | sed 's/+b[0-9]*//')
  LIBGCC_VER2 := +ia32.libs.$(shell dpkg-parsechangelog  | grep ^Version | awk '{print $$2}')
  LIBGCC_VER3 := $(shell echo $(LIBGCC_VERSION) | sed -n 's/.*\(+b[0-9]*\)/\1/p')
  LIB32GCC_VERSION := $(LIBGCC_VER1)$(LIBGCC_VER2)$(LIBGCC_VER3)
endif

build:
#	./fetch-and-build

clean:
	dh_testdir
	dh_testroot
	dh_clean

install-prefix:
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

######################################################################
# common variables
######################################################################

MAKE := $(MAKE) -f debian/rules
DEBS_ALL := $(shell cd pkgs; ls *.deb | cut -d"_" -f1)

DEBS_ia32-libs     := $(filter-out %-dev $(FILTER),$(DEBS_ALL))
DEBS_ia32-libs-dev := $(filter %-dev,$(DEBS_ALL))
DEBS_lib32gcc1     := libgcc1 gcc-4.3-base

EXTRACT_ia32-libs     := $(addprefix extract-,$(DEBS_ia32-libs))
EXTRACT_ia32-libs-dev := $(addprefix extract-,$(DEBS_ia32-libs-dev))
EXTRACT_lib32gcc1     := $(addprefix extract-,$(DEBS_lib32gcc1))

######################################################################
# common helper
######################################################################
# All helpers expect DEST to be set to debian/<pkg>

.PRECIOUS: %/DEBIAN/Manifest
%/DEBIAN/Manifest:
	mkdir -p $(DEST)/DEBIAN/
	echo "# packages used in the creation of $(notdir $(DEST))" \
	     > $(DEST)/DEBIAN/Manifest
	echo >> $(DEST)/DEBIAN/Manifest

extract-%: $(DEST)/DEBIAN/Manifest
	cd pkgs && echo $*_*.deb >> ../$(DEST)/DEBIAN/Manifest
	dpkg-deb -x pkgs/$*_*.deb $(DEST)/t

	# change shlibs information
	# libX Y * ---> libX Y <DEST> (>= SHLIB_VERSION)
	dpkg-deb -e pkgs/$*_*.deb $(DEST)/t/DEBIAN
	if [ -f $(DEST)/t/DEBIAN/shlibs ]; then \
	  grep -v "^udeb:" < $(DEST)/t/DEBIAN/shlibs \
	  | sed "s/^\(\S*\s*\S*\).*/\1 $(notdir $(DEST)) (>= $(SHLIB_VERSION))/" >>$(DEST)/DEBIAN/shlibs; \
	fi
	rm -r $(DEST)/t/DEBIAN

move-libs:
	# Move libraries to new places
	[ ! -d $(DEST)/t/lib ] \
	|| ( mkdir -p $(DEST)$(ROOT) \
	   && mv $(DEST)/t/lib $(DEST)$(ROOT)lib$(SUFFIX) )
	[ ! -d $(DEST)/t/usr/lib ] \
	|| ( mkdir -p $(DEST)$(ROOT)usr \
	   && mv $(DEST)/t/usr/lib $(DEST)$(ROOT)usr/lib$(SUFFIX) )
	[ ! -d $(DEST)/t/usr/X11R6/lib ] \
	|| ( mkdir -p $(DEST)$(ROOT)usr/X11R6 \
	   && mv $(DEST)/t/usr/X11R6/lib $(DEST)$(ROOT)usr/X11R6/lib$(SUFFIX) )

fix-links:
	# change links in $(DEST)$(ROOT) to new names
	for link in $$(find $(DEST)$(ROOT) -type l); do		\
	  dest=$$(readlink $$link);				\
	  case "$$dest" in					\
	    /etc*) ;;						\
	    /*) rm -f $$link;					\
	        ln -s $$(echo $$dest | sed -e 's,^/,$(ROOT),' -e 's,/lib/,/lib$(SUFFIX)/,') $$link;	\
	        ;;						\
	  esac;							\
	done

######################################################################
# ia32-libs
######################################################################
install-ia32-libs: DEST=debian/ia32-libs
install-ia32-libs: install-prefix
	# Extract all debs
	$(MAKE) DEST=$(DEST) $(EXTRACT_ia32-libs)

	# Move libraries to new places
	$(MAKE) DEST=$(DEST) move-libs

ifeq (ia64,$(DEB_HOST_ARCH))
	# Make ldd work for 32-bit and 64-bit binaries.
	[ -x $(DEST)/t/usr/bin/ldd ]
	RTLDLIST="/lib/ld-linux-ia64.so.2 /lib/ld-linux.so.2" ; \
	sed -i "s%RTLDLIST=.*%RTLDLIST=\"$$RTLDLIST\"%" $(DEST)/t/usr/bin/ldd
	sed -i 's%verify_out=`$${rtld} --verify "$$file"`%verify_out=`$${rtld} --verify "$$file" 2>\&1`%' $(DEST)/t/usr/bin/ldd

	# Move ldd into place
	mkdir -p $(DEST)/usr/bin
	mv $(DEST)/t/usr/bin/ldd $(DEST)/usr/bin
	# removed in glibc 2.5
	#mv $(DEST)/t/usr/bin/lddlibc4 $(DEST)/usr/bin
	chmod u=rwx,go=rx $(DEST)/usr/bin/ldd

	# Link the ld.so into place
	mkdir -p $(DEST)/lib/
	ln -s $(ROOT)lib$(SUFFIX)/ld-linux.so.2 $(DEST)/lib/ld-linux.so.2

	# Add the ia32-linux paths to the library search path
	mkdir -p $(DEST)/etc/ld.so.conf.d/
	cp debian/ld.so.conf.ia64 $(DEST)/etc/ld.so.conf.d/ia32-libs.conf

ifneq (/,$(ROOT))
	# Move uname into place
	mkdir -p $(DEST)$(ROOT)bin
	mv $(DEST)/t/bin/uname $(DEST)$(ROOT)bin

	# Create /usr/lib32 link for gcc
	ln -s $(ROOT)usr/lib$(SUFFIX) $(DEST)/usr/lib32
endif
endif

	# Add symlinks for wine and znes compiling
	cd $(DEST)/emul/ia32-linux/usr/lib/ && \
	ln -s libGL.so.1 libGL.so && \
	ln -s libGLU.so.1 libGLU.so && \
	ln -s libICE.so.6 libICE.so && \
	ln -s libSM.so.6 libSM.so && \
	ln -s libX11.so.6 libX11.so && \
	ln -s libXau.so.6 libXau.so && \
	ln -s libXcursor.so.1 libXcursor.so && \
	ln -s libXdmcp.so.6 libXdmcp.so && \
	ln -s libXext.so.6 libXext.so && \
	ln -s libXfixes.so.3 libXfixes.so && \
	ln -s libXi.so.6 libXi.so && \
	ln -s libXinerama.so.1 libXinerama.so && \
	ln -s libXmu.so.6 libXmu.so && \
	ln -s libXrandr.so.2 libXrandr.so && \
	ln -s libXrender.so.1 libXrender.so && \
	ln -s libXt.so.6 libXt.so && \
	ln -s libXxf86vm.so.1 libXxf86vm.so && \
	ln -s libartsc.so.0 libartsc.so && \
	ln -s libaudiofile.so.0 libaudiofile.so && \
	ln -s libaudio.so.2 libaudio.so && \
	ln -s libcairo.so.2 libcairo.so && \
	ln -s libesd.so.0 libesd.so && \
	ln -s libexif.so.12 libexif.so && \
	ln -s libfontconfig.so.1 libfontconfig.so && \
	ln -s libfreetype.so.6 libfreetype.so && \
	ln -s libgcrypt.so.11 libgcrypt.so && \
	ln -s libglut.so.3 libglut.so && \
	ln -s libgnutls.so.26 libgnutls.so && \
	ln -s libgpg-error.so.0 libgpg-error.so && \
	ln -s libgphoto2_port.so.0 libgphoto2_port.so && \
	ln -s libgphoto2.so.2 libgphoto2.so && \
	ln -s libieee1284.so.3 libieee1284.so && \
	ln -s libjpeg.so.62 libjpeg.so && \
	ln -s liblber-2.4.so.2 liblber.so && \
	ln -s liblcms.so.1 liblcms.so && \
	ln -s libldap_r-2.4.so.2 libldap_r.so && \
	ln -s libltdl.so.3 libltdl.so && \
	ln -s libsane.so.1 libsane.so && \
	ln -s libsasl2.so.2 libsasl2.so && \
	ln -s libtasn1.so.3 libtasn1.so && \
	ln -s libtiff.so.4 libtiff.so && \
	ln -s libxml2.so.2 libxml2.so && \
	ln -s libxslt.so.1 libxslt.so && \
	ln -s libSDL-1.2.so.0 libSDL-1.2.so && \
	ln -s libpng12.so.0 libpng12.so && \
	ln -s libpng12.so.0 libpng.so && \
	ln -s libcups.so.2  libcups.so && \
	ln -s libpulse.so.0.4.1 libpulse.so && \
	ln -s libpulse-simple.so.0.0.1 libpulse-simple.so && \
	ln -s libssl.so.0.9.8   libssl.so && \
	ln -s libXcomposite.so.1 libXcomposite.so && \
	ln -s libhal.so.1 libhal.so && \
	ln -s libcapi20.so.3 libcapi20.so && \
	ln -s libjack.so.0 libjack.so && \
	ln -s libcrypto.so.0.9.8 libcrypto.so

	cd $(DEST)/emul/ia32-linux/lib/ && \
	ln -s libusb-0.1.so.4 libusb.so && \
	ln -s libcap.so.2     libcap.so

	# Remove unwanted directories and pt_chown
	rm -rf $(DEST)/t
	rm -f $(DEST)$(ROOT)usr/lib$(SUFFIX)/pt_chown

	# Add doc dir, lintian overrides and Manifest
	mkdir -p $(DEST)/usr/share/doc/ia32-libs
	mkdir -p $(DEST)/usr/share/lintian/overrides
	cp debian/ia32-libs.overrides $(DEST)/usr/share/lintian/overrides/ia32-libs
	mv $(DEST)/DEBIAN/Manifest $(DEST)/usr/share/doc/ia32-libs/Manifest.ia32-libs

	# Fix symlinks.
	$(MAKE) DEST=$(DEST) fix-links


######################################################################
# ia32-libs-dev
######################################################################
install-ia32-libs-dev: DEST=debian/ia32-libs-dev
install-ia32-libs-dev: install-prefix
	# Extract all debs
	$(MAKE) DEST=$(DEST) $(EXTRACT_ia32-libs-dev)

	# Move libraries to new places
	$(MAKE) DEST=$(DEST) move-libs

	# Remove unwanted directories and contents
	rm -r $(DEST)/t

	# Fix symlinks.
	$(MAKE) DEST=$(DEST) fix-links

	# Fix up GROUP commands in linker scripts
	for lib in libc.so libpthread.so; do				\
	  cat $(DEST)$(ROOT)usr/lib$(SUFFIX)/$$lib				\
	    | sed -e '/^GROUP/ { s, /, $(ROOT),g ; s,/lib/,/lib$(SUFFIX)/,g }' > $$lib; \
	  mv -f $$lib $(DEST)$(ROOT)usr/lib$(SUFFIX)/$$lib;		\
	done

	# Create doc link and add lintian overrides and Manifest
	mkdir -p $(DEST)/usr/share/doc/ia32-libs-dev
	mkdir -p $(DEST)/usr/share/lintian/overrides
	cp debian/ia32-libs-dev.overrides $(DEST)/usr/share/lintian/overrides/ia32-libs-dev
	mv $(DEST)/DEBIAN/Manifest $(DEST)/usr/share/doc/ia32-libs-dev/Manifest

######################################################################
# lib32gcc1
######################################################################
install-lib32gcc1: DEST=debian/lib32gcc1
install-lib32gcc1: install-prefix
	# libgcc1 is special since we have versioned depends on it
	# Extract all debs
	$(MAKE) SHLIB_VERSION=$(LIB32GCC_VERSION) DEST=$(DEST) $(EXTRACT_lib32gcc1)

        # Move lib and usr/share/doc/libgcc1
	$(MAKE) DEST=$(DEST) move-libs
	mv $(DEST)/t/usr $(DEST)/
	#mv $(DEST)/usr/share/doc/libgcc1 $(DEST)/usr/share/doc/lib32gcc1
	mkdir $(DEST)/usr/share/doc/lib32gcc1
	rm -f $(DEST)/usr/share/doc/libgcc1
	( set -e; for FILE in copyright changelog.Debian.gz; do \
	    mv $(DEST)/usr/share/doc/gcc-4.3-base/$$FILE $(DEST)/usr/share/doc/lib32gcc1/lib32gcc1.$$FILE; \
	  done )
	rm -rf $(DEST)/usr/share/doc/gcc-4.3-base

	# Remove unwanted directories and contents
	rm -r $(DEST)/t
	#rm $(DEST)/usr/share/doc/gcc-4.3-base/.changelog.Debian.gz
	#rm $(DEST)/usr/share/doc/gcc-4.3-base/.copyright

	# Fix symlinks.
	$(MAKE) DEST=$(DEST) fix-links

	# Add lintian overrides and Manifest
	sed 's/^libgcc1:/lib32gcc1:/' \
	    < $(DEST)/usr/share/lintian/overrides/libgcc1 \
	    > $(DEST)/usr/share/lintian/overrides/lib32gcc1
	rm $(DEST)/usr/share/lintian/overrides/libgcc1
	cat debian/lib32gcc1.overrides >> $(DEST)/usr/share/lintian/overrides/lib32gcc1
	mv $(DEST)/DEBIAN/Manifest $(DEST)/usr/share/doc/lib32gcc1/Manifest

install: install-ia32-libs $(EXTRA_INSTALL)

binary-indep:


# Build architecture-dependent files here.

binary-arch: build install
	dh_testdir -s
	dh_testroot -s 
	dh_installdocs -s
	dh_installexamples -s
	dh_installchangelogs -s
	dh_link
#	dh_strip
	dh_compress -s
	dh_fixperms --exclude "*/ld-*" -s
#	dh_makeshlibs
	dh_installdeb -s
#	dh_shlibdeps
	dh_gencontrol -pia32-libs -- '-Vlib:Depends=$(lib_depends)'
ifeq (ia64,$(DEB_HOST_ARCH))
	dh_gencontrol -pia32-libs-dev
	dh_gencontrol -plib32gcc1 -- -v$(LIB32GCC_VERSION)
endif
	dh_md5sums -s
	dh_builddeb -s

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure