[ghc-rpm-macros/f17] add cabal-tweak-dep-ver script and allow reading latest haskell-platform.spec

Jens Petersen petersen at fedoraproject.org
Fri Jun 22 06:28:46 UTC 2012


commit fec42b2c88e826f4fdf70620ea1d902cbf7cb91a
Author: Jens Petersen <petersen at redhat.com>
Date:   Fri Jun 22 15:28:41 2012 +0900

    add cabal-tweak-dep-ver script and allow reading latest haskell-platform.spec
    
    backport some updates from rawhide 0.95.5:
    - new cabal-tweak-dep-ver script to tweak depends version bounds in .cabal
    - ghc-dep.sh: only use buildroot package.conf.d if it exists
    - ghc-deps.sh: look in buildroot package.conf.d for program deps
    - add a meta-package option to ghc_devel_package and use in ghc_devel_requires
    - allow ghc_description, ghc_devel_description, ghc_devel_post_postun
      to take args
    - support meta packages like haskell-platform without base lib files
    - add shell variable cabal_configure_extra_options to cabal_configure for
      local configuration
    - do not provide prof when without_prof set

 cabal-tweak-dep-ver |   32 ++++++++++++++++++++++++++++++++
 ghc-deps.sh         |    7 +++++--
 ghc-rpm-macros.ghc  |   23 +++++++++++++++--------
 ghc-rpm-macros.spec |   22 ++++++++++++++++++++--
 4 files changed, 72 insertions(+), 12 deletions(-)
---
diff --git a/cabal-tweak-dep-ver b/cabal-tweak-dep-ver
new file mode 100755
index 0000000..137c944
--- /dev/null
+++ b/cabal-tweak-dep-ver
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+set -e +x
+
+USAGE="Usage: $0 dep old new"
+
+if [ $# -ne 3 ]; then
+    echo "$USAGE"
+    exit 1
+fi
+
+DEP=$1
+OLD=$(echo $2 | sed -e "s/*/\\\\*/g" -e "s/\./\\\\./g")
+NEW=$3
+
+CABALFILE=$(ls *.cabal)
+
+if [ $(echo $CABALFILE | wc -w) -ne 1 ]; then
+   echo "There needs to be one .cabal file in the current dir!"
+   exit 1
+fi
+
+if ! grep -q "$DEP.*$OLD" $CABALFILE; then
+   echo "$CABALFILE does not match: $DEP $OLD"
+   exit 1
+fi
+
+if [ ! -f $CABALFILE.orig ]; then
+    BACKUP=.orig
+fi
+
+sed -i$BACKUP -e "s/\($DEP.*\)$OLD/\1$NEW/g" $CABALFILE
diff --git a/ghc-deps.sh b/ghc-deps.sh
index add9b9f..4c164d0 100755
--- a/ghc-deps.sh
+++ b/ghc-deps.sh
@@ -16,7 +16,7 @@ GHC_VER=$(basename $PKGBASEDIR | sed -e s/ghc-//)
 if [ ! -x "/usr/bin/ghc-pkg-${GHC_VER}" -a -x "$PKGBASEDIR/ghc-pkg" ]; then
     GHC_PKG="$PKGBASEDIR/ghc-pkg --global-conf=$PKGCONFDIR"
 else
-    GHC_PKG=/usr/bin/ghc-pkg
+    GHC_PKG="/usr/bin/ghc-pkg"
 fi
 
 case $MODE in
@@ -70,8 +70,11 @@ for i in $files; do
     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%")
+	    if [ -d "$PKGCONFDIR" ]; then
+		PACKAGE_CONF_OPT="--package-conf=$PKGCONFDIR"
+	    fi
 	    for p in ${BIN_DEPS}; do
-		HASH=$(${GHC_PKG} --global field $p id | sed -e "s/^id: \+//")
+		HASH=$(${GHC_PKG} --global $PACKAGE_CONF_OPT field $p id | sed -e "s/^id: \+//")
 		echo $HASH | sed -e "s/\(.*\)-\(.*\)/ghc(\1) = \2/"
 	    done
 	fi
diff --git a/ghc-rpm-macros.ghc b/ghc-rpm-macros.ghc
index 85f3afc..1ad6e7a 100644
--- a/ghc-rpm-macros.ghc
+++ b/ghc-rpm-macros.ghc
@@ -21,7 +21,7 @@ fi
 # configure
 %cabal_configure\
 %ghc_check_bootstrap\
-%cabal configure --prefix=%{_prefix} --libdir=%{_libdir} --docdir=%{_docdir}/%{name}-%{version} %{?pkg_name:--htmldir=%{ghclibdocdir}/%{pkg_name}-%{version}} --libsubdir='$compiler/$pkgid' --ghc %{!?ghc_without_shared:--enable-shared} %{!?ghc_without_dynamic:--enable-executable-dynamic} %{?cabal_configure_options}
+%cabal configure --prefix=%{_prefix} --libdir=%{_libdir} --docdir=%{_docdir}/%{name}-%{version} %{?pkg_name:--htmldir=%{ghclibdocdir}/%{pkg_name}-%{version}} --libsubdir='$compiler/$pkgid' --ghc %{!?ghc_without_shared:--enable-shared} %{!?ghc_without_dynamic:--enable-executable-dynamic} %{?cabal_configure_options} $cabal_configure_extra_options
 
 # install
 %cabal_install %cabal copy --destdir=%{buildroot} -v
@@ -73,7 +73,11 @@ fi\
 if [ -d "%{buildroot}%{docdir}" ]; then\
 echo "%{docdir}" >> %{basepkg}-devel.files\
 fi\
-sed -i -e "s!%{buildroot}!!g" %{!?ghc_without_shared:%{basepkg}.files} %{basepkg}-devel.files\
+for i in %{!?ghc_without_shared:%{basepkg}.files} %{basepkg}-devel.files; do\
+if [ -f "$i" ]; then\
+sed -i -e "s!%{buildroot}!!g" $i\
+fi\
+done\
 %{nil}
 
 %ghc_add_basepkg_file()\
@@ -98,7 +102,7 @@ install --mode=0644 %{pkgnamever}.conf %{buildroot}%{ghclibdir}/package.conf.d\
 %ghc_devel_requires Requires:       ghc-compiler = %{ghc_version}\
 Requires(post): ghc-compiler = %{ghc_version}\
 Requires(postun): ghc-compiler = %{ghc_version}\
-%if %{undefined ghc_without_shared}\
+%if %{undefined ghc_without_shared} && 0%{!?-m:1}\
 Requires:       ghc-%{?pkg_name}%{!?pkg_name:%{pkgname}} = %{?pkgver}%{!?pkgver:%{version}}-%{release}\
 %endif
 
@@ -131,7 +135,7 @@ Group:          System Environment/Libraries\
 %{?ghc_pkg_obsoletes:Obsoletes:      %(echo "%{ghc_pkg_obsoletes}" | sed -e "s/\\(ghc-[^, ]*\\)-devel/\\1/g")}
 
 # ghc_description [name] [version]
-%ghc_description\
+%ghc_description()\
 %define pkgname %{?1}%{!?1:%{pkg_name}}\
 %define basepkg ghc-%{pkgname}\
 %description -n %{basepkg}\
@@ -175,8 +179,9 @@ This package provides the shared library.\
 %ghc_devel_files\
 %{nil}
 
-# ghc_devel_package [-c cdepslist] [-h pkgdepslist] [-l licensetag] [name] [version]
-%ghc_devel_package(c:h:l:)\
+# ghc_devel_package [-c cdepslist] [-h pkgdepslist] [-l licensetag] [-m] [name] [version]
+#  -m : meta-package
+%ghc_devel_package(c:h:l:m)\
 %define pkgname %{?1}%{!?1:%{pkg_name}}\
 %define pkgver %{?2}%{!?2:%{version}}\
 %define basepkg ghc-%{pkgname}\
@@ -194,10 +199,12 @@ Group:          Development/Libraries\
 Obsoletes:      %{basepkg}-doc < %{pkgver}-%{release}\
 Provides:       %{basepkg}-doc = %{pkgver}-%{release}\
 Obsoletes:      %{basepkg}-prof < %{pkgver}-%{release}\
+%if %{undefined without_prof}\
 Provides:       %{basepkg}-prof = %{pkgver}-%{release}\
+%endif
 
 # ghc_devel_description
-%ghc_devel_description\
+%ghc_devel_description()\
 %define pkgname %{?1}%{!?1:%{pkg_name}}\
 %define basepkg ghc-%{pkgname}\
 %description -n %{basepkg}-devel\
@@ -206,7 +213,7 @@ Provides:       %{basepkg}-prof = %{pkgver}-%{release}\
 This package contains the development files.
 
 # ghc_devel_post_postun
-%ghc_devel_post_postun\
+%ghc_devel_post_postun()\
 %define pkgname %{?1}%{!?1:%{pkg_name}}\
 %define basepkg ghc-%{pkgname}\
 %post -n %{basepkg}-devel\
diff --git a/ghc-rpm-macros.spec b/ghc-rpm-macros.spec
index bccb4c6..b4f0aa5 100644
--- a/ghc-rpm-macros.spec
+++ b/ghc-rpm-macros.spec
@@ -3,7 +3,7 @@
 %global macros_file %{_sysconfdir}/rpm/macros.ghc
 
 Name:           ghc-rpm-macros
-Version:        0.15.5
+Version:        0.15.6
 Release:        1%{?dist}
 Summary:        Macros for building packages for GHC
 
@@ -13,11 +13,13 @@ URL:            https://fedoraproject.org/wiki/Haskell_SIG
 
 # This is a Fedora maintained package which is specific to
 # our distribution.  Thus the source is only available from
-# within this srpm.
+# within this srpm.  But it could be moved to fedorahosted.org
+# if other rpm distros want to use it.
 Source0:        ghc-rpm-macros.ghc
 Source1:        COPYING
 Source2:        AUTHORS
 Source3:        ghc-deps.sh
+Source4:        cabal-tweak-dep-ver
 Requires:       redhat-rpm-config
 
 %description
@@ -40,6 +42,8 @@ install -p -D -m 0644 %{SOURCE0} ${RPM_BUILD_ROOT}/%{macros_file}
 
 install -p -D -m 0755 %{SOURCE3} %{buildroot}/%{_prefix}/lib/rpm/ghc-deps.sh
 
+install -p -D -m 0755 %{SOURCE4} %{buildroot}/%{_bindir}/cabal-tweak-dep-ver
+
 # this is why this package is now arch-dependent:
 # turn off shared libs and dynamic linking on secondary archs
 %ifnarch %{ix86} x86_64
@@ -56,9 +60,23 @@ EOF
 %doc COPYING AUTHORS
 %config(noreplace) %{macros_file}
 %{_prefix}/lib/rpm/ghc-deps.sh
+%{_bindir}/cabal-tweak-dep-ver
 
 
 %changelog
+* Fri Jun  8 2012 Jens Petersen <petersen at redhat.com> - 0.15.6-1
+- cabal-tweak-dep-ver: new script to tweak depends version bounds in .cabal
+  from ghc-rpm-macros-0.95.5
+- ghc-dep.sh: only use buildroot package.conf.d if it exists
+- ghc-deps.sh: look in buildroot package.conf.d for program deps
+- add a meta-package option to ghc_devel_package and use in ghc_devel_requires
+- allow ghc_description, ghc_devel_description, ghc_devel_post_postun
+  to take args
+- support meta packages like haskell-platform without base lib files
+- add shell variable cabal_configure_extra_options to cabal_configure for
+  local configuration
+- do not provide prof when without_prof set
+
 * Thu Feb 23 2012 Jens Petersen <petersen at redhat.com> - 0.15.5-1
 - fix handling of devel docdir for non-shared builds
 - simplify ghc_bootstrap


More information about the scm-commits mailing list