about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/ghcjs/ghcjs-boot.nix
blob: c00e13a9240490b3c89bf554db032d4a5e810c2a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{ runCommand, src }:

# we remove the patches so ghcjs-boot doesn't try to apply them again.
runCommand "${src.name}-patched" {} ''
  cp -r ${src} $out
  chmod -R +w $out

  # Make the patches be relative their corresponding package's directory.
  # See: https://github.com/ghcjs/ghcjs-boot/pull/12
  for patch in $out/patches/*.patch; do
    echo ">> fixing patch: $patch"
    sed -i -e 's@ \(a\|b\)/boot/[^/]\+@ \1@g' $patch
  done

  for package in $(cd $out/boot; echo *); do
    patch=$out/patches/$package.patch
    if [[ -e $patch ]]; then
      echo ">> patching package: $package"
      pushd $out/boot/$package
      patch -p1 < $patch
      rm $patch
      popd
    fi
  done
''