From Fedora Project Wiki
(add _cabal)
(update the macros to the latest)
Line 1: Line 1:
These are the definitions for the macros for GHC.  They are useful in debugging your spec files.
These are the definitions for the macros for GHC.  They are useful in debugging your spec files.
Macros prefixed with cabal_ should portable, whereas those name ghc_ are specific to ghc.


If your GHC does not ship with them, but you would like to use them anyways, they belong either in /etc/rpm/macros.ghc or in ~/.rpmmacros
(If your GHC does not ship with them, but you would like to use them anyways, they belong either in /etc/rpm/macros.ghc or in ~/.rpmmacros.)


<pre>
<pre>
%_cabal %{_bindir}/runghc Setup
%cabal %{_bindir}/runhaskell Setup


%ghc_autotools(lf:p:) \
%cabal_configure \
echo %{-p*} %{-f*} \
%cabal configure --prefix=%{_prefix} --libdir=%{_libdir} --docdir=%{_docdir}/%{name}-%{version} --libsubdir='$compiler/$pkgid'
if [ -f configure.ac -a ! -f configure ]; then autoreconf; fi \
 
%{_cabal} configure --prefix=%{_prefix} --libdir=%{_libdir} --docdir=%{_docdir}/%{name}-%{version} --libsubdir='$compiler/$pkgid' %{-f:--flags%{-f*}} --%{-p:%{-p*}}-library-profiling --ghc \
%cabal_build \
%{-l:if %{_cabal} makefile -f cabal-rpm.mk \
%cabal build \
then \
    make -f cabal-rpm.mk %{_smp_mflags} || : \
fi }\
%{nil}
%{nil}


%ghc_build \
%cabal_makefile \
%{_cabal} build \
%cabal makefile -f cabal-rpm.mk \
make -f cabal-rpm.mk %{_smp_mflags} \
%{nil}
%{nil}


%ghc_haddock \
%cabal_haddock \
%{_cabal} haddock || : \
%cabal haddock \
%{nil}
%{nil}


%ghc_gen_scripts \
%cabal_install \
%{_cabal} register --gen-script \
%cabal copy --destdir=${RPM_BUILD_ROOT} \
%{_cabal} unregister --gen-script \
%{nil}
%{nil}


%ghc_install \
%ghc_gen_filelists() \
%{_cabal} copy --destdir=${RPM_BUILD_ROOT} \
rm -f %1.files %1-prof.files \
echo '%defattr(-,root,root,-)' > %1-prof.files \
find ${RPM_BUILD_ROOT}%{pkg_libdir} \\( -name '*_p.a' -o -name '*.p_hi' \\) >> %1-prof.files \
echo '%defattr(-,root,root,-)' > %1.files \
find ${RPM_BUILD_ROOT}%{pkg_libdir} -type d | sed 's/^/%dir /' >> %1.files \
find ${RPM_BUILD_ROOT}%{pkg_libdir} ! \\( -type d -o -name '*_p.a' -o -name '*.p_hi' \\) >> %1.files \
sed -i -e "s!${RPM_BUILD_ROOT}!!g" %1.files %1-prof.files \
%{nil}
 
%ghc_gen_scripts \
%cabal register --gen-script \
%cabal unregister --gen-script \
%{nil}
%{nil}


%ghc_install_scripts \
%ghc_install_scripts \
install -m 755 register.sh unregister.sh ${RPM_BUILD_ROOT}%{pkg_libdir} \
install -m 755 register.sh unregister.sh ${RPM_BUILD_ROOT}%{pkg_libdir} \
%{nil}
%ghc_gen_filelists() \
pushd ${RPM_BUILD_ROOT} \
echo "%defattr(-,root,root,-)" > %1-files.prof \
find .%{pkg_libdir} \\\( -name '*_p.a' -o -name '*.p_hi' \\\) | sed s/^.// >> %1-files.prof \
echo "%defattr(-,root,root,-)" > %1-files \
find .%{pkg_libdir} -type d | sed 's/^./%dir /' >> %1-files \
find .%{pkg_libdir} ! \\\( -type d -o -name '*_p.a' -o -name '*.p_hi' \\\) | sed s/^.// >> %1-files \
sed 's,^/,%exclude /,' %{ghc_tar_dir}/%1-files.prof >> %1-files \
pushd \
%{nil}
%{nil}



Revision as of 10:13, 9 September 2008

These are the definitions for the macros for GHC. They are useful in debugging your spec files. Macros prefixed with cabal_ should portable, whereas those name ghc_ are specific to ghc.

(If your GHC does not ship with them, but you would like to use them anyways, they belong either in /etc/rpm/macros.ghc or in ~/.rpmmacros.)

%cabal %{_bindir}/runhaskell Setup

%cabal_configure \
%cabal configure --prefix=%{_prefix} --libdir=%{_libdir} --docdir=%{_docdir}/%{name}-%{version} --libsubdir='$compiler/$pkgid'

%cabal_build \
%cabal build \
%{nil}

%cabal_makefile \
%cabal makefile -f cabal-rpm.mk \
make -f cabal-rpm.mk %{_smp_mflags} \
%{nil}

%cabal_haddock \
%cabal haddock \
%{nil}

%cabal_install \
%cabal copy --destdir=${RPM_BUILD_ROOT} \
%{nil}

%ghc_gen_filelists() \
rm -f %1.files %1-prof.files \
echo '%defattr(-,root,root,-)' > %1-prof.files \
find ${RPM_BUILD_ROOT}%{pkg_libdir} \\( -name '*_p.a' -o -name '*.p_hi' \\) >> %1-prof.files \
echo '%defattr(-,root,root,-)' > %1.files \
find ${RPM_BUILD_ROOT}%{pkg_libdir} -type d | sed 's/^/%dir /' >> %1.files \
find ${RPM_BUILD_ROOT}%{pkg_libdir} ! \\( -type d -o -name '*_p.a' -o -name '*.p_hi' \\) >> %1.files \
sed -i -e "s!${RPM_BUILD_ROOT}!!g" %1.files %1-prof.files \
%{nil}

%ghc_gen_scripts \
%cabal register --gen-script \
%cabal unregister --gen-script \
%{nil}

%ghc_install_scripts \
install -m 755 register.sh unregister.sh ${RPM_BUILD_ROOT}%{pkg_libdir} \
%{nil}

%ghc_preinst_script \
[ "$1" = 2 ] && %{pkg_libdir}/unregister.sh >&/dev/null || : \
%{nil}

%ghc_postinst_script \
%{pkg_libdir}/register.sh >&/dev/null \
%{nil}

%ghc_preun_script \
%{pkg_libdir}/unregister.sh >&/dev/null \
%{nil}

%ghc_postun_script \
[ "$1" = 1 ] && %{pkg_libdir}/register.sh >& /dev/null || : \
%{nil}