aboutsummaryrefslogtreecommitdiff
path: root/common/hooks/pre-pkg
diff options
context:
space:
mode:
authorJuan RP <xtraeme@gmail.com>2015-01-30 11:20:00 +0000
committerJuan RP <xtraeme@gmail.com>2015-01-30 11:20:00 +0000
commit6c395cb76e8d05f782fb750be573ba4737af4fea (patch)
treed131516f5d523b4a97165017582aa3714b97408a /common/hooks/pre-pkg
parentc3073185f6c367a51e22547ad617321ae84e9428 (diff)
downloadvoid-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.tar
void-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.tar.gz
void-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.tar.bz2
void-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.tar.lz
void-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.tar.xz
void-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.tar.zst
void-packages-6c395cb76e8d05f782fb750be573ba4737af4fea.zip
xbps-src: create a new hook that collects shlib-provides.
This is necessary to be able to collect shlib-provides for 32bit pkgs, which are autogenerated. The strip-and-debug-pkgs hook now just does what its name mentions: strip binaries and create -dbg pkgs.
Diffstat (limited to 'common/hooks/pre-pkg')
-rw-r--r--common/hooks/pre-pkg/06-shlib-provides.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/common/hooks/pre-pkg/06-shlib-provides.sh b/common/hooks/pre-pkg/06-shlib-provides.sh
new file mode 100644
index 00000000000..e29c676f2a9
--- /dev/null
+++ b/common/hooks/pre-pkg/06-shlib-provides.sh
@@ -0,0 +1,54 @@
+# This hook executes the following tasks:
+# - generates shlib-provides file for xbps-create(8)
+
+collect_sonames() {
+ local _destdir="$1" f _soname _fname _pattern
+ local _pattern="^[[:alnum:]]+(.*)+\.so(\.[0-9]+)*$"
+ local _tmpfile="$(mktemp)"
+
+ if [ ! -d ${_destdir} ]; then
+ rm -f ${_tmpfile}
+ return 0
+ fi
+
+ # real pkg
+ find ${_destdir} -type f | while read f; do
+ _fname=$(basename "$f")
+ case "$(file -bi "$f")" in
+ application/x-sharedlib*)
+ # shared library
+ _soname=$(${OBJDUMP} -p "$f"|grep SONAME|awk '{print $2}')
+ if [[ ${_soname} =~ ${_pattern} ]]; then
+ if [ ! -e ${_destdir}/usr/lib/${_fname} -a \
+ ! -e ${_destdir}/usr/lib32/${_fname} ]; then
+ continue
+ fi
+ echo "${_soname}" >> ${_tmpfile}
+ echo " SONAME ${_soname} from ${f##${_destdir}}"
+ fi
+ ;;
+ esac
+ done
+
+ for f in ${shlib_provides}; do
+ echo "$f" >> ${_tmpfile}
+ done
+ if [ -s "${_tmpfile}" ]; then
+ cat ${_tmpfile} | tr '\n' ' ' > ${_destdir}/shlib-provides
+ echo >> ${_destdir}/shlib-provides
+ fi
+ rm -f ${_tmpfile}
+}
+
+hook() {
+ local _destdir32=${XBPS_DESTDIR}/${pkgname}-32bit-${version}
+
+ if [ -n "$noarch" ]; then
+ return 0
+ fi
+
+ # native pkg
+ collect_sonames ${PKGDESTDIR}
+ # 32bit pkg
+ collect_sonames ${_destdir32}
+}