diff options
author | Juan RP <xtraeme@gmail.com> | 2015-01-30 11:20:00 +0000 |
---|---|---|
committer | Juan RP <xtraeme@gmail.com> | 2015-01-30 11:20:00 +0000 |
commit | 6c395cb76e8d05f782fb750be573ba4737af4fea (patch) | |
tree | d131516f5d523b4a97165017582aa3714b97408a /common/hooks/pre-pkg | |
parent | c3073185f6c367a51e22547ad617321ae84e9428 (diff) | |
download | void-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.sh | 54 |
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} +} |