void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

06-shlib-provides.sh (1467B)


      1# This hook executes the following tasks:
      2#	- generates shlib-provides file for xbps-create(8)
      3
      4collect_sonames() {
      5	local _destdir="$1" f _soname _fname _pattern
      6	local _pattern="^[[:alnum:]]+(.*)+\.so(\.[0-9]+)*$"
      7	local _versioned_pattern="^[[:alnum:]]+(.*)+\.so(\.[0-9]+)+$"
      8	local _tmpfile=$(mktemp) || exit 1
      9
     10	if [ ! -d ${_destdir} ]; then
     11		rm -f ${_tmpfile}
     12		return 0
     13	fi
     14
     15	# real pkg
     16	find ${_destdir} -type f -name "*.so*" | while read f; do
     17		_fname="${f##*/}"
     18		case "$(file -bi "$f")" in
     19		application/x-sharedlib*|application/x-pie-executable*)
     20			# shared library
     21			_soname=$(${OBJDUMP} -p "$f"|grep SONAME|awk '{print $2}')
     22			# Register all versioned sonames, and
     23			# unversioned sonames only when in libdir.
     24			if [[ ${_soname} =~ ${_versioned_pattern} ]] ||
     25			   [[ ${_soname} =~ ${_pattern} &&
     26			   	( -e ${_destdir}/usr/lib/${_fname} ||
     27				  -e ${_destdir}/usr/lib32/${_fname} ) ]]; then
     28				echo "${_soname}" >> ${_tmpfile}
     29				echo "   SONAME ${_soname} from ${f##${_destdir}}"
     30			fi
     31			;;
     32		esac
     33	done
     34
     35	for f in ${shlib_provides}; do
     36		echo "$f" >> ${_tmpfile}
     37	done
     38	if [ -s "${_tmpfile}" ]; then
     39		tr '\n' ' ' < "${_tmpfile}" > ${_destdir}/shlib-provides
     40		echo >> ${_destdir}/shlib-provides
     41	fi
     42	rm -f ${_tmpfile}
     43}
     44
     45hook() {
     46	local _destdir32=${XBPS_DESTDIR}/${pkgname}-32bit-${version}
     47
     48	if [ -n "$noshlibprovides" ]; then
     49		return 0
     50	fi
     51
     52	# native pkg
     53	collect_sonames ${PKGDESTDIR}
     54	# 32bit pkg
     55	collect_sonames ${_destdir32}
     56}