From aa2067eae357b06621386285f4151d846bd474ad Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 30 Apr 2020 08:42:26 +0100 Subject: [PATCH] Move to a pre-release of num 1.4. --- .gitignore | 1 + 0001-Bump-version.patch | 23 ++++++ 0001-install-Use-DESTDIR.patch | 28 ------- 0002-Fix-usage-of-bytes-vs-string.patch | 75 +++++++++++++++++++ 0003-Get-rid-of-Bytes.unsafe_of_string.patch | 48 ++++++++++++ ...ag.patch => 0004-toplevel-Add-g-flag.patch | 8 +- ...atch => 0005-src-Add-g-flag-to-mklib.patch | 12 +-- ocaml-num.spec | 24 ++++-- sources | 2 +- 9 files changed, 174 insertions(+), 47 deletions(-) create mode 100644 0001-Bump-version.patch delete mode 100644 0001-install-Use-DESTDIR.patch create mode 100644 0002-Fix-usage-of-bytes-vs-string.patch create mode 100644 0003-Get-rid-of-Bytes.unsafe_of_string.patch rename 0002-toplevel-Add-g-flag.patch => 0004-toplevel-Add-g-flag.patch (79%) rename 0003-src-Add-g-flag-to-mklib.patch => 0005-src-Add-g-flag-to-mklib.patch (81%) diff --git a/.gitignore b/.gitignore index 06aed86..952c3be 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /ocaml-num-1.1.tar.gz +/v1.3.tar.gz diff --git a/0001-Bump-version.patch b/0001-Bump-version.patch new file mode 100644 index 0000000..185477d --- /dev/null +++ b/0001-Bump-version.patch @@ -0,0 +1,23 @@ +From 43fec4792091c5f8afac787042a084cfd465fd0d Mon Sep 17 00:00:00 2001 +From: David Allsopp +Date: Wed, 20 Nov 2019 08:31:22 +0000 +Subject: [PATCH 1/5] Bump version + +--- + num.opam | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/num.opam b/num.opam +index b43dfb8..5f4e209 100644 +--- a/num.opam ++++ b/num.opam +@@ -1,5 +1,5 @@ + opam-version: "2.0" +-version: "1.3" ++version: "1.4~dev" + maintainer: "Xavier Leroy " + authors: [ + "Valérie Ménissier-Morain" +-- +2.24.1 + diff --git a/0001-install-Use-DESTDIR.patch b/0001-install-Use-DESTDIR.patch deleted file mode 100644 index 1bbd5ec..0000000 --- a/0001-install-Use-DESTDIR.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 07639e9179347779ee723cffe50ba3dc7217b65e Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Wed, 8 Nov 2017 22:10:09 +0000 -Subject: [PATCH 1/3] install: Use DESTDIR. - ---- - src/Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index 97dc074..cff37f8 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -84,9 +84,9 @@ TOINSTALL_STUBS=dllnums.$(SO) - - install: - $(OCAMLFIND) install num META -- $(INSTALL_DATA) $(TOINSTALL) $(STDLIBDIR) -+ $(INSTALL_DATA) $(TOINSTALL) $(DESTDIR)$(STDLIBDIR) - ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true" -- $(INSTALL_DLL) $(TOINSTALL_STUBS) $(STDLIBDIR)/stublibs -+ $(INSTALL_DLL) $(TOINSTALL_STUBS) $(DESTDIR)$(STDLIBDIR)/stublibs - endif - - uninstall: --- -2.13.1 - diff --git a/0002-Fix-usage-of-bytes-vs-string.patch b/0002-Fix-usage-of-bytes-vs-string.patch new file mode 100644 index 0000000..42f6eff --- /dev/null +++ b/0002-Fix-usage-of-bytes-vs-string.patch @@ -0,0 +1,75 @@ +From 8a60d77c284822dae6291f1c8a8145a0d480212b Mon Sep 17 00:00:00 2001 +From: Hugo Heuzard +Date: Sat, 23 Nov 2019 17:55:45 +0800 +Subject: [PATCH 2/5] Fix usage of bytes vs string + +Don't reuse strings after they get unsafely converted to bytes for mutation. +Intead, explicitly refer to the mutated bytes +--- + src/ratio.ml | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/ratio.ml b/src/ratio.ml +index 04f9c5e..491cb96 100644 +--- a/src/ratio.ml ++++ b/src/ratio.ml +@@ -438,13 +438,13 @@ let approx_ratio_fix n r = + (base_power_big_int + 10 (succ n) (abs_big_int r.numerator)) + r.denominator)) in ++ let s1 = Bytes.unsafe_of_string s1 in + (* Round up and add 1 in front if needed *) + let s2 = +- if round_futur_last_digit (Bytes.unsafe_of_string s1) 0 +- (String.length s1) +- then "1" ^ s1 ++ if round_futur_last_digit s1 0 (Bytes.length s1) ++ then Bytes.cat (Bytes.of_string "1") s1 + else s1 in +- let l2 = String.length s2 - 1 in ++ let l2 = Bytes.length s2 - 1 in + (* if s2 without last digit is xxxxyyy with n 'yyy' digits: + xxxx . yyy + if s2 without last digit is yy with <= n digits: +@@ -452,15 +452,15 @@ let approx_ratio_fix n r = + if l2 > n then begin + let s = Bytes.make (l2 + 2) '0' in + Bytes.set s 0 (if sign_r = -1 then '-' else '+'); +- String.blit s2 0 s 1 (l2 - n); ++ Bytes.blit s2 0 s 1 (l2 - n); + Bytes.set s (l2 - n + 1) '.'; +- String.blit s2 (l2 - n) s (l2 - n + 2) n; ++ Bytes.blit s2 (l2 - n) s (l2 - n + 2) n; + Bytes.unsafe_to_string s + end else begin + let s = Bytes.make (n + 3) '0' in + Bytes.set s 0 (if sign_r = -1 then '-' else '+'); + Bytes.set s 2 '.'; +- String.blit s2 0 s (n + 3 - l2) l2; ++ Bytes.blit s2 0 s (n + 3 - l2) l2; + Bytes.unsafe_to_string s + end + end else begin +@@ -508,8 +508,8 @@ let approx_ratio_exp n r = + 10 k (abs_big_int r.numerator)) + r.denominator) in + string_of_nat nat) in +- if round_futur_last_digit (Bytes.unsafe_of_string s) 0 +- (String.length s) ++ let s = Bytes.unsafe_of_string s in ++ if round_futur_last_digit s 0 (Bytes.length s) + then + let m = num_decimal_digits_int (succ msd) in + let str = Bytes.make (n + m + 4) '0' in +@@ -525,7 +525,7 @@ let approx_ratio_exp n r = + and p = n + 3 in + let str = Bytes.make (succ (m + p)) '0' in + (String.blit (if sign_r = -1 then "-0." else "+0.") 0 str 0 3); +- (String.blit s 0 str 3 n); ++ (Bytes.blit s 0 str 3 n); + Bytes.set str p 'e'; + (if m = 0 + then Bytes.set str (succ p) '0' +-- +2.24.1 + diff --git a/0003-Get-rid-of-Bytes.unsafe_of_string.patch b/0003-Get-rid-of-Bytes.unsafe_of_string.patch new file mode 100644 index 0000000..79a5440 --- /dev/null +++ b/0003-Get-rid-of-Bytes.unsafe_of_string.patch @@ -0,0 +1,48 @@ +From 2def7803f0536aa961d3fb6e59dbfb1139cc3b42 Mon Sep 17 00:00:00 2001 +From: Hugo Heuzard +Date: Sat, 23 Nov 2019 18:11:45 +0800 +Subject: [PATCH 3/5] Get rid of Bytes.unsafe_of_string + +--- + src/big_int.ml | 2 +- + src/ratio.ml | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/big_int.ml b/src/big_int.ml +index 45cea9c..779e0ba 100644 +--- a/src/big_int.ml ++++ b/src/big_int.ml +@@ -674,7 +674,7 @@ let approx_big_int prec bi = + (big_int_of_string "963295986")) + (big_int_of_string "100000000")))) in + let s = +- Bytes.unsafe_of_string ++ Bytes.of_string + (string_of_big_int (div_big_int bi (power_int_positive_int 10 n))) + in + let (sign, off) = +diff --git a/src/ratio.ml b/src/ratio.ml +index 491cb96..5943383 100644 +--- a/src/ratio.ml ++++ b/src/ratio.ml +@@ -438,7 +438,7 @@ let approx_ratio_fix n r = + (base_power_big_int + 10 (succ n) (abs_big_int r.numerator)) + r.denominator)) in +- let s1 = Bytes.unsafe_of_string s1 in ++ let s1 = Bytes.of_string s1 in + (* Round up and add 1 in front if needed *) + let s2 = + if round_futur_last_digit s1 0 (Bytes.length s1) +@@ -508,7 +508,7 @@ let approx_ratio_exp n r = + 10 k (abs_big_int r.numerator)) + r.denominator) in + string_of_nat nat) in +- let s = Bytes.unsafe_of_string s in ++ let s = Bytes.of_string s in + if round_futur_last_digit s 0 (Bytes.length s) + then + let m = num_decimal_digits_int (succ msd) in +-- +2.24.1 + diff --git a/0002-toplevel-Add-g-flag.patch b/0004-toplevel-Add-g-flag.patch similarity index 79% rename from 0002-toplevel-Add-g-flag.patch rename to 0004-toplevel-Add-g-flag.patch index 7b4560d..973da98 100644 --- a/0002-toplevel-Add-g-flag.patch +++ b/0004-toplevel-Add-g-flag.patch @@ -1,14 +1,14 @@ -From db0abe753585fcec091793c476fa9b2ce38d5055 Mon Sep 17 00:00:00 2001 +From f389970daa5f5cae428d686eca31122cb0d61076 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 8 Nov 2017 22:15:06 +0000 -Subject: [PATCH 2/3] toplevel: Add -g flag. +Subject: [PATCH 4/5] toplevel: Add -g flag. --- toplevel/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toplevel/Makefile b/toplevel/Makefile -index 8c91b0b..a6aab63 100644 +index 4af7905..96d37d8 100644 --- a/toplevel/Makefile +++ b/toplevel/Makefile @@ -2,7 +2,7 @@ OCAMLC=ocamlc @@ -21,5 +21,5 @@ index 8c91b0b..a6aab63 100644 -safe-string -strict-sequence -strict-formats -- -2.13.1 +2.24.1 diff --git a/0003-src-Add-g-flag-to-mklib.patch b/0005-src-Add-g-flag-to-mklib.patch similarity index 81% rename from 0003-src-Add-g-flag-to-mklib.patch rename to 0005-src-Add-g-flag-to-mklib.patch index ad39d19..a206176 100644 --- a/0003-src-Add-g-flag-to-mklib.patch +++ b/0005-src-Add-g-flag-to-mklib.patch @@ -1,17 +1,17 @@ -From 15f870dee4dffb64450a79556684309cb960264a Mon Sep 17 00:00:00 2001 +From 0419c771916f4f53e6dd2d89cfd11384ecd2be96 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 8 Nov 2017 22:16:59 +0000 -Subject: [PATCH 3/3] src: Add -g flag to mklib. +Subject: [PATCH 5/5] src: Add -g flag to mklib. --- src/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Makefile b/src/Makefile -index cff37f8..3a8f445 100644 +index 8ad0e2c..4dc802f 100644 --- a/src/Makefile +++ b/src/Makefile -@@ -45,13 +45,13 @@ all:: nums.cmxs +@@ -42,13 +42,13 @@ all:: nums.cmxs endif libnums.$(A): $(COBJS) @@ -28,7 +28,7 @@ index cff37f8..3a8f445 100644 nums.cmxs: nums.cmxa libnums.$(A) $(OCAMLOPT) $(CAMLOPTFLAGS) -I . -shared -o nums.cmxs nums.cmxa -@@ -68,7 +68,7 @@ nat_stubs.$(O): bng.h nat.h +@@ -65,7 +65,7 @@ nat_stubs.$(O): bng.h nat.h %.cmx: %.ml $(OCAMLOPT) $(CAMLOPTFLAGS) -c $*.ml %.$(O): %.c @@ -38,5 +38,5 @@ index cff37f8..3a8f445 100644 # Legacy installation: files go into OCaml's stdlib directory; only META # is installed via findlib -- -2.13.1 +2.24.1 diff --git a/ocaml-num.spec b/ocaml-num.spec index b0ebe49..64805b2 100644 --- a/ocaml-num.spec +++ b/ocaml-num.spec @@ -1,17 +1,21 @@ Name: ocaml-num -Version: 1.1 -Release: 24%{?dist} +Version: 1.4 +Release: 0.1%{?dist} Summary: Legacy Num library for arbitrary-precision integer and rational arithmetic License: LGPLv2+ with exceptions URL: https://github.com/ocaml/num -Source0: https://github.com/ocaml/num/archive/v%{version}/%{name}-%{version}.tar.gz +#Source0: https://github.com/ocaml/num/archive/v%%{version}/%%{name}-%%{version}.tar.gz +Source0: https://github.com/ocaml/num/archive/v1.3.tar.gz + +# All patches since 1.3 was released. +Patch1: 0001-Bump-version.patch +Patch2: 0002-Fix-usage-of-bytes-vs-string.patch +Patch3: 0003-Get-rid-of-Bytes.unsafe_of_string.patch -# Downstream patch to make DESTDIR installs work. -Patch1: 0001-install-Use-DESTDIR.patch # Downstream patches to add -g flag. -Patch2: 0002-toplevel-Add-g-flag.patch -Patch3: 0003-src-Add-g-flag-to-mklib.patch +Patch4: 0004-toplevel-Add-g-flag.patch +Patch5: 0005-src-Add-g-flag-to-mklib.patch BuildRequires: ocaml BuildRequires: ocaml-findlib-devel @@ -41,7 +45,8 @@ developing applications that use %{name}. %prep -%setup -q -n num-%{version} +#%%setup -q -n num-%%{version} +%setup -q -n num-1.3 %autopatch -p1 @@ -91,6 +96,9 @@ find $OCAMLFIND_DESTDIR -name '*.cmti' -delete %changelog +* Thu Apr 30 2020 Richard W.M. Jones - 1.4-0.1 +- Move to a pre-release of num 1.4. + * Tue Apr 21 2020 Richard W.M. Jones - 1.1-24 - OCaml 4.11.0 pre-release attempt 2 diff --git a/sources b/sources index 0e91f21..ff78a09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ocaml-num-1.1.tar.gz) = e7ee54e83eaab15ee879c5bb6deb0d76a3adf1ffd2cbd3f93cda63e7bc7b3a90313b94b4be078ecddaeee90a8a98a986d80c2fd6f1ad38faa35a318f77ec890e +SHA512 (v1.3.tar.gz) = c88310f8c45700990095e6b2e9abf24c27347711b9abfd1dde75e540fbbfc6a365e6713bd69f66009af305728fcb36dc61eb37fdd0be7d73824b0e92fbe8c031