- add support for bin and binlib packages to cabal2spec script and only

grep .cabal files for exposed-module/executable
- output bin and/or lib status too
This commit is contained in:
Jens Petersen 2008-11-25 09:15:17 +00:00
parent 10d4eb08a1
commit b17255a641
5 changed files with 227 additions and 36 deletions

View File

@ -0,0 +1,48 @@
# ghc does not emit debug information
%define debug_package %{nil}
Name: @PACKAGE@
Version: @VERSION@
Release: 1%{?dist}
Summary: *FIXME*
Group: *FIXME*
License: BSD?
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/%{name}
Source0: http://hackage.haskell.org/packages/archive/%{name}/%{version}/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
ExclusiveArch: i386 x86_64 ppc
BuildRequires: ghc
%description
*FIXME*
%prep
%setup -q
%build
%cabal_configure
%cabal_build
%install
rm -rf $RPM_BUILD_ROOT
%cabal_install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc LICENSE
%{_bindir}/%{name}
%changelog
* @DATE@ @PACKAGER@ <@EMAIL@> - @VERSION@-1
- initial packaging for Fedora created by cabal2spec

View File

@ -0,0 +1,122 @@
%define ghc_version @GHC_VERSION@
%define pkg_libdir %{_libdir}/ghc-%{ghc_version}/%{name}-%{version}
%define pkg_docdir %{_docdir}/ghc/libraries/%{name}
%define build_prof 1
%define build_doc 1
# ghc does not emit debug information
%define debug_package %{nil}
Name: @PACKAGE@
Version: @VERSION@
Release: 1%{?dist}
Summary: *FIXME*
Group: *FIXME*
License: BSD?
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/%{name}
Source0: http://hackage.haskell.org/packages/archive/%{name}/%{version}/%{name}-%{version}.tar.gz
Provides: %{name}-devel = %{version}-%{release}
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}
%if %{build_prof}
BuildRequires: ghc-prof = %{ghc_version}
%endif
%description
*FIXME*
%package -n ghc-%{name}
Summary: Haskell %{name} library *FIXME*
Group: Development/Libraries
Provides: ghc-%{name}-devel = %{version}-%{release}
Requires: ghc = %{ghc_version}
Requires(post): ghc = %{ghc_version}
Requires(preun): ghc = %{ghc_version}
Requires(postun): ghc = %{ghc_version}
%description -n ghc-%{name}
Haskell %{name} library for ghc-%{ghc_version}. *FIXME*
%if %{build_prof}
%package prof
Summary: Profiling libraries for ghc-%{name}
Group: Development/Libraries
Requires: ghc-prof = %{ghc_version}
%description prof
This package contains profiling libraries for ghc %{ghc_version}.
%endif
%prep
%setup -q -n %{name}-%{version}
%build
%cabal_configure --ghc \
%if %{build_prof}
-p
%else
%{nil}
%endif
%cabal_build
%if %{build_doc}
%cabal_haddock
%endif
%ghc_gen_scripts
%install
rm -rf $RPM_BUILD_ROOT
%cabal_install
%ghc_install_scripts
%ghc_gen_filelists %{name}
%clean
rm -rf $RPM_BUILD_ROOT
%post
%ghc_postinst_script
%if %{build_doc}
%ghc_reindex_haddock
%endif
%preun
%ghc_preun_script
%postun
if [ "$1" -eq 0 ] ; then
%if %{build_doc}
%ghc_reindex_haddock
%endif
fi
%files -f %{name}.files
%defattr(-,root,root,-)
%doc LICENSE
%if %{build_doc}
%{pkg_docdir}
%endif
%if %{build_prof}
%files prof -f %{name}-prof.files
%defattr(-,root,root,-)
%endif
%changelog
* @DATE@ @PACKAGER@ <@EMAIL@> - @VERSION@-1
- initial packaging for Fedora created by cabal2spec

View File

@ -10,25 +10,25 @@
# ghc does not emit debug information
%define debug_package %{nil}
Name: ghc-%{pkg_name}
Version: @VERSION@
Release: 1%{?dist}
Summary: Haskell %{pkg_name} library *FIXME*
Name: ghc-%{pkg_name}
Version: @VERSION@
Release: 1%{?dist}
Summary: Haskell %{pkg_name} library *FIXME*
Group: Development/Libraries
License: BSD
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/%{pkg_name}
Source0: http://hackage.haskell.org/packages/archive/%{pkg_name}/%{version}/%{pkg_name}-%{version}.tar.gz
Provides: %{name}-devel = %{version}-%{release}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Group: Development/Libraries
License: BSD?
URL: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/%{pkg_name}
Source0: http://hackage.haskell.org/packages/archive/%{pkg_name}/%{version}/%{pkg_name}-%{version}.tar.gz
Provides: %{name}-devel = %{version}-%{release}
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}
ExclusiveArch: i386 x86_64 ppc
BuildRequires: ghc = %{ghc_version}
%if %{build_prof}
BuildRequires: ghc-prof = %{ghc_version}
BuildRequires: ghc-prof = %{ghc_version}
%endif
Requires: ghc = %{ghc_version}
Requires(post): ghc = %{ghc_version}
Requires: ghc = %{ghc_version}
Requires(post): ghc = %{ghc_version}
Requires(preun): ghc = %{ghc_version}
Requires(postun): ghc = %{ghc_version}
@ -106,10 +106,9 @@ fi
%if %{build_prof}
%files prof -f %{name}-prof.files
%defattr(-,root,root,-)
%doc LICENSE
%endif
%changelog
* @DATE@ @PACKAGER@ <@EMAIL@> - @VERSION@-1
- initial packaging for Fedora
- initial packaging for Fedora created by cabal2spec

View File

@ -1,23 +1,43 @@
#!/bin/sh
[ $# -ne 1 ] && echo "Usage: $0 lib-ver[.tar.gz]" && exit 1
set -e
INPUT=$1
[ $# -ne 1 -o ! -r $1 ] && echo "Usage: $0 hackage-version.tar.gz" && exit 1
case $INPUT in
*/*) INPUT=$(basename $INPUT) ;;
esac
HACKAGE=$1
INPUT=$(echo $INPUT | sed -e "s/.tar.gz//")
VERSION=$(echo $INPUT | sed -e "s/[A-Za-z-]*-//")
INPUT=$(basename $HACKAGE .tar.gz)
VERSION=$(echo $INPUT | sed -e "s/.*-//")
NAME=$(echo $INPUT | sed -e "s/-$VERSION//")
[ -r ghc-$NAME.spec ] && echo "ghc-$NAME.spec already exists!" && exit 1
TMPDIR=$(mktemp -d)
CURRENT_DIR=$PWD
cd $TMPDIR
tar zxf $HACKAGE "*.cabal"
cp /usr/share/ghc/cabal-lib-template.spec ghc-$NAME.spec
if grep -qi exposed-modules: */*.cabal; then
HAS_LIB=yes
fi
echo "created ghc-$NAME.spec"
if grep -qi executable */*.cabal; then
HAS_BIN=yes
fi
cd -
rm -rf $TMPDIR
sed -i -e "s/@PACKAGE@/$NAME/" -e "s/@GHC_VERSION@/$(ghc --numeric-version)/" -e "s/@VERSION@/$VERSION/" -e "s/@DATE@/`date +\"%a %b %e %Y\"`/" ghc-$NAME.spec
if [ "$HAS_LIB" -a ! "$HAS_BIN" ]; then
PREFIX=ghc-
fi
SPECFILE=$PREFIX$NAME.spec
[ -r $SPECFILE ] && echo "$SPECFILE already exists!" && exit 1
cp /usr/share/ghc/cabal-${HAS_BIN:+bin}${HAS_LIB:+lib}-template.spec.in $SPECFILE
echo "created $SPECFILE (${HAS_BIN:+bin}${HAS_LIB:+lib})"
DATE=$(env LANG=C date +"%a %b %e %Y")
sed -i -e "s/@PACKAGE@/$NAME/" -e "s/@GHC_VERSION@/$(ghc --numeric-version)/" -e "s/@VERSION@/$VERSION/" -e "s/@DATE@/$DATE/" $SPECFILE

View File

@ -25,8 +25,10 @@ Group: Development/Languages
Source0: http://www.haskell.org/ghc/dist/%{version}/ghc-%{version}-src.tar.bz2
Source1: http://www.haskell.org/ghc/dist/%{version}/ghc-%{version}-src-extralibs.tar.bz2
Source2: ghc-rpm-macros.ghc
Source3: cabal-lib-template.spec
Source4: cabal2spec
Source3: cabal2spec
Source4: cabal-bin-template.spec.in
Source5: cabal-lib-template.spec.in
Source6: cabal-binlib-template.spec.in
URL: http://haskell.org/ghc/
Requires: gcc, gmp-devel, libedit-devel
Requires(post): policycoreutils
@ -130,11 +132,11 @@ mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/rpm
cp -p %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/rpm/macros.ghc
# spec templating
# cabal-lib-template.spec
mkdir -p ${RPM_BUILD_ROOT}/%{_datadir}/ghc
cp -p %{SOURCE3} ${RPM_BUILD_ROOT}/%{_datadir}/ghc/
# cabal2spec
install -m 0755 -p %{SOURCE4} ${RPM_BUILD_ROOT}/%{_bindir}
install -m 0755 -p %{SOURCE3} ${RPM_BUILD_ROOT}/%{_bindir}
# templates for bin, lib and binlib cabal hackages
mkdir -p ${RPM_BUILD_ROOT}/%{_datadir}/ghc
cp -p %{SOURCE4} %{SOURCE5} %{SOURCE6} ${RPM_BUILD_ROOT}/%{_datadir}/ghc/
SRC_TOP=$PWD
rm -f rpm-*-filelist rpm-*.files
@ -228,7 +230,7 @@ fi
%changelog
* Tue Nov 25 2008 Jens Petersen <petersen@redhat.com> - 6.10.1-5
- add cabal2spec and cabal-lib-template.spec for easy Cabal library packaging
- add cabal2spec and template files for easy cabal hackage packaging
- simplify script macros: make ghc_preinst_script and ghc_postun_script no-ops
and ghc_preun_script only unregister for uninstall