diff --git a/ocaml-ounit-stdlib-shims.patch b/ocaml-ounit-stdlib-shims.patch new file mode 100644 index 0000000..0d3e213 --- /dev/null +++ b/ocaml-ounit-stdlib-shims.patch @@ -0,0 +1,18 @@ +--- a/ounit2.opam ++++ b/ounit2.opam +@@ -11,7 +11,6 @@ depends: [ + "dune" {>= "1.11.0"} + "base-bytes" + "base-unix" +- "stdlib-shims" + ] + build: [ + ["dune" "build" "-p" name "-j" jobs] +--- a/src/lib/ounit2/advanced/dune ++++ b/src/lib/ounit2/advanced/dune +@@ -7,4 +7,4 @@ + (name oUnitAdvanced) + (public_name ounit2.advanced) + (wrapped false) +- (libraries unix bytes stdlib-shims)) ++ (libraries unix bytes)) diff --git a/ocaml-ounit.rpmlintrc b/ocaml-ounit.rpmlintrc new file mode 100644 index 0000000..19f0a0b --- /dev/null +++ b/ocaml-ounit.rpmlintrc @@ -0,0 +1,11 @@ +# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON +# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors + +# The dictionary is missing some technical terms +addFilter(r'W: spelling-error .* xUnit') + +# The hidden directory is there on purpose +addFilter(r'W: hidden-file-or-dir .*/ocaml/ounit2/threads/\.private') + +# Documentation is in the -doc subpackage +addFilter(r'ocaml-ounit(-lwt)?(-devel)?\.[^:]+: W: no-documentation') diff --git a/ocaml-ounit.spec b/ocaml-ounit.spec index f3dd5b7..9dee377 100644 --- a/ocaml-ounit.spec +++ b/ocaml-ounit.spec @@ -1,28 +1,45 @@ -Name: ocaml-ounit -Version: 2.0.8 -Release: 14%{?dist} +%ifnarch %{ocaml_native_compiler} +%global debug_package %{nil} +%endif + +%global srcname ounit + +Name: ocaml-%{srcname} +Version: 2.2.2 +Release: 1%{?dist} Summary: Unit test framework for OCaml License: MIT -URL: http://ounit.forge.ocamlcore.org/ -Source0: http://forge.ocamlcore.org/frs/download.php/1749/ounit-%{version}.tar.gz +URL: https://github.com/gildor478/ounit +Source0: %{url}/releases/download/v%{version}/%{srcname}-v%{version}.tbz +# We neither need nor want the stdlib-shims package in Fedora. It is a forward +# compatibility package for older OCaml installations. Patch it out instead. +# Upstream does not want this patch until stdlib-shims is obsolete. +Patch0: %{name}-stdlib-shims.patch -BuildRequires: ocaml >= 3.10.0 -BuildRequires: ocaml-findlib-devel -BuildRequires: ocaml-ocamldoc -BuildRequires: ocaml-ocamlbuild +BuildRequires: ocaml >= 4.02.3 +BuildRequires: ocaml-dune >= 1.11.0 +BuildRequires: ocaml-findlib +BuildRequires: ocaml-lwt-devel +BuildRequires: ocaml-mmap-devel +BuildRequires: ocaml-ocplib-endian-devel +BuildRequires: ocaml-odoc +BuildRequires: ocaml-result-devel +# The ounit name is now just an alias for ounit2 +Provides: %{name}2 = %{version}-%{release} %description -OUnit is a unit test framework for OCaml. It allows one to easily -create unit-tests for OCaml code. It is based on HUnit, a unit testing -framework for Haskell. It is similar to JUnit, and other xUnit testing +OUnit is a unit test framework for OCaml. It allows one to easily create +unit-tests for OCaml code. It is loosely based on HUnit, a unit testing +framework for Haskell. It is similar to JUnit, and other xUnit testing frameworks. %package devel Summary: Development files for %{name} Requires: %{name} = %{version}-%{release} +Provides: %{name}2-devel = %{version}-%{release} %description devel @@ -30,50 +47,148 @@ The %{name}-devel package contains libraries and signature files for developing applications that use %{name}. +%package lwt +Summary: Helper functions for building Lwt tests using OUnit +Requires: %{name} = %{version}-%{release} +Provides: %{name}2-lwt = %{version}-%{release} + + +%description lwt +This package contains helper functions for building Lwt tests using +OUnit. + + +%package lwt-devel +Summary: Development files for %{name}-lwt +Requires: %{name}-devel = %{version}-%{release} +Requires: %{name}-lwt = %{version}-%{release} +Requires: ocaml-lwt-devel%{?_isa} +Provides: %{name}2-lwt-devel = %{version}-%{release} + + +%description lwt-devel +The %{name}-lwt-devel package contains libraries and signature +files for developing applications that use %{name}-lwt. + + +%package doc +Summary: Documentation for %{name} +BuildArch: noarch + + +%description doc +Documentation for %{name}. + + %prep -%setup -q -n ounit-%{version} -sh ./configure --destdir $RPM_BUILD_ROOT +%autosetup -n %{srcname}-v%{version} -p1 %build -make all -make doc +dune build %{?_smp_mflags} +dune build %{?_smp_mflags} @doc %check -make test +dune runtest %install -export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml -mkdir -p $OCAMLFIND_DESTDIR $OCAMLFIND_DESTDIR/stublibs -make install +dune install --destdir=%{buildroot} -# Remove this, reinstall it properly with a %%doc rule below. -rm -rf $RPM_BUILD_ROOT/usr/local/share/doc +# We do not want the dune markers +find _build/default/_doc/_html -name .dune-keep -delete + +# We install the documentation with the doc macro +rm -fr %{buildroot}%{_prefix}/doc + +%ifarch %{ocaml_native_compiler} +# Add missing executable bits +find %{buildroot}%{_libdir}/ocaml -name \*.cmxs -exec chmod a+x {} \+ +%endif %files -%doc LICENSE.txt -%{_libdir}/ocaml/oUnit +%doc CHANGES.md README.md +%license LICENSE.txt +%dir %{_libdir}/ocaml/%{srcname}/ +%dir %{_libdir}/ocaml/%{srcname}2/ +%dir %{_libdir}/ocaml/%{srcname}2/advanced/ +%dir %{_libdir}/ocaml/%{srcname}2/threads/ +%{_libdir}/ocaml/%{srcname}2/threads/.private/ +%{_libdir}/ocaml/%{srcname}/META +%{_libdir}/ocaml/%{srcname}2/META +%{_libdir}/ocaml/%{srcname}2/*.cma +%{_libdir}/ocaml/%{srcname}2/*.cmi +%{_libdir}/ocaml/%{srcname}2/*/*.cma +%{_libdir}/ocaml/%{srcname}2/*/*.cmi %ifarch %{ocaml_native_compiler} -%exclude %{_libdir}/ocaml/oUnit/*.a -%exclude %{_libdir}/ocaml/oUnit/*.cmxa +%{_libdir}/ocaml/%{srcname}2/*.cmxs +%{_libdir}/ocaml/%{srcname}2/*/*.cmxs %endif -%exclude %{_libdir}/ocaml/oUnit/*.mli %files devel -%doc LICENSE.txt README.txt -%doc _build/src/api-ounit.docdir/* +%{_libdir}/ocaml/%{srcname}/dune-package +%{_libdir}/ocaml/%{srcname}/opam +%{_libdir}/ocaml/%{srcname}2/dune-package +%{_libdir}/ocaml/%{srcname}2/opam %ifarch %{ocaml_native_compiler} -%{_libdir}/ocaml/oUnit/*.a -%{_libdir}/ocaml/oUnit/*.cmxa +%{_libdir}/ocaml/%{srcname}2/*.a +%{_libdir}/ocaml/%{srcname}2/*.cmx +%{_libdir}/ocaml/%{srcname}2/*.cmxa +%{_libdir}/ocaml/%{srcname}2/*/*.a +%{_libdir}/ocaml/%{srcname}2/*/*.cmx +%{_libdir}/ocaml/%{srcname}2/*/*.cmxa %endif -%{_libdir}/ocaml/oUnit/*.mli +%{_libdir}/ocaml/%{srcname}2/*.cmt +%{_libdir}/ocaml/%{srcname}2/*.cmti +%{_libdir}/ocaml/%{srcname}2/*.ml +%{_libdir}/ocaml/%{srcname}2/*.mli +%{_libdir}/ocaml/%{srcname}2/*/*.cmt +%{_libdir}/ocaml/%{srcname}2/*/*.cmti +%{_libdir}/ocaml/%{srcname}2/*/*.ml +%{_libdir}/ocaml/%{srcname}2/*/*.mli + + +%files lwt +%dir %{_libdir}/ocaml/%{srcname}-lwt/ +%dir %{_libdir}/ocaml/%{srcname}2-lwt/ +%{_libdir}/ocaml/%{srcname}-lwt/META +%{_libdir}/ocaml/%{srcname}2-lwt/META +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.cma +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.cmi +%ifarch %{ocaml_native_compiler} +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.cmxs +%endif + + +%files lwt-devel +%{_libdir}/ocaml/%{srcname}-lwt/dune-package +%{_libdir}/ocaml/%{srcname}-lwt/opam +%{_libdir}/ocaml/%{srcname}2-lwt/dune-package +%{_libdir}/ocaml/%{srcname}2-lwt/opam +%ifarch %{ocaml_native_compiler} +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.a +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.cmx +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.cmxa +%endif +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.cmt +%{_libdir}/ocaml/%{srcname}2-lwt/oUnitLwt.ml + + +%files doc +%doc _build/default/_doc/_html/ +%doc _build/default/_doc/_mlds/ +%doc _build/default/_doc/_odoc/ +%license LICENSE.txt %changelog +* Fri Feb 7 2020 Jerry James - 2.2.2-1 +- New upstream version 2.2.2 +- New URLs + * Wed Jan 29 2020 Fedora Release Engineering - 2.0.8-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild