SHA256
1
0
forked from pool/ghc-psqueues

osc copypac from project:devel:languages:haskell:ghc-8.10.x package:ghc-psqueues revision:2, using keep-link

OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc-psqueues?expand=0&rev=1
This commit is contained in:
Peter Simons 2020-06-16 10:57:21 +00:00 committed by Git OBS Bridge
commit 62c8476d8c
6 changed files with 308 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

5
ghc-psqueues.changes Normal file
View File

@ -0,0 +1,5 @@
-------------------------------------------------------------------
Tue Jun 9 09:27:56 UTC 2020 - psimons@suse.com
- Add psqueues at version 0.2.7.2.

118
ghc-psqueues.spec Normal file
View File

@ -0,0 +1,118 @@
#
# spec file for package ghc-psqueues
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global pkg_name psqueues
%bcond_with tests
Name: ghc-%{pkg_name}
Version: 0.2.7.2
Release: 0
Summary: Pure priority search queues
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/1.cabal#/%{pkg_name}.cabal
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-deepseq-devel
BuildRequires: ghc-hashable-devel
BuildRequires: ghc-rpm-macros
%if %{with tests}
BuildRequires: ghc-HUnit-devel
BuildRequires: ghc-QuickCheck-devel
BuildRequires: ghc-array-devel
BuildRequires: ghc-tagged-devel
BuildRequires: ghc-tasty-devel
BuildRequires: ghc-tasty-hunit-devel
BuildRequires: ghc-tasty-quickcheck-devel
%endif
%description
The psqueues package provides <http://en.wikipedia.org/wiki/Priority_queue
Priority Search Queues> in three different flavors.
* 'OrdPSQ k p v', which uses the 'Ord k' instance to provide fast insertion,
deletion and lookup. This implementation is based on Ralf Hinze's
<http://citeseer.ist.psu.edu/hinze01simple.html A Simple Implementation
Technique for Priority Search Queues>. Hence, it is similar to the
<http://hackage.haskell.org/package/PSQueue PSQueue> library, although it is
considerably faster and provides a slightly different API.
* 'IntPSQ p v' is a far more efficient implementation. It fixes the key type to
'Int' and uses a <http://en.wikipedia.org/wiki/Radix_tree radix tree> (like
'IntMap') with an additional min-heap property.
* 'HashPSQ k p v' is a fairly straightforward extension of 'IntPSQ': it simply
uses the keys' hashes as indices in the 'IntPSQ'. If there are any hash
collisions, it uses an 'OrdPSQ' to resolve those. The performance of this
implementation is comparable to that of 'IntPSQ', but it is more widely
applicable since the keys are not restricted to 'Int', but rather to any
'Hashable' datatype.
Each of the three implementations provides the same API, so they can be used
interchangeably. The benchmarks show how they perform relative to one another,
and also compared to the other Priority Search Queue implementations on
Hackage: <http://hackage.haskell.org/package/PSQueue PSQueue> and
<http://hackage.haskell.org/package/fingertree-psqueue fingertree-psqueue>.
<<http://i.imgur.com/KmbDKR6.png>>
<<http://i.imgur.com/ClT181D.png>>
Typical applications of Priority Search Queues include:
* Caches, and more specifically LRU Caches;
* Schedulers;
* Pathfinding algorithms, such as Dijkstra's and A*.
%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.
%prep
%setup -q -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
%changelog

3
psqueues-0.2.7.2.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:26263b555d943f9b18bbebda6a090848fdba3c1b403a9b7c848f6bac99e893f9
size 27455

158
psqueues.cabal Normal file
View File

@ -0,0 +1,158 @@
Name: psqueues
Version: 0.2.7.2
x-revision: 1
License: BSD3
License-file: LICENSE
Maintainer: Jasper Van der Jeugt <jaspervdj@gmail.com>
Bug-reports: https://github.com/jaspervdj/psqueues/issues
Synopsis: Pure priority search queues
Category: Data Structures
Build-type: Simple
Cabal-version: >=1.8
Description:
The psqueues package provides
<http://en.wikipedia.org/wiki/Priority_queue Priority Search Queues> in
three different flavors.
.
* @OrdPSQ k p v@, which uses the @Ord k@ instance to provide fast insertion,
deletion and lookup. This implementation is based on Ralf Hinze's
<http://citeseer.ist.psu.edu/hinze01simple.html A Simple Implementation Technique for Priority Search Queues>.
Hence, it is similar to the
<http://hackage.haskell.org/package/PSQueue PSQueue> library, although it is
considerably faster and provides a slightly different API.
.
* @IntPSQ p v@ is a far more efficient implementation. It fixes the key type
to @Int@ and uses a <http://en.wikipedia.org/wiki/Radix_tree radix tree>
(like @IntMap@) with an additional min-heap property.
.
* @HashPSQ k p v@ is a fairly straightforward extension of @IntPSQ@: it
simply uses the keys' hashes as indices in the @IntPSQ@. If there are any
hash collisions, it uses an @OrdPSQ@ to resolve those. The performance of
this implementation is comparable to that of @IntPSQ@, but it is more widely
applicable since the keys are not restricted to @Int@, but rather to any
@Hashable@ datatype.
.
Each of the three implementations provides the same API, so they can be used
interchangeably. The benchmarks show how they perform relative to one
another, and also compared to the other Priority Search Queue
implementations on Hackage:
<http://hackage.haskell.org/package/PSQueue PSQueue>
and
<http://hackage.haskell.org/package/fingertree-psqueue fingertree-psqueue>.
.
<<http://i.imgur.com/KmbDKR6.png>>
.
<<http://i.imgur.com/ClT181D.png>>
.
Typical applications of Priority Search Queues include:
.
* Caches, and more specifically LRU Caches;
.
* Schedulers;
.
* Pathfinding algorithms, such as Dijkstra's and A*.
Extra-source-files:
CHANGELOG
Source-repository head
type: git
location: http://github.com/jaspervdj/psqueues.git
Library
Ghc-options: -O2 -Wall
Hs-source-dirs: src
other-extensions: CPP, Safe, Trustworthy
Build-depends:
base >= 4.2 && < 5
, deepseq >= 1.2 && < 1.5
, hashable >= 1.1.2.3 && < 1.4
if impl(ghc>=6.10)
Build-depends: ghc-prim
Exposed-modules:
Data.HashPSQ
Data.IntPSQ
Data.OrdPSQ
Other-modules:
Data.BitUtil
Data.HashPSQ.Internal
Data.IntPSQ.Internal
Data.OrdPSQ.Internal
Benchmark psqueues-benchmarks
Type: exitcode-stdio-1.0
Hs-source-dirs: src benchmarks
Main-is: Main.hs
Ghc-options: -Wall
Other-modules:
BenchmarkTypes
Data.BitUtil
Data.FingerTree.PSQueue.Benchmark
Data.HashPSQ
Data.HashPSQ.Benchmark
Data.HashPSQ.Internal
Data.IntPSQ
Data.IntPSQ.Benchmark
Data.IntPSQ.Internal
Data.OrdPSQ
Data.OrdPSQ.Benchmark
Data.OrdPSQ.Internal
Data.PSQueue.Benchmark
Build-depends:
containers >= 0.5
, unordered-containers >= 0.2.4
, criterion >= 0.8
, mtl >= 2.1
, fingertree-psqueue >= 0.3
, PSQueue >= 1.1
, random >= 1.0
, base
, deepseq
, ghc-prim
, hashable
, psqueues
Test-suite psqueues-tests
Cpp-options: -DTESTING -DSTRICT
Ghc-options: -Wall
Hs-source-dirs: src tests
Main-is: Main.hs
Type: exitcode-stdio-1.0
Other-modules:
Data.BitUtil
Data.HashPSQ
Data.HashPSQ.Internal
Data.HashPSQ.Tests
Data.IntPSQ
Data.IntPSQ.Internal
Data.IntPSQ.Tests
Data.OrdPSQ
Data.OrdPSQ.Internal
Data.OrdPSQ.Tests
Data.PSQ.Class
Data.PSQ.Class.Gen
Data.PSQ.Class.Tests
Data.PSQ.Class.Util
Build-depends:
HUnit >= 1.2 && < 1.7
, QuickCheck >= 2.7 && < 2.14
, tasty >= 1.2 && < 1.3
, tasty-hunit >= 0.9 && < 0.11
, tasty-quickcheck >= 0.8 && < 0.11
, base
, array
, deepseq
, ghc-prim
, hashable
, psqueues
, tagged