#!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk APT_CACHE = $(CURDIR)/debian/apt-cache APT_FILE_CACHE = $(CURDIR)/debian/apt-file-cache TMPEXTRACT = $(CURDIR)/debian/tmpextract TMPCONTROL = $(CURDIR)/debian/tmpcontrol APTITUDE_LOCKFILE = $(CURDIR)/debian/aptitude-lockfile APTITUDE_STATE = $(CURDIR)/debian/aptitude-state APTITUDE = aptitude -o 'Aptitude::LockFile=$(APTITUDE_LOCKFILE)' -o 'Dir::Cache=$(APT_CACHE)' -o 'Dir::Aptitude::state=$(APTITUDE_STATE)' -o "Debug::NoLocking=yes" ATHENA_SHLIBS = $(shell ATHENA_SYS=$$(machtype -S) ATHENA_SYS_COMPAT=$$(machtype -C) athdir . shlibs) LIBDIRS := $(patsubst %/,%,$(strip \ $(shell strings /lib*/ld-linux*.so.2 | grep '^/.*lib') \ $(shell grep -h '^/' /etc/ld.so.conf /etc/ld.so.conf.d/*.conf) \ )) $(APT_FILE_CACHE): mkdir -p $@ apt-file -c $@ update empty = $(APT_CACHE): $(ATHENA_SHLIBS) $(APT_FILE_CACHE) $(APTITUDE_STATE) mkdir -p $@ $@/archives $@/archives/partial apt-file --verbose -y -c $(APT_FILE_CACHE) -F -l -x search "^(?:$(subst $(empty) /,|, $(LIBDIRS)))/(?:$$( \ perl -0pe 's/ .*//mg; s/(\W)/\\$$1/g; s/\\\n$$//; s/\\\n/|/g' < $< \ ))" | \ sort -u | \ perl -pe 'chomp; s/(\W)/\\$$1/g; s/^(.*)$$/~n^$$1\$$!~Rconflicts:(~Dreplaces:(~n^$$1\$$~VCANDIDATE)~Dconflicts:(~n^$$1\$$~VCANDIDATE))/; s/$$/\0/' | \ xargs -0 -r -t $(APTITUDE) -F '%p' search | \ (cd $@/archives; xargs -r -t $(APTITUDE) download) $(APTITUDE_STATE): mkdir -p $@ debian/libs: $(ATHENA_SHLIBS) $(APT_CACHE) : >| $@ for pkg in $(APT_CACHE)/archives/*.deb; do \ echo "$$(basename $$pkg)" >&2; \ rm -rf $(TMPCONTROL) $(TMPEXTRACT); \ mkdir -p $(TMPCONTROL) $(TMPEXTRACT); \ dpkg-deb -e "$$pkg" $(TMPCONTROL)/; \ [ -e $(TMPCONTROL)/shlibs ] || continue; \ dpkg-deb -x "$$pkg" $(TMPEXTRACT)/; \ perl -pe 's/^((\S+)\.so\.(\S+))\s+(\S+)$$/$$1 $$4 $$2 $$3/ or s/^((\S+)-(\S+)\.so)\s+(\S+)$$/$$1 $$4 $$2 $$3/ or $$_ = ""' < $< | \ while read lib format libname soname; do \ for dir in $(LIBDIRS); do \ if [ -e "$(TMPEXTRACT)/$$dir/$$lib" ] && \ [ "$$(objdump -a -- "$(TMPEXTRACT)/$$dir/$$lib" | \ sed -n 's/^.*file format *\(.*\)$$/\1/ p')" = "$$format" ]; then \ if grep -q "^\\($$libname\\)[[:space:]]\\+\\($$soname\)[[:space:]]\\+" $(TMPCONTROL)/shlibs; then \ sed -n "s/^\\($$libname\\)[[:space:]]\\+\\($$soname\)[[:space:]]\\+/\\1 \\2 / p" $(TMPCONTROL)/shlibs; \ else \ echo "Warning: fabricating shlibs line for $$libname $$soname" >&2; \ echo "$$libname $$soname $$(sed -n 's/^Package:[[:space:]]*// p' $(TMPCONTROL)/control)"; \ fi | \ sed -e 's/ BROKEN_DEP_ON_OBSOLETE_DB2$$/ libdb2 (>= 2:2.7.7.0-1)/' \ -e 's/ libgl1.*$$/ libgl1/' >> $@; \ break; \ fi \ done \ done; \ rm -rf $(TMPCONTROL) $(TMPEXTRACT); \ done common-build-arch:: debian/libs debathena-athena-libraries-substvars: debian/libs ( \ echo -n "debathena-athena-libraries:Recommends="; \ cat $< | sed 's/^[^[:space:]]\+[[:space:]]\+[^[:space:]]\+[[:space:]]\+//' | sort -u | tr '\n' ','; \ echo; \ ) >> debian/debathena-athena-libraries.substvars binary-predeb/debathena-athena-libraries:: debathena-athena-libraries-substvars clean:: rm -f debian/libs $(APTITUDE_LOCKFILE) rm -rf $(APT_CACHE) $(APT_FILE_CACHE) $(TMPCONTROL) $(TMPEXTRACT) $(APTITUDE_STATE)