diff options
Diffstat (limited to 'pkgs/development/tools')
18 files changed, 673 insertions, 90 deletions
diff --git a/pkgs/development/tools/analysis/pmd/default.nix b/pkgs/development/tools/analysis/pmd/default.nix index 78dd57789622..187b2d7b03f9 100644 --- a/pkgs/development/tools/analysis/pmd/default.nix +++ b/pkgs/development/tools/analysis/pmd/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "pmd-${version}"; - version = "6.5.0"; + version = "6.7.0"; buildInputs = [ unzip ]; src = fetchurl { url = "mirror://sourceforge/pmd/pmd-bin-${version}.zip"; - sha256 = "10jdgps1ikx75ljp2gi76ff7payg28pmiy5y3vp17gg47mv991aw"; + sha256 = "0bnbr8zq28dgvwka563g5lbya5jhmjrahnbwagcs4afpsrm7zj6c"; }; installPhase = '' diff --git a/pkgs/development/tools/build-managers/bear/default.nix b/pkgs/development/tools/build-managers/bear/default.nix index fb12b5a9c14a..51e8d12d3147 100644 --- a/pkgs/development/tools/build-managers/bear/default.nix +++ b/pkgs/development/tools/build-managers/bear/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { name = "bear-${version}"; - version = "2.3.12"; + version = "2.3.13"; src = fetchFromGitHub { owner = "rizsotto"; repo = "Bear"; rev = version; - sha256 = "1zzz2yiiny9pm4h6ayb82xzxc2j5djcpf8va2wagcw92m7w6miqw"; + sha256 = "0imvvs22gyr1v6ydgp5yn2nq8fb8llmz0ra1m733ikjaczl3jm7z"; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/tools/castxml/default.nix b/pkgs/development/tools/castxml/default.nix index 603b155ee4f9..aea94633bae3 100644 --- a/pkgs/development/tools/castxml/default.nix +++ b/pkgs/development/tools/castxml/default.nix @@ -17,6 +17,11 @@ stdenv.mkDerivation rec { sha256 = "1hjh8ihjyp1m2jb5yypp5c45bpbz8k004f4p1cjw4gc7pxhjacdj"; }; + cmakeFlags = [ + "-DCLANG_RESOURCE_DIR=${llvmPackages.clang-unwrapped}" + "-DSPHINX_MAN=${if withMan then "ON" else "OFF"}" + ]; + buildInputs = [ cmake llvmPackages.clang-unwrapped @@ -25,11 +30,6 @@ stdenv.mkDerivation rec { propagatedbuildInputs = [ llvmPackages.libclang ]; - preConfigure = '' - cmakeFlagsArray+=( - ${if withMan then "-DSPHINX_MAN=ON" else ""} - )''; - # 97% tests passed, 96 tests failed out of 2866 # mostly because it checks command line and nix append -isystem and all doCheck=false; diff --git a/pkgs/development/tools/hcloud/default.nix b/pkgs/development/tools/hcloud/default.nix index 877080508d40..b3fa6f852f76 100644 --- a/pkgs/development/tools/hcloud/default.nix +++ b/pkgs/development/tools/hcloud/default.nix @@ -14,6 +14,19 @@ buildGoPackage rec { buildFlagsArray = [ "-ldflags=" "-w -X github.com/hetznercloud/cli/cli.Version=${version}" ]; + postInstall = '' + mkdir -p \ + $bin/etc/bash_completion.d \ + $bin/share/zsh/vendor-completions + + # Add bash completions + $bin/bin/hcloud completion bash > "$bin/etc/bash_completion.d/hcloud" + + # Add zsh completions + echo "#compdef hcloud" > "$bin/share/zsh/vendor-completions/_hcloud" + $bin/bin/hcloud completion zsh >> "$bin/share/zsh/vendor-completions/_hcloud" + ''; + meta = { description = "A command-line interface for Hetzner Cloud, a provider for cloud virtual private servers"; homepage = https://github.com/hetznercloud/cli; diff --git a/pkgs/development/tools/jbake/default.nix b/pkgs/development/tools/jbake/default.nix index 152cddc101d6..9c3094fb4fec 100644 --- a/pkgs/development/tools/jbake/default.nix +++ b/pkgs/development/tools/jbake/default.nix @@ -11,6 +11,8 @@ stdenv.mkDerivation rec { buildInputs = [ makeWrapper jre ]; + postPatch = "patchShebangs ."; + installPhase = '' mkdir -p $out cp -vr * $out diff --git a/pkgs/development/tools/misc/kconfig-frontends/default.nix b/pkgs/development/tools/misc/kconfig-frontends/default.nix index d1415569ca33..bceb15f11659 100644 --- a/pkgs/development/tools/misc/kconfig-frontends/default.nix +++ b/pkgs/development/tools/misc/kconfig-frontends/default.nix @@ -1,24 +1,26 @@ -{ stdenv, fetchurl, pkgconfig, bison, flex, gperf, ncurses }: +{ stdenv, fetchurl, pkgconfig, bison, flex, gperf, ncurses, pythonPackages }: stdenv.mkDerivation rec { basename = "kconfig-frontends"; - version = "3.12.0.0"; + version = "4.11.0.1"; name = "${basename}-${version}"; src = fetchurl { - sha256 = "01zlph9bq2xzznlpmfpn0zrmhf2iqw02yh1q7g7adgkl5jk1a9pa"; + sha256 = "1xircdw3k7aaz29snf96q2fby1cs48bidz5l1kkj0a5gbivw31i3"; url = "http://ymorin.is-a-geek.org/download/${basename}/${name}.tar.xz"; }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ bison flex gperf ncurses ]; - - hardeningDisable = [ "format" ]; + buildInputs = [ bison flex gperf ncurses pythonPackages.python pythonPackages.wrapPython ]; configureFlags = [ "--enable-frontends=conf,mconf,nconf" ]; + postInstall = '' + wrapPythonPrograms + ''; + meta = with stdenv.lib; { description = "Out of Linux tree packaging of the kconfig infrastructure"; longDescription = '' diff --git a/pkgs/development/tools/misc/lttng-ust/default.nix b/pkgs/development/tools/misc/lttng-ust/default.nix index b708ce490d29..039e5b1ec542 100644 --- a/pkgs/development/tools/misc/lttng-ust/default.nix +++ b/pkgs/development/tools/misc/lttng-ust/default.nix @@ -13,11 +13,11 @@ stdenv.mkDerivation rec { name = "lttng-ust-${version}"; - version = "2.10.1"; + version = "2.10.2"; src = fetchurl { url = "https://lttng.org/files/lttng-ust/${name}.tar.bz2"; - sha256 = "17gfi1dn6bgg59qn4ihf8hag96lalx0g7dym2ccpzdz7f45krk07"; + sha256 = "0if0hrs32r98sp85c8c63zpgy5xjw6cx8wrs65xq227b0jwj5jn4"; }; buildInputs = [ python ]; diff --git a/pkgs/development/tools/misc/texinfo/common.nix b/pkgs/development/tools/misc/texinfo/common.nix index 101298cd3052..c6877ed4d1a1 100644 --- a/pkgs/development/tools/misc/texinfo/common.nix +++ b/pkgs/development/tools/misc/texinfo/common.nix @@ -17,6 +17,9 @@ stdenv.mkDerivation rec { inherit sha256; }; + # TODO: fix on mass rebuild + ${if interactive then "patches" else null} = optional (version == "6.5") ./perl.patch; + # We need a native compiler to build perl XS extensions # when cross-compiling. depsBuildBuild = [ buildPackages.stdenv.cc perl ]; diff --git a/pkgs/development/tools/misc/texinfo/perl.patch b/pkgs/development/tools/misc/texinfo/perl.patch new file mode 100644 index 000000000000..e651b37371c7 --- /dev/null +++ b/pkgs/development/tools/misc/texinfo/perl.patch @@ -0,0 +1,43 @@ +Adapted from http://svn.savannah.gnu.org/viewvc/texinfo/ +Author: gavin +--- trunk/tp/Texinfo/Parser.pm 2018-06-04 19:51:36 UTC (rev 8006) ++++ trunk/tp/Texinfo/Parser.pm 2018-07-13 15:31:28 UTC (rev 8007) +@@ -5531,11 +5531,11 @@ + } + } elsif ($command eq 'clickstyle') { + # REMACRO +- if ($line =~ /^\s+@([[:alnum:]][[:alnum:]\-]*)({})?\s*/) { ++ if ($line =~ /^\s+@([[:alnum:]][[:alnum:]\-]*)(\{\})?\s*/) { + $args = ['@'.$1]; + $self->{'clickstyle'} = $1; + $remaining = $line; +- $remaining =~ s/^\s+@([[:alnum:]][[:alnum:]\-]*)({})?\s*(\@(c|comment)((\@|\s+).*)?)?//; ++ $remaining =~ s/^\s+@([[:alnum:]][[:alnum:]\-]*)(\{\})?\s*(\@(c|comment)((\@|\s+).*)?)?//; + $has_comment = 1 if (defined($4)); + } else { + $self->line_error (sprintf($self->__( +--- trunk/tp/Texinfo/Convert/XSParagraph/xspara.c 2018-07-13 15:31:28 UTC (rev 8007) ++++ trunk/tp/Texinfo/Convert/XSParagraph/xspara.c 2018-07-13 15:39:29 UTC (rev 8008) +@@ -248,6 +248,11 @@ + + dTHX; + ++#if PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION > 8) ++ /* needed due to thread-safe locale handling in newer perls */ ++ switch_to_global_locale(); ++#endif ++ + if (setlocale (LC_CTYPE, "en_US.UTF-8") + || setlocale (LC_CTYPE, "en_US.utf8")) + goto success; +@@ -320,6 +325,10 @@ + { + success: ; + free (utf8_locale); ++#if PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION > 8) ++ /* needed due to thread-safe locale handling in newer perls */ ++ sync_locale(); ++#endif + /* + fprintf (stderr, "tried to set LC_CTYPE to UTF-8.\n"); + fprintf (stderr, "character encoding is: %s\n", diff --git a/pkgs/development/tools/ocaml/opam/1.2.2.nix b/pkgs/development/tools/ocaml/opam/1.2.2.nix new file mode 100644 index 000000000000..7e84719ae47d --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/1.2.2.nix @@ -0,0 +1,92 @@ +{ stdenv, lib, fetchurl, makeWrapper, + ocaml, unzip, ncurses, curl, aspcud +}: + +assert lib.versionAtLeast ocaml.version "3.12.1"; + +let + srcs = { + cudf = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/file/33593/cudf-0.7.tar.gz"; + sha256 = "92c8a9ed730bbac73f3513abab41127d966c9b9202ab2aaffcd02358c030a701"; + }; + extlib = fetchurl { + url = "http://ocaml-extlib.googlecode.com/files/extlib-1.5.3.tar.gz"; + sha256 = "c095eef4202a8614ff1474d4c08c50c32d6ca82d1015387785cf03d5913ec021"; + }; + ocaml_re = fetchurl { + url = "https://github.com/ocaml/ocaml-re/archive/ocaml-re-1.2.0.tar.gz"; + sha256 = "a34dd9d6136731436a963bbab5c4bbb16e5d4e21b3b851d34887a3dec451999f"; + }; + ocamlgraph = fetchurl { + url = "http://ocamlgraph.lri.fr/download/ocamlgraph-1.8.5.tar.gz"; + sha256 = "d167466435a155c779d5ec25b2db83ad851feb42ebc37dca8ffa345ddaefb82f"; + }; + dose3 = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/file/34277/dose3-3.3.tar.gz"; + sha256 = "8dc4dae9b1a81bb3a42abb283df785ba3eb00ade29b13875821c69f03e00680e"; + }; + cmdliner = fetchurl { + url = "http://erratique.ch/software/cmdliner/releases/cmdliner-0.9.7.tbz"; + sha256 = "9c19893cffb5d3c3469ee0cce85e3eeeba17d309b33b9ace31aba06f68f0bf7a"; + }; + uutf = fetchurl { + url = "http://erratique.ch/software/uutf/releases/uutf-0.9.3.tbz"; + sha256 = "1f364f89b1179e5182a4d3ad8975f57389d45548735d19054845e06a27107877"; + }; + jsonm = fetchurl { + url = "http://erratique.ch/software/jsonm/releases/jsonm-0.9.1.tbz"; + sha256 = "3fd4dca045d82332da847e65e981d8b504883571d299a3f7e71447d46bc65f73"; + }; + opam = fetchurl { + url = "https://github.com/ocaml/opam/archive/1.2.2.zip"; + sha256 = "c590ce55ae69ec74f46215cf16a156a02b23c5f3ecb22f23a3ad9ba3d91ddb6e"; + }; + }; +in stdenv.mkDerivation rec { + name = "opam-${version}"; + version = "1.2.2"; + + buildInputs = [ unzip curl ncurses ocaml makeWrapper ]; + + src = srcs.opam; + + postUnpack = '' + ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} + ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} + ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} + ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} + ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} + ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} + ln -sv ${srcs.uutf} $sourceRoot/src_ext/${srcs.uutf.name} + ln -sv ${srcs.jsonm} $sourceRoot/src_ext/${srcs.jsonm.name} + ''; + + preConfigure = '' + substituteInPlace ./src_ext/Makefile --replace "%.stamp: %.download" "%.stamp:" + ''; + + postConfigure = "make lib-ext"; + + # Dirty, but apparently ocp-build requires a TERM + makeFlags = ["TERM=screen"]; + + # change argv0 to "opam" as a workaround for + # https://github.com/ocaml/opam/issues/2142 + postInstall = '' + mv $out/bin/opam $out/bin/.opam-wrapped + makeWrapper $out/bin/.opam-wrapped $out/bin/opam \ + --argv0 "opam" \ + --suffix PATH : ${aspcud}/bin:${unzip}/bin:${curl}/bin + ''; + + doCheck = false; + + meta = with stdenv.lib; { + description = "A package manager for OCaml"; + homepage = http://opam.ocamlpro.com/; + maintainers = [ maintainers.henrytill ]; + platforms = platforms.all; + license = licenses.lgpl21Plus; + }; +} diff --git a/pkgs/development/tools/ocaml/opam/default.nix b/pkgs/development/tools/ocaml/opam/default.nix index 7e84719ae47d..8e89dd3fadd2 100644 --- a/pkgs/development/tools/ocaml/opam/default.nix +++ b/pkgs/development/tools/ocaml/opam/default.nix @@ -1,69 +1,87 @@ -{ stdenv, lib, fetchurl, makeWrapper, - ocaml, unzip, ncurses, curl, aspcud +{ stdenv, lib, fetchurl, makeWrapper, getconf, + ocaml, unzip, ncurses, curl, aspcud, bubblewrap }: -assert lib.versionAtLeast ocaml.version "3.12.1"; +assert lib.versionAtLeast ocaml.version "4.02.3"; let srcs = { + cmdliner = fetchurl { + url = "http://erratique.ch/software/cmdliner/releases/cmdliner-1.0.2.tbz"; + sha256 = "18jqphjiifljlh9jg8zpl6310p3iwyaqphdkmf89acyaix0s4kj1"; + }; + cppo = fetchurl { + url = "https://github.com/mjambon/cppo/archive/v1.6.4.tar.gz"; + sha256 = "0jdb7d21lfa3ck4k59mrqs5pljzq5rb504jq57nnrc6klljm42j7"; + }; cudf = fetchurl { - url = "https://gforge.inria.fr/frs/download.php/file/33593/cudf-0.7.tar.gz"; - sha256 = "92c8a9ed730bbac73f3513abab41127d966c9b9202ab2aaffcd02358c030a701"; + url = "https://gforge.inria.fr/frs/download.php/36602/cudf-0.9.tar.gz"; + sha256 = "0771lwljqwwn3cryl0plny5a5dyyrj4z6bw66ha5n8yfbpcy8clr"; + }; + dose3 = fetchurl { + url = "https://gforge.inria.fr/frs/download.php/file/36063/dose3-5.0.1.tar.gz"; + sha256 = "00yvyfm4j423zqndvgc1ycnmiffaa2l9ab40cyg23pf51qmzk2jm"; }; extlib = fetchurl { - url = "http://ocaml-extlib.googlecode.com/files/extlib-1.5.3.tar.gz"; - sha256 = "c095eef4202a8614ff1474d4c08c50c32d6ca82d1015387785cf03d5913ec021"; + url = "http://ygrek.org.ua/p/release/ocaml-extlib/extlib-1.7.5.tar.gz"; + sha256 = "19slqf5bdj0rrph2w41giwmn6df2qm07942jn058pjkjrnk30d4s"; }; - ocaml_re = fetchurl { - url = "https://github.com/ocaml/ocaml-re/archive/ocaml-re-1.2.0.tar.gz"; - sha256 = "a34dd9d6136731436a963bbab5c4bbb16e5d4e21b3b851d34887a3dec451999f"; + jbuilder = fetchurl { + url = "https://github.com/ocaml/dune/releases/download/1.0+beta20/jbuilder-1.0.beta20.tbz"; + sha256 = "07hl9as5llffgd6hbw41rs76i1ibgn3n9r0dba5h0mdlkapcwb10"; }; - ocamlgraph = fetchurl { - url = "http://ocamlgraph.lri.fr/download/ocamlgraph-1.8.5.tar.gz"; - sha256 = "d167466435a155c779d5ec25b2db83ad851feb42ebc37dca8ffa345ddaefb82f"; + mccs = fetchurl { + url = "https://github.com/AltGr/ocaml-mccs/archive/1.1+8.tar.gz"; + sha256 = "0xavfvxfrcf3lmry8ymma1yzy0hw3ijbx94c9zq3pzlwnylrapa4"; }; - dose3 = fetchurl { - url = "https://gforge.inria.fr/frs/download.php/file/34277/dose3-3.3.tar.gz"; - sha256 = "8dc4dae9b1a81bb3a42abb283df785ba3eb00ade29b13875821c69f03e00680e"; + ocamlgraph = fetchurl { + url = "http://ocamlgraph.lri.fr/download/ocamlgraph-1.8.8.tar.gz"; + sha256 = "0m9g16wrrr86gw4fz2fazrh8nkqms0n863w7ndcvrmyafgxvxsnr"; }; - cmdliner = fetchurl { - url = "http://erratique.ch/software/cmdliner/releases/cmdliner-0.9.7.tbz"; - sha256 = "9c19893cffb5d3c3469ee0cce85e3eeeba17d309b33b9ace31aba06f68f0bf7a"; + opam-file-format = fetchurl { + url = "https://github.com/ocaml/opam-file-format/archive/2.0.0-rc2.tar.gz"; + sha256 = "1mgk08msp7hxn0hs0m82vky3yv6hcq4pw5402b3vhx4c49431jsb"; }; - uutf = fetchurl { - url = "http://erratique.ch/software/uutf/releases/uutf-0.9.3.tbz"; - sha256 = "1f364f89b1179e5182a4d3ad8975f57389d45548735d19054845e06a27107877"; + re = fetchurl { + url = "https://github.com/ocaml/ocaml-re/releases/download/1.7.3/re-1.7.3.tbz"; + sha256 = "0nv933qfl8y9i19cqvhsalwzif3dkm28vg478rpnr4hgfqjlfryr"; }; - jsonm = fetchurl { - url = "http://erratique.ch/software/jsonm/releases/jsonm-0.9.1.tbz"; - sha256 = "3fd4dca045d82332da847e65e981d8b504883571d299a3f7e71447d46bc65f73"; + result = fetchurl { + url = "https://github.com/janestreet/result/releases/download/1.3/result-1.3.tbz"; + sha256 = "1lrnbxdq80gbhnp85mqp1kfk0bkh6q1c93sfz2qgnq2qyz60w4sk"; }; opam = fetchurl { - url = "https://github.com/ocaml/opam/archive/1.2.2.zip"; - sha256 = "c590ce55ae69ec74f46215cf16a156a02b23c5f3ecb22f23a3ad9ba3d91ddb6e"; + url = "https://github.com/ocaml/opam/archive/2.0.0.zip"; + sha256 = "0m4ilsldrfkkn0vlvl119bk76j2pwvqvdi8mpg957z4kqflfbfp8"; }; }; in stdenv.mkDerivation rec { name = "opam-${version}"; - version = "1.2.2"; + version = "2.0.0"; - buildInputs = [ unzip curl ncurses ocaml makeWrapper ]; + buildInputs = [ unzip curl ncurses ocaml makeWrapper getconf ] ++ lib.optional stdenv.isLinux bubblewrap; src = srcs.opam; postUnpack = '' - ln -sv ${srcs.cudf} $sourceRoot/src_ext/${srcs.cudf.name} - ln -sv ${srcs.extlib} $sourceRoot/src_ext/${srcs.extlib.name} - ln -sv ${srcs.ocaml_re} $sourceRoot/src_ext/${srcs.ocaml_re.name} - ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/${srcs.ocamlgraph.name} - ln -sv ${srcs.dose3} $sourceRoot/src_ext/${srcs.dose3.name} - ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/${srcs.cmdliner.name} - ln -sv ${srcs.uutf} $sourceRoot/src_ext/${srcs.uutf.name} - ln -sv ${srcs.jsonm} $sourceRoot/src_ext/${srcs.jsonm.name} + ln -sv ${srcs.cmdliner} $sourceRoot/src_ext/cmdliner.tbz + ln -sv ${srcs.cppo} $sourceRoot/src_ext/cppo.tar.gz + ln -sv ${srcs.cudf} $sourceRoot/src_ext/cudf.tar.gz + ln -sv ${srcs.dose3} $sourceRoot/src_ext/dose3.tar.gz + ln -sv ${srcs.extlib} $sourceRoot/src_ext/extlib.tar.gz + ln -sv ${srcs.jbuilder} $sourceRoot/src_ext/jbuilder.tbz + ln -sv ${srcs.mccs} $sourceRoot/src_ext/mccs.tar.gz + ln -sv ${srcs.ocamlgraph} $sourceRoot/src_ext/ocamlgraph.tar.gz + ln -sv ${srcs.opam-file-format} $sourceRoot/src_ext/opam-file-format.tar.gz + ln -sv ${srcs.re} $sourceRoot/src_ext/re.tbz + ln -sv ${srcs.result} $sourceRoot/src_ext/result.tbz ''; + patches = [ ./opam-pull-3487.patch ./opam-shebangs.patch ./opam-mccs-darwin.patch ]; + preConfigure = '' substituteInPlace ./src_ext/Makefile --replace "%.stamp: %.download" "%.stamp:" + patchShebangs src/state/shellscripts ''; postConfigure = "make lib-ext"; @@ -71,13 +89,17 @@ in stdenv.mkDerivation rec { # Dirty, but apparently ocp-build requires a TERM makeFlags = ["TERM=screen"]; + outputs = [ "out" "installer" ]; + setOutputFlags = false; + # change argv0 to "opam" as a workaround for # https://github.com/ocaml/opam/issues/2142 postInstall = '' mv $out/bin/opam $out/bin/.opam-wrapped makeWrapper $out/bin/.opam-wrapped $out/bin/opam \ --argv0 "opam" \ - --suffix PATH : ${aspcud}/bin:${unzip}/bin:${curl}/bin + --suffix PATH : ${aspcud}/bin:${unzip}/bin:${curl}/bin:${lib.optionalString stdenv.isLinux "${bubblewrap}/bin:"}${getconf}/bin + $out/bin/opam-installer --prefix=$installer opam-installer.install ''; doCheck = false; @@ -87,6 +109,6 @@ in stdenv.mkDerivation rec { homepage = http://opam.ocamlpro.com/; maintainers = [ maintainers.henrytill ]; platforms = platforms.all; - license = licenses.lgpl21Plus; }; } +# Generated by: ./opam.nix.pl -v 2.0.0 -p opam-pull-3487.patch,opam-shebangs.patch,opam-mccs-darwin.patch diff --git a/pkgs/development/tools/ocaml/opam/opam-mccs-darwin.patch b/pkgs/development/tools/ocaml/opam/opam-mccs-darwin.patch new file mode 100644 index 000000000000..501242c40a01 --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/opam-mccs-darwin.patch @@ -0,0 +1,18 @@ +diff --git a/src_ext/patches/mccs/build-on-darwin.patch b/src_ext/patches/mccs/build-on-darwin.patch +new file mode 100644 +index 00000000..157e2094 +--- /dev/null ++++ b/src_ext/patches/mccs/build-on-darwin.patch +@@ -0,0 +1,12 @@ ++diff --git a/src/context_flags.ml b/src/context_flags.ml ++index 7470030..6e07370 100644 ++--- a/src/context_flags.ml +++++ b/src/context_flags.ml ++@@ -24,6 +24,7 @@ let ifc c x = if c then x else [] ++ ++ let cxxflags = ++ let flags = +++ (ifc (Config.system = "macosx") ["-x"; "c++"]) @ ++ (ifc (Sys.win32 && Config.ccomp_type = "msvc") ["/EHsc"]) @ ++ (ifc useGLPK ["-DUSEGLPK"]) @ ++ (ifc useCOIN ["-DUSECOIN"]) @ diff --git a/pkgs/development/tools/ocaml/opam/opam-pull-3487.patch b/pkgs/development/tools/ocaml/opam/opam-pull-3487.patch new file mode 100644 index 000000000000..e047c8298bc3 --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/opam-pull-3487.patch @@ -0,0 +1,23 @@ +diff --git a/src/state/shellscripts/bwrap.sh b/src/state/shellscripts/bwrap.sh +index 6f5d7dbea..3e1a3e1b4 100755 +--- a/src/state/shellscripts/bwrap.sh ++++ b/src/state/shellscripts/bwrap.sh +@@ -1,4 +1,6 @@ +-#!/bin/bash -ue ++#!/usr/bin/env bash ++ ++set -ue + + if ! command -v bwrap >/dev/null; then + echo "The 'bwrap' command was not found. Install 'bubblewrap' on your system, or" >&2 +@@ -11,7 +13,9 @@ fi + + ARGS=(--unshare-net --new-session) + ARGS=("${ARGS[@]}" --proc /proc --dev /dev) +-ARGS=("${ARGS[@]}" --bind /tmp /tmp --tmpfs /run --tmpfs /var) ++ARGS=("${ARGS[@]}" --bind "${TMPDIR:-/tmp}" /tmp) ++ARGS=("${ARGS[@]}" --setenv TMPDIR /tmp --setenv TMP /tmp --setenv TEMPDIR /tmp --setenv TEMP /tmp) ++ARGS=("${ARGS[@]}" --tmpfs /run --tmpfs /var) + + add_mounts() { + case "$1" in diff --git a/pkgs/development/tools/ocaml/opam/opam-shebangs.patch b/pkgs/development/tools/ocaml/opam/opam-shebangs.patch new file mode 100644 index 000000000000..f74ac84ca6b2 --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/opam-shebangs.patch @@ -0,0 +1,128 @@ +diff --git a/src/client/opamInitDefaults.ml b/src/client/opamInitDefaults.ml +index eca13a7c..1fd66f43 100644 +--- a/src/client/opamInitDefaults.ml ++++ b/src/client/opamInitDefaults.ml +@@ -35,11 +35,15 @@ let eval_variables = [ + let os_filter os = + FOp (FIdent ([], OpamVariable.of_string "os", None), `Eq, FString os) + ++let os_distribution_filter distro = ++ FOp (FIdent ([], OpamVariable.of_string "os-distribution", None), `Eq, FString distro) ++ + let linux_filter = os_filter "linux" + let macos_filter = os_filter "macos" + let openbsd_filter = os_filter "openbsd" + let freebsd_filter = os_filter "freebsd" + let sandbox_filter = FOr (linux_filter, macos_filter) ++let nixos_filter = os_distribution_filter "nixos" + + let gpatch_filter = FOr (openbsd_filter, freebsd_filter) + let patch_filter = FNot gpatch_filter +@@ -50,6 +54,11 @@ let wrappers ~sandboxing () = + CString t, None; + ] in + let w = OpamFile.Wrappers.empty in ++ let w = { w with ++ OpamFile.Wrappers. ++ pre_build = [[CString "%{hooks}%/shebangs.sh", None], Some nixos_filter]; ++ } ++ in + if sandboxing then + { w with + OpamFile.Wrappers. +@@ -113,6 +122,7 @@ let required_tools ~sandboxing () = + let init_scripts () = [ + ("sandbox.sh", OpamScript.bwrap), Some bwrap_filter; + ("sandbox.sh", OpamScript.sandbox_exec), Some macos_filter; ++ ("shebangs.sh", OpamScript.patch_shebangs), Some nixos_filter; + ] + + module I = OpamFile.InitConfig +diff --git a/src/state/opamScript.mli b/src/state/opamScript.mli +index 03449970..83de0b53 100644 +--- a/src/state/opamScript.mli ++++ b/src/state/opamScript.mli +@@ -20,3 +20,4 @@ val env_hook : string + val env_hook_zsh : string + val env_hook_csh : string + val env_hook_fish : string ++val patch_shebangs : string +diff --git a/src/state/shellscripts/patch_shebangs.sh b/src/state/shellscripts/patch_shebangs.sh +new file mode 100755 +index 00000000..3ea84e2d +--- /dev/null ++++ b/src/state/shellscripts/patch_shebangs.sh +@@ -0,0 +1,73 @@ ++#!/usr/bin/env bash ++# This setup hook causes the fixup phase to rewrite all script ++# interpreter file names (`#! /path') to paths found in $PATH. E.g., ++# /bin/sh will be rewritten to /nix/store/<hash>-some-bash/bin/sh. ++# /usr/bin/env gets special treatment so that ".../bin/env python" is ++# rewritten to /nix/store/<hash>/bin/python. Interpreters that are ++# already in the store are left untouched. ++ ++header() { echo "$1"; } ++stopNest() { true; } ++ ++fixupOutputHooks+=('if [ -z "$dontPatchShebangs" -a -e "$prefix" ]; then patchShebangs "$prefix"; fi') ++ ++patchShebangs() { ++ local dir="$1" ++ header "patching script interpreter paths in $dir" ++ local f ++ local oldPath ++ local newPath ++ local arg0 ++ local args ++ local oldInterpreterLine ++ local newInterpreterLine ++ ++ find "$dir" -type f -perm -0100 | while read f; do ++ if [ "$(head -1 "$f" | head -c+2)" != '#!' ]; then ++ # missing shebang => not a script ++ continue ++ fi ++ ++ oldInterpreterLine=$(head -1 "$f" | tail -c+3) ++ read -r oldPath arg0 args <<< "$oldInterpreterLine" ++ ++ if $(echo "$oldPath" | grep -q "/bin/env$"); then ++ # Check for unsupported 'env' functionality: ++ # - options: something starting with a '-' ++ # - environment variables: foo=bar ++ if $(echo "$arg0" | grep -q -- "^-.*\|.*=.*"); then ++ echo "unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" ++ exit 1 ++ fi ++ newPath="$(command -v "$arg0" || true)" ++ else ++ if [ "$oldPath" = "" ]; then ++ # If no interpreter is specified linux will use /bin/sh. Set ++ # oldpath="/bin/sh" so that we get /nix/store/.../sh. ++ oldPath="/bin/sh" ++ fi ++ newPath="$(command -v "$(basename "$oldPath")" || true)" ++ args="$arg0 $args" ++ fi ++ ++ # Strip trailing whitespace introduced when no arguments are present ++ newInterpreterLine="$(echo "$newPath $args" | sed 's/[[:space:]]*$//')" ++ ++ if [ -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ]; then ++ if [ -n "$newPath" -a "$newPath" != "$oldPath" ]; then ++ echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"" ++ # escape the escape chars so that sed doesn't interpret them ++ escapedInterpreterLine=$(echo "$newInterpreterLine" | sed 's|\\|\\\\|g') ++ # Preserve times, see: https://github.com/NixOS/nixpkgs/pull/33281 ++ touch -r "$f" "$f.timestamp" ++ sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f" ++ touch -r "$f.timestamp" "$f" ++ rm "$f.timestamp" ++ fi ++ fi ++ done ++ ++ stopNest ++} ++ ++patchShebangs . diff --git a/pkgs/development/tools/ocaml/opam/opam.nix.pl b/pkgs/development/tools/ocaml/opam/opam.nix.pl new file mode 100755 index 000000000000..1862add452d6 --- /dev/null +++ b/pkgs/development/tools/ocaml/opam/opam.nix.pl @@ -0,0 +1,130 @@ +#!/usr/bin/env perl + +use strict; +use warnings qw<all>; +use Getopt::Std; + +my $gencmd = "# Generated by: " . join(" ", $0, @ARGV) . "\n"; + +our $opt_v; +our $opt_p; +our $opt_r; +our $opt_t; +getopts "v:p:t:r:"; + +my $OPAM_RELEASE = $opt_v // "2.0.0"; +my $OPAM_TAG = $opt_t // $OPAM_RELEASE; +my $OPAM_GITHUB_REPO = $opt_r // "ocaml/opam"; +my $OPAM_RELEASE_URL = "https://github.com/$OPAM_GITHUB_REPO/archive/$OPAM_TAG.zip"; +my $OPAM_RELEASE_SHA256 = `nix-prefetch-url \Q$OPAM_RELEASE_URL\E`; +chomp $OPAM_RELEASE_SHA256; + +my $OPAM_BASE_URL = "https://raw.githubusercontent.com/$OPAM_GITHUB_REPO/$OPAM_TAG"; +my $OPAM_OPAM = `curl -L --url \Q$OPAM_BASE_URL\E/opam-devel.opam`; +my($OCAML_MIN_VERSION) = $OPAM_OPAM =~ /^available: ocaml-version >= "(.*)"$/m + or die "could not parse ocaml version bound\n"; + +print <<"EOF"; +{ stdenv, lib, fetchurl, makeWrapper, getconf, + ocaml, unzip, ncurses, curl, aspcud, bubblewrap +}: + +assert lib.versionAtLeast ocaml.version "$OCAML_MIN_VERSION"; + +let + srcs = { +EOF + +my %urls = (); +my %md5s = (); + +open(SOURCES, "-|", "curl", "-L", "--url", "$OPAM_BASE_URL/src_ext/Makefile.sources"); +while (<SOURCES>) { + if (/^URL_(?!PKG_)([-\w]+)\s*=\s*(\S+)$/) { + $urls{$1} = $2; + } elsif (/^MD5_(?!PKG_)([-\w]+)\s*=\s*(\S+)$/) { + $md5s{$1} = $2; + } +} +for my $src (sort keys %urls) { + my ($sha256,$store_path) = split /\n/, `nix-prefetch-url --print-path \Q$urls{$src}\E`; + system "echo \Q$md5s{$src}\E' *'\Q$store_path\E | md5sum -c 1>&2"; + die "md5 check failed for $urls{$src}\n" if $?; + print <<"EOF"; + $src = fetchurl { + url = "$urls{$src}"; + sha256 = "$sha256"; + }; +EOF +} + +print <<"EOF"; + opam = fetchurl { + url = "$OPAM_RELEASE_URL"; + sha256 = "$OPAM_RELEASE_SHA256"; + }; + }; +in stdenv.mkDerivation rec { + name = "opam-\${version}"; + version = "$OPAM_RELEASE"; + + buildInputs = [ unzip curl ncurses ocaml makeWrapper getconf ] ++ lib.optional stdenv.isLinux bubblewrap; + + src = srcs.opam; + + postUnpack = '' +EOF +for my $src (sort keys %urls) { + my($ext) = $urls{$src} =~ /(\.(?:t(?:ar\.|)|)(?:gz|bz2?))$/ + or die "could not find extension for $urls{$src}\n"; + print <<"EOF"; + ln -sv \${srcs.$src} \$sourceRoot/src_ext/$src$ext +EOF +} +print <<'EOF'; + ''; + +EOF +if (defined $opt_p) { + print " patches = [ "; + for my $patch (split /[, ]/, $opt_p) { + $patch =~ s/^(?=[^\/]*$)/.\//; + print "$patch "; + } + print "];\n\n"; +} +print <<'EOF'; + preConfigure = '' + substituteInPlace ./src_ext/Makefile --replace "%.stamp: %.download" "%.stamp:" + patchShebangs src/state/shellscripts + ''; + + postConfigure = "make lib-ext"; + + # Dirty, but apparently ocp-build requires a TERM + makeFlags = ["TERM=screen"]; + + outputs = [ "out" "installer" ]; + setOutputFlags = false; + + # change argv0 to "opam" as a workaround for + # https://github.com/ocaml/opam/issues/2142 + postInstall = '' + mv $out/bin/opam $out/bin/.opam-wrapped + makeWrapper $out/bin/.opam-wrapped $out/bin/opam \ + --argv0 "opam" \ + --suffix PATH : ${aspcud}/bin:${unzip}/bin:${curl}/bin:${lib.optionalString stdenv.isLinux "${bubblewrap}/bin:"}${getconf}/bin + $out/bin/opam-installer --prefix=$installer opam-installer.install + ''; + + doCheck = false; + + meta = with stdenv.lib; { + description = "A package manager for OCaml"; + homepage = http://opam.ocamlpro.com/; + maintainers = [ maintainers.henrytill ]; + platforms = platforms.all; + }; +} +EOF +print $gencmd; diff --git a/pkgs/development/tools/pyre/default.nix b/pkgs/development/tools/pyre/default.nix index 1d7f8025bb0e..b51f6344c9b7 100644 --- a/pkgs/development/tools/pyre/default.nix +++ b/pkgs/development/tools/pyre/default.nix @@ -1,24 +1,30 @@ -{ stdenv, fetchFromGitHub, ocamlPackages, makeWrapper, writeScript }: +{ stdenv, fetchFromGitHub, ocamlPackages, makeWrapper, writeScript +, jbuilder, python3, rsync, fetchpatch }: let # Manually set version - the setup script requires # hg and git + keeping the .git directory around. - version = "0.0.10"; + pyre-version = "0.0.11"; versionFile = writeScript "version.ml" '' cat > "./version.ml" <<EOF + open Core let build_info () = - "pyre-nixpkgs ${version}" + "pyre-nixpkgs ${pyre-version}" let version () = - "${version}" + "${pyre-version}" + + let log_version_banner () = + Log.info "Running as pid: %d" (Pid.to_int (Unix.getpid ())); + Log.info "Version: %s" (version ()); EOF ''; -in stdenv.mkDerivation { - name = "pyre-${version}"; + pyre-bin = stdenv.mkDerivation { + name = "pyre-${pyre-version}"; src = fetchFromGitHub { owner = "facebook"; repo = "pyre-check"; - rev = "v${version}"; - sha256 = "17fk2izq434jsr8dfz828754356qdwa6zv0lbzm6z1kgq4jg7brv"; + rev = "v${pyre-version}"; + sha256 = "0ig7bx2kfn2kbxw74wysh5365yp5gyby42l9l29iclrzdghgk32l"; }; nativeBuildInputs = [ makeWrapper ]; @@ -33,6 +39,8 @@ in stdenv.mkDerivation { ppx_deriving_yojson ocamlbuild ppxlib + jbuilder + ounit # python36Packages.python36Full # TODO ]; @@ -41,13 +49,15 @@ in stdenv.mkDerivation { export HOME=. # "external" because https://github.com/facebook/pyre-check/pull/8/files - sed "s/%VERSION%/external ${version}/" Makefile.template > Makefile + cp Makefile.template Makefile + sed "s/%VERSION%/external/" dune.in > dune cp ${versionFile} ./scripts/generate-version-number.sh mkdir $(pwd)/build export OCAMLFIND_DESTDIR=$(pwd)/build export OCAMLPATH=$OCAMLPATH:$(pwd)/build + make release ''; @@ -60,7 +70,7 @@ in stdenv.mkDerivation { # Improvement for a future version. installPhase = '' mkdir -p $out/bin - cp _build/all/main.native $out/bin/pyre.bin + cp ./_build/default/main.exe $out/bin/pyre.bin ''; meta = with stdenv.lib; { @@ -70,4 +80,54 @@ in stdenv.mkDerivation { platforms = with platforms; linux; maintainers = with maintainers; [ teh ]; }; +}; +typeshed = stdenv.mkDerivation { + name = "typeshed"; + # typeshed doesn't have versions, it seems to be synchronized with + # mypy relases. I'm assigning a random version here (same as pyre). + version = pyre-version; + src = fetchFromGitHub { + owner = "python"; + repo = "typeshed"; + rev = "a08c6ea"; + sha256 = "0wy8yh43vhyyc4g7iqnmlj66kz5in02y5qc0c4jdckhpa3mchaqk"; + }; + phases = [ "unpackPhase" "installPhase" ]; + installPhase = "cp -r $src $out"; +}; +in python3.pkgs.buildPythonApplication rec { + pname = "pyre-check"; + version = pyre-version; + src = fetchFromGitHub { + owner = "facebook"; + repo = "pyre-check"; + rev = "v${pyre-version}"; + sha256 = "0ig7bx2kfn2kbxw74wysh5365yp5gyby42l9l29iclrzdghgk32l"; + }; + patches = [ + (fetchpatch { + url = "https://github.com/facebook/pyre-check/commit/b473d2ed9fc11e7c1cd0c7b8c42f521e5cdc2003.patch"; + sha256 = "05xvyp7j4n6z92bxf64rxfq5pvaadxgx1c8c5qziy75vdz72lkcy"; + }) + ./pyre-bdist-wheel.patch + ]; + + # The build-pypi-package script does some funky stuff with build + # directories - easier to patch it a bit than to replace it + # completely though: + postPatch = '' + mkdir ./build + substituteInPlace scripts/build-pypi-package.sh \ + --replace 'NIX_BINARY_FILE' '${pyre-bin}/bin/pyre.bin' \ + --replace 'BUILD_ROOT="$(mktemp -d)"' "BUILD_ROOT=$(pwd)/build" + ''; + + buildInputs = [ pyre-bin rsync ]; + propagatedBuildInputs = with python3.pkgs; [ docutils typeshed ]; + buildPhase = '' + bash scripts/build-pypi-package.sh --version ${pyre-version} --bundle-typeshed ${typeshed} + cp -r build/dist dist + ''; + + doCheck = false; # can't open file 'nix_run_setup': } diff --git a/pkgs/development/tools/pyre/pyre-bdist-wheel.patch b/pkgs/development/tools/pyre/pyre-bdist-wheel.patch new file mode 100644 index 000000000000..1b6fea024e03 --- /dev/null +++ b/pkgs/development/tools/pyre/pyre-bdist-wheel.patch @@ -0,0 +1,43 @@ +diff --git a/scripts/build-pypi-package.sh b/scripts/build-pypi-package.sh +index 1035591..bb8cbae 100755 +--- a/scripts/build-pypi-package.sh ++++ b/scripts/build-pypi-package.sh +@@ -98,7 +98,7 @@ rsync -avm --filter='- tests/' --filter='+ */' --filter='-! *.py' "${SCRIPTS_DIR + sed -i -e "/__version__/s/= \".*\"/= \"${PACKAGE_VERSION}\"/" "${BUILD_ROOT}/${MODULE_NAME}/version.py" + + # Copy binary files. +-BINARY_FILE="${SCRIPTS_DIRECTORY}/../_build/default/main.exe" ++BINARY_FILE="NIX_BINARY_FILE" + if [[ ! -f "${BINARY_FILE}" ]]; then + echo "The binary file ${BINARY_FILE} does not exist." + echo "Have you run 'make' in the toplevel directory?" +@@ -146,7 +146,7 @@ def find_typeshed_files(base): + result.append((target, files)) + return result + +-with open('README.md') as f: ++with open('README.md', encoding='utf8') as f: + long_description = f.read() + + setup( +@@ -205,20 +205,3 @@ fi + + # Build. + python3 setup.py bdist_wheel +- +-# Move artifact outside the build directory. +-mkdir -p "${SCRIPTS_DIRECTORY}/dist" +-files_count="$(find "${BUILD_ROOT}/dist/" -type f | wc -l | tr -d ' ')" +-[[ "${files_count}" == '1' ]] || \ +- die "${files_count} files created in ${BUILD_ROOT}/dist, but only one was expected" +-source_file="$(find "${BUILD_ROOT}/dist/" -type f)" +-destination="$(basename "${source_file}")" +-destination="${destination/%-any.whl/-${WHEEL_DISTRIBUTION_PLATFORM}.whl}" +-mv "${source_file}" "${SCRIPTS_DIRECTORY}/dist/${destination}" +- +-# Cleanup. +-cd "${SCRIPTS_DIRECTORY}" +-rm -rf "${BUILD_ROOT}" +- +-printf '\nAll done. Build artifact available at:\n %s\n' "${SCRIPTS_DIRECTORY}/dist/${destination}" +-exit 0 diff --git a/pkgs/development/tools/wp-cli/default.nix b/pkgs/development/tools/wp-cli/default.nix index 2f5552945714..e2250297c8eb 100644 --- a/pkgs/development/tools/wp-cli/default.nix +++ b/pkgs/development/tools/wp-cli/default.nix @@ -1,42 +1,46 @@ { stdenv, lib, fetchurl, writeScript, writeText, php }: let - name = "wp-cli-${version}"; - version = "2.0.0"; - - src = fetchurl { - url = "https://github.com/wp-cli/wp-cli/releases/download/v${version}/${name}.phar"; - sha256 = "1s8pv8vdjwiwknpwsxc59l1zxc2np7nrp6bjd0s8jwsrv5fgjzsp"; - }; + version = "2.0.1"; completion = fetchurl { url = "https://raw.githubusercontent.com/wp-cli/wp-cli/v${version}/utils/wp-completion.bash"; sha256 = "15d330x6d3fizrm6ckzmdknqg6wjlx5fr87bmkbd5s6a1ihs0g24"; }; - bin = writeScript "wp" '' - #! ${stdenv.shell} +in stdenv.mkDerivation rec { + name = "wp-cli-${version}"; + inherit version; - set -euo pipefail + src = fetchurl { + url = "https://github.com/wp-cli/wp-cli/releases/download/v${version}/${name}.phar"; + sha256 = "05lbay4c0477465vv4h8d2j94pk3haz1a7f0ncb127fvxz3a2pcg"; + }; - exec ${lib.getBin php}/bin/php \ - -c ${ini} \ - -f ${src} -- "$@" - ''; + buildCommand = '' + dir=$out/share/wp-cli + mkdir -p $out/bin $dir - ini = writeText "wp-cli.ini" '' - [PHP] - memory_limit = -1 ; no limit as composer uses a lot of memory + cat <<_EOF > $out/bin/wp +#!${stdenv.shell} - [Phar] - phar.readonly = Off - ''; +set -euo pipefail -in stdenv.mkDerivation rec { - inherit name version; +exec ${lib.getBin php}/bin/php \\ + -c $dir/php.ini \\ + -f $dir/wp-cli -- "\$@" +_EOF + chmod 0755 $out/bin/wp - buildCommand = '' - install -Dm755 ${bin} $out/bin/wp + cat <<_EOF > $dir/php.ini +[PHP] +memory_limit = -1 ; no limit as composer uses a lot of memory + +[Phar] +phar.readonly = Off +_EOF + + install -Dm644 ${src} $dir/wp-cli install -Dm644 ${completion} $out/share/bash-completion/completions/wp # this is a very basic run test |