Blob Blame History Raw
# Make %files lists from an installed tree of files.
# Options:
# -s: separate packaging; every subdirectory of %%{ocamldir}, except stublibs,
#     is placed in its own package.  This option requires the existence of opam
#     *.install files in the build tree.
# -n: suppress creation of a devel subpackage.
%ocaml_files(sn) %{python3} /usr/lib/rpm/redhat/ocaml_files.py %{-s} %{-n} %{buildroot} %{ocamldir}

# Internal macro holding the common parts of ocaml_install and dune_install
%ocaml_install_common(sn) %{expand:
rm -rf %{buildroot}%{_prefix}/doc
mlis=$(find %{buildroot}%{_libdir}/ocaml -name '*.mli')
rm -f ${mlis//.mli/.ml}
%ocaml_files %{-s} %{-n}}

# Install files listed in opam *.install files.
# Options:
# -s: separate packaging; every subdirectory of %%{ocamldir}, except stublibs,
#     is placed in its own package.
# -n: suppress creation of a devel subpackage.
%ocaml_install(sn) %{expand:
%{python3} /usr/lib/rpm/redhat/ocaml_files.py -i %{-s} %{-n} %{buildroot} %{ocamldir}
%ocaml_install_common %{-s} %{-n}}

# Add smp_mflags to arguments if no -j release option is given.
# Add --release to arguments if no -p or --release option is given.
# Add --verbose to arguments if it is not given.
%dune_add_flags(-) %{lua:
  has_j = false
  has_p = false
  has_v = false
  for _, flag in pairs(arg) do
    if flag:find("^-j") then
      has_j = true
    elseif flag:find("^-p") or flag:find("^--release)") then
      has_p = true
    elseif flag:find("^--verbose") then
      has_v = true
    end
  end
  if not has_j then
     table.insert(arg, 1, rpm.expand("%{?_smp_mflags}"))
  end
  if not has_p then
     table.insert(arg, 1, "--release")
  end
  if not has_v then
     table.insert(arg, 1, "--verbose")
  end
  print(table.concat(arg, " "))
}

# Build with dune
%dune_build(-) dune build %{dune_add_flags %*}

# Run tests with dune
%dune_check(-) dune runtest %{dune_add_flags %*}

# Install with dune
# Options:
# -s: separate packaging; every subdirectory of %%{ocamldir}, except stublibs,
#     is placed in its own package.
# -n: suppress creation of a devel subpackage.
%dune_install(sn) %{expand:
dune install --destdir=%{buildroot} %{dune_add_flags %*}
if [ -d _build/default/_doc/_html ]; then
    find _build/default/_doc/_html -name .dune-keep -delete
fi
%ocaml_install_common %{-s} %{-n}}