From Fedora Project Wiki
No edit summary
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Library and Binary Template =
= Library and Binary Template =
This is a sample spec file for a Haskell Cabal package. This sample demonstrates how to package a Haskell Cabal package that contains a library and binary together. It was generated automatically using cabal-rpm. It contains a few minor bugs, including missing dependency declarations. This is due to a limitation in cabal-rpm that needs to be fixed.  They have been filled in manually.
This is a sample spec file for a Haskell Cabal package. This sample demonstrates how to package a Haskell Cabal package that contains a library and binary together. It can be generated automatically using cabal-rpm and then modified include missing dependency declarations, etc.


<pre>
<pre>
%define hsc_name ghc
%define ghc_version 6.10.1
%define hsc_version 6.8.2
%define pkg_libdir %{_libdir}/ghc-%{ghc_version}/%{name}-%{version}
%define pkg_name xmonad
%define pkg_docdir %{_docdir}/ghc/libraries/%{name}
%define pkg_libdir %{_libdir}/%{hsc_name}-%{hsc_version}/%{pkg_name}-%{version}


# Haskell compilers do not emit debug information
%define debug_package %{nil}
%define debug_package %{nil}
#Haskell compilers do not traditionally emit DWARF data.


Name: %{pkg_name}
Name: progHasLibs
Version: 0.7
Version: 0.7
Release: 3%{?dist}
Release: 3%{?dist}
License: BSD
License: BSD
Group: User Interface/X
Group: User Interface/X
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/%{name}
Source: http://hackage.haskell.org/packages/archive/xmonad/%{version}/xmonad-%{version}.tar.gz
Source: http://hackage.haskell.org/packages/archive/%{name}/%{version}/%{name}-%{version}.tar.gz
Summary: A tiling window manager
Summary: Summary of %{name}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: ghc = %{hsc_version}, ghc682-prof, haddock
# ghc has only been bootstrapped on the following archs:
BuildRequires: libXinerama-devel, libX11-devel, libXext-devel
ExclusiveArch: i386 x86_64 ppc
BuildRequires: ghc-x11 = 1.4.1, ghc-x11-prof = 1.4.1
BuildRequires: ghc = %{ghc_version}, ghc-prof = %{ghc_version}, haddock
Requires: ghc = %{hsc_version}
BuildRequires: ...
Requires: ghc-x11 = 1.4.1
Requires: ghc = %{ghc_version}


%description
%description
xmonad is a tiling window manager for X. Windows are arranged
Description of %{name}.
automatically to tile the screen without gaps or overlap, maximising
screen use. All features of the window manager are accessible from
the keyboard: a mouse is strictly optional. xmonad is written and
extensible in Haskell. Custom layout algorithms, and other
extensions, may be written by the user in config files. Layouts are
applied dynamically, and different layouts may be used on each
workspace. Xinerama is fully supported, allowing windows to be tiled
on several screens.


 
%package -n ghc-%{name}
%package -n %{hsc_name}-%{pkg_name}
Summary: Summary of ghc-%{name}
Summary: A tiling window manager
Group: Development/Libraries
Group: Development/Libraries
Requires: %{hsc_name} = %{hsc_version}
Provides: ghc-%{name}-devel = %{version}-%{release}
Requires: ghc = %{ghc_version}
Requires: ...
Requires(pre): ghc = %{ghc_version}
Requires(preun): ghc = %{ghc_version}
Requires(post): ghc = %{ghc_version}
Requires(postun): ghc = %{ghc_version}


%description -n ghc-%{name}
This package contains libraries for ghc %{ghc_version}.


%description -n %{hsc_name}-%{pkg_name}
xmonad is a tiling window manager for X. Windows are arranged
automatically to tile the screen without gaps or overlap, maximising
screen use. All features of the window manager are accessible from
the keyboard: a mouse is strictly optional. xmonad is written and
extensible in Haskell. Custom layout algorithms, and other
extensions, may be written by the user in config files. Layouts are
applied dynamically, and different layouts may be used on each
workspace. Xinerama is fully supported, allowing windows to be tiled
on several screens.


This package contains libraries for %{hsc_name} %{hsc_version}.
%package -n ghc-%{name}-prof
 
Summary: Profiling libraries for ghc-%{name}
 
%package -n %{hsc_name}-%{pkg_name}-prof
Summary: Profiling libraries for %{hsc_name}-%{pkg_name}
Group: Development/Libraries
Group: Development/Libraries
Requires: %{hsc_name}-%{pkg_name} = %{version}
Requires: ghc-%{name} = %{version}


 
%description -n ghc-%{name}-prof
%description -n %{hsc_name}-%{pkg_name}-prof
This package contains profiling libraries for ghc %{ghc_version}.
xmonad is a tiling window manager for X. Windows are arranged
automatically to tile the screen without gaps or overlap, maximising
screen use. All features of the window manager are accessible from
the keyboard: a mouse is strictly optional. xmonad is written and
extensible in Haskell. Custom layout algorithms, and other
extensions, may be written by the user in config files. Layouts are
applied dynamically, and different layouts may be used on each
workspace. Xinerama is fully supported, allowing windows to be tiled
on several screens.
 
This package contains profiling libraries for %{hsc_name} %{hsc_version}.




%prep
%prep
%setup -q -n %{pkg_name}-%{version}
%setup -q




%build
%build
%ghc_autotools -l -p enable
%cabal_configure -p --ghc
%ghc_build
%cabal_build
%ghc_haddock
%cabal_haddock
%ghc_gen_scripts
%ghc_gen_scripts


Line 91: Line 65:
%install
%install
rm -rf ${RPM_BUILD_ROOT}
rm -rf ${RPM_BUILD_ROOT}
%ghc_install
%cabal_install
%ghc_install_scripts
%ghc_install_scripts
%ghc_gen_filelists %{name}
%ghc_gen_filelists ghc-%{name}


cd ${RPM_BUILD_ROOT}/%{_datadir}/doc/%{hsc_name}-%{pkg_name}-%{version}
cd ${RPM_BUILD_ROOT}/%{_docdir}/%{name}-%{version}
rm -rf doc LICENSE TODO README
rm -rf doc LICENSE TODO README


Line 101: Line 75:
%clean
%clean
rm -rf ${RPM_BUILD_ROOT}
rm -rf ${RPM_BUILD_ROOT}
%pre -n %{hsc_name}-%{pkg_name}
%pre -n ghc-%{name}
%ghc_preinst_script
%ghc_preinst_script




%post -n %{hsc_name}-%{pkg_name}
%post -n ghc-%{name}
%ghc_postinst_script
%ghc_postinst_script
%ghc_reindex_haddock




%preun -n %{hsc_name}-%{pkg_name}
%preun -n ghc-%{name}
%ghc_preun_script
%ghc_preun_script




%postun -n %{hsc_name}-%{pkg_name}
%postun -n ghc-%{name}
%ghc_postun_script
%ghc_postun_script
%ghc_reindex_haddock




%files -n %{hsc_name}-%{pkg_name} -f %{name}-files
%files
%doc dist/doc/html
%defattr(-,root,root,-)
%doc LICENSE
%{_bindir}/%{name}
 
%files -n ghc-%{name} -f ghc-%{name}.files
%defattr(-,root,root,-)
%doc LICENSE TODO README
%doc LICENSE TODO README
%{pkg_docdir}




%files -n %{hsc_name}-%{pkg_name}-prof -f %{name}-files.prof
%files -n ghc-%{name}-prof -f ghc-%{name}-prof.files
%%doc LICENSE
 
 
%files
%defattr(-,root,root,-)
%defattr(-,root,root,-)
%{_bindir}/xmonad
%doc LICENSE
%doc LICENSE




%changelog
%changelog
* Wed Aug 12 2008 Yaakov M. Nemoy <yankee@koan> - 0.7-3
* Today Fedora Haskell Packager - version-release
- Replaced content with macros
- initial packaging for Fedora
- Removed funky naming scheme with something more straight forward
 
 
* Wed Jul 2 2008 Yaakov M. Nemoy <yankee@koan> - 0.7-2
- added BuildRequires
- added Requires
- changed Group
- changed URL
- changed Source
 
 
* Thu Jun 26 2008 cabal-rpm <cabal-devel@haskell.org> - 0.7-1
- spec file autogenerated by cabal-rpm
</pre>
</pre>

Latest revision as of 00:55, 14 November 2008

Library and Binary Template

This is a sample spec file for a Haskell Cabal package. This sample demonstrates how to package a Haskell Cabal package that contains a library and binary together. It can be generated automatically using cabal-rpm and then modified include missing dependency declarations, etc.

%define ghc_version 6.10.1
%define pkg_libdir %{_libdir}/ghc-%{ghc_version}/%{name}-%{version}
%define pkg_docdir %{_docdir}/ghc/libraries/%{name}

# Haskell compilers do not emit debug information
%define debug_package %{nil}

Name: progHasLibs
Version: 0.7
Release: 3%{?dist}
License: BSD
Group: User Interface/X
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/%{name}
Source: http://hackage.haskell.org/packages/archive/%{name}/%{version}/%{name}-%{version}.tar.gz
Summary: Summary of %{name}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
# ghc has only been bootstrapped on the following archs:
ExclusiveArch:	i386 x86_64 ppc
BuildRequires: ghc = %{ghc_version}, ghc-prof = %{ghc_version}, haddock
BuildRequires: ...
Requires: ghc = %{ghc_version}

%description
Description of %{name}.

%package -n ghc-%{name}
Summary: Summary of ghc-%{name}
Group: Development/Libraries
Provides: ghc-%{name}-devel = %{version}-%{release}
Requires: ghc = %{ghc_version}
Requires: ...
Requires(pre): ghc = %{ghc_version}
Requires(preun): ghc = %{ghc_version}
Requires(post): ghc = %{ghc_version}
Requires(postun): ghc = %{ghc_version}

%description -n ghc-%{name}
This package contains libraries for ghc %{ghc_version}.


%package -n ghc-%{name}-prof
Summary: Profiling libraries for ghc-%{name}
Group: Development/Libraries
Requires: ghc-%{name} = %{version}

%description -n ghc-%{name}-prof
This package contains profiling libraries for ghc %{ghc_version}.


%prep
%setup -q


%build
%cabal_configure -p --ghc
%cabal_build
%cabal_haddock
%ghc_gen_scripts


%install
rm -rf ${RPM_BUILD_ROOT}
%cabal_install
%ghc_install_scripts
%ghc_gen_filelists ghc-%{name}

cd ${RPM_BUILD_ROOT}/%{_docdir}/%{name}-%{version}
rm -rf doc LICENSE TODO README


%clean
rm -rf ${RPM_BUILD_ROOT}
%pre -n ghc-%{name}
%ghc_preinst_script


%post -n ghc-%{name}
%ghc_postinst_script
%ghc_reindex_haddock


%preun -n ghc-%{name}
%ghc_preun_script


%postun -n ghc-%{name}
%ghc_postun_script
%ghc_reindex_haddock


%files
%defattr(-,root,root,-)
%doc LICENSE
%{_bindir}/%{name}

%files -n ghc-%{name} -f ghc-%{name}.files
%defattr(-,root,root,-)
%doc LICENSE TODO README
%{pkg_docdir}


%files -n ghc-%{name}-prof -f ghc-%{name}-prof.files
%defattr(-,root,root,-)
%doc LICENSE


%changelog
* Today  Fedora Haskell Packager - version-release
- initial packaging for Fedora