diff options
Diffstat (limited to 'pkgs/development/interpreters')
17 files changed, 368 insertions, 291 deletions
diff --git a/pkgs/development/interpreters/acl2/default.nix b/pkgs/development/interpreters/acl2/default.nix index 9445d42f24e4..39b243a0ce6a 100644 --- a/pkgs/development/interpreters/acl2/default.nix +++ b/pkgs/development/interpreters/acl2/default.nix @@ -4,15 +4,15 @@ let hashes = { "8.0" = "1x1giy2c1y6krg3kf8pf9wrmvk981shv0pxcwi483yjqm90xng4r"; - "8.2" = "1x33kv6w9cbqzvyrihn61pzmqlvnk3drm8ksd5v0arg38i95awi3"; + "8.3" = "0c0wimaf16nrr3d6cxq6p7nr7rxffvpmn66hkpwc1m6zpcipf0y5"; }; revs = { "8.0" = "8.0"; - "8.2" = "8.2"; + "8.3" = "8.3"; }; in stdenv.mkDerivation rec { pname = "acl2"; - version = "8.2"; + version = "8.3"; src = fetchFromGitHub { owner = "acl2-devel"; @@ -72,6 +72,7 @@ in stdenv.mkDerivation rec { #[ free bsd3 mit gpl2 llgpl21 cc0 publicDomain ]; license = stdenv.lib.licenses.bsd3; maintainers = with stdenv.lib.maintainers; [ kini raskin ]; - platforms = stdenv.lib.platforms.linux; + platforms = stdenv.lib.platforms.all; + broken = stdenv.isAarch64 && stdenv.isLinux; }; } diff --git a/pkgs/development/interpreters/bats/default.nix b/pkgs/development/interpreters/bats/default.nix index 35672116ca06..bbc38e515424 100644 --- a/pkgs/development/interpreters/bats/default.nix +++ b/pkgs/development/interpreters/bats/default.nix @@ -1,17 +1,21 @@ -{ stdenv, fetchzip, gnugrep }: +{ stdenv, fetchzip, coreutils, gnugrep }: stdenv.mkDerivation rec { pname = "bats"; - version = "1.1.0"; + version = "1.2.0"; src = fetchzip { url = "https://github.com/bats-core/bats-core/archive/v${version}.tar.gz"; - sha256 = "1kkh0j2alql3xiyhw9wsvcc3xclv52g0ivgyk8h85q9fn3qdqakz"; + sha256 = "0f59zh4d4pa1a7ybs5zl6h0csbqqv11lbnq0jl1dgwm1s6p49bsq"; }; patchPhase = '' patchShebangs ./install.sh - substituteInPlace ./libexec/bats-core/bats-format-tap-stream --replace grep ${gnugrep}/bin/grep + + substituteInPlace ./libexec/bats-core/bats \ + --replace 'type -p greadlink readlink' 'type -p ${coreutils}/bin/readlink' + substituteInPlace ./libexec/bats-core/bats-format-tap-stream \ + --replace grep ${gnugrep}/bin/grep ''; installPhase = "./install.sh $out"; diff --git a/pkgs/development/interpreters/clojure/babashka.nix b/pkgs/development/interpreters/clojure/babashka.nix index db849bb542de..130eabbee347 100644 --- a/pkgs/development/interpreters/clojure/babashka.nix +++ b/pkgs/development/interpreters/clojure/babashka.nix @@ -1,24 +1,25 @@ -{ stdenv, fetchurl, graalvm8 }: +{ stdenv, fetchurl, graalvm8, glibcLocales }: with stdenv.lib; stdenv.mkDerivation rec { pname = "babashka"; - version = "0.0.78"; + version = "0.0.89"; reflectionJson = fetchurl { name = "reflection.json"; url = "https://github.com/borkdude/${pname}/releases/download/v${version}/${pname}-${version}-reflection.json"; - sha256 = "1m1nwdxjsc6bkdzkbsll316ly0c3qxaimjzyfph1220irjxnm7xf"; + sha256 = "0bc5rbizd2lg7qfh733yiip8m9zqrwgjf5ca09sdibxp7nhhsjby"; }; src = fetchurl { url = "https://github.com/borkdude/${pname}/releases/download/v${version}/${pname}-${version}-standalone.jar"; - sha256 = "01w990zk5qjrbnc846snh6na002kdyrlrfnqwg03ibx20g3mr7if"; + sha256 = "11jhqbm3svvikr9glz8wwps1267y25g3384ijw6avn267s7d7l8c"; }; dontUnpack = true; - buildInputs = [ graalvm8 ]; + LC_ALL = "en_US.UTF-8"; + nativeBuildInputs = [ graalvm8 glibcLocales ]; buildPhase = '' native-image \ @@ -40,7 +41,8 @@ stdenv.mkDerivation rec { --no-fallback \ --no-server \ --report-unsupported-elements-at-runtime \ - "-J-Xmx3g" + "--initialize-at-run-time=org.postgresql.sspi.SSPIClient" \ + "-J-Xmx4500m" ''; installPhase = '' diff --git a/pkgs/development/interpreters/dart/default.nix b/pkgs/development/interpreters/dart/default.nix index eda8e450bbaf..050e7f14979c 100644 --- a/pkgs/development/interpreters/dart/default.nix +++ b/pkgs/development/interpreters/dart/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, unzip, version ? "2.7.1" }: +{ stdenv, fetchurl, unzip, version ? "2.7.2" }: let @@ -24,29 +24,29 @@ let url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; sha256 = "1p5bn04gr91chcszgmw5ng8mlzgwsrdr2v7k7ppwr1slkx97fsrh"; }; - "2.7.1-x86_64-linux" = fetchurl { + "2.7.2-x86_64-linux" = fetchurl { url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "1zjd9hxxg1dsyzkzgqjvl933kprf8h143z5qi4mj1iczxv7zp27a"; + sha256 = "0vvsgda1smqdjn35yiq9pxx8f5haxb4hqnspcsfs6sn5c36k854v"; }; - "2.7.1-i686-linux" = fetchurl { + "2.7.2-i686-linux" = fetchurl { url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip"; - sha256 = "0cggr1jbhzahmazlhba0vw2chz9zxd98jgk6zxvxdnw5hvkx8si1"; + sha256 = "0dj01d2wwrp3cc5x73vs6fzhs6db60gkbjlrw3w9j04wcx69i38m"; }; - "2.7.1-aarch64-linux" = fetchurl { + "2.7.2-aarch64-linux" = fetchurl { url = "${base}/${stable_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; - sha256 = "0m4qlc3zy87habr61npykvpclggn5k4hadl59v2b0ymvxa4h5zfh"; + sha256 = "1p66fkdh1kv0ypmadmg67c3y3li3aaf1lahqh2g6r6qrzbh5da2p"; }; - "2.8.0-dev.10.0-x86_64-linux" = fetchurl { + "2.9.0-4.0.dev-x86_64-linux" = fetchurl { url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${x86_64}-release.zip"; - sha256 = "17x0q94zampm99dd2sn6q1644lfwcl0ig2rdlmfzd9i4llj2ddbl"; + sha256 = "16d9842fb3qbc0hy0zmimav9zndfkq96glgykj20xssc88qpjk2r"; }; - "2.8.0-dev.10.0-i686-linux" = fetchurl { + "2.9.0-4.0.dev-i686-linux" = fetchurl { url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${i686}-release.zip"; - sha256 = "0hmkg4jrffzh8x2mxn8nbf7dl7k0v2vacbmxgpsl382vw9wwj96j"; + sha256 = "105wgyxmi491c7qw0z3zhn4lv52h80ngyz4ch9dyj0sq8nndz2rc"; }; - "2.8.0-dev.10.0-aarch64-linux" = fetchurl { + "2.9.0-4.0.dev-aarch64-linux" = fetchurl { url = "${base}/${dev_version}/release/${version}/sdk/dartsdk-linux-${aarch64}-release.zip"; - sha256 = "185ipcmr9h76g44kzlj5pyj99cljlap82rhd1c2larfklyj5ryvv"; + sha256 = "1x6mlmc4hccmx42k7srhma18faxpxvghjwqahna80508rdpljwgc"; }; }; diff --git a/pkgs/development/interpreters/hy/default.nix b/pkgs/development/interpreters/hy/default.nix index 5816b3a175c6..a3aca532b0f3 100644 --- a/pkgs/development/interpreters/hy/default.nix +++ b/pkgs/development/interpreters/hy/default.nix @@ -1,23 +1,32 @@ -{ stdenv, fetchurl, python2Packages }: +{ stdenv, python3Packages }: -python2Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication rec { pname = "hy"; - version = "0.17.0"; + version = "0.18.0"; - src = python2Packages.fetchPypi { + src = python3Packages.fetchPypi { inherit pname version; - sha256 = "1gdbqsirsdxj320wnp7my5awzs1kfs6m4fqmkzbd1zd47qzj0zfi"; + sha256 = "04dfwm336gw61fmgwikvh0cnxk682p19b4w555wl5d7mlym4rwj2"; }; - propagatedBuildInputs = with python2Packages; [ + checkInputs = with python3Packages; [ flake8 pytest ]; + + propagatedBuildInputs = with python3Packages; [ appdirs astor clint + colorama fastentrypoints funcparserlib rply + pygments ]; + # Hy does not include tests in the source distribution from PyPI, so only test executable. + checkPhase = '' + $out/bin/hy --help > /dev/null + ''; + meta = with stdenv.lib; { description = "A LISP dialect embedded in Python"; homepage = "http://hylang.org/"; diff --git a/pkgs/development/interpreters/jelly/default.nix b/pkgs/development/interpreters/jelly/default.nix new file mode 100644 index 000000000000..a317f35d2a78 --- /dev/null +++ b/pkgs/development/interpreters/jelly/default.nix @@ -0,0 +1,28 @@ +{ lib, python3Packages, fetchFromGitHub }: + +python3Packages.buildPythonApplication { + pname = "jelly"; + version = "0.1.31"; + + src = fetchFromGitHub { + owner = "DennisMitchell"; + repo = "jellylanguage"; + rev = "70c9fd93ab009c05dc396f8cc091f72b212fb188"; + sha256 = "1rpclqagvigp5qhvgnjavvy463f1drshnc1mfxm6z7ygzs0l0yz6"; + }; + + propagatedBuildInputs = [ python3Packages.sympy ]; + + # checks are disabled because jelly has no tests, and the default is to run + # the output binary with no arguments, which exits with status 1 and causes + # the build to fail + doCheck = false; + + meta = with lib; { + description = "A recreational programming language inspired by J"; + homepage = https://github.com/DennisMitchell/jellylanguage; + license = licenses.mit; + maintainers = [ maintainers.tckmn ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/development/interpreters/luajit/2.0.nix b/pkgs/development/interpreters/luajit/2.0.nix index 7db3830447f7..3f0fa7303ebb 100644 --- a/pkgs/development/interpreters/luajit/2.0.nix +++ b/pkgs/development/interpreters/luajit/2.0.nix @@ -1,9 +1,10 @@ { self, callPackage, lib }: callPackage ./default.nix { inherit self; - version = "2.0.5"; + version = "2.0.5-2020-03-20"; + rev = "e613105"; isStable = true; - sha256 = "0yg9q4q6v028bgh85317ykc9whgxgysp76qzaqgq55y6jy11yjw7"; + sha256 = "0k843z90s4hi0qhri6ixy8sv21nig8jwbznpqgqg845ji530kqj7"; extraMeta = { # this isn't precise but it at least stops the useless Hydra build platforms = with lib; filter (p: p != "aarch64-linux") (platforms.linux ++ platforms.darwin); diff --git a/pkgs/development/interpreters/luajit/2.1.nix b/pkgs/development/interpreters/luajit/2.1.nix index e8f1b8b338c4..b5a7894e98d9 100644 --- a/pkgs/development/interpreters/luajit/2.1.nix +++ b/pkgs/development/interpreters/luajit/2.1.nix @@ -1,7 +1,8 @@ { self, callPackage }: callPackage ./default.nix { inherit self; - version = "2.1.0-beta3"; + version = "2.1.0-2020-03-20"; + rev = "9143e86"; isStable = false; - sha256 = "1hyrhpkwjqsv54hnnx4cl8vk44h9d6c9w0fz1jfjz00w255y7lhs"; + sha256 = "1zw1yr0375d6jr5x20zvkvk76hkaqamjynbswpl604w6r6id070b"; } diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix index 9be368a59027..9bc76c44937f 100644 --- a/pkgs/development/interpreters/luajit/default.nix +++ b/pkgs/development/interpreters/luajit/default.nix @@ -1,7 +1,8 @@ -{ stdenv, fetchurl, buildPackages +{ stdenv, fetchFromGitHub, buildPackages , name ? "luajit-${version}" , isStable , sha256 +, rev , version , extraMeta ? {} , callPackage @@ -10,6 +11,7 @@ , enableFFI ? true , enableJIT ? true , enableJITDebugModule ? enableJIT +, enableGC64 ? stdenv.hostPlatform.isAarch64 , enable52Compat ? false , enableValgrindSupport ? false , valgrind ? null @@ -28,6 +30,7 @@ let optional (!enableFFI) "-DLUAJIT_DISABLE_FFI" ++ optional (!enableJIT) "-DLUAJIT_DISABLE_JIT" ++ optional enable52Compat "-DLUAJIT_ENABLE_LUA52COMPAT" + ++ optional (!enableGC64) "-DLUAJIT_DISABLE_GC64" ++ optional useSystemMalloc "-DLUAJIT_USE_SYSMALLOC" ++ optional enableValgrindSupport "-DLUAJIT_USE_VALGRIND" ++ optional enableGDBJITSupport "-DLUAJIT_USE_GDBJIT" @@ -37,9 +40,10 @@ let in stdenv.mkDerivation rec { inherit name version; - src = fetchurl { - url = "http://luajit.org/download/LuaJIT-${version}.tar.gz"; - inherit sha256; + src = fetchFromGitHub { + owner = "LuaJIT"; + repo = "LuaJIT"; + inherit sha256 rev; }; luaversion = "5.1"; diff --git a/pkgs/development/interpreters/metamath/default.nix b/pkgs/development/interpreters/metamath/default.nix index 680e4106695b..66352cfdda4b 100644 --- a/pkgs/development/interpreters/metamath/default.nix +++ b/pkgs/development/interpreters/metamath/default.nix @@ -2,23 +2,17 @@ stdenv.mkDerivation { pname = "metamath"; - version = "0.181"; + version = "0.182"; buildInputs = [ autoreconfHook ]; src = fetchFromGitHub { owner = "metamath"; repo = "metamath-exe"; - rev = "67cbfa8468deb6f8ad5bedafc6399bee59064764"; - sha256 = "1mk3g41qz26j38j68i9qmnl8khkd8jwrzj4vxkb855h4b819s000"; + rev = "5df616efe4119ff88daf77e7041d45b6fa39c578"; + sha256 = "0amjdgy42c7jypf6sz98iczlxcyl9bqx67ws1q8w2zdqk2izsyjp"; }; - # the files necessary to build the DATA target are not in this distribution - # luckily, they're not really needed so we don't build it. - makeFlags = [ "DATA=" ]; - - installTargets = [ "install-exec" ]; - meta = with stdenv.lib; { description = "Interpreter for the metamath proof language"; longDescription = '' diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix index 1d6576b383cd..e0aea60e2939 100644 --- a/pkgs/development/interpreters/php/default.nix +++ b/pkgs/development/interpreters/php/default.nix @@ -1,250 +1,280 @@ # We have tests for PCRE and PHP-FPM in nixos/tests/php/ or # both in the same attribute named nixosTests.php -{ callPackage, config, fetchurl, lib, makeWrapper, stdenv, symlinkJoin -, writeText , autoconf, automake, bison, flex, libtool, pkgconfig, re2c -, apacheHttpd, libargon2, libxml2, pcre, pcre2 , systemd, valgrind -}: +{ callPackage, lib, stdenv, nixosTests }@_args: let generic = - { version - , sha256 - , extraPatches ? [] - - # Sapi flags - , cgiSupport ? config.php.cgi or true - , cliSupport ? config.php.cli or true - , fpmSupport ? config.php.fpm or true - , pearSupport ? config.php.pear or true - , pharSupport ? config.php.phar or true - , phpdbgSupport ? config.php.phpdbg or true - - - # Misc flags - , apxs2Support ? config.php.apxs2 or (!stdenv.isDarwin) - , argon2Support ? config.php.argon2 or true - , cgotoSupport ? config.php.cgoto or false - , embedSupport ? config.php.embed or false - , ipv6Support ? config.php.ipv6 or true - , systemdSupport ? config.php.systemd or stdenv.isLinux - , valgrindSupport ? config.php.valgrind or true - , ztsSupport ? (config.php.zts or false) || (apxs2Support) - }: let - pcre' = if (lib.versionAtLeast version "7.3") then pcre2 else pcre; - in stdenv.mkDerivation { - pname = "php"; - - inherit version; - - enableParallelBuilding = true; - - nativeBuildInputs = [ autoconf automake bison flex libtool pkgconfig re2c ]; - - buildInputs = - # PCRE extension - [ pcre' ] - - # Enable sapis - ++ lib.optional pearSupport [ libxml2.dev ] - - # Misc deps - ++ lib.optional apxs2Support apacheHttpd - ++ lib.optional argon2Support libargon2 - ++ lib.optional systemdSupport systemd - ++ lib.optional valgrindSupport valgrind - ; - - CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11"; - - configureFlags = - # Disable all extensions - [ "--disable-all" ] - - # PCRE - ++ lib.optionals (lib.versionAtLeast version "7.4") [ "--with-external-pcre=${pcre'.dev}" ] - ++ lib.optionals (lib.versions.majorMinor version == "7.3") [ "--with-pcre-regex=${pcre'.dev}" ] - ++ lib.optionals (lib.versionOlder version "7.3") [ "--with-pcre-regex=${pcre'.dev}" ] - ++ [ "PCRE_LIBDIR=${pcre'}" ] - - - # Enable sapis - ++ lib.optional (!cgiSupport) "--disable-cgi" - ++ lib.optional (!cliSupport) "--disable-cli" - ++ lib.optional fpmSupport "--enable-fpm" - ++ lib.optional pearSupport [ "--with-pear=$(out)/lib/php/pear" "--enable-xml" "--with-libxml" ] - ++ lib.optional (pearSupport && (lib.versionOlder version "7.4")) "--enable-libxml" - ++ lib.optional pharSupport "--enable-phar" - ++ lib.optional phpdbgSupport "--enable-phpdbg" - - - # Misc flags - ++ lib.optional apxs2Support "--with-apxs2=${apacheHttpd.dev}/bin/apxs" - ++ lib.optional argon2Support "--with-password-argon2=${libargon2}" - ++ lib.optional cgotoSupport "--enable-re2c-cgoto" - ++ lib.optional embedSupport "--enable-embed" - ++ lib.optional (!ipv6Support) "--disable-ipv6" - ++ lib.optional systemdSupport "--with-fpm-systemd" - ++ lib.optional valgrindSupport "--with-valgrind=${valgrind.dev}" - ++ lib.optional ztsSupport "--enable-maintainer-zts" - ; - - hardeningDisable = [ "bindnow" ]; - - preConfigure = '' - # Don't record the configure flags since this causes unnecessary - # runtime dependencies - for i in main/build-defs.h.in scripts/php-config.in; do - substituteInPlace $i \ - --replace '@CONFIGURE_COMMAND@' '(omitted)' \ - --replace '@CONFIGURE_OPTIONS@' "" \ - --replace '@PHP_LDFLAGS@' "" - done - - export EXTENSION_DIR=$out/lib/php/extensions - - ./buildconf --copy --force - - if test -f $src/genfiles; then - ./genfiles - fi - '' + lib.optionalString stdenv.isDarwin '' - substituteInPlace configure --replace "-lstdc++" "-lc++" - ''; - - postInstall = '' - test -d $out/etc || mkdir $out/etc - cp php.ini-production $out/etc/php.ini - ''; - - postFixup = '' - mkdir -p $dev/bin $dev/share/man/man1 - mv $out/bin/phpize $out/bin/php-config $dev/bin/ - mv $out/share/man/man1/phpize.1.gz \ - $out/share/man/man1/php-config.1.gz \ - $dev/share/man/man1/ - ''; - - src = fetchurl { - url = "https://www.php.net/distributions/php-${version}.tar.bz2"; - inherit sha256; - }; - - patches = [ ./fix-paths-php7.patch ] ++ extraPatches; - - separateDebugInfo = true; - - outputs = [ "out" "dev" ]; - - meta = with stdenv.lib; { - description = "An HTML-embedded scripting language"; - homepage = "https://www.php.net/"; - license = licenses.php301; - maintainers = with maintainers; [ globin etu ma27 ]; - platforms = platforms.all; - outputsToInstall = [ "out" "dev" ]; - }; - }; - - generic' = { version, sha256, self, selfWithExtensions, ... }@args: - let - php = generic (builtins.removeAttrs args [ "self" "selfWithExtensions" ]); - - php-packages = (callPackage ../../../top-level/php-packages.nix { - php = self; - phpWithExtensions = selfWithExtensions; - }); - - buildEnv = { extensions ? (_: []), extraConfig ? "" }: - let - getExtName = ext: lib.removePrefix "php-" (builtins.parseDrvName ext.name).name; - enabledExtensions = extensions php-packages.extensions; - - # Generate extension load configuration snippets from the - # extension parameter. This is an attrset suitable for use - # with textClosureList, which is used to put the strings in - # the right order - if a plugin which is dependent on - # another plugin is placed before its dependency, it will - # fail to load. - extensionTexts = - lib.listToAttrs - (map (ext: + { callPackage, lib, stdenv, nixosTests, config, fetchurl, makeWrapper + , symlinkJoin, writeText, autoconf, automake, bison, flex, libtool + , pkgconfig, re2c, apacheHttpd, libargon2, libxml2, pcre, pcre2 + , systemd, valgrind + + , version + , sha256 + , extraPatches ? [] + + # Sapi flags + , cgiSupport ? true + , cliSupport ? true + , fpmSupport ? true + , pearSupport ? true + , pharSupport ? true + , phpdbgSupport ? true + + # Misc flags + , apxs2Support ? !stdenv.isDarwin + , argon2Support ? true + , cgotoSupport ? false + , embedSupport ? false + , ipv6Support ? true + , systemdSupport ? stdenv.isLinux + , valgrindSupport ? true + , ztsSupport ? apxs2Support + }@args: + let + # buildEnv wraps php to provide additional extensions and + # configuration. Its usage is documented in + # doc/languages-frameworks/php.section.md. + # + # Create a buildEnv with earlier overridden values and + # extensions functions in its closure. This is necessary for + # consecutive calls to buildEnv and overrides to work as + # expected. + mkBuildEnv = prevArgs: prevExtensionFunctions: lib.makeOverridable ( + { extensions ? ({...}: []), extraConfig ? "", ... }@innerArgs: + let + allArgs = args // prevArgs // innerArgs; + filteredArgs = builtins.removeAttrs allArgs [ "extensions" "extraConfig" ]; + php = generic filteredArgs; + + php-packages = (callPackage ../../../top-level/php-packages.nix { + php = phpWithExtensions; + }); + + allExtensionFunctions = prevExtensionFunctions ++ [ extensions ]; + enabledExtensions = + builtins.foldl' + (state: f: + f { enabled = state; all = php-packages.extensions; }) + [] + allExtensionFunctions; + + getExtName = ext: lib.removePrefix "php-" (builtins.parseDrvName ext.name).name; + + # Recursively get a list of all internal dependencies + # for a list of extensions. + getDepsRecursively = extensions: let - extName = getExtName ext; - type = "${lib.optionalString (ext.zendExtension or false) "zend_"}extension"; + deps = lib.concatMap + (ext: ext.internalDeps or []) + extensions; in - lib.nameValuePair extName { - text = "${type}=${ext}/lib/php/extensions/${extName}.so"; - deps = lib.optionals (ext ? internalDeps) - (map getExtName ext.internalDeps); - }) - enabledExtensions); - - extNames = map getExtName enabledExtensions; - extraInit = writeText "custom-php.ini" '' - ${lib.concatStringsSep "\n" - (lib.textClosureList extensionTexts extNames)} - ${extraConfig} + if ! (deps == []) then + deps ++ (getDepsRecursively deps) + else + deps; + + # Generate extension load configuration snippets from the + # extension parameter. This is an attrset suitable for use + # with textClosureList, which is used to put the strings in + # the right order - if a plugin which is dependent on + # another plugin is placed before its dependency, it will + # fail to load. + extensionTexts = + lib.listToAttrs + (map (ext: + let + extName = getExtName ext; + type = "${lib.optionalString (ext.zendExtension or false) "zend_"}extension"; + in + lib.nameValuePair extName { + text = "${type}=${ext}/lib/php/extensions/${extName}.so"; + deps = lib.optionals (ext ? internalDeps) + (map getExtName ext.internalDeps); + }) + (enabledExtensions ++ (getDepsRecursively enabledExtensions))); + + extNames = map getExtName enabledExtensions; + extraInit = writeText "php.ini" '' + ${lib.concatStringsSep "\n" + (lib.textClosureList extensionTexts extNames)} + ${extraConfig} + ''; + + phpWithExtensions = symlinkJoin rec { + name = "php-with-extensions-${version}"; + inherit (php) version; + nativeBuildInputs = [ makeWrapper ]; + passthru = { + buildEnv = mkBuildEnv allArgs allExtensionFunctions; + withExtensions = mkWithExtensions allArgs allExtensionFunctions; + phpIni = "${phpWithExtensions}/lib/php.ini"; + unwrapped = php; + tests = nixosTests.php; + inherit (php-packages) packages extensions; + inherit (php) meta; + }; + paths = [ php ]; + postBuild = '' + cp ${extraInit} $out/lib/php.ini + + wrapProgram $out/bin/php --set PHP_INI_SCAN_DIR $out/lib + + if test -e $out/bin/php-fpm; then + wrapProgram $out/bin/php-fpm --set PHP_INI_SCAN_DIR $out/lib + fi + ''; + }; + in + phpWithExtensions); + + mkWithExtensions = prevArgs: prevExtensionFunctions: extensions: + mkBuildEnv prevArgs prevExtensionFunctions { inherit extensions; }; + + pcre' = if (lib.versionAtLeast version "7.3") then pcre2 else pcre; + in + stdenv.mkDerivation { + pname = "php"; + + inherit version; + + enableParallelBuilding = true; + + nativeBuildInputs = [ autoconf automake bison flex libtool pkgconfig re2c ]; + + buildInputs = + # PCRE extension + [ pcre' ] + + # Enable sapis + ++ lib.optional pearSupport [ libxml2.dev ] + + # Misc deps + ++ lib.optional apxs2Support apacheHttpd + ++ lib.optional argon2Support libargon2 + ++ lib.optional systemdSupport systemd + ++ lib.optional valgrindSupport valgrind + ; + + CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11"; + + configureFlags = + # Disable all extensions + [ "--disable-all" ] + + # PCRE + ++ lib.optionals (lib.versionAtLeast version "7.4") [ "--with-external-pcre=${pcre'.dev}" ] + ++ lib.optionals (lib.versions.majorMinor version == "7.3") [ "--with-pcre-regex=${pcre'.dev}" ] + ++ lib.optionals (lib.versionOlder version "7.3") [ "--with-pcre-regex=${pcre'.dev}" ] + ++ [ "PCRE_LIBDIR=${pcre'}" ] + + + # Enable sapis + ++ lib.optional (!cgiSupport) "--disable-cgi" + ++ lib.optional (!cliSupport) "--disable-cli" + ++ lib.optional fpmSupport "--enable-fpm" + ++ lib.optional pearSupport [ "--with-pear=$(out)/lib/php/pear" "--enable-xml" "--with-libxml" ] + ++ lib.optional (pearSupport && (lib.versionOlder version "7.4")) "--enable-libxml" + ++ lib.optional pharSupport "--enable-phar" + ++ lib.optional phpdbgSupport "--enable-phpdbg" + + + # Misc flags + ++ lib.optional apxs2Support "--with-apxs2=${apacheHttpd.dev}/bin/apxs" + ++ lib.optional argon2Support "--with-password-argon2=${libargon2}" + ++ lib.optional cgotoSupport "--enable-re2c-cgoto" + ++ lib.optional embedSupport "--enable-embed" + ++ lib.optional (!ipv6Support) "--disable-ipv6" + ++ lib.optional systemdSupport "--with-fpm-systemd" + ++ lib.optional valgrindSupport "--with-valgrind=${valgrind.dev}" + ++ lib.optional ztsSupport "--enable-maintainer-zts" + ; + + hardeningDisable = [ "bindnow" ]; + + preConfigure = '' + # Don't record the configure flags since this causes unnecessary + # runtime dependencies + for i in main/build-defs.h.in scripts/php-config.in; do + substituteInPlace $i \ + --replace '@CONFIGURE_COMMAND@' '(omitted)' \ + --replace '@CONFIGURE_OPTIONS@' "" \ + --replace '@PHP_LDFLAGS@' "" + done + + export EXTENSION_DIR=$out/lib/php/extensions + + ./buildconf --copy --force + + if test -f $src/genfiles; then + ./genfiles + fi + '' + lib.optionalString stdenv.isDarwin '' + substituteInPlace configure --replace "-lstdc++" "-lc++" ''; - in - symlinkJoin { - name = "php-with-extensions-${version}"; - inherit (php) version; - nativeBuildInputs = [ makeWrapper ]; - passthru = { - inherit buildEnv withExtensions enabledExtensions; - inherit (php-packages) packages extensions; - }; - paths = [ php ]; - postBuild = '' - cp ${extraInit} $out/lib/custom-php.ini - - wrapProgram $out/bin/php --set PHP_INI_SCAN_DIR $out/lib - - if test -e $out/bin/php-fpm; then - wrapProgram $out/bin/php-fpm --set PHP_INI_SCAN_DIR $out/lib - fi - ''; + + postInstall = '' + test -d $out/etc || mkdir $out/etc + cp php.ini-production $out/etc/php.ini + ''; + + postFixup = '' + mkdir -p $dev/bin $dev/share/man/man1 + mv $out/bin/phpize $out/bin/php-config $dev/bin/ + mv $out/share/man/man1/phpize.1.gz \ + $out/share/man/man1/php-config.1.gz \ + $dev/share/man/man1/ + ''; + + src = fetchurl { + url = "https://www.php.net/distributions/php-${version}.tar.bz2"; + inherit sha256; }; - withExtensions = extensions: buildEnv { inherit extensions; }; - in - php.overrideAttrs (_: { - passthru = { - enabledExtensions = []; - inherit buildEnv withExtensions; - inherit (php-packages) packages extensions; + patches = [ ./fix-paths-php7.patch ] ++ extraPatches; + + separateDebugInfo = true; + + outputs = [ "out" "dev" ]; + + passthru = { + buildEnv = mkBuildEnv {} []; + withExtensions = mkWithExtensions {} []; + }; + + meta = with stdenv.lib; { + description = "An HTML-embedded scripting language"; + homepage = "https://www.php.net/"; + license = licenses.php301; + maintainers = teams.php.members; + platforms = platforms.all; + outputsToInstall = [ "out" "dev" ]; + }; }; - }); - php72base = generic' { + php72base = callPackage generic (_args // { version = "7.2.29"; sha256 = "08xry2fgqgg8s0ym1hh11wkbr36av3zq1bn4krbciw1b7x8gb8ga"; - self = php72base; - selfWithExtensions = php72; # https://bugs.php.net/bug.php?id=76826 extraPatches = lib.optional stdenv.isDarwin ./php72-darwin-isfinite.patch; - }; + }); - php73base = generic' { + php73base = callPackage generic (_args // { version = "7.3.16"; sha256 = "0bh499v9dfgh9k51w4rird1slb9rh9whp5h37fb84c98d992s1xq"; - self = php73base; - selfWithExtensions = php73; # https://bugs.php.net/bug.php?id=76826 extraPatches = lib.optional stdenv.isDarwin ./php73-darwin-isfinite.patch; - }; + }); - php74base = generic' { + php74base = callPackage generic (_args // { version = "7.4.4"; sha256 = "17w2m4phhpj76x5fx67vgjrlkcczqvky3f5in1kjg2pch90qz3ih"; - self = php74base; - selfWithExtensions = php74; - }; + }); - defaultPhpExtensions = extensions: with extensions; ([ + defaultPhpExtensions = { all, ... }: with all; ([ bcmath calendar curl ctype dom exif fileinfo filter ftp gd gettext gmp iconv intl json ldap mbstring mysqli mysqlnd opcache openssl pcntl pdo pdo_mysql pdo_odbc pdo_pgsql pdo_sqlite pgsql @@ -252,13 +282,13 @@ let tokenizer xmlreader xmlwriter zip zlib ] ++ lib.optionals (!stdenv.isDarwin) [ imap ]); - defaultPhpExtensionsWithHash = extensions: - (defaultPhpExtensions extensions) ++ [ extensions.hash ]; + defaultPhpExtensionsWithHash = { all, ... }: + (defaultPhpExtensions { inherit all; }) ++ [ all.hash ]; php74 = php74base.withExtensions defaultPhpExtensions; php73 = php73base.withExtensions defaultPhpExtensionsWithHash; php72 = php72base.withExtensions defaultPhpExtensionsWithHash; in { - inherit php72base php73base php74base php72 php73 php74; + inherit php72 php73 php74; } diff --git a/pkgs/development/interpreters/picoc/default.nix b/pkgs/development/interpreters/picoc/default.nix index 00e77033575f..f7343f6e4d60 100644 --- a/pkgs/development/interpreters/picoc/default.nix +++ b/pkgs/development/interpreters/picoc/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; # Tests are currently broken on i686 see - # http://hydra.nixos.org/build/24003763/nixlog/1 + # https://hydra.nixos.org/build/24003763/nixlog/1 doCheck = if stdenv.isi686 then false else true; checkTarget = "test"; diff --git a/pkgs/development/interpreters/python/default.nix b/pkgs/development/interpreters/python/default.nix index 5dc3b224720a..2def54de12d1 100644 --- a/pkgs/development/interpreters/python/default.nix +++ b/pkgs/development/interpreters/python/default.nix @@ -23,8 +23,6 @@ with pkgs; }; in rec { isPy27 = pythonVersion == "2.7"; - isPy33 = pythonVersion == "3.3"; # TODO: remove - isPy34 = pythonVersion == "3.4"; # TODO: remove isPy35 = pythonVersion == "3.5"; isPy36 = pythonVersion == "3.6"; isPy37 = pythonVersion == "3.7"; diff --git a/pkgs/development/interpreters/python/tests.nix b/pkgs/development/interpreters/python/tests.nix index 55065c45d576..f7ec06ce4ff7 100644 --- a/pkgs/development/interpreters/python/tests.nix +++ b/pkgs/development/interpreters/python/tests.nix @@ -38,21 +38,22 @@ let is_nixenv = "False"; }; + } // lib.optionalAttrs (python.pythonAtLeast "3.8") { # Venv built using Python Nix environment (python.buildEnv) # TODO: Cannot create venv from a nix env # Error: Command '['/nix/store/ddc8nqx73pda86ibvhzdmvdsqmwnbjf7-python3-3.7.6-venv/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. - # nixenv-venv = rec { - # env = runCommand "${python.name}-venv" {} '' - # ${pythonEnv.interpreter} -m venv $out - # ''; - # interpreter = "${env}/bin/${pythonEnv.executable}"; - # is_venv = "True"; - # is_nixenv = "True"; - # }; + nixenv-venv = rec { + env = runCommand "${python.name}-venv" {} '' + ${pythonEnv.interpreter} -m venv $out + ''; + interpreter = "${env}/bin/${pythonEnv.executable}"; + is_venv = "True"; + is_nixenv = "True"; + }; }; # All PyPy package builds are broken at the moment - integrationTests = lib.optionalAttrs (python.isPy3k && (!python.isPyPy)) rec { + integrationTests = lib.optionalAttrs (python.pythonAtLeast "3.7" && (!python.isPyPy)) rec { # Before the addition of NIX_PYTHONPREFIX mypy was broken with typed packages nix-pythonprefix-mypy = callPackage ./tests/test_nix_pythonprefix { interpreter = python; diff --git a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix index 06219a69fcaf..8d330fcdbfc9 100644 --- a/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix +++ b/pkgs/development/interpreters/python/tests/test_nix_pythonprefix/typeddep/default.nix @@ -1,4 +1,4 @@ -{ buildPythonPackage }: +{ buildPythonPackage, pythonOlder }: buildPythonPackage { @@ -8,4 +8,6 @@ buildPythonPackage { src = ./.; + disabled = pythonOlder "3.7"; + } diff --git a/pkgs/development/interpreters/rakudo/zef.nix b/pkgs/development/interpreters/rakudo/zef.nix index 9a8c11324a21..5c8fe16408b4 100644 --- a/pkgs/development/interpreters/rakudo/zef.nix +++ b/pkgs/development/interpreters/rakudo/zef.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "zef"; - version = "0.8.3"; + version = "0.8.4"; src = fetchFromGitHub { owner = "ugexe"; repo = "zef"; rev = "v${version}"; - sha256 = "1fscv8fbaa5l8dcwclmq3hvg3c59l4dvyjqb316mgnc5anxpzy2f"; + sha256 = "02a3awnjr1mgb9275xvp3xms80vcxkq55ffi8sbjzxpwyadj5y5k"; }; buildInputs = [ rakudo makeWrapper ]; diff --git a/pkgs/development/interpreters/wasmtime/default.nix b/pkgs/development/interpreters/wasmtime/default.nix index 79222749dc4b..67d54af7bb2a 100644 --- a/pkgs/development/interpreters/wasmtime/default.nix +++ b/pkgs/development/interpreters/wasmtime/default.nix @@ -2,24 +2,26 @@ rustPlatform.buildRustPackage rec { pname = "wasmtime"; - version = "0.12.0"; + version = "0.15.0"; src = fetchFromGitHub { owner = "bytecodealliance"; repo = "${pname}"; rev = "v${version}"; - sha256 = "08dhk5s8rv41mjqbwfqwqmp6p6p9y7qc5yc76ljjd9l7j1phl7mr"; + sha256 = "1df99iak0psydlg9m8f8qq4zyh4wbi5l4qgsdjr2lm74ci3483xy"; fetchSubmodules = true; }; - cargoSha256 = "0vyxp74jlnrisk0kblsbj9d9a54wcgzbyjm7iqav1k4ns3syrnmh"; + cargoSha256 = "170bz48jrc1k2ylfmd3bcry0xpcxx8p3rzzv9mprlfmrfpb0b28r"; nativeBuildInputs = [ python cmake clang ]; buildInputs = [ llvmPackages.libclang ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; LIBCLANG_PATH = "${llvmPackages.libclang}/lib"; - doCheck = false; # https://github.com/bytecodealliance/wasmtime/issues/1197 + # no test on darwin due to + # https://github.com/bytecodealliance/wasmtime/issues/1556 + doCheck = !stdenv.isDarwin; meta = with lib; { description = "Standalone JIT-style runtime for WebAssembly, using Cranelift"; |