@@ -211,37 +211,38 @@ final: prev: {
211
211
# dotCabalName anyway.
212
212
dotCabalName = "dot-cabal-" + allNames ;
213
213
# This is very big, and cheap to build: prefer building it locally
214
- tarballRepos = final . runCommand dotCabalName { nativeBuildInputs = [ cabal-install ] ; preferLocalBuild = true ; } ''
214
+ tarballRepoFor = name : index : final . runCommand "tarballRepo_${ name } " {
215
+ nativeBuildInputs = [ cabal-install ] ;
216
+ } ''
217
+ set -xe
218
+
215
219
mkdir -p $out/.cabal
216
220
cat <<EOF > $out/.cabal/config
217
- ${ final . lib . concatStrings (
218
- final . lib . mapAttrsToList ( name : index :
219
- ''
220
221
repository ${ name }
221
222
url: file:${ mkLocalHackageRepo { inherit name index ; } }
222
223
secure: True
223
224
root-keys:
224
225
key-threshold: 0
225
226
226
- '' ) allTarballs
227
- ) }
228
227
EOF
229
228
230
229
# All repositories must be mkdir'ed before calling new-update on any repo,
231
230
# otherwise it fails.
232
- ${ final . lib . concatStrings ( map ( name : ''
233
- mkdir -p $out/.cabal/packages/${ name }
234
- '' ) ( builtins . attrNames allTarballs ) ) }
231
+ mkdir -p $out/.cabal/packages/${ name }
235
232
236
- ${ final . lib . concatStrings ( map ( name : ''
237
- HOME=$out cabal new-update ${ name }
238
- '' ) ( builtins . attrNames allTarballs ) ) }
233
+ HOME=$out cabal new-update ${ name }
239
234
'' ;
235
+ f = name : index :
236
+ let x = tarballRepoFor name index ; in
237
+ ''
238
+ ln -s ${ x } /.cabal/packages/${ name } $out/.cabal/packages/${ name }
239
+ cat ${ x } /.cabal/config >> $out/.cabal/config
240
+ '' ;
240
241
in
241
242
# Add the extra-hackage-repos where we have all the files needed.
242
243
final . runCommand dotCabalName { nativeBuildInputs = [ final . xorg . lndir ] ; } ''
243
- mkdir $out
244
- lndir ${ tarballRepos } $out
244
+ mkdir -p $out/.cabal/packages
245
+ ${ builtins . concatStringsSep " \n " ( final . lib . mapAttrsToList f allTarballs ) }
245
246
246
247
${ final . lib . concatStrings ( final . lib . mapAttrsToList ( name : repo : ''
247
248
mkdir -p $out/.cabal/packages/${ name }
0 commit comments