ocaml-mdx/ocaml-mdx.spec

132 lines
3.8 KiB
RPMSpec

%ifnarch %{ocaml_native_compiler}
%global debug_package %{nil}
%endif
%global srcname mdx
# Break a circular dependency by not building documentation
%bcond_with doc
Name: ocaml-%{srcname}
Version: 2.0.0
Release: 1%{?dist}
Summary: Executable code blocks inside markdown files
License: ISC
URL: https://realworldocaml.github.io/mdx/
Source0: https://github.com/realworldocaml/mdx/releases/download/%{version}/%{srcname}-%{version}.tbz
BuildRequires: ocaml >= 4.08.0
BuildRequires: ocaml-alcotest-devel
BuildRequires: ocaml-astring-devel
BuildRequires: ocaml-cmdliner-devel >= 1.0.0
BuildRequires: ocaml-cppo
BuildRequires: ocaml-csexp-devel >= 1.3.2
BuildRequires: ocaml-dune >= 2.7
BuildRequires: ocaml-fmt-devel >= 0.8.7
BuildRequires: ocaml-findlib
BuildRequires: ocaml-logs-devel >= 0.7.0
BuildRequires: ocaml-lwt-devel
BuildRequires: ocaml-odoc-parser-devel >= 0.9.0
BuildRequires: ocaml-re-devel >= 1.7.2
BuildRequires: ocaml-result-devel
BuildRequires: ocaml-version-devel >= 2.3.0
%if %{with doc}
BuildRequires: ocaml-odoc
%endif
%description
mdx enables execution of code blocks inside markdown files. There are
(currently) two sub-commands, corresponding to two modes of operation:
preprocessing (`ocaml-mdx pp`) and tests (`ocaml-mdx test`).
The preprocessor mode enables mixing documentation and code, and the
practice of "literate programming" using markdown and OCaml.
The test mode enables ensuring that shell scripts and OCaml fragments in
the documentation always stay up-to-date.
The blocks in markdown files can be parameterized by `mdx`-specific
labels, that will change the way `mdx` interprets the block. The syntax
is: `<!-- $MDX labels -->`, where `labels` is a list of valid labels
separated by a comma. This line must immediately precede the block it
is attached to.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: ocaml-astring-devel%{?_isa}
Requires: ocaml-csexp-devel%{?_isa}
Requires: ocaml-fmt-devel%{?_isa}
Requires: ocaml-logs-devel%{?_isa}
Requires: ocaml-odoc-parser-devel%{?_isa}
Requires: ocaml-re-devel%{?_isa}
Requires: ocaml-result-devel%{?_isa}
Requires: ocaml-version-devel%{?_isa}
%description devel
The %{name}-devel package contains libraries and signature
files for developing applications that use %{name}.
%prep
%autosetup -n %{srcname}-%{version} -p1
%build
dune build %{?_smp_mflags} --release
%if %{with doc}
dune build %{?_smp_mflags} @doc
%endif
%install
dune install --destdir=%{buildroot}
%if %{with doc}
# We do not want the dune markers
find _build/default/_doc/_html -name .dune-keep -delete
%endif
# We do not want the ml files
find %{buildroot}%{_libdir}/ocaml -name \*.ml -delete
# We install the documentation with the doc macro
rm -fr %{buildroot}%{_prefix}/doc
%check
dune runtest --release
%files
%doc CHANGES.md README.md
%license LICENSE.md
%{_bindir}/ocaml-mdx
%{_bindir}/ocaml-mdx-test
%dir %{_libdir}/ocaml/%{srcname}/
%dir %{_libdir}/ocaml/%{srcname}/test/
%dir %{_libdir}/ocaml/%{srcname}/top/
%{_libdir}/ocaml/%{srcname}/META
%{_libdir}/ocaml/%{srcname}/{,*/}*.cma
%{_libdir}/ocaml/%{srcname}/{,*/}*.cmi
%ifarch %{ocaml_native_compiler}
%{_libdir}/ocaml/%{srcname}/{,*/}*.cmxs
%endif
%files devel
%if %{with doc}
%doc _build/default/_doc/*
%endif
%{_libdir}/ocaml/%{srcname}/dune-package
%{_libdir}/ocaml/%{srcname}/opam
%ifarch %{ocaml_native_compiler}
%{_libdir}/ocaml/%{srcname}/{,*/}*.a
%{_libdir}/ocaml/%{srcname}/{,*/}*.cmx
%{_libdir}/ocaml/%{srcname}/{,*/}*.cmxa
%endif
%{_libdir}/ocaml/%{srcname}/{,*/}*.cmt
%{_libdir}/ocaml/%{srcname}/{,*/}*.cmti
%{_libdir}/ocaml/%{srcname}/{,*/}*.mli
%changelog
* Fri Dec 31 2021 Jerry James <loganjerry@gmail.com> - 2.0.0-1
- Initial RPM