forked from M-Labs/nix-scripts
55 lines
2.8 KiB
Nix
55 lines
2.8 KiB
Nix
{ 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
|
|
''
|