diff --git a/.gitignore b/.gitignore index b228034..ba78ab2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ calendar-2.01.1.tar.gz /calendar-2.03.1.tar.gz /calendar-2.03.2.tar.gz /calendar-2.04.tar.gz +/calendar-3.0.0.tar.gz diff --git a/calendar-2.03.2-enable-debug.patch b/calendar-2.03.2-enable-debug.patch deleted file mode 100644 index 6fc0d02..0000000 --- a/calendar-2.03.2-enable-debug.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- calendar-2.03.2/Makefile.in.old 2013-09-14 16:15:43.760253519 +0100 -+++ calendar-2.03.2/Makefile.in 2013-09-14 16:16:03.233279962 +0100 -@@ -86,7 +86,7 @@ - - CAMLIBS = $(addprefix -I , $(DIRS)) - --CAMLFLAGS= $(CAMLIBS) -+CAMLFLAGS= -g $(CAMLIBS) - BYTEFLAGS= $(CAMLFLAGS) - LINK_OPTFLAGS = $(CAMLFLAGS) -noassert - OPTFLAGS = $(LINK_OPTFLAGS) -for-pack CalendarLib diff --git a/gating.yaml b/gating.yaml new file mode 100755 index 0000000..2c7ed80 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,6 @@ +--- !Policy +product_versions: + - rhel-* +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} diff --git a/ocaml-calendar-timezone-test.patch b/ocaml-calendar-timezone-test.patch new file mode 100644 index 0000000..ca92b25 --- /dev/null +++ b/ocaml-calendar-timezone-test.patch @@ -0,0 +1,33 @@ +When the tests are executed in Mountain Standard Time, the timezone test fails: + +ASSERT gap g6 Local = gap g6 UTC + gap UTC Local +File "tests/test_timezone.ml", line 37, character 2: +FAIL gap g6 Local = gap g6 UTC + gap UTC Local + + Expected: `11' + Received: `-13' + +--- calendar-3.0.0/tests/test_timezone.ml.orig 2022-10-11 09:39:06.000000000 -0600 ++++ calendar-3.0.0/tests/test_timezone.ml 2024-12-13 11:20:28.349298798 -0700 +@@ -27,6 +27,12 @@ open Time_Zone;; + + let tz = Alcotest.testable (Fmt.always "timezone") (=) ;; + ++let make_in_bounds x = ++ let y = x mod 24 in ++ if y < -12 then y + 24 ++ else if y > 11 then y - 24 ++ else y ++ + let test () = + change UTC; + Alcotest.(check tz) "current () = UTC" UTC (current ()); +@@ -36,7 +42,7 @@ let test () = + let g6 = UTC_Plus 6 in + Alcotest.(check int) + "gap g6 Local = gap g6 UTC + gap UTC Local" +- (gap g6 Local) (gap g6 UTC + gap UTC Local); ++ (gap g6 Local) (make_in_bounds (gap g6 UTC + gap UTC Local)); + Gen_test.test_exn (lazy (change (UTC_Plus 13))) "change 13"; + Gen_test.test_exn (lazy (change (UTC_Plus (-15)))) "change (-15)"; + change (UTC_Plus 4); diff --git a/ocaml-calendar.spec b/ocaml-calendar.spec index b429f75..41b5b2c 100644 --- a/ocaml-calendar.spec +++ b/ocaml-calendar.spec @@ -1,27 +1,37 @@ +# OCaml packages not built on i686 since OCaml 5 / Fedora 39. +ExcludeArch: %{ix86} + %ifnarch %{ocaml_native_compiler} %global debug_package %{nil} %endif +# ocaml-alcotest requires ocaml-astring, ocaml-cmdliner, ocaml-fmt, and ocaml-uutf, +# none of which are otherwise needed for building the OCaml-dependent packages +# found in RHEL and ELN. We want to avoid the extra dependencies there. +%bcond tests %[!0%{?rhel}] + +%global giturl https://github.com/ocaml-community/calendar + Name: ocaml-calendar -Version: 2.04 -Release: 28%{?dist}.1 +Epoch: 1 +Version: 3.0.0 +Release: 19%{?dist} Summary: Objective Caml library for managing dates and times -License: LGPLv2 +License: LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception -URL: http://calendar.forge.ocamlcore.org/ -Source0: https://forge.ocamlcore.org/frs/download.php/1481/calendar-2.04.tar.gz +URL: https://ocaml-community.github.io/calendar/ +VCS: git:%{giturl}.git +Source0: %{giturl}/archive/v%{version}/calendar-%{version}.tar.gz +# Work around https://github.com/ocaml-community/calendar/issues/43 +Patch: %{name}-timezone-test.patch -Patch1: calendar-2.03.2-enable-debug.patch +BuildRequires: ocaml >= 4.03 +BuildRequires: ocaml-dune >= 1.0 +BuildRequires: ocaml-re-devel >= 1.7.2 -BuildRequires: ocaml >= 4.00.1 -BuildRequires: ocaml-findlib-devel >= 1.3.3-3 -BuildRequires: ocaml-ocamldoc -BuildRequires: gawk - -# Ignore all generated modules *except* CalendarLib, since everything -# now appears in that namespace. -%global __ocaml_requires_opts -i Calendar_builder -i Calendar_sig -i Date -i Date_sig -i Fcalendar -i Ftime -i Period -i Printer -i Time -i Time_sig -i Time_Zone -i Utils -i Version -%global __ocaml_provides_opts -i Calendar_builder -i Calendar_sig -i Date -i Date_sig -i Fcalendar -i Ftime -i Period -i Printer -i Time -i Time_sig -i Time_Zone -i Utils -i Version +%if %{with tests} +BuildRequires: ocaml-alcotest-devel +%endif %description @@ -30,7 +40,7 @@ Objective Caml library for managing dates and times. %package devel Summary: Development files for %{name} -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} %description devel @@ -39,46 +49,147 @@ developing applications that use %{name}. %prep -%setup -q -n calendar-%{version} -%patch1 -p1 +%autosetup -n calendar-%{version} -p1 %build -./configure --libdir=%{_libdir} -make -make doc - -mv TODO TODO.old -iconv -f iso-8859-1 -t utf-8 < TODO.old > TODO +%dune_build %install -export DESTDIR=$RPM_BUILD_ROOT -export OCAMLFIND_DESTDIR=$RPM_BUILD_ROOT%{_libdir}/ocaml -mkdir -p $OCAMLFIND_DESTDIR $OCAMLFIND_DESTDIR/stublibs -make install +%dune_install -%files -%doc CHANGES README TODO LGPL COPYING -%{_libdir}/ocaml/calendar -%ifarch %{ocaml_native_compiler} -%exclude %{_libdir}/ocaml/calendar/*.cmx +%if %{with tests} +%check +%dune_check %endif -%exclude %{_libdir}/ocaml/calendar/*.mli -%files devel -%doc CHANGES README TODO LGPL COPYING calendarFAQ-2.6.txt doc/* -%ifarch %{ocaml_native_compiler} -%{_libdir}/ocaml/calendar/*.cmx -%endif -%{_libdir}/ocaml/calendar/*.mli +%files -f .ofiles +%doc CHANGES README.md TODO +%license LGPL COPYING + + +%files devel -f .ofiles-devel +%doc CHANGES README.md TODO calendarFAQ-2.6.txt +%license LGPL COPYING %changelog -* Thu Feb 27 2020 Richard W.M. Jones - 2.04-28.1 -- OCaml 4.10.0 final (Fedora 32). +* Mon Oct 13 2025 Richard W.M. Jones - 1:3.0.0-19 +- OCaml 5.4.0 rebuild + +* Thu Jul 24 2025 Fedora Release Engineering - 1:3.0.0-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sat Jul 12 2025 Jerry James - 1:3.0.0-17 +- Rebuild to fix OCaml dependencies + +* Fri Jan 17 2025 Fedora Release Engineering - 1:3.0.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jan 10 2025 Jerry James - 1:3.0.0-15 +- OCaml 5.3.0 rebuild for Fedora 42 +- Add patch for a test failure + +* Thu Oct 03 2024 Richard W.M. Jones - 1:3.0.0-14 +- Rebuild against ocaml-re 1.13.3 (RHBZ#2316105) + +* Thu Jul 18 2024 Fedora Release Engineering - 1:3.0.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jun 19 2024 Richard W.M. Jones - 1:3.0.0-12 +- OCaml 5.2.0 ppc64le fix + +* Thu May 30 2024 Richard W.M. Jones - 3.0.0-11 +- OCaml 5.2.0 for Fedora 41 + +* Thu May 23 2024 Jerry James - 3.0.0-8 +- Simplify with %%bcond +- Add VCS field + +* Thu Jan 25 2024 Fedora Release Engineering - 3.0.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 3.0.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Dec 18 2023 Richard W.M. Jones - 3.0.0-6 +- OCaml 5.1.1 + s390x code gen fix for Fedora 40 + +* Tue Dec 12 2023 Richard W.M. Jones - 3.0.0-5 +- OCaml 5.1.1 rebuild for Fedora 40 + +* Thu Oct 05 2023 Richard W.M. Jones - 3.0.0-4 +- OCaml 5.1 rebuild for Fedora 40 + +* Thu Jul 20 2023 Fedora Release Engineering - 3.0.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 11 2023 Richard W.M. Jones - 3.0.0-2 +- OCaml 5.0 rebuild for Fedora 39 + +* Mon Jul 10 2023 Jerry James - 3.0.0-1 +- Version 3.0.0 +- New project URLs +- Convert License tag to SPDX +- Drop obsolete debuginfo patch +- Build with dune + +* Tue Jan 24 2023 Richard W.M. Jones - 2.04-46 +- Rebuild OCaml packages for F38 + +* Thu Jan 19 2023 Fedora Release Engineering - 2.04-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 2.04-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jun 18 2022 Richard W.M. Jones - 2.04-43 +- OCaml 4.14.0 rebuild + +* Fri Feb 04 2022 Richard W.M. Jones - 2.04-42 +- Bump release and rebuild. + +* Fri Feb 04 2022 Richard W.M. Jones - 2.04-41 +- OCaml 4.13.1 rebuild to remove package notes + +* Thu Jan 20 2022 Fedora Release Engineering - 2.04-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Oct 04 2021 Richard W.M. Jones - 2.04-39 +- OCaml 4.13.1 build + +* Thu Jul 22 2021 Fedora Release Engineering - 2.04-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Mar 1 14:31:55 GMT 2021 Richard W.M. Jones - 2.04-37 +- OCaml 4.12.0 build + +* Tue Jan 26 2021 Fedora Release Engineering - 2.04-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Sep 01 2020 Richard W.M. Jones - 2.04-35 +- OCaml 4.11.1 rebuild + +* Fri Aug 21 2020 Richard W.M. Jones - 2.04-34 +- OCaml 4.11.0 rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 2.04-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon May 04 2020 Richard W.M. Jones - 2.04-32 +- OCaml 4.11.0+dev2-2020-04-22 rebuild + +* Tue Apr 21 2020 Richard W.M. Jones - 2.04-31 +- OCaml 4.11.0 pre-release attempt 2 + +* Fri Apr 17 2020 Richard W.M. Jones - 2.04-30 +- OCaml 4.11.0 pre-release + +* Thu Apr 02 2020 Richard W.M. Jones - 2.04-29 +- Update all OCaml dependencies for RPM 4.16. * Wed Feb 26 2020 Richard W.M. Jones - 2.04-28 - OCaml 4.10.0 final. diff --git a/sources b/sources index ed73d34..6e5b9c6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -625b4f32c9ff447501868fa1c44f4f4f calendar-2.04.tar.gz +SHA512 (calendar-3.0.0.tar.gz) = cf8a5cfbfb8879da7bcacf765d5461523cbc4f0c13133dfb2f311b051ed95b5f72815af5ca2836294a793d9b57bfc4cc1abbb8b54e17954cb4ecc99e1743bdc3 diff --git a/tests/basic-test.sh b/tests/basic-test.sh new file mode 100755 index 0000000..3ebee39 --- /dev/null +++ b/tests/basic-test.sh @@ -0,0 +1,8 @@ +#!/bin/bash - +set -e +set -x + +# Compile trivial calendar program. +echo 'CalendarLib.Calendar.Period.make 0 0 0 1 0 0' > caltest.ml +ocamlfind ocamlopt -package calendar caltest.ml -linkpkg -o caltest +./caltest diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100755 index 0000000..a652627 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,13 @@ +- hosts: localhost + roles: + - role: standard-test-basic + tags: + - classic + required_packages: + - ocaml + - ocaml-findlib + - ocaml-calendar-devel + tests: + - simple: + dir: . + run: ./basic-test.sh