1 |
commit: 14efb6f7914eca83c7b8e5fc57a0bf3e6557179b |
2 |
Author: Jakov Smolić <jsmolic <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Aug 25 13:01:41 2022 +0000 |
4 |
Commit: Jakov Smolić <jsmolic <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Aug 25 13:01:41 2022 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=14efb6f7 |
7 |
|
8 |
dev-haskell/chaselev-deque: treeclean |
9 |
|
10 |
Closes: https://bugs.gentoo.org/860753 |
11 |
Signed-off-by: Jakov Smolić <jsmolic <AT> gentoo.org> |
12 |
|
13 |
dev-haskell/chaselev-deque/Manifest | 1 - |
14 |
.../chaselev-deque/chaselev-deque-0.5.0.5.ebuild | 38 --- |
15 |
.../bd458b66e1b28c249628e282ff42e8468646c557.patch | 281 --------------------- |
16 |
dev-haskell/chaselev-deque/metadata.xml | 18 -- |
17 |
profiles/package.mask | 1 - |
18 |
5 files changed, 339 deletions(-) |
19 |
|
20 |
diff --git a/dev-haskell/chaselev-deque/Manifest b/dev-haskell/chaselev-deque/Manifest |
21 |
deleted file mode 100644 |
22 |
index 39e79a3b1d61..000000000000 |
23 |
--- a/dev-haskell/chaselev-deque/Manifest |
24 |
+++ /dev/null |
25 |
@@ -1 +0,0 @@ |
26 |
-DIST chaselev-deque-0.5.0.5.tar.gz 12451 BLAKE2B 79ee460eb84286bbbe0dcd58431d5ab0b7aef1d0d186c2c919b566c6b169ab4069917a61e8bb800af3857c7e3cca09c6f698c6f9a6b5d8efdbdd5902a7042310 SHA512 1561208ec92d7765b126684677cab02ee71bd1f7d2cdc6f2acac065972c241d085a538e14f51c87555f464aadbac2795c64f9063075acdf29217fb2d70a47dfd |
27 |
|
28 |
diff --git a/dev-haskell/chaselev-deque/chaselev-deque-0.5.0.5.ebuild b/dev-haskell/chaselev-deque/chaselev-deque-0.5.0.5.ebuild |
29 |
deleted file mode 100644 |
30 |
index 5777bebfaf85..000000000000 |
31 |
--- a/dev-haskell/chaselev-deque/chaselev-deque-0.5.0.5.ebuild |
32 |
+++ /dev/null |
33 |
@@ -1,38 +0,0 @@ |
34 |
-# Copyright 1999-2022 Gentoo Authors |
35 |
-# Distributed under the terms of the GNU General Public License v2 |
36 |
- |
37 |
-EAPI=7 |
38 |
- |
39 |
-# ebuild generated by hackport 0.6.6.9999 |
40 |
- |
41 |
-CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite" |
42 |
-inherit haskell-cabal |
43 |
- |
44 |
-DESCRIPTION="Chase & Lev work-stealing lock-free double-ended queues (deques)" |
45 |
-HOMEPAGE="https://github.com/rrnewton/haskell-lockfree/wiki" |
46 |
-SRC_URI="https://hackage.haskell.org/package/${P}/${P}.tar.gz" |
47 |
- |
48 |
-LICENSE="BSD" |
49 |
-SLOT="0/${PV}" |
50 |
-KEYWORDS="~amd64 ~ppc64 ~x86" |
51 |
-IUSE="debug" |
52 |
- |
53 |
-PATCHES=( "${FILESDIR}/bd458b66e1b28c249628e282ff42e8468646c557.patch" ) |
54 |
- |
55 |
-RDEPEND=">=dev-haskell/abstract-deque-0.3:=[profile?] <dev-haskell/abstract-deque-0.4:=[profile?] |
56 |
- >=dev-haskell/atomic-primops-0.5.0.2:=[profile?] |
57 |
- dev-haskell/vector:=[profile?] |
58 |
- >=dev-lang/ghc-7.8.2:= |
59 |
-" |
60 |
-DEPEND="${RDEPEND} |
61 |
- >=dev-haskell/cabal-1.18.1.3 |
62 |
- test? ( >=dev-haskell/abstract-deque-tests-0.3 |
63 |
- dev-haskell/hunit |
64 |
- dev-haskell/test-framework |
65 |
- dev-haskell/test-framework-hunit ) |
66 |
-" |
67 |
- |
68 |
-src_configure() { |
69 |
- haskell-cabal_src_configure \ |
70 |
- $(cabal_flag debug debug) |
71 |
-} |
72 |
|
73 |
diff --git a/dev-haskell/chaselev-deque/files/bd458b66e1b28c249628e282ff42e8468646c557.patch b/dev-haskell/chaselev-deque/files/bd458b66e1b28c249628e282ff42e8468646c557.patch |
74 |
deleted file mode 100644 |
75 |
index 25b2b732f5dd..000000000000 |
76 |
--- a/dev-haskell/chaselev-deque/files/bd458b66e1b28c249628e282ff42e8468646c557.patch |
77 |
+++ /dev/null |
78 |
@@ -1,281 +0,0 @@ |
79 |
-From bd458b66e1b28c249628e282ff42e8468646c557 Mon Sep 17 00:00:00 2001 |
80 |
-From: Ryan Scott <ryan.gl.scott@×××××.com> |
81 |
-Date: Mon, 24 Feb 2020 10:22:38 -0500 |
82 |
-Subject: [PATCH] Import unsafeCoerce# from GHC.Exts, not GHC.Prim |
83 |
- |
84 |
-`atomic-primops` and `chaselev-deque` fail to build on GHC HEAD |
85 |
-(8.11) since `unsafeCoerce#` can no longer be imported from |
86 |
-`GHC.Prim` (see |
87 |
-https://gitlab.haskell.org/ghc/ghc/commit/74ad75e87317196c600dfabc61aee1b87d95c214). |
88 |
-Luckily, `GHC.Exts` provides a backwards-compatible way to import |
89 |
-`unsafeCoerce#`, so we can simply import it from there instead. |
90 |
- |
91 |
-diff --git a/CHANGELOG.md a/CHANGELOG.md |
92 |
-new file mode 100644 |
93 |
-index 0000000..c0a4b4b |
94 |
---- /dev/null |
95 |
-+++ a/CHANGELOG.md |
96 |
-@@ -0,0 +1,25 @@ |
97 |
-+## next [????.??.??] |
98 |
-+* Allow building with `base-4.15`. |
99 |
-+ |
100 |
-+## 0.5.0.4 |
101 |
-+* bugfix |
102 |
-+ |
103 |
-+## 0.5.0.3 |
104 |
-+* minor bump to change abstract-deque dep. |
105 |
-+ |
106 |
-+## 0.5.0.2 |
107 |
-+* bump to go along with MAJOR bugfix in atomic-primops 0.5.0.2 |
108 |
-+ |
109 |
-+## 0.4 |
110 |
-+* bump to go along with atomic-primops 0.4 |
111 |
-+ |
112 |
-+## 0.3 |
113 |
-+* bump to go along with atomic-primops 0.3 |
114 |
-+ |
115 |
-+## 0.1.3 |
116 |
-+* small release to fix version deps before atomic-primops api change |
117 |
-+ |
118 |
-+## 0.1.2 |
119 |
-+ |
120 |
-+## 0.1.1 |
121 |
-+* bump for fixing bugs! First release candidate. |
122 |
-diff --git a/Data/Concurrent/Deque/ChaseLev.hs a/Data/Concurrent/Deque/ChaseLev.hs |
123 |
-index 7ec2ff0..baf0843 100644 |
124 |
---- a/Data/Concurrent/Deque/ChaseLev.hs |
125 |
-+++ a/Data/Concurrent/Deque/ChaseLev.hs |
126 |
-@@ -39,8 +39,7 @@ import Data.Atomics.Counter |
127 |
- import System.IO.Unsafe (unsafePerformIO) |
128 |
- import Text.Printf (printf) |
129 |
- import System.Mem.StableName (makeStableName, hashStableName) |
130 |
--import GHC.Exts (Int(I#)) |
131 |
--import GHC.Prim (reallyUnsafePtrEquality#, unsafeCoerce#) |
132 |
-+import GHC.Exts (Int(I#), reallyUnsafePtrEquality#, unsafeCoerce#) |
133 |
- |
134 |
- -------------------------------------------------------------------------------- |
135 |
- -- Instances |
136 |
-diff --git a/Data/Concurrent/Deque/ChaseLevUnboxed.hs a/Data/Concurrent/Deque/ChaseLevUnboxed.hs |
137 |
-index 2817f7a..e1d2fe5 100644 |
138 |
---- a/Data/Concurrent/Deque/ChaseLevUnboxed.hs |
139 |
-+++ a/Data/Concurrent/Deque/ChaseLevUnboxed.hs |
140 |
-@@ -3,7 +3,7 @@ |
141 |
- -- TEMPORARY: An experiment in duplicating ChaseLev.hs to support unboxed queue contents. |
142 |
- |
143 |
- -- | Chase-Lev work stealing Deques |
144 |
---- |
145 |
-+-- |
146 |
- -- This implementation derives directly from the pseudocode in the 2005 SPAA paper: |
147 |
- -- |
148 |
- -- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf |
149 |
-@@ -15,7 +15,7 @@ module Data.Concurrent.Deque.ChaseLevUnboxed |
150 |
- -- The convention here is to directly provide the concrete |
151 |
- -- operations as well as providing the class instances. |
152 |
- ChaseLevDeque(), newQ, nullQ, pushL, tryPopL, tryPopR, |
153 |
-- approxSize, |
154 |
-+ approxSize, |
155 |
- dbgInspectCLD |
156 |
- ) |
157 |
- where |
158 |
-@@ -41,14 +41,13 @@ import Data.Atomics.Counter |
159 |
- import System.IO.Unsafe (unsafePerformIO) |
160 |
- import Text.Printf (printf) |
161 |
- import System.Mem.StableName (makeStableName, hashStableName) |
162 |
--import GHC.Exts (Int(I#)) |
163 |
--import GHC.Prim (reallyUnsafePtrEquality#, unsafeCoerce#) |
164 |
-+import GHC.Exts (Int(I#), reallyUnsafePtrEquality#, unsafeCoerce#) |
165 |
- |
166 |
- -------------------------------------------------------------------------------- |
167 |
- -- Instances |
168 |
- |
169 |
- {- |
170 |
--instance PC.DequeClass ChaseLevDeque where |
171 |
-+instance PC.DequeClass ChaseLevDeque where |
172 |
- newQ = newQ |
173 |
- nullQ = nullQ |
174 |
- pushL = pushL |
175 |
-@@ -57,7 +56,7 @@ instance PC.DequeClass ChaseLevDeque where |
176 |
- leftThreadSafe _ = False |
177 |
- rightThreadSafe _ = True |
178 |
- |
179 |
--instance PC.PopL ChaseLevDeque where |
180 |
-+instance PC.PopL ChaseLevDeque where |
181 |
- tryPopL = tryPopL |
182 |
- -} |
183 |
- |
184 |
-@@ -93,7 +92,7 @@ dbgInspectCLD CLD{top,bottom,activeArr} = do |
185 |
- | isInfixOf "uninitialised element" (show e) -> return "<uninit>" |
186 |
- | otherwise -> return$ "<"++ show e ++">" |
187 |
- Right val' -> return (show val') |
188 |
-- |
189 |
-+ |
190 |
- |
191 |
- |
192 |
- -------------------------------------------------------------------------------- |
193 |
-@@ -108,7 +107,7 @@ dbgInspectCLD CLD{top,bottom,activeArr} = do |
194 |
- {-# INLINE slc #-} |
195 |
- #ifndef DEBUGCL |
196 |
- dbg = False |
197 |
--nu a = MV.unsafeNew a |
198 |
-+nu a = MV.unsafeNew a |
199 |
- rd a b = MV.unsafeRead a b |
200 |
- wr a b c = MV.unsafeWrite a b c |
201 |
- slc a b c = MV.unsafeSlice a b c |
202 |
-@@ -116,13 +115,13 @@ cpy a b = MV.unsafeCopy a b |
203 |
- #else |
204 |
- #warning "Activating DEBUGCL!" |
205 |
- dbg = True |
206 |
--nu a = MV.new a |
207 |
-+nu a = MV.new a |
208 |
- rd a b = MV.read a b |
209 |
- wr a b c = MV.write a b c |
210 |
- slc a b c = MV.slice a b c |
211 |
- cpy a b = MV.copy a b |
212 |
- -- Temp, debugging: Our own bounds checking, better error: |
213 |
---- wr v i x = |
214 |
-+-- wr v i x = |
215 |
- -- if i >= MV.length v |
216 |
- -- then error (printf "ERROR: Out of bounds of top of vector index %d, vec length %d\n" i (MV.length v)) |
217 |
- -- else MV.write v i x |
218 |
-@@ -131,8 +130,8 @@ cpy a b = MV.copy a b |
219 |
- |
220 |
- #ifdef DEBUGCL |
221 |
- -- This simply localizes exceptions better: |
222 |
--tryit msg action = Control.Exception.catch action |
223 |
-- (\e -> do putStrLn$ "ERROR inside "++msg++" "++ show e |
224 |
-+tryit msg action = Control.Exception.catch action |
225 |
-+ (\e -> do putStrLn$ "ERROR inside "++msg++" "++ show e |
226 |
- throw (e::SomeException)) |
227 |
- #else |
228 |
- {-# INLINE tryit #-} |
229 |
-@@ -145,9 +144,9 @@ tryit msg action = action |
230 |
- |
231 |
- -- TODO: make a "grow" that uses memcpy. |
232 |
- growCirc :: V.Unbox a => Int -> Int -> MV.IOVector a -> IO (MV.IOVector a) |
233 |
--growCirc !strt !end !oldarr = do |
234 |
-+growCirc !strt !end !oldarr = do |
235 |
- -- let len = MV.length oldarr |
236 |
-- -- strtmod = strt`mod` len |
237 |
-+ -- strtmod = strt`mod` len |
238 |
- -- endmod = end `mod` len |
239 |
- -- newarr <- nu (len + len) |
240 |
- -- if endmod < strtmod then do |
241 |
-@@ -165,7 +164,7 @@ growCirc !strt !end !oldarr = do |
242 |
- -- return newarr |
243 |
- ---------------------------------------- |
244 |
- -- Easier version first: |
245 |
-- ---------------------------------------- |
246 |
-+ ---------------------------------------- |
247 |
- let len = MV.length oldarr |
248 |
- elems = end - strt |
249 |
- when dbg $ putStrLn$ "Grow to size "++show (len+len)++", copying over "++show elems |
250 |
-@@ -176,8 +175,8 @@ growCirc !strt !end !oldarr = do |
251 |
- ++" had only initialized "++show elems++" elems: " |
252 |
- ++show(strt`mod`(len+len),end`mod`(len+len)))) |
253 |
- -- Strictly matches what's in the paper: |
254 |
-- for_ strt end $ \ind -> do |
255 |
-- x <- getCirc oldarr ind |
256 |
-+ for_ strt end $ \ind -> do |
257 |
-+ x <- getCirc oldarr ind |
258 |
- evaluate x |
259 |
- putCirc newarr ind x |
260 |
- return $! newarr |
261 |
-@@ -206,7 +205,7 @@ copyOffset !from !to !iFrom !iTo !len = |
262 |
- newQ :: V.Unbox elt => IO (ChaseLevDeque elt) |
263 |
- newQ = do |
264 |
- -- Arbitrary Knob: We start as size 32 and double from there: |
265 |
-- v <- MV.new 32 |
266 |
-+ v <- MV.new 32 |
267 |
- r1 <- newCounter 0 |
268 |
- r2 <- newCounter 0 |
269 |
- r3 <- newIORef v |
270 |
-@@ -217,8 +216,8 @@ nullQ :: ChaseLevDeque elt -> IO Bool |
271 |
- nullQ CLD{top,bottom} = do |
272 |
- -- This should get a LOWER bound on size at some point in logic time, right? |
273 |
- b <- readCounter bottom |
274 |
-- t <- readCounter top |
275 |
-- let size = b - t |
276 |
-+ t <- readCounter top |
277 |
-+ let size = b - t |
278 |
- return $! size <= 0 |
279 |
- |
280 |
- {-# INLINE approxSize #-} |
281 |
-@@ -226,7 +225,7 @@ nullQ CLD{top,bottom} = do |
282 |
- approxSize :: ChaseLevDeque elt -> IO Int |
283 |
- approxSize CLD{top,bottom} = do |
284 |
- b <- readCounter bottom |
285 |
-- t <- readCounter top |
286 |
-+ t <- readCounter top |
287 |
- return $! b - t |
288 |
- |
289 |
- {-# INLINE pushL #-} |
290 |
-@@ -237,12 +236,12 @@ pushL CLD{top,bottom,activeArr} obj = tryit "pushL" $ do |
291 |
- b <- readCounter bottom |
292 |
- t <- readCounter top |
293 |
- arr <- readIORef activeArr |
294 |
-- let len = MV.length arr |
295 |
-+ let len = MV.length arr |
296 |
- size = b - t |
297 |
- |
298 |
- -- when (dbg && size < 0) $ error$ "pushL: INVARIANT BREAKAGE - bottom, top: "++ show (b,t) |
299 |
- |
300 |
-- arr' <- if (size >= len - 1) then do |
301 |
-+ arr' <- if (size >= len - 1) then do |
302 |
- arr' <- growCirc t b arr -- Double in size, don't change b/t. |
303 |
- -- Only a single thread will do this!: |
304 |
- writeIORef activeArr arr' |
305 |
-@@ -268,7 +267,7 @@ pushL CLD{top,bottom,activeArr} obj = tryit "pushL" $ do |
306 |
- tryPopR :: V.Unbox elt => ChaseLevDeque elt -> IO (Maybe elt) |
307 |
- tryPopR CLD{top,bottom,activeArr} = tryit "tryPopR" $ do |
308 |
- -- NB. these loads must be ordered, otherwise there is a race |
309 |
-- -- between steal and pop. |
310 |
-+ -- between steal and pop. |
311 |
- tt <- readCounterForCAS top |
312 |
- loadLoadBarrier |
313 |
- b <- readCounter bottom |
314 |
-@@ -277,14 +276,14 @@ tryPopR CLD{top,bottom,activeArr} = tryit "tryPopR" $ do |
315 |
- |
316 |
- let t = peekCTicket tt |
317 |
- size = b - t |
318 |
-- if size <= 0 then |
319 |
-+ if size <= 0 then |
320 |
- return Nothing |
321 |
-- else do |
322 |
-+ else do |
323 |
- obj <- getCirc arr t |
324 |
- (b,_) <- casCounter top tt (t+1) |
325 |
-- if b then |
326 |
-+ if b then |
327 |
- return $! Just obj |
328 |
-- else |
329 |
-+ else |
330 |
- return Nothing -- Someone beat us, abort |
331 |
- |
332 |
- {-# INLINE tryPopL #-} |
333 |
-@@ -298,14 +297,14 @@ tryPopL CLD{top,bottom,activeArr} = tryit "tryPopL" $ do |
334 |
- -- very important that the following read of q->top does not occur |
335 |
- -- before the earlier write to q->bottom. |
336 |
- storeLoadBarrier |
337 |
-- |
338 |
-+ |
339 |
- tt <- readCounterForCAS top |
340 |
- -- when (dbg && b < t) $ error$ "tryPopL: INVARIANT BREAKAGE - bottom < top: "++ show (b,t) |
341 |
- |
342 |
- let t = peekCTicket tt |
343 |
-- size = b - t |
344 |
-+ size = b - t |
345 |
- if size < 0 then do |
346 |
-- writeCounter bottom t |
347 |
-+ writeCounter bottom t |
348 |
- return Nothing |
349 |
- else do |
350 |
- obj <- getCirc arr b |
351 |
-@@ -315,7 +314,7 @@ tryPopL CLD{top,bottom,activeArr} = tryit "tryPopL" $ do |
352 |
- (b,ol) <- casCounter top tt (t+1) |
353 |
- writeCounter bottom (t+1) |
354 |
- if b then return $! Just obj |
355 |
-- else return $ Nothing |
356 |
-+ else return $ Nothing |
357 |
- |
358 |
- ------------------------------------------------------------ |
359 |
- |
360 |
|
361 |
diff --git a/dev-haskell/chaselev-deque/metadata.xml b/dev-haskell/chaselev-deque/metadata.xml |
362 |
deleted file mode 100644 |
363 |
index 6ea644ec8df6..000000000000 |
364 |
--- a/dev-haskell/chaselev-deque/metadata.xml |
365 |
+++ /dev/null |
366 |
@@ -1,18 +0,0 @@ |
367 |
-<?xml version="1.0" encoding="UTF-8"?> |
368 |
-<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> |
369 |
-<pkgmetadata> |
370 |
- <maintainer type="project"> |
371 |
- <email>haskell@g.o</email> |
372 |
- <name>Gentoo Haskell</name> |
373 |
- </maintainer> |
374 |
- <use> |
375 |
- <flag name="debug">Enable the extra internal checks.</flag> |
376 |
- </use> |
377 |
- <longdescription> |
378 |
- A queue that is push/pop on one end and pop-only on the other. These are commonly |
379 |
- used for work-stealing. |
380 |
- This implementation derives directly from the pseudocode in the 2005 SPAA paper: |
381 |
- |
382 |
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf |
383 |
- </longdescription> |
384 |
-</pkgmetadata> |
385 |
|
386 |
diff --git a/profiles/package.mask b/profiles/package.mask |
387 |
index 47163c0f5786..f420bd921b28 100644 |
388 |
--- a/profiles/package.mask |
389 |
+++ b/profiles/package.mask |
390 |
@@ -305,7 +305,6 @@ dev-python/aioredis |
391 |
# Last-rite for removal in 30 days. Has no reverse dependencies |
392 |
# and is unmaintained upstream. |
393 |
dev-haskell/bytestring-handle |
394 |
-dev-haskell/chaselev-deque |
395 |
|
396 |
# Marek Szuba <marecki@g.o> (2022-07-13) |
397 |
# Upstream has switched from CMake to hand-crafted Makefiles (yes, TO them), |