Skip to content

Commit

Permalink
media-sound/apulse: Fix ebuild and script to support all ABIs
Browse files Browse the repository at this point in the history
Prior solution was over-engineered and didn't cover all cases.
Thanks mgorny and jcallen for the assistance.

Gentoo-Bug: 547524

Package-Manager: portage-2.2.20.1
  • Loading branch information
Daniel Campbell committed Aug 27, 2015
1 parent 5fb3bb1 commit 7345c7f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 30 deletions.
8 changes: 7 additions & 1 deletion media-sound/apulse/apulse-0.1.6-r1.ebuild
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,15 @@ multilib_src_configure() {
local mycmakeargs="-DAPULSEPATH=${EPREFIX}/usr/$(get_libdir)/apulse"

cmake-utils_src_configure

# Ensure all relevant libdirs are added
DIRS=
_add_dir() { DIRS="${EPREFIX}/usr/$(get_libdir)/apulse${DIRS:+:${DIRS}}"; }
multilib_foreach_abi _add_dir
sed -e "s#@@DIRS@@#${DIRS}#g" "${FILESDIR}"/apulse > "${T}"/apulse
}

multilib_src_install() {
cmake-utils_src_install
dobin "${FILESDIR}"/apulse
dobin "${T}"/apulse
}
32 changes: 3 additions & 29 deletions media-sound/apulse/files/apulse
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,6 @@ if [ $# -lt 1 ]; then
exit
fi

# Get the full path of our application
app_path=$(which ${1} 2>/dev/null)

# The app might not be picked up by `which`, so let's use realpath as a backup
[ -z ${app_path} ] && app_path=$(realpath ${1})

# Then make sure it's executable
[ ! -x ${app_path} ] && echo "${app_path} is not executable!" && exit 8

# Fetch the app's ABI
app_abi=$(file -L ${app_path} | sed 's/\([^,]*\), \([^,]*\), \(.*\)/\2/')

# Determine libdir based on app_abi
# Applications that don't have a header will default to native libdir
case $app_abi in
Intel\ 80386)
APULSE_ABI="32"
;;
x86-64)
APULSE_ABI="64"
;;
*)
APULSE_ABI=$(readlink /usr/lib)
APULSE_ABI=${APULSE_ABI#lib}
;;
esac

# Set library path for the application so it'll use apulse
LD_LIBRARY_PATH=/usr/lib${APULSE_ABI}/apulse${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} exec "$@"
# Set library path for the application so it'll use apulse. DIRS is
# replaced by the ebuild to include the correct paths
LD_LIBRARY_PATH=@@DIRS@@${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} exec "$@"

0 comments on commit 7345c7f

Please sign in to comment.