diff options
author | CoprDistGit <infra@openeuler.org> | 2023-10-30 03:24:26 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-10-30 03:24:26 +0000 |
commit | f08f972bc54827f61b87db2f60dbb141556299d3 (patch) | |
tree | 729effa1350640865ac5cfb56d281198f3c02077 | |
parent | 22687d231a9e1ef08ed99adc596a65b349b1f99c (diff) |
automatic import of ghc-scientificopeneuler23.09
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | ghc-scientific.spec | 138 | ||||
-rwxr-xr-x | scientific.cabal | 170 | ||||
-rw-r--r-- | sources | 1 |
4 files changed, 310 insertions, 0 deletions
@@ -0,0 +1 @@ +/scientific-0.3.7.0.tar.gz diff --git a/ghc-scientific.spec b/ghc-scientific.spec new file mode 100644 index 0000000..4951964 --- /dev/null +++ b/ghc-scientific.spec @@ -0,0 +1,138 @@ +%global pkg_name scientific +%global pkgver %{pkg_name}-%{version} +%bcond_with tests + +Name: ghc-%{pkg_name} +Version: 0.3.7.0 +Release: 1 +Summary: Numbers represented using scientific notation +License: BSD-3-Clause +URL: https://hackage.haskell.org/package/%{pkg_name} +Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz +Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/5.cabal#/%{pkg_name}.cabal +BuildRequires: ghc-Cabal-devel +BuildRequires: ghc-base-devel +BuildRequires: ghc-base-prof +BuildRequires: ghc-binary-devel +BuildRequires: ghc-binary-prof +BuildRequires: ghc-bytestring-devel +BuildRequires: ghc-bytestring-prof +BuildRequires: ghc-containers-devel +BuildRequires: ghc-containers-prof +BuildRequires: ghc-deepseq-devel +BuildRequires: ghc-deepseq-prof +BuildRequires: ghc-hashable-devel +BuildRequires: ghc-hashable-prof +BuildRequires: ghc-integer-logarithms-devel +BuildRequires: ghc-integer-logarithms-prof +BuildRequires: ghc-primitive-devel +BuildRequires: ghc-primitive-prof +BuildRequires: ghc-rpm-macros +BuildRequires: ghc-template-haskell-devel +BuildRequires: ghc-template-haskell-prof +BuildRequires: ghc-text-devel +BuildRequires: ghc-text-prof +ExcludeArch: %{ix86} +%if %{with tests} +BuildRequires: ghc-QuickCheck-devel +BuildRequires: ghc-QuickCheck-prof +BuildRequires: ghc-smallcheck-devel +BuildRequires: ghc-smallcheck-prof +BuildRequires: ghc-tasty-devel +BuildRequires: ghc-tasty-hunit-devel +BuildRequires: ghc-tasty-hunit-prof +BuildRequires: ghc-tasty-prof +BuildRequires: ghc-tasty-quickcheck-devel +BuildRequires: ghc-tasty-quickcheck-prof +BuildRequires: ghc-tasty-smallcheck-devel +BuildRequires: ghc-tasty-smallcheck-prof +%endif + +%description +"Data.Scientific" provides the number type 'Scientific'. Scientific numbers are +arbitrary precision and space efficient. They are represented using +<http://en.wikipedia.org/wiki/Scientific_notation scientific notation>. +The implementation uses a coefficient 'c :: 'Integer'' and a base-10 exponent +'e :: 'Int''. A scientific number corresponds to the 'Fractional' number: +''fromInteger' c * 10 '^^' e'. + +Note that since we're using an 'Int' to represent the exponent these numbers +aren't truly arbitrary precision. I intend to change the type of the exponent +to 'Integer' in a future release. + +The main application of 'Scientific' is to be used as the target of parsing +arbitrary precision numbers coming from an untrusted source. The advantages +over using 'Rational' for this are that: + +* A 'Scientific' is more efficient to construct. Rational numbers need to be +constructed using '%' which has to compute the 'gcd' of the 'numerator' and +'denominator'. + +* 'Scientific' is safe against numbers with huge exponents. For example: +'1e1000000000 :: 'Rational'' will fill up all space and crash your program. +Scientific works as expected: + +>>> read "1e1000000000" :: Scientific 1.0e1000000000 + +* Also, the space usage of converting scientific numbers with huge exponents to +''Integral's' (like: 'Int') or ''RealFloat's' (like: 'Double' or 'Float') will +always be bounded by the target type. + +%package devel +Summary: Haskell %{pkg_name} library development files +Requires: %{name} = %{version}-%{release} +Requires: ghc-compiler = %{ghc_version} +Requires(post): ghc-compiler = %{ghc_version} +Requires(postun): ghc-compiler = %{ghc_version} + +%description devel +This package provides the Haskell %{pkg_name} library development files. + +%package -n ghc-%{pkg_name}-help +Summary: Haskell %{pkg_name} library documentation +BuildArch: noarch + +%description -n ghc-%{pkg_name}-help +This package provides the Haskell %{pkg_name} library documentation. + +%package -n ghc-%{pkg_name}-prof +Summary: Haskell %{pkg_name} profiling library +Requires: ghc-%{pkg_name}-devel = %{version}-%{release} +Supplements: (ghc-%{pkg_name}-devel and ghc-prof) + +%description -n ghc-%{pkg_name}-prof +This package provides the Haskell %{pkg_name} profiling library. + +%prep +%autosetup -n %{pkg_name}-%{version} +cp -p %{SOURCE1} %{pkg_name}.cabal + +%build +%ghc_lib_build + +%install +%ghc_lib_install + +%check +%cabal_test + +%post devel +%ghc_pkg_recache + +%postun devel +%ghc_pkg_recache + +%files -f %{name}.files +%license LICENSE + +%files devel -f %{name}-devel.files +%doc changelog + +%files -n ghc-%{pkg_name}-help -f ghc-%{pkg_name}-help.files +%license LICENSE + +%files -n ghc-%{pkg_name}-prof -f ghc-%{pkg_name}-prof.files + +%changelog +* Tue Aug 22 2023 Lin Runze <lrzlin@163.com> 0.3.7.0-1 +- Initial packaging (Version 0.3.7.0) diff --git a/scientific.cabal b/scientific.cabal new file mode 100755 index 0000000..9afaec3 --- /dev/null +++ b/scientific.cabal @@ -0,0 +1,170 @@ +name: scientific +version: 0.3.7.0 +x-revision: 5 +synopsis: Numbers represented using scientific notation +description: + "Data.Scientific" provides the number type 'Scientific'. Scientific numbers are + arbitrary precision and space efficient. They are represented using + <http://en.wikipedia.org/wiki/Scientific_notation scientific notation>. + The implementation uses a coefficient @c :: 'Integer'@ and a base-10 exponent + @e :: 'Int'@. A scientific number corresponds to the + 'Fractional' number: @'fromInteger' c * 10 '^^' e@. + . + Note that since we're using an 'Int' to represent the exponent these numbers + aren't truly arbitrary precision. I intend to change the type of the exponent + to 'Integer' in a future release. + . + The main application of 'Scientific' is to be used as the target of parsing + arbitrary precision numbers coming from an untrusted source. The advantages + over using 'Rational' for this are that: + . + * A 'Scientific' is more efficient to construct. Rational numbers need to be + constructed using '%' which has to compute the 'gcd' of the 'numerator' and + 'denominator'. + . + * 'Scientific' is safe against numbers with huge exponents. For example: + @1e1000000000 :: 'Rational'@ will fill up all space and crash your + program. Scientific works as expected: + . + >>> read "1e1000000000" :: Scientific + 1.0e1000000000 + . + * Also, the space usage of converting scientific numbers with huge exponents to + @'Integral's@ (like: 'Int') or @'RealFloat's@ (like: 'Double' or 'Float') + will always be bounded by the target type. + +homepage: https://github.com/basvandijk/scientific +bug-reports: https://github.com/basvandijk/scientific/issues +license: BSD3 +license-file: LICENSE +author: Bas van Dijk +maintainer: Bas van Dijk <v.dijk.bas@gmail.com> +category: Data +build-type: Simple +cabal-version: >=1.10 +extra-source-files: changelog +tested-with: + GHC ==7.6.3 + || ==7.8.4 + || ==7.10.3 + || ==8.0.2 + || ==8.2.2 + || ==8.4.4 + || ==8.6.5 + || ==8.8.4 + || ==8.10.7 + || ==9.0.2 + || ==9.2.6 + || ==9.4.4 + || ==9.6.1 + +source-repository head + type: git + location: git://github.com/basvandijk/scientific.git + +flag bytestring-builder + description: + Depend on the bytestring-builder package for backwards compatibility. + + default: False + manual: False + +flag integer-simple + description: Use the integer-simple package instead of integer-gmp + default: False + +library + exposed-modules: + Data.ByteString.Builder.Scientific + Data.Scientific + Data.Text.Lazy.Builder.Scientific + + other-modules: + GHC.Integer.Compat + Utils + + other-extensions: + BangPatterns + DeriveDataTypeable + Trustworthy + + ghc-options: -Wall + build-depends: + base >=4.5 && <4.19 + , binary >=0.5.1 && <0.9 + , containers >=0.4.2.1 && <0.7 + , deepseq >=1.3.0.0 && <1.5 + , hashable >=1.2.7.0 && <1.5 + , integer-logarithms >=1.0.3.1 && <1.1 + , primitive >=0.7.1.0 && <0.9 + , template-haskell >=2.8 && <2.21 + , text >=1.2.3.0 && <1.3 || >=2.0 && <2.1 + + if flag(bytestring-builder) + build-depends: + bytestring >=0.9 && <0.10.4 + , bytestring-builder >=0.10.4 && <0.11 + + else + build-depends: bytestring >=0.10.4 && <0.12 + + if impl(ghc >=9.0) + build-depends: base >=4.15 + + if flag(integer-simple) + build-depends: invalid-cabal-flag-settings <0 + + else + if flag(integer-simple) + build-depends: integer-simple + + else + build-depends: integer-gmp + + if impl(ghc <8) + other-extensions: TemplateHaskell + + if impl(ghc >= 9.0) + -- these flags may abort compilation with GHC-8.10 + -- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3295 + ghc-options: -Winferred-safe-imports -Wmissing-safe-haskell-mode + + hs-source-dirs: src + default-language: Haskell2010 + +test-suite test-scientific + type: exitcode-stdio-1.0 + hs-source-dirs: test + main-is: test.hs + default-language: Haskell2010 + ghc-options: -Wall + build-depends: + base + , binary + , QuickCheck >=2.14.2 + , scientific + , smallcheck >=1.0 + , tasty >=1.4.0.1 + , tasty-hunit >=0.8 + , tasty-quickcheck >=0.8 + , tasty-smallcheck >=0.2 + , text + + if flag(bytestring-builder) + build-depends: + bytestring + , bytestring-builder + + else + build-depends: bytestring + +benchmark bench-scientific + type: exitcode-stdio-1.0 + hs-source-dirs: bench + main-is: bench.hs + default-language: Haskell2010 + ghc-options: -O2 + build-depends: + base + , criterion >=0.5 + , scientific @@ -0,0 +1 @@ +a06f86fd0faae56f2b932a234fbc8a44 scientific-0.3.7.0.tar.gz |