{ pkgs, version, src, target }: let wfvm = import ../wfvm.nix { inherit pkgs; }; libiconv-filename = "libiconv-1.15-h1df5818_7.tar.bz2"; libiconv = pkgs.fetchurl { url = "https://anaconda.org/anaconda/libiconv/1.15/download/win-64/${libiconv-filename}"; sha256 = "0p431madykrjmi9sbl2sy9kzb0l3vhgs677i8q7cx8g210ab5g52"; }; vc14-filename = "vc-14.1-h0510ff6_4.tar.bz2"; vc14 = pkgs.fetchurl { url = "https://anaconda.org/anaconda/vc/14.1/download/win-64/${vc14-filename}"; sha256 = "0nsyxph667x8ky1nybakpnk816dkrzbf1684jd7pp6wm5x73p34v"; }; vs2015_runtime-filename = "vs2015_runtime-14.16.27012-hf0eaf9b_2.tar.bz2"; vs2015_runtime = pkgs.fetchurl { url = "https://anaconda.org/anaconda/vs2015_runtime/14.16.27012/download/win-64/${vs2015_runtime-filename}"; sha256 = "1gbm6i6nkp8linmak5mm42hj1nzqd5ppak8kv1n3wfn52p21ngvs"; }; build = wfvm.utils.wfvm-run { name = "build-binutils"; image = wfvm.makeWindowsImage { installCommands = with wfvm.layers; [ anaconda3 msys2 (msys2-packages (import ./msys_packages.nix { inherit pkgs; } )) ]; }; script = '' # Create a fake channel to work around another pile of bugs and cretinous design decisions from conda. ${wfvm.utils.win-exec}/bin/win-exec "mkdir fake-channel && mkdir fake-channel\win-64" ln -s ${libiconv} ${libiconv-filename} ${wfvm.utils.win-put}/bin/win-put ${libiconv-filename} ./fake-channel/win-64 ln -s ${vc14} ${vc14-filename} ${wfvm.utils.win-put}/bin/win-put ${vc14-filename} ./fake-channel/win-64 ln -s ${vs2015_runtime} ${vs2015_runtime-filename} ${wfvm.utils.win-put}/bin/win-put ${vs2015_runtime-filename} ./fake-channel/win-64 ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda index fake-channel" cp --no-preserve=mode,ownership -R ${./binutils-recipe} binutils sed -i s/##TARGET##/${target}/g binutils/* sed -i s/##VERSION##/${version}/g binutils/* ${wfvm.utils.win-put}/bin/win-put binutils . tar xjf ${src} patch -d binutils-${version} -p1 < ${./binutils-hack-libiconv.patch} tar cjf src.tar.bz2 binutils-${version} ${wfvm.utils.win-put}/bin/win-put src.tar.bz2 . ${wfvm.utils.win-exec}/bin/win-exec ".\Anaconda3\scripts\activate && conda build --no-anaconda-upload --no-test -c file:///C:/users/wfvm/fake-channel --override-channels binutils" ${wfvm.utils.win-get}/bin/win-get "Anaconda3/conda-bld/win-64/binutils-${target}-${version}-0.tar.bz2" ''; }; in pkgs.runCommand "conda-windows-binutils-${target}" { buildInputs = [ build ]; } '' wfvm-run-build-binutils mkdir -p $out/win-64 $out/nix-support cp binutils-*.tar.bz2 $out/win-64 echo file conda $out/win-64/*.tar.bz2 >> $out/nix-support/hydra-build-products ''