at v192 112 lines 4.0 kB view raw
1{ stdenv, lib, fetchFromGitHub, autoconf, automake, libtool, pkgconfig 2 3, ApplicationServices, CoreServices }: 4 5let 6 stable = "stable"; 7 unstable = "unstable"; 8 9 meta = with lib; { 10 description = "A multi-platform support library with a focus on asynchronous I/O"; 11 homepage = https://github.com/libuv/libuv; 12 maintainers = with maintainers; [ cstrahan ]; 13 platforms = with platforms; linux ++ darwin; 14 }; 15 16 mkName = stability: version: 17 if stability == stable 18 then "libuv-${version}" 19 else "libuv-${stability}-${version}"; 20 21 mkSrc = version: sha256: fetchFromGitHub { 22 owner = "libuv"; 23 repo = "libuv"; 24 rev = "v${version}"; 25 inherit sha256; 26 }; 27 28 # for versions < 0.11.6 29 mkWithoutAutotools = stability: version: sha256: stdenv.mkDerivation { 30 name = mkName stability version; 31 src = mkSrc version sha256; 32 buildPhase = lib.optionalString stdenv.isDarwin '' 33 mkdir extrapath 34 ln -s /usr/sbin/dtrace extrapath/dtrace 35 export PATH=$PATH:`pwd`/extrapath 36 '' + '' 37 mkdir build 38 make builddir_name=build 39 40 rm -r build/src 41 rm build/libuv.a 42 cp -r include build 43 44 mkdir build/lib 45 mv build/libuv.* build/lib 46 47 pushd build/lib 48 lib=$(basename libuv.*) 49 ext="''${lib##*.}" 50 mv $lib libuv.10.$ext 51 ln -s libuv.10.$ext libuv.$ext 52 popd 53 ''; 54 installPhase = '' 55 cp -r build $out 56 ''; 57 inherit meta; 58 }; 59 60 # for versions > 0.11.6 61 mkWithAutotools = stability: version: sha256: stdenv.mkDerivation { 62 name = mkName stability version; 63 src = mkSrc version sha256; 64 buildInputs = [ automake autoconf libtool pkgconfig ] 65 ++ stdenv.lib.optionals stdenv.isDarwin [ ApplicationServices CoreServices ]; 66 preConfigure = '' 67 LIBTOOLIZE=libtoolize ./autogen.sh 68 ''; 69 inherit meta; 70 }; 71 72 toVersion = with lib; name: 73 replaceChars ["_"] ["."] (removePrefix "v" name); 74 75in 76 77 with lib; 78 79 mapAttrs (v: h: mkWithoutAutotools stable (toVersion v) h) { 80 v0_10_27 = "0i00v216ha74xi374yhgmfrb4h84q2w4y1ync3y1qsngbm8irjhg"; 81 } 82 // 83 mapAttrs (v: h: mkWithAutotools unstable (toVersion v) h) { 84 # Versions >= 0.11.1 and < 0.11.6 do not build a dynamic library 85 v0_11_6 = "15h903hz6kn8j1lp1160ia7llx0ypa5ch8ygkwpmrm31p50ng8r4"; 86 v0_11_7 = "1l6hrz3g2c7qspy28inbrcd7byn2sncd42ncf4pr0ifpkkj083hh"; 87 v0_11_8 = "0aag2v7bfi7kksna0867srlqcjxn8m287bpl2j5k11d07m382zs1"; 88 v0_11_9 = "12ap0ix5ra24f30adgdr48l175vxfmh398mlilm8kdkld0dqfx24"; 89 v0_11_10 = "17mn9xbygc2jpqv4a068i57rcp585bmcalpb9jpyz1jf030lllyy"; 90 v0_11_11 = "1l06sznvd5nxzg3fqqb451g4fzygyb37apqyhyvbdb6dmklcm7xk"; 91 v0_11_12 = "1kwqd3wk06mffhglawx7b2g4yddkg5597aa5jyw2zhzwkz2z4a27"; 92 v0_11_13 = "0z30ljwgxbm120dy0i4knhj5zw6q7jcx5wi9v0v51ax6mhdgqy8a"; 93 v0_11_14 = "0bk1bchfkbyyry3d4ggv754w5fyj6qbivbd42ggcr0hq55h49iwg"; 94 v0_11_15 = "09qayz2k0337h7jbf8zs9lyxgp3ln0gq37r43wixfll7jjjkacvd"; 95 v0_11_16 = "06jrwwnliqadqgp7fn2093xxljiz8iwdyywh2yljyp4zk8r4vzis"; 96 v0_11_17 = "0i6nlxnlxwzpib0sp1191h9yymfvgwjwciiq9avcqljiklfg432r"; 97 v0_11_18 = "0jxrfxf4iq34fjgbwdrvi36hqzgph87928n4q4gchpahywf2pjxk"; 98 v0_11_19 = "16aw8jx571xxc6am4sbz17j2wb9pylv1svsmwxbczb3vd624vm32"; 99 v0_11_20 = "0r7cyzxysgcfl4h9xis050b7x8cvmrwzwh1rr545q53j0gjxvzvi"; 100 v0_11_21 = "0bxjzrlcs2f0va26i0ahvcpjbb0j66rq74smi95s6q73zl99n326"; 101 v0_11_22 = "0r6nfavsndm1dzinzzxndr2h75g33vigx21z3f7w2x7qwa8a8hpp"; 102 v0_11_23 = "01dlmpk8a4zvq6lm88bsfi7dzhl7xvma7q5ygi2x5ghdm4svki1m"; 103 v0_11_24 = "1hygn81iwbdshzrq603qm6k1r7pjflx9qqazmlb72c3vy1hq21c6"; 104 v0_11_25 = "1abszivlxf0sddwvcj3jywfsip5q9vz6axvn40qqyl8sjs80zcvj"; 105 v0_11_26 = "1pfjdwrxhqz1vqcdm42g3j45ghrb4yl7wsngvraclhgqicff1sc3"; 106 v0_11_29 = "1z07phfwryfy2155p3lxcm2a33h20sfl96lds5dghn157x6csz7m"; 107 } 108 // 109 mapAttrs (v: h: mkWithAutotools stable (toVersion v) h) { 110 v1_2_0 = "1nbp8qpgw64gl9nrjzxw0ndv1m64cfms0cy5a2883vw6877kizmx"; 111 v1_6_1 = "10w9pjbmqcv03v04rnjd8mdh886j7v4y0svdsdklz69zskgdvvqg"; 112 }