[ghc-rpm-macros/f12/master] backport 0.7.1 adding ghc_bin_build, ghc_bin_install, ghc_lib_build, ghc_lib_install to ghc-6.10
Jens Petersen
petersen at fedoraproject.org
Sat Jul 31 04:47:39 UTC 2010
commit 70e5acf6e49d28e4b3c9e2a5038e1f1389733356
Author: Jens Petersen <petersen at redhat.com>
Date: Sat Jul 31 14:44:43 2010 +1000
backport 0.7.1 adding ghc_bin_build, ghc_bin_install, ghc_lib_build, ghc_lib_install to ghc-6.10
- add ghc_strip_dynlinked, ghcdocbasedir
- drop unused cabal_makefile
- ghc_reindex_haddock uses ghcdocbasedir
- ghc_package_devel, ghc_package_doc, and ghc_package_prof helper macros
Notes:
- no shared libraries in ghc-6.10.4 so shared and dynmic are not supported
- no name-ver override to maintain compatibility with optional pkg_name
in current released f12 binlib packages
- for same reason ghcdocdir, ghcpkgdir, ghc_gen_filelists do not take
optional name arg
ghc-rpm-macros.ghc | 161 +++++++++++++++++++++++++++++++++++++++++++++++----
ghc-rpm-macros.spec | 15 +++++-
2 files changed, 163 insertions(+), 13 deletions(-)
---
diff --git a/ghc-rpm-macros.ghc b/ghc-rpm-macros.ghc
index ee26dc4..6dcb648 100644
--- a/ghc-rpm-macros.ghc
+++ b/ghc-rpm-macros.ghc
@@ -1,18 +1,23 @@
+# "cabal"
%cabal %{_bindir}/runghc Setup
+# configure
%cabal_configure \
%cabal configure --prefix=%{_prefix} --libdir=%{_libdir} --docdir=%{_docdir}/%{name}-%{version} --htmldir=%{ghcdocdir} --libsubdir='$compiler/$pkgid'
-%cabal_makefile \
-%cabal makefile -f cabal-rpm.mk \
-make -f cabal-rpm.mk %{_smp_mflags} \
-%{nil}
-
+# install
%cabal_install %cabal copy --destdir=${RPM_BUILD_ROOT} -v
-%ghcdocdir %{_docdir}/ghc/libraries/%{?pkg_name}%{!?pkg_name:%{name}}
-%ghcpkgdir %{_libdir}/ghc-%{ghc_version}/%{?pkg_name}%{!?pkg_name:%name}-%{version}
+# root dir for ghc docs
+%ghcdocbasedir %{_docdir}/ghc
+# ghcdocdir [pkgname]
+%ghcdocdir %{ghcdocbasedir}/libraries/%{?pkg_name}%{!?pkg_name:%{name}}
+# top library dir
+%ghcpkgbasedir %{_libdir}/ghc-%{ghc_version}
+# ghcpkgdir [pkgname]
+%ghcpkgdir %{ghcpkgbasedir}/%{?pkg_name}%{!?pkg_name:%name}-%{version}
+# ghc_gen_filelists [pkgname]
%ghc_gen_filelists() \
rm -f %1-devel.files %1-prof.files %1-doc.files \
echo '%defattr(-,root,root,-)' > %1-devel.files \
@@ -33,22 +38,154 @@ echo '%{ghcdocdir}' >> %1-doc.files \
%ghc_unregister_pkg %{ghcpkgdir}/unregister.sh >/dev/null || :
-%ghc_reindex_haddock ( cd %{_docdir}/ghc/libraries && [ -x "./gen_contents_index" ] && ./gen_contents_index ) || :
-
+# compiler version
%ghc_version %{!?ghc_version_override:%(ghc --numeric-version)}%{?ghc_version_override}
%ghc_pkg_ver() %(ghc-pkg list --global --simple-output %1|sed -e "s/.*%1-//")
+# devel pkg basic requires
%ghc_requires Requires: ghc = %{ghc_version}\
Requires(post): ghc = %{ghc_version}\
Requires(preun): ghc = %{ghc_version}\
-%if %{with shared}\
-Requires: ghc-%{?pkg_name}%{!?pkg_name:%name} = %{version}-%{release}\
-%endif
+%{nil}
+# doc pkg basic requires
%ghc_doc_requires Requires: ghc-doc = %{ghc_version}\
Requires(post): ghc-doc = %{ghc_version}\
Requires(postun): ghc-doc = %{ghc_version}
+# prof pkg basic requires
%ghc_prof_requires Requires: ghc-prof = %{ghc_version}\
Requires: ghc-%{?pkg_name}%{!?pkg_name:%name}-devel = %{version}-%{release}
+
+# ghc_lib_package [-c cdepslist] [-h pkgdepslist]
+%ghc_lib_package(c:h:)\
+%define ghc_pkg_name ghc-%{?pkg_name}%{!?pkg_name:%name}\
+\
+%ghc_package_devel\
+\
+%ghc_package_doc\
+\
+%ghc_package_prof\
+%{nil}
+
+# ghc_binlib_package [-c cdepslist] [-h pkgdepslist] [-l licensetag]
+%ghc_binlib_package(c:h:l:)\
+%define local_pkg_name %{?pkg_name}%{!?pkg_name:%name}\
+%define ghc_pkg_name ghc-%{local_pkg_name}\
+\
+%ghc_lib_package\
+%{nil}
+
+# ghc_package_devel [-c cdepslist] [-h pkgdepslist] [-l licensetag]
+%ghc_package_devel(c:h:l:)\
+%define local_pkg_name %{?pkg_name}%{!?pkg_name:%name}\
+%define ghc_pkg_name ghc-%{local_pkg_name}\
+%package -n %{ghc_pkg_name}-devel\
+Summary: %{?common_summary}%{!?common_summary:%{local_pkg_name} library} development files\
+Group: Development/Libraries\
+%{-l:License: %{-l*}}\
+%{?ghc_requires}\
+%{!-h:%{?ghc_pkg_deps:Requires: %{ghc_pkg_deps}}}\
+%{-h:Requires: %{-h*}}\
+%{!-c:%{?ghc_pkg_c_deps:Requires: %{ghc_pkg_c_deps}}}\
+%{-c:Requires: %{-c*}}\
+\
+%description -n %{ghc_pkg_name}-devel\
+%{?common_description}%{!?common_description:Haskell %{local_pkg_name} library.}\
+\
+This package contains the development files.\
+\
+%post -n %{ghc_pkg_name}-devel\
+%ghc_register_pkg\
+\
+%preun -n %{ghc_pkg_name}-devel\
+%ghc_unregister_pkg\
+\
+%files -n %{ghc_pkg_name}-devel -f %{ghc_pkg_name}-devel.files\
+%defattr(-,root,root,-)\
+%{nil}
+
+# for docs post and postun
+# re-index haddock
+%ghc_reindex_haddock ( cd %{ghcdocbasedir}/libraries && [ -x "./gen_contents_index" ] && ./gen_contents_index ) || :
+
+# ghc_package_doc [-h pkgdepslist] [-l licensetag]
+%ghc_package_doc(h:l:)\
+%define local_pkg_name %{?pkg_name}%{!?pkg_name:%name}\
+%define ghc_pkg_name ghc-%{local_pkg_name}\
+%package -n %{ghc_pkg_name}-doc\
+Summary: Documentation for %{?common_summary}%{!?common_summary:%{local_pkg_name} library}\
+Group: Development/Libraries\
+%{-l:License: %{-l*}}\
+%{?ghc_doc_requires}\
+%{!-h:%{?ghc_pkg_deps:Requires: %(echo %{ghc_pkg_deps} | sed -e "s/\\(ghc-[^, ]*\\)-devel/\\1-doc/g")}}\
+%{-h:Requires: %(echo %{-h*} | sed -e "s/\\(ghc-[^, ]*\\)-devel/\\1-doc/g")}\
+\
+%description -n %{ghc_pkg_name}-doc\
+%{?common_description}%{!?common_description:Haskell %{local_pkg_name} library.}\
+\
+This package contains development documentation files.\
+\
+%post -n %{ghc_pkg_name}-doc\
+%ghc_reindex_haddock\
+\
+%postun -n %{ghc_pkg_name}-doc\
+if [ "$1" -eq 0 ] ; then\
+ %ghc_reindex_haddock\
+fi\
+\
+%files -n %{ghc_pkg_name}-doc -f %{ghc_pkg_name}-doc.files\
+%defattr(-,root,root,-)\
+%{nil}
+
+# ghc_package_prof [-c cdepslist] [-h pkgdepslist] [-l licensetag]
+%ghc_package_prof(h:l:)\
+%define local_pkg_name %{?pkg_name}%{!?pkg_name:%name}\
+%define ghc_pkg_name ghc-%{local_pkg_name}\
+%package -n %{ghc_pkg_name}-prof\
+Summary: Profiling libraries for %{?common_summary}%{!?common_summary:%{local_pkg_name}}\
+Group: Development/Libraries\
+%{-l:License: %{-l*}}\
+%{?ghc_prof_requires}\
+%{!-h:%{?ghc_pkg_deps:Requires: %(echo %{ghc_pkg_deps} | sed -e "s/\\(ghc-[^, ]*\\)-devel/\\1-prof/g")}}\
+%{-h:Requires: %(echo %{-h*} | sed -e "s/\\(ghc-[^, ]*\\)-devel/\\1-prof/g")}\
+\
+%description -n %{ghc_pkg_name}-prof\
+%{?common_description}%{!?common_description:Haskell %{local_pkg_name} library.}\
+\
+This package contains the profiling library.\
+\
+%files -n %{ghc_pkg_name}-prof -f %{ghc_pkg_name}-prof.files\
+%defattr(-,root,root,-)\
+%{nil}
+
+# ghc_strip_dynlinked
+%ghc_strip_dynlinked\
+%if 0%{!?__debug_package:1}\
+find $RPM_BUILD_ROOT -type f -exec sh -c "file {} | grep -q 'dynamically linked'" \\; -print | xargs strip\
+%endif
+
+# ghc_bin_build
+%ghc_bin_build\
+%cabal_configure --ghc\
+%cabal build
+
+# ghc_lib_build
+%ghc_lib_build\
+%cabal_configure --ghc -p\
+%cabal build\
+%cabal haddock
+
+# ghc_bin_install
+%ghc_bin_install\
+%cabal_install\
+%ghc_strip_dynlinked
+
+# ghc_lib_install
+%ghc_lib_install\
+%cabal_install\
+%ghc_gen_scripts\
+%ghc_install_scripts\
+%ghc_gen_filelists ghc-%{?pkg_name}%{!?pkg_name:%name}\
+%ghc_strip_dynlinked
diff --git a/ghc-rpm-macros.spec b/ghc-rpm-macros.spec
index 64268e2..9ce39a0 100644
--- a/ghc-rpm-macros.spec
+++ b/ghc-rpm-macros.spec
@@ -1,5 +1,5 @@
Name: ghc-rpm-macros
-Version: 0.2.6
+Version: 0.7.0.610.1
Release: 1%{?dist}
Summary: Macros for building packages for GHC
@@ -48,6 +48,19 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Sat Jul 31 2010 Jens Petersen <petersen at redhat.com> - 0.7.0.610.1-1
+- backport 0.7.1 to ghc-6.10:
+- add ghc_bin_build, ghc_bin_install, ghc_lib_build, ghc_lib_install,
+ ghc_strip_dynlinked, ghcdocbasedir, and drop unused cabal_makefile
+- ghc_reindex_haddock uses ghcdocbasedir
+- ghc_package_devel, ghc_package_doc, and ghc_package_prof helper macros
+- Notes:
+- no shared libraries in ghc-6.10.4 so shared and dynmic are not supported
+- no name-ver override to maintain compatibility with optional pkg_name
+ in current released f12 binlib packages
+- for same reason ghcdocdir, ghcpkgdir, ghc_gen_filelists do not take
+ optional name arg
+
* Thu Dec 24 2009 Jens Petersen <petersen at redhat.com> - 0.2.6-1
- backport:
- add ghc_requires, ghc_doc_requires, ghc_prof_requires
More information about the scm-commits
mailing list