diff options
Diffstat (limited to 'pkgs/development/tools')
35 files changed, 682 insertions, 42 deletions
diff --git a/pkgs/development/tools/analysis/checkstyle/default.nix b/pkgs/development/tools/analysis/checkstyle/default.nix index 91037588552c9..6043e2d289d7f 100644 --- a/pkgs/development/tools/analysis/checkstyle/default.nix +++ b/pkgs/development/tools/analysis/checkstyle/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { - version = "6.19"; + version = "8.8"; name = "checkstyle-${version}"; src = fetchurl { url = "mirror://sourceforge/checkstyle/${name}-bin.tar.gz"; - sha256 = "0x899i5yamwyhv7wgii80fv5hl8bdq0b8wlx1f789l85ik8rjwk9"; + sha256 = "0yawd6mbz6cqj0qlrh01vy33p30f4s3pfrvsxwg5l11p416zzrz4"; }; installPhase = '' diff --git a/pkgs/development/tools/analysis/cppcheck/default.nix b/pkgs/development/tools/analysis/cppcheck/default.nix index 97bd0d6e3dff8..02f44f4bf7047 100644 --- a/pkgs/development/tools/analysis/cppcheck/default.nix +++ b/pkgs/development/tools/analysis/cppcheck/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { pname = "cppcheck"; - version = "1.80"; + version = "1.82"; name = "${pname}-${version}"; src = fetchurl { url = "mirror://sourceforge/${pname}/${name}.tar.bz2"; - sha256 = "1yx06yhkqlv9849ns7p97mj09gm9j7xc51q7yvzkk8ldvx4d4h88"; + sha256 = "0kk9injrxbv4mmmjswrh1kidal6l0sdzbp40kv8vwf5aiv8jjaz0"; }; buildInputs = [ pcre ]; diff --git a/pkgs/development/tools/analysis/include-what-you-use/default.nix b/pkgs/development/tools/analysis/include-what-you-use/default.nix index f2481013fbbd5..ec4d19423e6d5 100644 --- a/pkgs/development/tools/analysis/include-what-you-use/default.nix +++ b/pkgs/development/tools/analysis/include-what-you-use/default.nix @@ -29,6 +29,6 @@ stdenv.mkDerivation rec { ''; homepage = http://include-what-you-use.org; license = licenses.bsd3; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/development/tools/analysis/spin/default.nix b/pkgs/development/tools/analysis/spin/default.nix index 284bf26782feb..1be5655b1e533 100644 --- a/pkgs/development/tools/analysis/spin/default.nix +++ b/pkgs/development/tools/analysis/spin/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, makeWrapper, yacc, gcc +{ stdenv, lib, requireFile, makeWrapper, yacc, gcc , withISpin ? true, tk, swarm, graphviz }: let @@ -7,12 +7,17 @@ let in stdenv.mkDerivation rec { name = "spin-${version}"; - version = "6.4.7"; + version = "6.4.8"; url-version = stdenv.lib.replaceChars ["."] [""] version; - src = fetchurl { - url = "http://spinroot.com/spin/Src/spin${url-version}.tar.gz"; - sha256 = "17m2xaag0jns8hsa4466zxq35ylg9fnzynzvjjmx4ympbiil6mqv"; + src = requireFile { + name = "spin${url-version}.tar.gz"; + sha256 = "1rpazi5fj772121cn7r85fxypmaiv0x6x2l82b5y1xqzyf0fi4ph"; + message = '' + reCAPTCHA is preventing us to download the file for you. + Please download it at http://spinroot.com/spin/Src/index.html + and add it to the nix-store using nix-prefetch-url. + ''; }; nativeBuildInputs = [ makeWrapper ]; @@ -20,6 +25,12 @@ in stdenv.mkDerivation rec { sourceRoot = "Spin/Src${version}"; + unpackPhase = '' + # The archive is compressed twice + gunzip -c $src > spin.tar.gz + tar -xzf spin.tar.gz + ''; + installPhase = '' install -Dm755 spin $out/bin/spin wrapProgram $out/bin/spin \ diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix index 158de9226c69a..d1320960f39ad 100644 --- a/pkgs/development/tools/apktool/default.nix +++ b/pkgs/development/tools/apktool/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { name = "apktool-${version}"; - version = "2.3.0"; + version = "2.3.1"; src = fetchurl { urls = [ "https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_${version}.jar" "https://github.com/iBotPeaches/Apktool/releases/download/v${version}/apktool_${version}.jar" ]; - sha256 = "b724c158ec99dbad723024e259fd73e5135c40d652a3c599cec6ade9264a568e"; + sha256 = "01xj2hivwwp3msvv0psxyxrzg95vj2ny56l3n90glhwznn7l60ai"; }; phases = [ "installPhase" ]; diff --git a/pkgs/development/tools/build-managers/bazel/0.4.nix b/pkgs/development/tools/build-managers/bazel/0.4.nix index d131232e96d90..7fa39ef216278 100644 --- a/pkgs/development/tools/build-managers/bazel/0.4.nix +++ b/pkgs/development/tools/build-managers/bazel/0.4.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { description = "Build tool that builds code quickly and reliably"; license = licenses.asl20; maintainers = with maintainers; [ cstrahan philandstuff ]; - platforms = platforms.unix; + platforms = platforms.linux; }; name = "bazel-${version}"; diff --git a/pkgs/development/tools/build-managers/conan/default.nix b/pkgs/development/tools/build-managers/conan/default.nix index 4a2afbeedfe6f..6350798e1086e 100644 --- a/pkgs/development/tools/build-managers/conan/default.nix +++ b/pkgs/development/tools/build-managers/conan/default.nix @@ -1,26 +1,28 @@ { lib, buildPythonApplication, fetchPypi , requests, fasteners, pyyaml, pyjwt, colorama, patch -, bottle, pluginbase, six, distro, pylint, node-semver +, bottle, pluginbase, six, distro11, pylint, node-semver2 , future, pygments, mccabe +, fetchpatch }: buildPythonApplication rec { - version = "0.28.1"; + version = "1.1.1"; pname = "conan"; src = fetchPypi { inherit pname version; - sha256 = "0zf564iqh0099yd779f9fgk21qyp87d7cmgfj34hmncf8y3qh32a"; + sha256 = "1k1r401bc9fgmhd5n5f29mjcn346r3zdrm7p28nwpr2r2p3fslrl"; }; propagatedBuildInputs = [ requests fasteners pyyaml pyjwt colorama patch - bottle pluginbase six distro pylint node-semver + bottle pluginbase six distro11 pylint node-semver2 future pygments mccabe ]; # enable tests once all of these pythonPackages available: # [ nose nose_parameterized mock webtest codecov ] + # update 2018-03-11: only nose_parameterized is missing doCheck = false; meta = with lib; { diff --git a/pkgs/development/tools/build-managers/doit/default.nix b/pkgs/development/tools/build-managers/doit/default.nix index 200ec6429a797..aeeb4dbd7798c 100644 --- a/pkgs/development/tools/build-managers/doit/default.nix +++ b/pkgs/development/tools/build-managers/doit/default.nix @@ -3,14 +3,14 @@ let name = "doit"; - version = "0.30.3"; + version = "0.31.0"; in python3Packages.buildPythonApplication { name = "${name}-${version}"; src = fetchurl { url = "mirror://pypi/d/${name}/${name}-${version}.tar.gz"; - sha256 = "1fcsslc3mc4bszq5xdqbxv37720s1s31d6pbfwc2iyxk1x2wi219"; + sha256 = "0v1yr04bfqnz3sp261np3zhf0y1b3a1daxc83iq308lscf39fdgx"; }; buildInputs = with python3Packages; [ mock pytest ]; diff --git a/pkgs/development/tools/documentation/gtk-doc/default.nix b/pkgs/development/tools/documentation/gtk-doc/default.nix index a176c5cb76454..5414abff66ae4 100644 --- a/pkgs/development/tools/documentation/gtk-doc/default.nix +++ b/pkgs/development/tools/documentation/gtk-doc/default.nix @@ -1,13 +1,17 @@ { stdenv, fetchurl, autoreconfHook, pkgconfig, perl, python, libxml2Python, libxslt, which , docbook_xml_dtd_43, docbook_xsl, gnome-doc-utils, dblatex, gettext, itstool }: +let + pythonEnv = python.withPackages (ps: with ps; [ six ]); +in + stdenv.mkDerivation rec { name = "gtk-doc-${version}"; - version = "1.25"; + version = "1.27"; src = fetchurl { url = "mirror://gnome/sources/gtk-doc/${version}/${name}.tar.xz"; - sha256 = "0hpxcij9xx9ny3gs9p0iz4r8zslw8wqymbyababiyl7603a6x90y"; + sha256 = "0vwsdl61nvnmqswlz5j9m4hg7qirhazwcikcnqf9nx0c13vx6sz2"; }; patches = [ @@ -18,7 +22,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ autoreconfHook ]; buildInputs = - [ pkgconfig perl python libxml2Python libxslt docbook_xml_dtd_43 docbook_xsl + [ pkgconfig perl pythonEnv libxml2Python libxslt docbook_xml_dtd_43 docbook_xsl gnome-doc-utils dblatex gettext which itstool ]; diff --git a/pkgs/development/tools/flyway/default.nix b/pkgs/development/tools/flyway/default.nix index 11e2c6d2c5a44..43026e55e7f34 100644 --- a/pkgs/development/tools/flyway/default.nix +++ b/pkgs/development/tools/flyway/default.nix @@ -23,7 +23,7 @@ description = "Evolve your Database Schema easily and reliably across all your instances"; homepage = "https://flywaydb.org/"; license = licenses.asl20; - platforms = platforms.linux; + platforms = platforms.unix; maintainers = [ maintainers.cmcdragonkai ]; }; } diff --git a/pkgs/development/tools/fmbt/default.nix b/pkgs/development/tools/fmbt/default.nix new file mode 100644 index 0000000000000..11880213bada4 --- /dev/null +++ b/pkgs/development/tools/fmbt/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchFromGitHub, python, autoreconfHook, pkgconfig, makeWrapper +, flex +, gettext, libedit, glib, imagemagick, libxml2, boost, gnuplot, graphviz +, tesseract, gts, libXtst +}: +stdenv.mkDerivation rec { + version = "0.39"; + name = "fMBT-${version}"; + + src = fetchFromGitHub { + owner = "intel"; + repo = "fMBT"; + rev = "v${version}"; + sha256 = "15sxwdcsjybq50vkla4md2ay8m67ndc4vwcsl5vwsjkim5qlxslb"; + }; + + nativeBuildInputs = [ autoreconfHook pkgconfig flex makeWrapper + python.pkgs.wrapPython ]; + + buildInputs = [ python gettext libedit glib imagemagick libxml2 boost + gnuplot graphviz tesseract gts + ]; + + propagatedBuildInputs = with python.pkgs; [ + pyside pydbus pexpect pysideShiboken + ]; + + preBuild = '' + export PYTHONPATH="$PYTHONPATH:$out/lib/python${python.pythonVersion}/site-packages" + export PATH="$PATH:$out/bin" + export LD_LIBRARY_PATH="${stdenv.lib.makeLibraryPath [libXtst]}" + ''; + + postInstall = '' + echo -e '#! ${stdenv.shell}\npython "$@"' > "$out/bin/fmbt-python" + chmod a+x "$out/bin/fmbt-python" + patchShebangs "$out/bin" + for i in "$out"/bin/*; do + wrapProgram "$i" --suffix "PATH" ":" "$PATH" \ + --suffix "PYTHONPATH" ":" "$PYTHONPATH" \ + --suffix "LD_LIBRARY_PATH" ":" "$LD_LIBRARY_PATH" + done + ''; + + meta = with stdenv.lib; { + description = "Free Model-Based Testing tool"; + homepage = "https://github.com/intel/fMBT"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = with maintainers; [ raskin ]; + }; +} + diff --git a/pkgs/development/tools/gauge/default.nix b/pkgs/development/tools/gauge/default.nix index f1533f551b2ea..58bc24e1ec64d 100644 --- a/pkgs/development/tools/gauge/default.nix +++ b/pkgs/development/tools/gauge/default.nix @@ -2,15 +2,16 @@ buildGoPackage rec { name = "gauge-${version}"; - version = "0.9.6"; + version = "0.9.7"; goPackagePath = "github.com/getgauge/gauge"; + excludedPackages = ''\(build\|man\)''; src = fetchFromGitHub { owner = "getgauge"; repo = "gauge"; rev = "v${version}"; - sha256 = "0p2bnrzgx616jbyr9h4h9azaq7ry63z4qkwgy0ivwrpmhfqfqwmh"; + sha256 = "09afsi97yxlqwmrxvihravqvz17m7y402gbw4hvdk0iixa6jpq6a"; }; meta = with stdenv.lib; { diff --git a/pkgs/development/tools/gllvm/default.nix b/pkgs/development/tools/gllvm/default.nix new file mode 100644 index 0000000000000..58ee7699b4599 --- /dev/null +++ b/pkgs/development/tools/gllvm/default.nix @@ -0,0 +1,22 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "gllvm-${version}"; + version = "2018-02-09"; + + goPackagePath = "github.com/SRI-CSL/gllvm"; + + src = fetchFromGitHub { + owner = "SRI-CSL"; + repo = "gllvm"; + rev = "ef83222afd22452dd1277329df227a326db9f84f"; + sha256 = "068mc8q7jmpjzh6pr0ygvv39mh4k7vz0dmiacxf3pdsigy3d1y1a"; + }; + + meta = with stdenv.lib; { + homepage = https://github.com/SRI-CSL/gllvm; + description = "Whole Program LLVM: wllvm ported to go"; + license = licenses.bsd3; + maintainers = with maintainers; [ dtzWill ]; + }; +} diff --git a/pkgs/development/tools/go-langserver/default.nix b/pkgs/development/tools/go-langserver/default.nix new file mode 100644 index 0000000000000..84efaf2a4b635 --- /dev/null +++ b/pkgs/development/tools/go-langserver/default.nix @@ -0,0 +1,25 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "go-langserver-${version}"; + version = "unstable-2018-03-05"; + rev = "5d7a5dd74738978d635f709669241f164c120ebd"; + + goPackagePath = "github.com/sourcegraph/go-langserver"; + subPackages = [ "." ]; + + src = fetchFromGitHub { + inherit rev; + owner = "sourcegraph"; + repo = "go-langserver"; + sha256 = "0aih0akk3wk3332znkhr2bzxcc3parijq7n089mdahnf20k69xyz"; + }; + + meta = with stdenv.lib; { + description = "A Go language server protocol server"; + homepage = https://github.com/sourcegraph/go-langserver; + license = licenses.mit; + maintainers = with maintainers; [ johnchildren ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix index a259fd7d76bae..2bcf13f1337df 100644 --- a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix +++ b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix @@ -8,8 +8,8 @@ mkDerivation { src = fetchFromGitHub { owner = "haskell-CI"; repo = "haskell-ci"; - rev = "36b2ee58b9fd160d606608832625b2b6c32aec43"; - sha256 = "16g99jh5bszvfvb7mmyhl95mkf1l3ydyax8d9py91hi3m8r0c2x0"; + rev = "a4962f1478089654d138da7a3807dfcf2cef4284"; + sha256 = "1qwknajabxcfz5w5g0yn30r8p0180wxp7pncr6nwfhszlhay0vb7"; }; isLibrary = true; isExecutable = true; diff --git a/pkgs/development/tools/icestorm/default.nix b/pkgs/development/tools/icestorm/default.nix index 0307027faa2eb..b277957efa937 100644 --- a/pkgs/development/tools/icestorm/default.nix +++ b/pkgs/development/tools/icestorm/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "icestorm-${version}"; - version = "2018.02.14"; + version = "2018.03.07"; src = fetchFromGitHub { owner = "cliffordwolf"; repo = "icestorm"; - rev = "edbf5fce90ff0e71922a54241a1aec914cc3e230"; - sha256 = "01d6xv5c4x8w8lamc8n3vnqsyn7ykhh1ws7k96d6ij5fs52k94xb"; + rev = "535fde63613eccfeb7e5aad8ff97fbfb652a33b6"; + sha256 = "1j2p961k1fsq1xq8fnrv0hpwrb948q12jkb479zmrfk61w6la0df"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/development/tools/json2hcl/default.nix b/pkgs/development/tools/json2hcl/default.nix new file mode 100644 index 0000000000000..d53b39021339d --- /dev/null +++ b/pkgs/development/tools/json2hcl/default.nix @@ -0,0 +1,25 @@ +{ stdenv, lib, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + pname = "json2hcl"; + name = "${pname}-${version}"; + version = "0.0.6"; + + src = fetchFromGitHub { + inherit owner; + repo = pname; + rev = "v${version}"; + sha256 = "0knil88n2w41w3nzqz6ljgfjkl5r3x0bh7ifqgiyf6sin3pl4pn0"; + }; + + owner = "kvz"; + goPackagePath = "github.com/${owner}/${pname}"; + goDeps = ./deps.nix; + + meta = with lib; { + description = "Convert JSON to HCL, and vice versa"; + license = with licenses; [ mit ]; + maintainers = [ maintainers.matthewbauer ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/development/tools/json2hcl/deps.nix b/pkgs/development/tools/json2hcl/deps.nix new file mode 100644 index 0000000000000..bb9df28ad87f3 --- /dev/null +++ b/pkgs/development/tools/json2hcl/deps.nix @@ -0,0 +1,20 @@ +[ + { + goPackagePath = "github.com/Acconut/hcl"; + fetch = { + type = "git"; + url = "https://github.com/Acconut/hcl"; + rev = "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8"; + sha256 = "0db4lpqb5m130rmfy3s3gjjf4dxllypmyrzxv6ggqhkmwmc7w4mc"; + }; + } + { + goPackagePath = "github.com/hashicorp/hcl"; + fetch = { + type = "git"; + url = "https://github.com/hashicorp/hcl"; + rev = "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8"; + sha256 = "0db4lpqb5m130rmfy3s3gjjf4dxllypmyrzxv6ggqhkmwmc7w4mc"; + }; + } +] diff --git a/pkgs/development/tools/misc/gdb/darwin-target-match.patch b/pkgs/development/tools/misc/gdb/darwin-target-match.patch new file mode 100644 index 0000000000000..1328d919503ae --- /dev/null +++ b/pkgs/development/tools/misc/gdb/darwin-target-match.patch @@ -0,0 +1,11 @@ +--- a/configure 2017-06-05 00:51:26.000000000 +0900 ++++ b/configure 2018-03-06 23:12:58.000000000 +0900 +@@ -3603,7 +3603,7 @@ + noconfigdirs="$noconfigdirs ld gprof" + noconfigdirs="$noconfigdirs sim target-rda" + ;; +- x86_64-*-darwin[912]*) ++ x86_64-*-darwin*) + noconfigdirs="$noconfigdirs ld gas gprof" + noconfigdirs="$noconfigdirs sim target-rda" + ;; diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix index e068b908caf42..b5840d0746686 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/development/tools/misc/gdb/default.nix @@ -35,7 +35,8 @@ stdenv.mkDerivation rec { sha256 = "0d2bpqk58fqlx21rbnk8mbcjlggzc9kb5sjirrfrrrjq70ka0qdg"; }; - patches = [ ./debug-info-from-env.patch ]; + patches = [ ./debug-info-from-env.patch ] + ++ stdenv.lib.optional stdenv.isDarwin ./darwin-target-match.patch; nativeBuildInputs = [ pkgconfig texinfo perl setupDebugInfoDirs ] # TODO(@Ericson2314) not sure if should be host or target diff --git a/pkgs/development/tools/misc/global/default.nix b/pkgs/development/tools/misc/global/default.nix index 35126c85d3fef..296d9673d8f15 100644 --- a/pkgs/development/tools/misc/global/default.nix +++ b/pkgs/development/tools/misc/global/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "global-${version}"; - version = "6.5.7"; + version = "6.6.2"; src = fetchurl { url = "mirror://gnu/global/${name}.tar.gz"; - sha256 = "0cnd7a7d1pl46yk15q6mnr9i9w3xi8pxgchw4ia9njgr4jjqzh6r"; + sha256 = "0zvi5vxwiq0dy8mq2cgs64m8harxs0fvkmsnvi0ayb0w608lgij3"; }; nativeBuildInputs = [ libtool makeWrapper ]; diff --git a/pkgs/development/tools/misc/travis/Gemfile b/pkgs/development/tools/misc/travis/Gemfile index d52f576be243a..788341de3fa68 100644 --- a/pkgs/development/tools/misc/travis/Gemfile +++ b/pkgs/development/tools/misc/travis/Gemfile @@ -1,3 +1,3 @@ source "https://rubygems.org" -gem "travis" +gem "travis", "1.8.8" diff --git a/pkgs/development/tools/misc/travis/Gemfile.lock b/pkgs/development/tools/misc/travis/Gemfile.lock index 529be07936056..a1c8332a3d448 100644 --- a/pkgs/development/tools/misc/travis/Gemfile.lock +++ b/pkgs/development/tools/misc/travis/Gemfile.lock @@ -45,7 +45,7 @@ PLATFORMS ruby DEPENDENCIES - travis + travis (= 1.8.8) BUNDLED WITH - 1.14.4 + 1.14.6 diff --git a/pkgs/development/tools/misc/travis/default.nix b/pkgs/development/tools/misc/travis/default.nix index a520c4deb3422..b5c5740e80ff4 100644 --- a/pkgs/development/tools/misc/travis/default.nix +++ b/pkgs/development/tools/misc/travis/default.nix @@ -1,5 +1,10 @@ { lib, bundlerEnv, ruby }: +# Maintainer notes for updating +# 1. increment version number in Gemfile +# 2. run $ nix-shell --command "bundler install && bundix" +# in the travis directory in nixpkgs + bundlerEnv { inherit ruby; pname = "travis"; diff --git a/pkgs/development/tools/misc/travis/gemset.nix b/pkgs/development/tools/misc/travis/gemset.nix index 148923848beb0..c9a54bd324c2a 100644 --- a/pkgs/development/tools/misc/travis/gemset.nix +++ b/pkgs/development/tools/misc/travis/gemset.nix @@ -16,6 +16,7 @@ version = "3.6.8"; }; ethon = { + dependencies = ["ffi"]; source = { remotes = ["https://rubygems.org"]; sha256 = "1i873cvma4j52xmij7kasjylh66vf60cy5prkp4cz4hcn9jlkznl"; @@ -24,6 +25,7 @@ version = "0.10.1"; }; faraday = { + dependencies = ["multipart-post"]; source = { remotes = ["https://rubygems.org"]; sha256 = "18p1csdivgwmshfw3mb698a3bn0yrykg30khk5qxjf6n168g91jr"; @@ -32,6 +34,7 @@ version = "0.11.0"; }; faraday_middleware = { + dependencies = ["faraday"]; source = { remotes = ["https://rubygems.org"]; sha256 = "0bcarc90brm1y68bl957w483bddsy9idj2gghqnysk6bbxpsvm00"; @@ -48,6 +51,7 @@ version = "1.9.18"; }; gh = { + dependencies = ["addressable" "backports" "faraday" "multi_json" "net-http-persistent" "net-http-pipeline"]; source = { remotes = ["https://rubygems.org"]; sha256 = "0g4df0jsscq16g6f27flfmvk7p4sbq81d5mdylbz4ikqq60kywzg"; @@ -72,6 +76,7 @@ version = "2.0.3"; }; launchy = { + dependencies = ["addressable"]; source = { remotes = ["https://rubygems.org"]; sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2"; @@ -112,6 +117,7 @@ version = "1.0.1"; }; pusher-client = { + dependencies = ["json" "websocket"]; source = { remotes = ["https://rubygems.org"]; sha256 = "18ymxz34gmg7jff3h0nyzp5vdg5i06dbdxlrdl2nq4hf14qwj1f4"; @@ -120,6 +126,7 @@ version = "0.6.2"; }; travis = { + dependencies = ["backports" "faraday" "faraday_middleware" "gh" "highline" "launchy" "pusher-client" "typhoeus"]; source = { remotes = ["https://rubygems.org"]; sha256 = "02bjz73f6r9b7nskwzcvcbr4hlvgwrf9rnr6d218d2i1rk4ww936"; @@ -128,6 +135,7 @@ version = "1.8.8"; }; typhoeus = { + dependencies = ["ethon"]; source = { remotes = ["https://rubygems.org"]; sha256 = "03x3fxjsnhgayl4s96h0a9975awlvx2v9nmx2ba0cnliglyczdr8"; diff --git a/pkgs/development/tools/misc/travis/shell.nix b/pkgs/development/tools/misc/travis/shell.nix new file mode 100644 index 0000000000000..ddcf493bb4682 --- /dev/null +++ b/pkgs/development/tools/misc/travis/shell.nix @@ -0,0 +1,11 @@ +# Env to update Gemfile.lock / gemset.nix + +with import <nixpkgs> {}; +stdenv.mkDerivation { + name = "env"; + buildInputs = [ + ruby.devEnv + gnumake + bundix + ]; +} diff --git a/pkgs/development/tools/mypy/default.nix b/pkgs/development/tools/mypy/default.nix index f06f9c6828c8d..7e8725745c2e3 100644 --- a/pkgs/development/tools/mypy/default.nix +++ b/pkgs/development/tools/mypy/default.nix @@ -2,14 +2,14 @@ buildPythonApplication rec { pname = "mypy"; - version = "0.560"; + version = "0.570"; # Tests not included in pip package. doCheck = false; src = fetchPypi { inherit pname version; - sha256 = "1jja0xlwqajxzab8sabiycax8060zikg89dnl9a7lkqcrwprl35x"; + sha256 = "09cz0h4d6xcdqlchw080nkjlwki3mgjrlvfnj5hxxwi3cgv9imw3"; }; propagatedBuildInputs = [ lxml typed-ast psutil ]; diff --git a/pkgs/development/tools/parsing/jshon/default.nix b/pkgs/development/tools/parsing/jshon/default.nix index 5406b4e9a0e53..359daad2d517c 100644 --- a/pkgs/development/tools/parsing/jshon/default.nix +++ b/pkgs/development/tools/parsing/jshon/default.nix @@ -1,10 +1,10 @@ { stdenv, lib, fetchFromGitHub, fetchpatch, jansson }: stdenv.mkDerivation rec { - name = "jshon-20140712"; + name = "jshon-20160111.2"; rev = "a61d7f2f85f4627bc3facdf951746f0fd62334b7"; - sha256 = "b0365e58553b9613a5636545c5bfd4ad05ab5024f192e1cb1d1824bae4e1a380"; + sha256 = "1053w7jbl90q3p5y34pi4i8an1ddsjzwaib5cfji75ivamc5wdmh"; src = fetchFromGitHub { inherit rev sha256; diff --git a/pkgs/development/tools/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix index 554a5585f150e..d5671b974f593 100644 --- a/pkgs/development/tools/selenium/chromedriver/default.nix +++ b/pkgs/development/tools/selenium/chromedriver/default.nix @@ -6,7 +6,7 @@ let allSpecs = { "x86_64-linux" = { system = "linux64"; - sha256 = "13iyz6579yw4fk9dr4nf2pdj55v1iflj8yf9a4zz7qw5996d5yk7"; + sha256 = "1m119kbsr6gm8a37q92rflp5mp3fjzw8cy4r5j4bnihkai7khq94"; }; "x86_64-darwin" = { @@ -28,7 +28,7 @@ let in stdenv.mkDerivation rec { name = "chromedriver-${version}"; - version = "2.35"; + version = "2.36"; src = fetchurl { url = "http://chromedriver.storage.googleapis.com/${version}/chromedriver_${spec.system}.zip"; diff --git a/pkgs/development/tools/yarn2nix/bin/yarn2nix.js b/pkgs/development/tools/yarn2nix/bin/yarn2nix.js new file mode 100755 index 0000000000000..3eadea559032f --- /dev/null +++ b/pkgs/development/tools/yarn2nix/bin/yarn2nix.js @@ -0,0 +1,144 @@ +#!/usr/bin/env node +"use strict"; + +const crypto = require('crypto'); +const fs = require("fs"); +const https = require("https"); +const path = require("path"); +const util = require("util"); + +const lockfile = require("@yarnpkg/lockfile") +const docopt = require("docopt").docopt; + +//////////////////////////////////////////////////////////////////////////////// + +const USAGE = ` +Usage: yarn2nix [options] + +Options: + -h --help Shows this help. + --no-nix Hide the nix output + --no-patch Don't patch the lockfile if hashes are missing + --lockfile=FILE Specify path to the lockfile [default: ./yarn.lock]. +` + +const HEAD = ` +{fetchurl, linkFarm}: rec { + offline_cache = linkFarm "offline" packages; + packages = [ +`.trim(); + +//////////////////////////////////////////////////////////////////////////////// + +function generateNix(lockedDependencies) { + let found = {}; + + console.log(HEAD) + + for (var depRange in lockedDependencies) { + let dep = lockedDependencies[depRange]; + + let depRangeParts = depRange.split('@'); + let [url, sha1] = dep["resolved"].split("#"); + let file_name = path.basename(url) + + if (found.hasOwnProperty(file_name)) { + continue; + } else { + found[file_name] = null; + } + + + console.log(` + { + name = "${file_name}"; + path = fetchurl { + name = "${file_name}"; + url = "${url}"; + sha1 = "${sha1}"; + }; + }`) + } + + console.log(" ];") + console.log("}") +} + + +function getSha1(url) { + return new Promise((resolve, reject) => { + https.get(url, (res) => { + const { statusCode } = res; + const hash = crypto.createHash('sha1'); + if (statusCode !== 200) { + const err = new Error('Request Failed.\n' + + `Status Code: ${statusCode}`); + // consume response data to free up memory + res.resume(); + reject(err); + } + + res.on('data', (chunk) => { hash.update(chunk); }); + res.on('end', () => { resolve(hash.digest('hex')) }); + res.on('error', reject); + }); + }); +}; + +function updateResolvedSha1(pkg) { + // local dependency + if (!pkg.resolved) { return Promise.resolve(); } + let [url, sha1] = pkg.resolved.split("#", 2) + if (!sha1) { + return new Promise((resolve, reject) => { + getSha1(url).then(sha1 => { + pkg.resolved = `${url}#${sha1}`; + resolve(); + }).catch(reject); + }); + } else { + // nothing to do + return Promise.resolve(); + }; +} + +function values(obj) { + var entries = []; + for (let key in obj) { + entries.push(obj[key]); + } + return entries; +} + +//////////////////////////////////////////////////////////////////////////////// +// Main +//////////////////////////////////////////////////////////////////////////////// + +var options = docopt(USAGE); + +let data = fs.readFileSync(options['--lockfile'], 'utf8') +let json = lockfile.parse(data) +if (json.type != "success") { + throw new Error("yarn.lock parse error") +} + +// Check fore missing hashes in the yarn.lock and patch if necessary +var pkgs = values(json.object); +Promise.all(pkgs.map(updateResolvedSha1)).then(() => { + let newData = lockfile.stringify(json.object); + + if (newData != data) { + console.error("found changes in the lockfile", options["--lockfile"]); + + if (options["--no-patch"]) { + console.error("...aborting"); + process.exit(1); + } + + fs.writeFileSync(options['--lockfile'], newData); + } + + if (!options['--no-nix']) { + generateNix(json.object); + } +}) diff --git a/pkgs/development/tools/yarn2nix/default.nix b/pkgs/development/tools/yarn2nix/default.nix new file mode 100644 index 0000000000000..e86c0aac2c994 --- /dev/null +++ b/pkgs/development/tools/yarn2nix/default.nix @@ -0,0 +1,199 @@ +{ stdenv, lib, fetchurl, linkFarm, runCommand, nodejs, yarn }: + +let + unlessNull = item: alt: + if item == null then alt else item; + + yarn2nix = mkYarnPackage { + src = ./.; + yarnNix = ./yarn.nix; + + passthru = { + inherit + defaultYarnFlags + linkNodeModulesHook + mkYarnModules + mkYarnNix + mkYarnPackage + # Export yarn again to make it easier to find out which yarn was used. + yarn + ; + }; + + meta = with lib; { + description = "generate nix expressions from a yarn.lock file"; + homepage = "https://github.com/moretea/yarn2nix"; + license = licenses.gpl3; + maintainers = with maintainers; [ manveru zimbatm ]; + }; + }; + + # Generates the yarn.nix from the yarn.lock file + mkYarnNix = yarnLock: + runCommand "yarn.nix" {} + "${yarn2nix}/bin/yarn2nix --lockfile ${yarnLock} --no-patch > $out"; + + # Loads the generated offline cache. This will be used by yarn as + # the package source. + importOfflineCache = yarnNix: + let + pkg = import yarnNix { inherit fetchurl linkFarm; }; + in + pkg.offline_cache; + + defaultYarnFlags = [ + "--offline" + "--frozen-lockfile" + "--ignore-engines" + "--ignore-scripts" + ]; + + mkYarnModules = { + name, + packageJSON, + yarnLock, + yarnNix ? mkYarnNix yarnLock, + yarnFlags ? defaultYarnFlags, + pkgConfig ? {}, + preBuild ? "", + }: + let + offlineCache = importOfflineCache yarnNix; + extraBuildInputs = (lib.flatten (builtins.map (key: + pkgConfig.${key} . buildInputs or [] + ) (builtins.attrNames pkgConfig))); + postInstall = (builtins.map (key: + if (pkgConfig.${key} ? postInstall) then + '' + for f in $(find -L -path '*/node_modules/${key}' -type d); do + (cd "$f" && (${pkgConfig.${key}.postInstall})) + done + '' + else + "" + ) (builtins.attrNames pkgConfig)); + in + stdenv.mkDerivation { + inherit name preBuild; + phases = ["configurePhase" "buildPhase"]; + buildInputs = [ yarn nodejs ] ++ extraBuildInputs; + + configurePhase = '' + # Yarn writes cache directories etc to $HOME. + export HOME=$PWD/yarn_home + ''; + + buildPhase = '' + runHook preBuild + + cp ${packageJSON} ./package.json + cp ${yarnLock} ./yarn.lock + chmod +w ./yarn.lock + + yarn config --offline set yarn-offline-mirror ${offlineCache} + + # Do not look up in the registry, but in the offline cache. + # TODO: Ask upstream to fix this mess. + sed -i -E 's|^(\s*resolved\s*")https?://.*/|\1|' yarn.lock + yarn install ${lib.escapeShellArgs yarnFlags} + + ${lib.concatStringsSep "\n" postInstall} + + mkdir $out + mv node_modules $out/ + patchShebangs $out + ''; + }; + + # This can be used as a shellHook in mkYarnPackage. It brings the built node_modules into + # the shell-hook environment. + linkNodeModulesHook = '' + if [[ -d node_modules || -L node_modules ]]; then + echo "./node_modules is present. Replacing." + rm -rf node_modules + fi + + ln -s "$node_modules" node_modules + ''; + + mkYarnPackage = { + name ? null, + src, + packageJSON ? src + "/package.json", + yarnLock ? src + "/yarn.lock", + yarnNix ? mkYarnNix yarnLock, + yarnFlags ? defaultYarnFlags, + yarnPreBuild ? "", + pkgConfig ? {}, + extraBuildInputs ? [], + publishBinsFor ? null, + ... + }@attrs: + let + package = lib.importJSON packageJSON; + pname = package.name; + version = package.version; + deps = mkYarnModules { + name = "${pname}-modules-${version}"; + preBuild = yarnPreBuild; + inherit packageJSON yarnLock yarnNix yarnFlags pkgConfig; + }; + publishBinsFor_ = unlessNull publishBinsFor [pname]; + in stdenv.mkDerivation (builtins.removeAttrs attrs ["pkgConfig"] // { + inherit src; + + name = unlessNull name "${pname}-${version}"; + + buildInputs = [ yarn nodejs ] ++ extraBuildInputs; + + node_modules = deps + "/node_modules"; + + configurePhase = attrs.configurePhase or '' + runHook preConfigure + + if [ -d npm-packages-offline-cache ]; then + echo "npm-pacakges-offline-cache dir present. Removing." + rm -rf npm-packages-offline-cache + fi + + if [[ -d node_modules || -L node_modules ]]; then + echo "./node_modules is present. Removing." + rm -rf node_modules + fi + + mkdir -p node_modules + ln -s $node_modules/* node_modules/ + ln -s $node_modules/.bin node_modules/ + + if [ -d node_modules/${pname} ]; then + echo "Error! There is already an ${pname} package in the top level node_modules dir!" + exit 1 + fi + + runHook postConfigure + ''; + + # Replace this phase on frontend packages where only the generated + # files are an interesting output. + installPhase = attrs.installPhase or '' + runHook preInstall + + mkdir -p $out + cp -r node_modules $out/node_modules + cp -r . $out/node_modules/${pname} + rm -rf $out/node_modules/${pname}/node_modules + + mkdir $out/bin + node ${./fixup_bin.js} $out ${lib.concatStringsSep " " publishBinsFor_} + + runHook postInstall + ''; + + passthru = { + inherit package deps; + } // (attrs.passthru or {}); + + # TODO: populate meta automatically + }); +in + yarn2nix diff --git a/pkgs/development/tools/yarn2nix/fixup_bin.js b/pkgs/development/tools/yarn2nix/fixup_bin.js new file mode 100644 index 0000000000000..dab1759c2046b --- /dev/null +++ b/pkgs/development/tools/yarn2nix/fixup_bin.js @@ -0,0 +1,45 @@ +#!/usr/bin/env node +"use strict"; + +/* Usage: + * node fixup_bin.js <output_dir> [<bin_pkg_1>, <bin_pkg_2> ... ] + */ + +const fs = require("fs"); +const path = require("path"); + +const output = process.argv[2]; +const packages_to_publish_bin = process.argv.slice(3); +const derivation_bin_path = output + "/bin"; + +function processPackage(name) { + console.log("Processing ", name); + const package_path = output + "/node_modules/" + name; + const package_json_path = package_path + "/package.json"; + const package_json = JSON.parse(fs.readFileSync(package_json_path)); + + if (!package_json.bin) { + console.log("No binaries provided"); + return; + } + + // There are two alternative syntaxes for `bin` + // a) just a plain string, in which case the name of the package is the name of the binary. + // b) an object, where key is the name of the eventual binary, and the value the path to that binary. + if (typeof package_json.bin == "string") { + let bin_name = package_json.bin; + package_json.bin = { }; + package_json.bin[package_json.name] = bin_name; + } + + for (let binName in package_json.bin) { + const bin_path = package_json.bin[binName]; + const full_bin_path = path.normalize(package_path + "/" + bin_path); + fs.symlinkSync(full_bin_path, derivation_bin_path + "/"+ binName); + console.log("Linked", binName); + } +} + +packages_to_publish_bin.forEach((pkg) => { + processPackage(pkg); +}); diff --git a/pkgs/development/tools/yarn2nix/package.json b/pkgs/development/tools/yarn2nix/package.json new file mode 100644 index 0000000000000..130eee67c5606 --- /dev/null +++ b/pkgs/development/tools/yarn2nix/package.json @@ -0,0 +1,19 @@ +{ + "name": "yarn2nix", + "version": "1.0.0", + "description": "Convert packages.json and yarn.lock into a Nix expression that downloads all the dependencies", + "main": "index.js", + "repository": ".", + "author": "Maarten Hoogendoorn <maarten@moretea.nl>", + "license": "MIT", + "scripts": { + "yarn2nix": "bin/yarn2nix.js" + }, + "bin": { + "yarn2nix": "bin/yarn2nix.js" + }, + "dependencies": { + "@yarnpkg/lockfile": "^1.0.0", + "docopt": "^0.6.2" + } +} diff --git a/pkgs/development/tools/yarn2nix/yarn.lock b/pkgs/development/tools/yarn2nix/yarn.lock new file mode 100644 index 0000000000000..976d2c530e1e7 --- /dev/null +++ b/pkgs/development/tools/yarn2nix/yarn.lock @@ -0,0 +1,11 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@yarnpkg/lockfile@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.0.0.tgz#33d1dbb659a23b81f87f048762b35a446172add3" + +docopt@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11" \ No newline at end of file diff --git a/pkgs/development/tools/yarn2nix/yarn.nix b/pkgs/development/tools/yarn2nix/yarn.nix new file mode 100644 index 0000000000000..a9e42e7d986c5 --- /dev/null +++ b/pkgs/development/tools/yarn2nix/yarn.nix @@ -0,0 +1,23 @@ +{fetchurl, linkFarm}: rec { + offline_cache = linkFarm "offline" packages; + packages = [ + + { + name = "lockfile-1.0.0.tgz"; + path = fetchurl { + name = "lockfile-1.0.0.tgz"; + url = "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.0.0.tgz"; + sha1 = "33d1dbb659a23b81f87f048762b35a446172add3"; + }; + } + + { + name = "docopt-0.6.2.tgz"; + path = fetchurl { + name = "docopt-0.6.2.tgz"; + url = "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz"; + sha1 = "b28e9e2220da5ec49f7ea5bb24a47787405eeb11"; + }; + } + ]; +} |