# Options:
# n - name
# v - version
# %%ghc_major macro must be defined earlier!
# This macro is planned to use only for building ghc itself
# In any other cases it looks weird
%ghc_lib_subpackage(n:v:) %{expand:
%define base_name ghc%ghc_major-%{-n*}
%define pkgid %{-n*}-%{-v*}

%package -n %base_name
Summary: Haskell %{-n*} runtime files
Group: Development/Haskell
Url: https://hackage.haskell.org/package/%{-n*}
Version: %{-v*}

%global ghc_subpackages_list %{?ghc_subpackages_list} %base_name

%description -n %base_name
This package contains runtime libs for %{-n*} built with GHC %ghc_major

%package -n %base_name-devel
Summary: Haskell %{-n*} library development files
Group: Development/Haskell
Version: %{-v*}

%global ghc_devel_subpackages_list %{?ghc_devel_subpackages_list} %base_name-devel

Requires: %base_name = %{-v*}
Requires: ghc%ghc_major

%description -n %base_name-devel
This package provides %{-n*} development files for GHC %ghc_major

%if_with docs
%package -n %base_name-doc
Summary: Haskell %{-n*} library documentation
Group: Documentation
Version: %{-v*}
BuildArch: noarch

Requires: ghc%ghc_major-doc-index

%description -n %base_name-doc
This package contains documentation for %{-n*} built with GHC %ghc_major
%endif

%files -n %base_name -f %pkgid-files.runtime
%files -n %base_name-devel -f %pkgid-files.devel

%if_with docs
%files -n %base_name-doc -f %pkgid-files.doc
%endif
}

# Same functionality as %%ghc_lib_subpackage
# But packages without files and ghc_major is not used
# Creates packages like ghc-{NAME}
# Used only for ghc metapackage
# %%ghc_major macro must be defined earlier!
# %%warn_description is defined inside ghc metapackage spec!
%ghc_lib_subpackage_empty(n:v:) %{expand:
%define base_name ghc-%{-n*}

%package -n %base_name
Summary: Haskell %{-n*} runtime files
Group: Development/Haskell
Url: https://hackage.haskell.org/package/%{-n*}
Version: %{-v*}

Requires: ghc%ghc_major-%{-n*}

%global ghc_subpackages_list %{?ghc_subpackages_list} %base_name

%description -n %base_name
This package contains runtime libs for %{-n*}

%warn_description

%package -n %base_name-devel
Summary: Haskell %{-n*} library development files
Group: Development/Haskell
Version: %{-v*}

Requires: ghc%ghc_major-%{-n*}-devel

%global ghc_devel_subpackages_list %{?ghc_devel_subpackages_list} %base_name-devel

Requires: %base_name = %{-v*}
Requires: ghc

%description -n %base_name-devel
This package provides %{-n*} development files for GHC

%warn_description

%if_with docs
%package -n %base_name-doc
Summary: Haskell %{-n*} library documentation
Group: Documentation
Version: %{-v*}
BuildArch: noarch

Requires: ghc-doc-index
Requires: ghc%ghc_major-%{-n*}-doc

%description -n %base_name-doc
This package contains documentation for %{-n*} haskell library

%warn_description
%endif

%files -n %base_name
%files -n %base_name-devel

%if_with docs
%files -n %base_name-doc
%endif
}
