fix ghc-deps.sh for without_shared libraries

This commit is contained in:
Jens Petersen 2011-02-10 22:11:02 +10:00
parent ee9ff3e826
commit 1f4312aeaa
3 changed files with 49 additions and 37 deletions

View File

@ -18,6 +18,8 @@ case $MODE in
*) echo "`basename $0`: Need --provides or --requires" ; exit 1 *) echo "`basename $0`: Need --provides or --requires" ; exit 1
esac esac
SHARED=$(find $PKGBASEDIR -type f -name '*.so')
GHCVERSION=$(ghc --numeric-version) GHCVERSION=$(ghc --numeric-version)
files=$(cat) files=$(cat)
@ -25,42 +27,46 @@ files=$(cat)
#set -x #set -x
for i in $files; do for i in $files; do
LIB_FILE=$(echo $i | grep /libHS | egrep -v "$PKGBASEDIR/libHS") LIB_FILE=$(echo $i | grep /libHS | egrep -v "$PKGBASEDIR/libHS")
if [ -n "$LIB_FILE" ]; then if [ -n "$LIB_FILE" ]; then
if [ -d "$PKGCONFDIR" ]; then if [ -d "$PKGCONFDIR" ]; then
META="" META=""
SELF="" SELF=""
case $LIB_FILE in case $LIB_FILE in
*.so) META=ghc ;; *.so) META=ghc ;;
*_p.a) META=ghc-prof SELF=ghc-devel ;; *_p.a) META=ghc-prof SELF=ghc-devel ;;
*.a) META=ghc-devel SELF=ghc ;; *.a) META=ghc-devel
esac if [ -n "$SHARED" ]; then
if [ -n "$META" ]; then SELF=ghc
PKGVER=$(echo $LIB_FILE | sed -e "s%$PKGBASEDIR/\([^/]\+\)/libHS.*%\1%") fi
HASHS=$(ghc-pkg -f $PKGCONFDIR field $PKGVER $FIELD | sed -e "s/^$FIELD: \+//") ;;
for i in $HASHS; do esac
case $i in if [ -n "$META" ]; then
*-*) echo $i | sed -e "s/\(.*\)-\(.*\)/$META(\1) = \2/" ;; PKGVER=$(echo $LIB_FILE | sed -e "s%$PKGBASEDIR/\([^/]\+\)/libHS.*%\1%")
*) ;; HASHS=$(ghc-pkg -f $PKGCONFDIR field $PKGVER $FIELD | sed -e "s/^$FIELD: \+//")
esac for i in $HASHS; do
done case $i in
if [ "$MODE" = "--requires" -a -n "$SELF" ]; then *-*) echo $i | sed -e "s/\(.*\)-\(.*\)/$META(\1) = \2/" ;;
HASHS=$(ghc-pkg -f $PKGCONFDIR field $PKGVER id | sed -e "s/^id: \+//") *) ;;
for i in $HASHS; do esac
echo $i | sed -e "s/\(.*\)-\(.*\)/$SELF(\1) = \2/" done
done if [ "$MODE" = "--requires" -a -n "$SELF" ]; then
fi HASHS=$(ghc-pkg -f $PKGCONFDIR field $PKGVER id | sed -e "s/^id: \+//")
for i in $HASHS; do
echo $i | sed -e "s/\(.*\)-\(.*\)/$SELF(\1) = \2/"
done
fi
fi
fi
elif [ "$MODE" = "--requires" ]; then
if file $i | grep -q 'executable, .* dynamically linked'; then
BIN_DEPS=$(ldd $i | grep libHS | grep -v libHSrts | sed -e "s%^\\tlibHS\(.*\)-ghc${GHCVERSION}.so =.*%\1%")
for p in ${BIN_DEPS}; do
HASH=$(ghc-pkg --global field $p id | sed -e "s/^id: \+//")
echo $HASH | sed -e "s/\(.*\)-\(.*\)/ghc(\1) = \2/"
done
fi
fi fi
fi
elif [ "$MODE" = "--requires" ]; then
if file $i | grep -q 'executable, .* dynamically linked'; then
BIN_DEPS=$(ldd $i | grep libHS | grep -v libHSrts | sed -e "s%^\\tlibHS\(.*\)-ghc${GHCVERSION}.so =.*%\1%")
for p in ${BIN_DEPS}; do
HASH=$(ghc-pkg --global field $p id | sed -e "s/^id: \+//")
echo $HASH | sed -e "s/\(.*\)-\(.*\)/ghc(\1) = \2/"
done
fi
fi
done done
echo $files | tr [:blank:] '\n' | /usr/lib/rpm/rpmdeps $MODE echo $files | tr [:blank:] '\n' | /usr/lib/rpm/rpmdeps $MODE

View File

@ -1,3 +1,6 @@
# RPM Macros for packaging Haskell cabalized packages
# see https://fedoraproject.org/wiki/PackagingDrafts/Haskell for more details
# "cabal" # "cabal"
%cabal [ -x Setup ] || ghc --make -dynamic Setup\ %cabal [ -x Setup ] || ghc --make -dynamic Setup\
./Setup ./Setup

View File

@ -1,6 +1,6 @@
Name: ghc-rpm-macros Name: ghc-rpm-macros
Version: 0.11.6 Version: 0.11.7
Release: 2%{?dist} Release: 1%{?dist}
Summary: Macros for building packages for GHC Summary: Macros for building packages for GHC
Group: Development/Libraries Group: Development/Libraries
@ -47,6 +47,9 @@ install -p %{SOURCE3} ${RPM_BUILD_ROOT}/%{_prefix}/lib/rpm
%changelog %changelog
* Thu Feb 10 2011 Jens Petersen <petersen@redhat.com> - 0.11.7-1
- fix ghc-deps.sh for without_shared libraries
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.11.6-2 * Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.11.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild