Skip to content

Commit 67685ca

Browse files
committed
Be stricter about URI imports
This behavior is documented, but not enforced. We redesign the 'ProjectConfigPath' type to better express the properties we expect.
1 parent c33db4a commit 67685ca

18 files changed

Lines changed: 521 additions & 453 deletions

File tree

Cabal-syntax/Cabal-syntax.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ library
3737
, directory >= 1.2 && < 1.4
3838
, filepath >= 1.3.0.1 && < 1.6
3939
, mtl >= 2.1 && < 2.4
40+
, network-uri >= 2.6.0.2 && < 2.7
4041
, parsec >= 3.1.13.0 && < 3.2
4142
, pretty >= 1.1.1 && < 1.2
4243
, text >= 2.0.2 && < 2.2
@@ -72,6 +73,7 @@ library
7273
Distribution.Compat.Lens
7374
Distribution.Compat.Newtype
7475
Distribution.Compat.NonEmptySet
76+
Distribution.Compat.Orphans
7577
Distribution.Compat.Parsing
7678
Distribution.Compat.Prelude
7779
Distribution.Compat.Semigroup
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{-# LANGUAGE BangPatterns #-}
2+
{-# OPTIONS_GHC -Wno-orphans #-}
3+
4+
module Distribution.Compat.Orphans () where
5+
6+
import Control.Exception (SomeException)
7+
import Data.Typeable (typeRep)
8+
import Distribution.Compat.Binary (Binary (..))
9+
import Distribution.Utils.Structured (Structure (Nominal), Structured (..))
10+
import Network.URI (URI (..), URIAuth (..))
11+
import Prelude (error, return)
12+
13+
-------------------------------------------------------------------------------
14+
-- network-uri
15+
-------------------------------------------------------------------------------
16+
17+
-- note, network-uri-2.6.0.3+ provide a Generic instance but earlier
18+
-- versions do not, so we use manual Binary instances here
19+
instance Binary URI where
20+
put (URI a b c d e) = do put a; put b; put c; put d; put e
21+
get = do
22+
!a <- get
23+
!b <- get
24+
!c <- get
25+
!d <- get
26+
!e <- get
27+
return (URI a b c d e)
28+
29+
instance Structured URI where
30+
structure p = Nominal (typeRep p) 0 "URI" []
31+
32+
instance Binary URIAuth where
33+
put (URIAuth a b c) = do put a; put b; put c
34+
get = do !a <- get; !b <- get; !c <- get; return (URIAuth a b c)
35+
36+
-------------------------------------------------------------------------------
37+
-- base
38+
-------------------------------------------------------------------------------
39+
40+
-- FIXME: Duncan Coutts: this is a total cheat
41+
-- Added in 46aa019ec85e313e257d122a3549cce01996c566
42+
instance Binary SomeException where
43+
put _ = return ()
44+
get = error "cannot serialise exceptions"
45+
46+
instance Structured SomeException where
47+
structure p = Nominal (typeRep p) 0 "SomeException" []

bootstrap/linux-9.10.2.json

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,26 @@
116116
"src_sha256": "a5cd52e2dd2837138523e2e24ec3435b8cf2624afd50725105e644226e0b9ec6",
117117
"version": "3.5.3.0"
118118
},
119+
{
120+
"cabal_sha256": "e83d97946f84fe492762ceb3b4753b4770c78b0b70e594078700baa91a5106c2",
121+
"component": "lib:th-compat",
122+
"flags": [],
123+
"package": "th-compat",
124+
"revision": 0,
125+
"source": "hackage",
126+
"src_sha256": "b781a0c059872bc95406d00e98f6fa7d9e81e744730f75186583cb4dcea0a4eb",
127+
"version": "0.1.6"
128+
},
129+
{
130+
"cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588",
131+
"component": "lib:network-uri",
132+
"flags": [],
133+
"package": "network-uri",
134+
"revision": 1,
135+
"source": "hackage",
136+
"src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228",
137+
"version": "2.6.4.2"
138+
},
119139
{
120140
"cabal_sha256": null,
121141
"component": "lib:Cabal-syntax",
@@ -149,13 +169,13 @@
149169
"version": "3.17"
150170
},
151171
{
152-
"cabal_sha256": "725ef6da03d3d6e332db4de0a35bee45d72e4d31decc5ec7f153e6837af5f03e",
172+
"cabal_sha256": "39b25fd929b02b01a3fe59fec7ca8b2da6f0f9e282276b7a84e63a4702c4d725",
153173
"component": "exe:hsc2hs",
154174
"flags": [
155175
"-in-ghc-tree"
156176
],
157177
"package": "hsc2hs",
158-
"revision": 4,
178+
"revision": 5,
159179
"source": "hackage",
160180
"src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76",
161181
"version": "0.68.10"
@@ -172,26 +192,6 @@
172192
"src_sha256": "68548e660632a3c09b230c33fe08cc880273372b485e65cbe7a717936de9728b",
173193
"version": "3.2.7.0"
174194
},
175-
{
176-
"cabal_sha256": "e83d97946f84fe492762ceb3b4753b4770c78b0b70e594078700baa91a5106c2",
177-
"component": "lib:th-compat",
178-
"flags": [],
179-
"package": "th-compat",
180-
"revision": 0,
181-
"source": "hackage",
182-
"src_sha256": "b781a0c059872bc95406d00e98f6fa7d9e81e744730f75186583cb4dcea0a4eb",
183-
"version": "0.1.6"
184-
},
185-
{
186-
"cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588",
187-
"component": "lib:network-uri",
188-
"flags": [],
189-
"package": "network-uri",
190-
"revision": 1,
191-
"source": "hackage",
192-
"src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228",
193-
"version": "2.6.4.2"
194-
},
195195
{
196196
"cabal_sha256": "ad36c6a1b3bc203b02751c8bffae8a684cc755661a2a567362cd4a0da1193c5e",
197197
"component": "lib:HTTP",
@@ -221,13 +221,13 @@
221221
"version": "1.5.0.0"
222222
},
223223
{
224-
"cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b",
224+
"cabal_sha256": "e2a877717968edf1e2c91312fefd4fd53f4e49b27a421f98452b29a9256cad2a",
225225
"component": "lib:async",
226226
"flags": [
227227
"-bench"
228228
],
229229
"package": "async",
230-
"revision": 3,
230+
"revision": 4,
231231
"source": "hackage",
232232
"src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7",
233233
"version": "2.2.5"
@@ -351,13 +351,13 @@
351351
"version": "0.0.5.0"
352352
},
353353
{
354-
"cabal_sha256": "8931b9ce6e63bf6202dc0c992ae3e6f2ad8e7f4b6eb69994ac6d512c6c9c0f77",
354+
"cabal_sha256": "b24ec42ce02c42a76732323c4e59414d9b5439ac5fa99304412719ba7f4c6a3f",
355355
"component": "lib:directory-ospath-streaming",
356356
"flags": [
357357
"+os-string"
358358
],
359359
"package": "directory-ospath-streaming",
360-
"revision": 0,
360+
"revision": 1,
361361
"source": "hackage",
362362
"src_sha256": "1ade8fbee13db15e8d22a1ecdca54794617cabc69911b51d46a65e12f4554ef7",
363363
"version": "0.2.2"
@@ -375,21 +375,21 @@
375375
"version": "0.1.5"
376376
},
377377
{
378-
"cabal_sha256": "a72549370449fe99e3008744ad2e43685e96bf86aa0db15898189fcbaafcd815",
378+
"cabal_sha256": "1a5ff2b64cd1bac53ea68d057631818cab6edf7108dc86e7be8ad020b2bf2580",
379379
"component": "lib:tar-internal",
380380
"flags": [],
381381
"package": "tar",
382-
"revision": 1,
382+
"revision": 4,
383383
"source": "hackage",
384384
"src_sha256": "7949a50004a80993000512079bc03ebcad4872414fc181f45b3883d743c0f3aa",
385385
"version": "0.6.4.0"
386386
},
387387
{
388-
"cabal_sha256": "a72549370449fe99e3008744ad2e43685e96bf86aa0db15898189fcbaafcd815",
388+
"cabal_sha256": "1a5ff2b64cd1bac53ea68d057631818cab6edf7108dc86e7be8ad020b2bf2580",
389389
"component": "lib:tar",
390390
"flags": [],
391391
"package": "tar",
392-
"revision": 1,
392+
"revision": 4,
393393
"source": "hackage",
394394
"src_sha256": "7949a50004a80993000512079bc03ebcad4872414fc181f45b3883d743c0f3aa",
395395
"version": "0.6.4.0"
@@ -480,6 +480,7 @@
480480
"component": "lib:cabal-install",
481481
"flags": [
482482
"-git-rev",
483+
"-legacy-comparison",
483484
"-lukko",
484485
"+native-dns"
485486
],
@@ -494,6 +495,7 @@
494495
"component": "exe:cabal",
495496
"flags": [
496497
"-git-rev",
498+
"-legacy-comparison",
497499
"-lukko",
498500
"+native-dns"
499501
],

bootstrap/linux-9.12.2.json

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,26 @@
120120
"src_sha256": "a5cd52e2dd2837138523e2e24ec3435b8cf2624afd50725105e644226e0b9ec6",
121121
"version": "3.5.3.0"
122122
},
123+
{
124+
"cabal_sha256": "e83d97946f84fe492762ceb3b4753b4770c78b0b70e594078700baa91a5106c2",
125+
"component": "lib:th-compat",
126+
"flags": [],
127+
"package": "th-compat",
128+
"revision": 0,
129+
"source": "hackage",
130+
"src_sha256": "b781a0c059872bc95406d00e98f6fa7d9e81e744730f75186583cb4dcea0a4eb",
131+
"version": "0.1.6"
132+
},
133+
{
134+
"cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588",
135+
"component": "lib:network-uri",
136+
"flags": [],
137+
"package": "network-uri",
138+
"revision": 1,
139+
"source": "hackage",
140+
"src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228",
141+
"version": "2.6.4.2"
142+
},
123143
{
124144
"cabal_sha256": null,
125145
"component": "lib:Cabal-syntax",
@@ -153,13 +173,13 @@
153173
"version": "3.17"
154174
},
155175
{
156-
"cabal_sha256": "725ef6da03d3d6e332db4de0a35bee45d72e4d31decc5ec7f153e6837af5f03e",
176+
"cabal_sha256": "39b25fd929b02b01a3fe59fec7ca8b2da6f0f9e282276b7a84e63a4702c4d725",
157177
"component": "exe:hsc2hs",
158178
"flags": [
159179
"-in-ghc-tree"
160180
],
161181
"package": "hsc2hs",
162-
"revision": 4,
182+
"revision": 5,
163183
"source": "hackage",
164184
"src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76",
165185
"version": "0.68.10"
@@ -176,26 +196,6 @@
176196
"src_sha256": "68548e660632a3c09b230c33fe08cc880273372b485e65cbe7a717936de9728b",
177197
"version": "3.2.7.0"
178198
},
179-
{
180-
"cabal_sha256": "e83d97946f84fe492762ceb3b4753b4770c78b0b70e594078700baa91a5106c2",
181-
"component": "lib:th-compat",
182-
"flags": [],
183-
"package": "th-compat",
184-
"revision": 0,
185-
"source": "hackage",
186-
"src_sha256": "b781a0c059872bc95406d00e98f6fa7d9e81e744730f75186583cb4dcea0a4eb",
187-
"version": "0.1.6"
188-
},
189-
{
190-
"cabal_sha256": "6fffb57373962b5651a2db8b0af732098b3bf029a7ced76a9855615de2026588",
191-
"component": "lib:network-uri",
192-
"flags": [],
193-
"package": "network-uri",
194-
"revision": 1,
195-
"source": "hackage",
196-
"src_sha256": "9c188973126e893250b881f20e8811dca06c223c23402b06f7a1f2e995797228",
197-
"version": "2.6.4.2"
198-
},
199199
{
200200
"cabal_sha256": "ad36c6a1b3bc203b02751c8bffae8a684cc755661a2a567362cd4a0da1193c5e",
201201
"component": "lib:HTTP",
@@ -225,13 +225,13 @@
225225
"version": "1.5.0.0"
226226
},
227227
{
228-
"cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b",
228+
"cabal_sha256": "e2a877717968edf1e2c91312fefd4fd53f4e49b27a421f98452b29a9256cad2a",
229229
"component": "lib:async",
230230
"flags": [
231231
"-bench"
232232
],
233233
"package": "async",
234-
"revision": 3,
234+
"revision": 4,
235235
"source": "hackage",
236236
"src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7",
237237
"version": "2.2.5"
@@ -355,33 +355,33 @@
355355
"version": "0.0.5.0"
356356
},
357357
{
358-
"cabal_sha256": "8931b9ce6e63bf6202dc0c992ae3e6f2ad8e7f4b6eb69994ac6d512c6c9c0f77",
358+
"cabal_sha256": "b24ec42ce02c42a76732323c4e59414d9b5439ac5fa99304412719ba7f4c6a3f",
359359
"component": "lib:directory-ospath-streaming",
360360
"flags": [
361361
"+os-string"
362362
],
363363
"package": "directory-ospath-streaming",
364-
"revision": 0,
364+
"revision": 1,
365365
"source": "hackage",
366366
"src_sha256": "1ade8fbee13db15e8d22a1ecdca54794617cabc69911b51d46a65e12f4554ef7",
367367
"version": "0.2.2"
368368
},
369369
{
370-
"cabal_sha256": "a72549370449fe99e3008744ad2e43685e96bf86aa0db15898189fcbaafcd815",
370+
"cabal_sha256": "1a5ff2b64cd1bac53ea68d057631818cab6edf7108dc86e7be8ad020b2bf2580",
371371
"component": "lib:tar-internal",
372372
"flags": [],
373373
"package": "tar",
374-
"revision": 1,
374+
"revision": 4,
375375
"source": "hackage",
376376
"src_sha256": "7949a50004a80993000512079bc03ebcad4872414fc181f45b3883d743c0f3aa",
377377
"version": "0.6.4.0"
378378
},
379379
{
380-
"cabal_sha256": "a72549370449fe99e3008744ad2e43685e96bf86aa0db15898189fcbaafcd815",
380+
"cabal_sha256": "1a5ff2b64cd1bac53ea68d057631818cab6edf7108dc86e7be8ad020b2bf2580",
381381
"component": "lib:tar",
382382
"flags": [],
383383
"package": "tar",
384-
"revision": 1,
384+
"revision": 4,
385385
"source": "hackage",
386386
"src_sha256": "7949a50004a80993000512079bc03ebcad4872414fc181f45b3883d743c0f3aa",
387387
"version": "0.6.4.0"
@@ -472,6 +472,7 @@
472472
"component": "lib:cabal-install",
473473
"flags": [
474474
"-git-rev",
475+
"-legacy-comparison",
475476
"-lukko",
476477
"+native-dns"
477478
],
@@ -486,6 +487,7 @@
486487
"component": "exe:cabal",
487488
"flags": [
488489
"-git-rev",
490+
"-legacy-comparison",
489491
"-lukko",
490492
"+native-dns"
491493
],

0 commit comments

Comments
 (0)