@@ -257,37 +257,38 @@ final: prev: {
257
257
'' ;
258
258
} ;
259
259
# This is very big, and cheap to build: prefer building it locally
260
- tarballRepos = final . runCommand dotCabalName { nativeBuildInputs = [ cabal-install dummy-ghc dummy-ghc-pkg ] ; preferLocalBuild = true ; } ''
260
+ tarballRepoFor = name : index : final . runCommand "tarballRepo_${ name } " {
261
+ nativeBuildInputs = [ cabal-install dummy-ghc dummy-ghc-pkg ] ;
262
+ } ''
263
+ set -xe
264
+
261
265
mkdir -p $out/.cabal
262
266
cat <<EOF > $out/.cabal/config
263
- ${ final . lib . concatStrings (
264
- final . lib . mapAttrsToList ( name : index :
265
- ''
266
267
repository ${ name }
267
268
url: file:${ mkLocalHackageRepo { inherit name index ; } }
268
269
secure: True
269
270
root-keys:
270
271
key-threshold: 0
271
272
272
- '' ) allTarballs
273
- ) }
274
273
EOF
275
274
276
275
# All repositories must be mkdir'ed before calling new-update on any repo,
277
276
# otherwise it fails.
278
- ${ final . lib . concatStrings ( map ( name : ''
279
- mkdir -p $out/.cabal/packages/${ name }
280
- '' ) ( builtins . attrNames allTarballs ) ) }
277
+ mkdir -p $out/.cabal/packages/${ name }
281
278
282
- ${ final . lib . concatStrings ( map ( name : ''
283
- HOME=$out cabal new-update ${ name }
284
- '' ) ( builtins . attrNames allTarballs ) ) }
279
+ HOME=$out cabal new-update ${ name }
285
280
'' ;
281
+ f = name : index :
282
+ let x = tarballRepoFor name index ; in
283
+ ''
284
+ ln -s ${ x } /.cabal/packages/${ name } $out/.cabal/packages/${ name }
285
+ cat ${ x } /.cabal/config >> $out/.cabal/config
286
+ '' ;
286
287
in
287
288
# Add the extra-hackage-repos where we have all the files needed.
288
289
final . runCommand dotCabalName { nativeBuildInputs = [ final . xorg . lndir ] ; } ''
289
- mkdir $out
290
- lndir ${ tarballRepos } $out
290
+ mkdir -p $out/.cabal/packages
291
+ ${ builtins . concatStringsSep " \n " ( final . lib . mapAttrsToList f allTarballs ) }
291
292
292
293
${ final . lib . concatStrings ( final . lib . mapAttrsToList ( name : repo : ''
293
294
mkdir -p $out/.cabal/packages/${ name }
0 commit comments