From 8ab1600c662ac2c5137f468a7ee3ab70dc51c700 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: May 21 2018 18:11:03 +0000 Subject: Initial PE dependency generator --- diff --git a/fileattrs/pe.attr b/fileattrs/pe.attr new file mode 100644 index 0000000..529d70c --- /dev/null +++ b/fileattrs/pe.attr @@ -0,0 +1,4 @@ +%__pe_provides %{_rpmconfigdir}/midipix/pedeps.sh --provides +%__pe_requires %{_rpmconfigdir}/midipix/pedeps.sh --requires +%__pe_magic ^(setuid,? )?(setgid,? )?(sticky )?PE(32|64).*$ +%__pe_flags exeonly diff --git a/midipix/pedeps.sh b/midipix/pedeps.sh new file mode 100755 index 0000000..5d3f007 --- /dev/null +++ b/midipix/pedeps.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +perk=/usr/bin/perk +test -x $perk || { + cat > /dev/null + exit 0 +} + +[ $# -ge 1 ] || { + cat > /dev/null + exit 0 +} + +case $1 in +-P|--provides) + while read filename ; do + case "${filename}" in + *.so*) + # Print the name of the library with correct multilibbing + DIR="`dirname ${filename}`" + FILE="`basename ${filename}`" + if [[ $DIR =~ "/lib64" ]]; then + echo -n "${FILE}(64bit)\n" + fi + if [[ $DIR =~ "/lib32" ]]; then + echo -n "${FILE}(32bit)\n" + fi + ;; + esac + done + ;; +-R|--requires) + while read filename ; do + # Print the name of the library with correct multilibbing + DIR="`dirname ${filename}`" + FILE="`basename ${filename}`" + PEDEPS="`perk -d ${filename}`" + readarray -t DEPS <<<"$PEDEPS" + if [[ $DIR =~ "/lib64" ]]; then + for dep in "${PEDEPS[@]}" + do + echo -n "${dep}(64bit)\n" + done + fi + if [[ $DIR =~ "/lib32" ]]; then + for dep in "${PEDEPS[@]}" + do + echo -n "${dep}(32bit)\n" + done + fi + ;; + done + ;; +esac +exit 0