From Fedora Project Wiki
< PackagingDrafts | Haskell
(updated spec file to be better.) |
No edit summary |
||
Line 5: | Line 5: | ||
%define hsc_name ghc | %define hsc_name ghc | ||
%define hsc_version 6.8.2 | %define hsc_version 6.8.2 | ||
%define pkg_name xmonad | |||
%define pkg_libdir %{_libdir}/%{hsc_name}-%{hsc_version}/%{pkg_name}-%{version} | |||
%define | |||
%define pkg_libdir %{_libdir}/%{hsc_name}-%{hsc_version}/%{ | |||
%define debug_package %{nil} | %define debug_package %{nil} | ||
#Haskell compilers do not traditionally emit DWARF data. | #Haskell compilers do not traditionally emit DWARF data. | ||
Name: %{ | Name: %{pkg_name} | ||
Version: 0.7 | Version: 0.7 | ||
Release: | Release: 3%{?dist} | ||
License: BSD | License: BSD | ||
Group: User Interface/X | Group: User Interface/X | ||
Line 41: | Line 38: | ||
%package -n %{hsc_name}-%{ | %package -n %{hsc_name}-%{pkg_name} | ||
Summary: A tiling window manager | Summary: A tiling window manager | ||
Group: Development/Libraries | Group: Development/Libraries | ||
Requires: %{hsc_name} = %{hsc_version} | Requires: %{hsc_name} = %{hsc_version} | ||
%description -n %{hsc_name}-%{ | %description -n %{hsc_name}-%{pkg_name} | ||
xmonad is a tiling window manager for X. Windows are arranged | xmonad is a tiling window manager for X. Windows are arranged | ||
automatically to tile the screen without gaps or overlap, maximising | automatically to tile the screen without gaps or overlap, maximising | ||
Line 62: | Line 58: | ||
%package -n %{hsc_name}-%{ | %package -n %{hsc_name}-%{pkg_name}-prof | ||
Summary: Profiling libraries for %{hsc_name}-%{ | Summary: Profiling libraries for %{hsc_name}-%{pkg_name} | ||
Group: Development/Libraries | Group: Development/Libraries | ||
Requires: %{hsc_name}-%{ | Requires: %{hsc_name}-%{pkg_name} = %{version} | ||
%description -n %{hsc_name}-%{ | %description -n %{hsc_name}-%{pkg_name}-prof | ||
xmonad is a tiling window manager for X. Windows are arranged | xmonad is a tiling window manager for X. Windows are arranged | ||
automatically to tile the screen without gaps or overlap, maximising | automatically to tile the screen without gaps or overlap, maximising | ||
Line 84: | Line 79: | ||
%prep | %prep | ||
%setup -q -n %{ | %setup -q -n %{pkg_name}-%{version} | ||
%build | %build | ||
%ghc_autotools -l -p enable | |||
%ghc_build | |||
%ghc_haddock | |||
%ghc_gen_scripts | |||
%install | %install | ||
rm -rf ${RPM_BUILD_ROOT} | rm -rf ${RPM_BUILD_ROOT} | ||
%ghc_install | |||
%ghc_install_scripts | |||
%ghc_gen_filelists %{name} | |||
cd ${RPM_BUILD_ROOT}/%{_datadir}/doc/%{hsc_name}-%{ | cd ${RPM_BUILD_ROOT}/%{_datadir}/doc/%{hsc_name}-%{pkg_name}-%{version} | ||
rm -rf doc LICENSE TODO README | rm -rf doc LICENSE TODO README | ||
Line 118: | Line 101: | ||
%clean | %clean | ||
rm -rf ${RPM_BUILD_ROOT} | rm -rf ${RPM_BUILD_ROOT} | ||
%pre -n %{hsc_name}-%{pkg_name} | |||
%ghc_preinst_script | |||
% | %post -n %{hsc_name}-%{pkg_name} | ||
%ghc_postinst_script | |||
% | %preun -n %{hsc_name}-%{pkg_name} | ||
% | %ghc_preun_script | ||
% | %postun -n %{hsc_name}-%{pkg_name} | ||
% | %ghc_postun_script | ||
%files -n %{hsc_name}-%{pkg_name} -f %{name}-files | |||
%files -n %{hsc_name}-%{ | |||
%doc dist/doc/html | %doc dist/doc/html | ||
%doc LICENSE TODO README | %doc LICENSE TODO README | ||
%files -n %{hsc_name}-%{ | %files -n %{hsc_name}-%{pkg_name}-prof -f %{name}-files.prof | ||
%%doc LICENSE | %%doc LICENSE | ||
Line 152: | Line 133: | ||
%changelog | %changelog | ||
* Wed Aug 12 2008 Yaakov M. Nemoy <yankee@koan> - 0.7-3 | |||
- Replaced content with macros | |||
- Removed funky naming scheme with something more straight forward | |||
* Wed Jul 2 2008 Yaakov M. Nemoy <yankee@koan> - 0.7-2 | * Wed Jul 2 2008 Yaakov M. Nemoy <yankee@koan> - 0.7-2 | ||
- added BuildRequires | - added BuildRequires |
Revision as of 12:11, 13 August 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 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.
%define hsc_name ghc %define hsc_version 6.8.2 %define pkg_name xmonad %define pkg_libdir %{_libdir}/%{hsc_name}-%{hsc_version}/%{pkg_name}-%{version} %define debug_package %{nil} #Haskell compilers do not traditionally emit DWARF data. Name: %{pkg_name} Version: 0.7 Release: 3%{?dist} License: BSD Group: User Interface/X URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad Source: http://hackage.haskell.org/packages/archive/xmonad/%{version}/xmonad-%{version}.tar.gz Summary: A tiling window manager BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ghc = %{hsc_version}, ghc682-prof, haddock BuildRequires: libXinerama-devel, libX11-devel, libXext-devel BuildRequires: ghc-x11 = 1.4.1, ghc-x11-prof = 1.4.1 Requires: ghc = %{hsc_version} Requires: ghc-x11 = 1.4.1 %description 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. %package -n %{hsc_name}-%{pkg_name} Summary: A tiling window manager Group: Development/Libraries Requires: %{hsc_name} = %{hsc_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 %{hsc_name}-%{pkg_name}-prof Summary: Profiling libraries for %{hsc_name}-%{pkg_name} Group: Development/Libraries Requires: %{hsc_name}-%{pkg_name} = %{version} %description -n %{hsc_name}-%{pkg_name}-prof 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 %setup -q -n %{pkg_name}-%{version} %build %ghc_autotools -l -p enable %ghc_build %ghc_haddock %ghc_gen_scripts %install rm -rf ${RPM_BUILD_ROOT} %ghc_install %ghc_install_scripts %ghc_gen_filelists %{name} cd ${RPM_BUILD_ROOT}/%{_datadir}/doc/%{hsc_name}-%{pkg_name}-%{version} rm -rf doc LICENSE TODO README %clean rm -rf ${RPM_BUILD_ROOT} %pre -n %{hsc_name}-%{pkg_name} %ghc_preinst_script %post -n %{hsc_name}-%{pkg_name} %ghc_postinst_script %preun -n %{hsc_name}-%{pkg_name} %ghc_preun_script %postun -n %{hsc_name}-%{pkg_name} %ghc_postun_script %files -n %{hsc_name}-%{pkg_name} -f %{name}-files %doc dist/doc/html %doc LICENSE TODO README %files -n %{hsc_name}-%{pkg_name}-prof -f %{name}-files.prof %%doc LICENSE %files %defattr(-,root,root,-) %{_bindir}/xmonad %doc LICENSE %changelog * Wed Aug 12 2008 Yaakov M. Nemoy <yankee@koan> - 0.7-3 - Replaced content with macros - 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