[ghc-rpm-macros] add rpm hash requires for dynamic executables in ghc-deps.sh

Jens Petersen petersen at fedoraproject.org
Sun Jan 23 05:06:46 UTC 2011


commit a1abcaaa783b801c489ed12503d06d2e92f11308
Author: Jens Petersen <petersen at redhat.com>
Date:   Sun Jan 23 15:05:38 2011 +1000

    add rpm hash requires for dynamic executables in ghc-deps.sh
    
    - compile Setup in cabal macro
    - use _rpmconfigdir

 ghc-deps.sh         |   24 ++++++++++++++++++------
 ghc-rpm-macros.ghc  |   11 ++++++-----
 ghc-rpm-macros.spec |    7 ++++++-
 3 files changed, 30 insertions(+), 12 deletions(-)
---
diff --git a/ghc-deps.sh b/ghc-deps.sh
index a475c3d..37263a6 100755
--- a/ghc-deps.sh
+++ b/ghc-deps.sh
@@ -18,14 +18,18 @@ case $MODE in
     *) echo "`basename $0`: Need --provides or --requires" ; exit 1
 esac
 
+GHCVERSION=$(ghc --numeric-version)
+
 files=$(cat)
 
 #set -x
 
-if [ -d "$PKGCONFDIR" ]; then
- for i in $files; do
-  LIB_FILE=$(echo $i | grep /libHS | egrep -v "$PKGBASEDIR/libHS")
-  if [ -n "$LIB_FILE" ]; then
+for i in $files; do
+ LIB_FILE=$(echo $i | grep /libHS | egrep -v "$PKGBASEDIR/libHS")
+ if [ -n "$LIB_FILE" ]; then
+  if [ -d "$PKGCONFDIR" ]; then
+    META=""
+    SELF=""
     case $LIB_FILE in
       *.so) META=ghc ;;
       *_p.a) META=ghc-prof SELF=ghc-devel ;;
@@ -48,7 +52,15 @@ if [ -d "$PKGCONFDIR" ]; then
       fi
     fi
   fi
- done
-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
 
 echo $files | tr [:blank:] '\n' | /usr/lib/rpm/rpmdeps $MODE
diff --git a/ghc-rpm-macros.ghc b/ghc-rpm-macros.ghc
index 6b2b45e..16d060a 100644
--- a/ghc-rpm-macros.ghc
+++ b/ghc-rpm-macros.ghc
@@ -1,5 +1,6 @@
 # "cabal"
-%cabal ./Setup
+%cabal [ -x Setup ] || ghc --make -dynamic Setup\
+./Setup
 
 # configure
 %cabal_configure\
@@ -130,8 +131,8 @@ This package provides the shared library.\
 %define pkgnamever %{pkgname}-%{pkgver}\
 %define basepkg ghc-%{pkgname}\
 %global _use_internal_dependency_generator 0\
-%global __find_provides /usr/lib/rpm/ghc-deps.sh --provides %{buildroot}%{ghclibdir}\
-%global __find_requires /usr/lib/rpm/ghc-deps.sh --requires %{buildroot}%{ghclibdir}\
+%global __find_provides %{_rpmconfigdir}/ghc-deps.sh --provides %{buildroot}%{ghclibdir}\
+%global __find_requires %{_rpmconfigdir}/ghc-deps.sh --requires %{buildroot}%{ghclibdir}\
 %package -n %{basepkg}-devel\
 Summary:        %{?common_summary}%{!?common_summary:Haskell %{pkgname} library} development files\
 Group:          Development/Libraries\
@@ -197,14 +198,12 @@ find %{buildroot} -type f -exec sh -c "file {} | grep -q 'dynamically linked'" \
 
 # ghc_bin_build
 %ghc_bin_build\
-ghc --make -dynamic Setup\
 %cabal_configure\
 %cabal build
 
 # ghc_lib_build [name] [version]
 %ghc_lib_build()\
 %{?1:cd %1-%2}\
-ghc --make -dynamic Setup\
 %cabal_configure %{!?without_prof:-p} %{?1:--docdir=%{_docdir}/ghc-%1-%2 --htmldir=%{ghclibdocdir}/%1-%2}\
 %cabal build\
 %{!?without_haddock:%cabal haddock %{!?without_hscolour:--hyperlink-source}}\
@@ -213,6 +212,8 @@ ghc --make -dynamic Setup\
 
 # install bin package
 %ghc_bin_install\
+%global _use_internal_dependency_generator 0\
+%global __find_requires %{_rpmconfigdir}/ghc-deps.sh --requires %{buildroot}%{ghclibdir}\
 %cabal_install\
 %ghc_strip_dynlinked
 
diff --git a/ghc-rpm-macros.spec b/ghc-rpm-macros.spec
index a332bc0..76cd853 100644
--- a/ghc-rpm-macros.spec
+++ b/ghc-rpm-macros.spec
@@ -1,5 +1,5 @@
 Name:		ghc-rpm-macros
-Version:	0.11.4
+Version:	0.11.5
 Release:	1%{?dist}
 Summary:	Macros for building packages for GHC
 
@@ -47,6 +47,11 @@ install -p %{SOURCE3} ${RPM_BUILD_ROOT}/%{_prefix}/lib/rpm
 
 
 %changelog
+* Sun Jan 23 2011 Jens Petersen <petersen at redhat.com> - 0.11.5-1
+- add rpm hash requires for dynamic executables in ghc-deps.sh
+- compile Setup in cabal macro
+- use _rpmconfigdir
+
 * Sat Jan 22 2011 Jens Petersen <petersen at redhat.com> - 0.11.4-1
 - drop deprecated ghcdocdir and ghcpkgdir
 - new ghclibdocdir


More information about the scm-commits mailing list