|
1 | | -{ stdenv, fetchurl, coursier, |
2 | | - autoPatchelfHook, |
3 | | - lib, zlib }: |
| 1 | +{ stdenv |
| 2 | +, fetchurl |
| 3 | +, coursier |
| 4 | +, autoPatchelfHook |
| 5 | +, lib |
| 6 | +, zlib |
| 7 | +}: |
4 | 8 |
|
5 | | -let |
6 | | - baseName = "bloop"; |
| 9 | +stdenv.mkDerivation rec { |
| 10 | + pname = "bloop"; |
7 | 11 | version = "1.4.1"; |
8 | 12 |
|
9 | | - client = stdenv.mkDerivation { |
10 | | - name = "${baseName}-client-${version}"; |
11 | | - |
12 | | - nativeBuildInputs = [ autoPatchelfHook ] ; |
13 | | - phases = [ "installPhase" "fixupPhase" ]; |
14 | | - buildInputs = [ stdenv.cc.cc.lib zlib] ; |
15 | | - |
16 | | - installPhase = '' |
17 | | - mkdir -p $out/bin |
18 | | - |
19 | | - export COURSIER_CACHE=$(pwd) |
20 | | - ${coursier}/bin/coursier install bloop:${version} \ |
21 | | - --repository "bintray:scalameta/maven" \ |
22 | | - --repository "bintray:scalacenter/releases" \ |
23 | | - --repository "https://oss.sonatype.org/content/repositories/staging" \ |
24 | | - --force \ |
25 | | - --install-dir $out |
26 | | - ''; |
27 | | - |
28 | | - outputHashMode = "recursive"; |
29 | | - outputHashAlgo = "sha256"; |
30 | | - outputHash = "01hgv0j0a4v8iqi638rcqdirpa30jwfp7gh7dvsk32apx003ylvb"; |
| 13 | + bloop-coursier-channel = fetchurl { |
| 14 | + url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bloop-coursier.json"; |
| 15 | + sha256 = "2e6a873183e5e22712913bfdab1331d0a7792167c369fee5be0c83e27572fe12"; |
31 | 16 | }; |
32 | 17 |
|
33 | | - server = stdenv.mkDerivation { |
34 | | - name = "${baseName}-server-${version}"; |
35 | | - buildCommand = '' |
36 | | - mkdir -p $out/bin |
| 18 | + bloop-bash = fetchurl { |
| 19 | + url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bash-completions"; |
| 20 | + sha256 = "da6b7ecd4109bd0ff98b1c452d9dd9d26eee0d28ff604f6c83fb8d3236a6bdd1"; |
| 21 | + }; |
37 | 22 |
|
38 | | - export COURSIER_CACHE=$(pwd) |
39 | | - ${coursier}/bin/coursier bootstrap ch.epfl.scala:bloop-frontend_2.12:${version} \ |
40 | | - --repository "bintray:scalameta/maven" \ |
41 | | - --repository "bintray:scalacenter/releases" \ |
42 | | - --repository "https://oss.sonatype.org/content/repositories/staging" \ |
43 | | - --deterministic \ |
44 | | - --force \ |
45 | | - --main bloop.Server \ |
46 | | - --output $out/blp-server |
47 | | - ''; |
48 | | - outputHashMode = "recursive"; |
49 | | - outputHashAlgo = "sha256"; |
50 | | - outputHash = "01kyzb374kyicm1nmx6vzz42gj8cd9m6bd5dgrajkcr6q09jfgbg"; |
| 23 | + bloop-fish = fetchurl { |
| 24 | + url = "https://github.com/scalacenter/bloop/releases/download/v${version}/fish-completions"; |
| 25 | + sha256 = "1pa8h81l2498q8dbd83fzipr99myjwxpy8xdgzhvqzdmfv6aa4m0"; |
51 | 26 | }; |
52 | 27 |
|
53 | | - zsh = stdenv.mkDerivation { |
54 | | - name = "${baseName}-zshcompletion-${version}"; |
| 28 | + bloop-zsh = fetchurl { |
| 29 | + url = "https://github.com/scalacenter/bloop/releases/download/v${version}/zsh-completions"; |
| 30 | + sha256 = "1xzg0qfkjdmzm3mvg82mc4iia8cl7b6vbl8ng4ir2xsz00zjrlsq"; |
| 31 | + }; |
55 | 32 |
|
56 | | - src = fetchurl { |
57 | | - url = "https://raw.githubusercontent.com/scalacenter/bloop/v${version}/etc/zsh/_bloop"; |
58 | | - sha256 = "1xzg0qfkjdmzm3mvg82mc4iia8cl7b6vbl8ng4ir2xsz00zjrlsq"; |
59 | | - }; |
| 33 | + bloop-coursier = stdenv.mkDerivation { |
| 34 | + name = "${pname}-coursier-${version}"; |
60 | 35 |
|
61 | 36 | phases = [ "installPhase" ]; |
| 37 | + installPhase = '' |
| 38 | + export COURSIER_CACHE=$(pwd) |
| 39 | + export COURSIER_JVM_CACHE=$(pwd) |
| 40 | +
|
| 41 | + mkdir channel |
| 42 | + ln -s ${bloop-coursier-channel} channel/bloop.json |
| 43 | + ${coursier}/bin/coursier install --install-dir $out --default-channels=false --channel channel --only-prebuilt=true bloop |
| 44 | +
|
| 45 | + # Remove binary part of the coursier launcher script to make derivation output hash stable |
| 46 | + sed -i '5,$ d' $out/bloop |
| 47 | + ''; |
62 | 48 |
|
63 | | - installPhase = ''cp $src $out''; |
| 49 | + outputHashMode = "recursive"; |
| 50 | + outputHashAlgo = "sha256"; |
| 51 | + outputHash = "17jskljn0aspvl7s2hadzjmp05blnsrxi8db8pn3lfw40da4yn79"; |
64 | 52 | }; |
65 | | -in |
66 | | -stdenv.mkDerivation { |
67 | | - name = "${baseName}-${version}"; |
68 | 53 |
|
69 | | - phases = [ "installPhase" ]; |
| 54 | + nativeBuildInputs = [ autoPatchelfHook ] ; |
| 55 | + phases = [ "installPhase" "fixupPhase" ]; |
| 56 | + buildInputs = [ stdenv.cc.cc.lib zlib ] ; |
70 | 57 |
|
71 | 58 | installPhase = '' |
| 59 | + export COURSIER_CACHE=$(pwd) |
| 60 | + export COURSIER_JVM_CACHE=$(pwd) |
| 61 | +
|
72 | 62 | mkdir -p $out/bin |
73 | | - mkdir -p $out/share/zsh/site-functions |
| 63 | + cp ${bloop-coursier}/bloop $out/bloop |
| 64 | + cp ${bloop-coursier}/.bloop.aux $out/.bloop.aux |
| 65 | + ln -s $out/bloop $out/bin/bloop |
74 | 66 |
|
75 | | - ln -s ${server}/blp-server $out/bin/blp-server |
| 67 | + # patch the bloop launcher so that it works when symlinked |
| 68 | + sed "s|\$(dirname \"\$0\")|$out|" -i $out/bloop |
76 | 69 |
|
77 | | - ln -s ${zsh} $out/share/zsh/site-functions/_bloop |
78 | | - ln -s ${client}/.bloop.aux $out/bin/bloop |
| 70 | + #Install completions |
| 71 | + mkdir -p $out/etc/bash_completion.d |
| 72 | + ln -s ${bloop-bash} $out/etc/bash_completion.d/bloop |
| 73 | + mkdir -p $out/share/zsh/site-functions |
| 74 | + ln -s ${bloop-zsh} $out/share/zsh/site-functions/_bloop |
| 75 | + mkdir -p $out/usr/share/fish/vendor_completions.d/ |
| 76 | + ln -s ${bloop-fish} $out/usr/share/fish/vendor_completions.d/bloop.fish |
79 | 77 | ''; |
80 | 78 |
|
81 | 79 | meta = with stdenv.lib; { |
|
0 commit comments