Blob Blame History Raw
Name:           ocaml-dune
Version:        1.7.3
Release:        1%{?dist}
Summary:        A composable build system for OCaml

%global libname %(echo %{name} | sed -e 's/^ocaml-//')

# Dune itself is MIT, and there are bundled libs that are LGPLv2 with exceptions and ISC.
License:        MIT and LGPLv2 with exceptions and ISC

URL:            https://dune.build
Source0:        https://github.com/ocaml/%{libname}/archive/%{version}/%{libname}-%{version}.tar.gz


BuildRequires:  ocaml >= 4.02.3
BuildRequires:  ocaml-findlib-devel

# Depend on /usr/bin/sphinx-build for python version invariance.
BuildRequires:  /usr/bin/sphinx-build

# Required by tests.
BuildRequires:  git
BuildRequires:  ocaml-menhir
BuildRequires:  ocaml-result-devel

# Dune has vendored deps (ugh):
# I'm not clear on how to unbundle them.
# It seems to be unsupported upstream; the bootstrap process for dune
# doesn't seem to be able to detect libraries installed systemwide.
# https://github.com/ocaml/dune/issues/220
Provides:      bundled(ocaml-opam-file-format) = 2.0.0
Provides:      bundled(ocaml-cmdliner) = 1.0.2
Provides:      bundled(ocaml-re) = 1.7.1

Provides:      dune = %{version}-%{release}

Provides:      jbuilder = %{version}-%{release}
Obsoletes:     jbuilder < 1.0.1-3

%description
Dune is a build system designed for OCaml/Reason projects only. It focuses
on providing the user with a consistent experience and takes care of most of
the low-level details of OCaml compilation. All you have to do is provide a
description of your project and Dune will do the rest.

The scheme it implements is inspired from the one used inside Jane Street and
adapted to the open source world. It has matured over a long time and is used
daily by hundred of developers, which means that it is highly tested and
productive.

%package        doc
Summary:        HTML documentation for %{name}
Requires:       %{name} = %{version}-%{release}

BuildArch:      noarch

%description    doc
HTML documentation for dune, a composable build system for OCaml.

%prep
%autosetup -n %{libname}-%{version} -p1

%build
# The dune build script figures out if the native code compiler is available
# and uses it if it is, otherwise it uses the bytecode compiler. Thus I think
# we just need to "make" here.
%make_build release
%make_build doc

%install
# Dune's makefile has a "make install" target. Tragically, it uses opam-install(er)
# to install itself. Even more tragically, opam now requires dune to build.
# Therefore as a workaround we can just manually install things ourselves--
# Dune is *mostly* just a binary, making this easy.
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_mandir}/man1
mkdir -p %{buildroot}%{_mandir}/man5

cp -av _boot/default/bin/main_dune.exe %{buildroot}%{_bindir}/dune
ln -sfvbn dune %{buildroot}%{_bindir}/jbuilder
cp -av _boot/default/doc/*.1 %{buildroot}%{_mandir}/man1/
cp -av _boot/default/doc/*.5 %{buildroot}%{_mandir}/man5/

# Install documentation by way of pkgdocdir.
mkdir -p %{buildroot}%{_pkgdocdir}/
cp -ar README.md CHANGES.md doc/_build/* %{buildroot}%{_pkgdocdir}/

%check
# Do not run the unit tests which assume opam is installed.

%{buildroot}%{_bindir}/dune --version

%files
%license LICENSE.md
%doc %{_pkgdocdir}/README.md
%doc %{_pkgdocdir}/CHANGES.md
%{_bindir}/jbuilder
%{_bindir}/dune
%{_mandir}/man*/dune*
%dir %{_pkgdocdir}

%files doc
%exclude %{_pkgdocdir}/README.md
%exclude %{_pkgdocdir}/CHANGES.md
%doc %{_pkgdocdir}/*

%changelog
* Fri Mar 01 2019 Andy Li <andy@onthewings.net> - 1.7.3-1
- Renamed source package from jbuilder to ocaml-dune.
- Updated URLs and license according to upstream changes.
- Updated to latest upstream release (#1600105).
- Removed 1113.patch which has been applied upstream in eariler version.
- Removed rpm check section since the upstream tests depend on opam.

* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild

* Tue Aug 07 2018 Ben Rosser <rosser.bjr@gmail.com> - 1.0.1-1
- Updated to latest upstream release.
- Manpages have been renamed to 'dune'. A 'dune' binary is now provided as well.

* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-0.12.beta20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Wed May 02 2018 Ben Rosser <rosser.bjr@gmail.com> - 1.0-0.11.beta20
- Updated to latest upstream release (#1537836).

* Tue Mar 06 2018 Ben Rosser <rosser.bjr@gmail.com> - 1.0-0.10.beta18
- Updated to latest upstream release (#1537836).

* Mon Feb 12 2018 Ben Rosser <rosser.bjr@gmail.com> - 1.0-0.9.beta17
- Update to upstream re-release of beta 17.

* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-0.8.beta17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Tue Jan 30 2018 Ben Rosser <rosser.bjr@gmail.com> - 1.0-0.7.beta18
- Fix build failure on ppc64 by always using bytecode ocaml compiler to bootstrap.

* Wed Jan 24 2018 Ben Rosser <rosser.bjr@gmail.com> 1.0-0.6.beta17
- Update to latest upstream release, beta17 (#1537836).
- Remove unit tests that require external deps (that themselves require jbuilder).

* Tue Nov 14 2017 Ben Rosser <rosser.bjr@gmail.com> 1.0-0.5.beta16
- Update to latest upstream release, beta16 (#1509749).
- Add pre_tag version suffix to source flie name to avoid confusion.

* Mon Oct 23 2017 Ben Rosser <rosser.bjr@gmail.com> 1.0-0.4.beta14
- Update to latest upstream release, beta14 (#1504414).

* Mon Aug 28 2017 Ben Rosser <rosser.bjr@gmail.com> 1.0-0.3.beta12
- Update to latest upstream release, beta12.
- Fix typo in description.
- Use simpler github source URL.
- Use make_build macros when compiling.

* Tue Aug 15 2017 Ben Rosser <rosser.bjr@gmail.com> 1.0-0.2.beta11
- Update to a git snapshot so opam can be built against.
- Modernize ocaml packaging.

* Tue Aug  1 2017 Ben Rosser <rosser.bjr@gmail.com> 1.0-0.1.beta11
- Initial package.