-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Fixed problems mentioned so far.

- --
Florian Pritz -- {flo,bluewi...@server-speed.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iQIcBAEBAgAGBQJKht81AAoJEG0WVcFM4cE+7a4P/jsSUrJJ1OjOLC+sRbtf87zI
oU7Nb2wyLcvjXvtPdErnXUdxau1vYfgTVvjoRV6ARMqiYqgmsphtHnjgHfNfoWvC
fDJpLhCiSa5vm+pSnzcAlZI4BV+xa/0QDEqAWneplbtmNS86KEnkvJPt+1qmtmDh
R869YcpNTP/hzFP8PBdkcLGopdOruyy3+ldiEECxzbaI5msN5LTIWMTaRlH9Cfis
+03BU2OU84lTapBn3JWXKcNktBAXurqOXEELqEjBZy7+GRZkOKRPPvj2ybfgu8zb
bGdF3K6vkC3s3NvoGaX0NG7M3uOSM2NzXYH4NPeoAkFNUJvPvN1bfBefcTmrC9mt
WKtZXQSzCiwcXseqvhWpWjwC5U+OyBIm/3DEycPKuq9tf2zMfQ1rStWnYzuuSu3C
+A6U5QmMz+fe/NA9leSR4qPRCxHglqK05qS0ZYYGGN6jfLm8PGyEJovue/byMbhS
sKMyqlPWhC7beHKi+9nVfmxJVdsgtYCzKSPj6wPWn8sxuVfvN1d6oCfpElM4Ve70
N1IW+XqG+EiYWjArnSG/LKgWuXOlAqsOT9NgyoDF/R5+SlDE3zNDaZPG4M4yYFQ6
OUDDB2v+E6+kiPvFk0bfDYmCispzT+FhPS1BO1xfPJMYbW8I806aQWpw6YFtLrRh
0r0xr22M6dK8KFfxb3JS
=Ry89
-----END PGP SIGNATURE-----
>From 8525810a22eceddb6e9c14ab20ad7cc306e9d6de Mon Sep 17 00:00:00 2001
From: Florian Pritz <bluew...@xssn.at>
Date: Sat, 15 Aug 2009 12:35:32 +0200
Subject: [PATCH] add support for .so dependencies

Support-by: brain0 <tho...@archlinux.org>
Support-by: GNU\caustic <christoph.sch...@uni-ulm.de>
---
 etc/makepkg.conf.in   |    4 +++-
 scripts/makepkg.sh.in |   43 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletions(-)

diff --git a/etc/makepkg.conf.in b/etc/makepkg.conf.in
index 3a3a415..8d91bcc 100644
--- a/etc/makepkg.conf.in
+++ b/etc/makepkg.conf.in
@@ -67,8 +67,10 @@ BUILDENV=(fakeroot !distcc color !ccache)
 #-- emptydirs: Leave empty directories in packages
 #-- zipman:    Compress manual (man and info) pages in MAN_DIRS with gzip
 #-- purge:     Remove files specified by PURGE_TARGETS
+#-- soprovides:add .so files to provides array
+#-- sodepends: add .so files to depends array
 #
-OPTIONS=(strip docs libtool emptydirs zipman purge)
+OPTIONS=(strip docs libtool emptydirs zipman purge soprovides !sodepends)
 
 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
 INTEGRITY_CHECK=(md5)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index daa9585..0e468de 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -872,6 +872,32 @@ tidy_install() {
 	fi
 }
 
+find_sodepends()
+{
+	find $pkgdir | while read filename
+	do
+		soarch=$(readelf -h "$filename" 2> /dev/null| sed -nr 's/.*Class:.*ELF(.*).*/\1/p')
+		[ -n "$soarch" ] || continue
+		readelf -d "$filename" 2> /dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p' \
+		| while read dep
+		do
+			echo sodep-${soarch}-${dep}
+		done
+	done
+}
+
+find_soprovides()
+{
+	find $pkgdir -name \*.so | while read filename
+	do
+		soarch=$(readelf -h "$filename" 2> /dev/null| sed -nr 's/.*Class:.*ELF(.*).*/\1/p')
+		[ -n "$soarch" ] || continue
+		soname=$(readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Library soname: \[(.*)\].*/\1/p')
+		[ -n "$soname" ] || continue
+		echo sodep-${soarch}-${soname}
+	done
+}
+
 write_pkginfo() {
 	local builddate=$(date -u "+%s")
 	if [ -n "$PACKAGER" ]; then
@@ -902,6 +928,23 @@ write_pkginfo() {
 		echo "force = true" >> .PKGINFO
 	fi
 
+	if [ "$(check_option soprovides)" = "y" ] || [ "$(check_option sodepends)" = "y" ]; then
+		soprovides=$(find_soprovides)
+	fi
+		
+	if [ "$(check_option sodepends)" = "y" ]; then
+		sodepends=$(find_sodepends)
+		
+		# filter .so files provided by the package itself
+		sodepends=$(echo $sodepends $soprovides $soprovides | tr " " "\n" | sort | uniq -u)
+
+		depends=($depends $sodepends)
+	fi
+
+	if [ "$(check_option soprovides)" = "y" ]; then
+		provides=($provides $soprovides)
+	fi
+
 	local it
 	for it in "${licen...@]}"; do
 		echo "license = $it" >>.PKGINFO
-- 
1.6.4

Attachment: 0001-add-support-for-.so-dependencies.patch.sig
Description: Binary data



Reply via email to