···484484### Interpreters
485485486486Versions 2.7, 3.5, 3.6 and 3.7 of the CPython interpreter are available as
487487-respectively `python27`, `python35`, `python36`, and `python37`. The PyPy
488488-interpreter is available as `pypy`. The aliases `python2` and `python3`
489489-correspond to respectively `python27` and `python37`. The default interpreter,
490490-`python`, maps to `python2`. The Nix expressions for the interpreters can be
487487+respectively `python27`, `python35`, `python36` and `python37`. The aliases
488488+`python2` and `python3` correspond to respectively `python27` and
489489+`python37`. The default interpreter, `python`, maps to `python2`. The PyPy
490490+interpreters compatible with Python 2.7 and 3 are available as `pypy27` and
491491+`pypy3`, with aliases `pypy2` mapping to `pypy27` and `pypy` mapping to
492492+`pypy2`. The Nix expressions for the interpreters can be
491493found in `pkgs/development/interpreters/python`.
492494493495All packages depending on any Python interpreter get appended
···11021104The following is an overlay that configures `numpy` to use `mkl`:
11031105```nix
11041106self: super: {
11051105- python36 = super.python36.override {
11071107+ python37 = super.python37.override {
11061108 packageOverrides = python-self: python-super: {
11071109 numpy = python-super.numpy.override {
11081110 blas = super.pkgs.mkl;
···11111113 };
11121114}
11131115```
11161116+11171117+`mkl` requires an `openmp` implementation when running with multiple processors.
11181118+By default, `mkl` will use Intel's `iomp` implementation if no other is
11191119+specified, but this is a runtime-only dependency and binary compatible with the
11201120+LLVM implementation. To use that one instead, Intel recommends users set it with
11211121+`LD_PRELOAD`.
11221122+11231123+Note that `mkl` is only available on `x86_64-{linux,darwin}` platforms;
11241124+moreover, Hydra is not building and distributing pre-compiled binaries using it.
1114112511151126## Contributing
11161127
···4343 <literal>./programs/nm-applet.nix</literal>
4444 </para>
4545 </listitem>
4646+ <listitem>
4747+ <para>
4848+ There is a new <varname>security.googleOsLogin</varname> module for using
4949+ <link xlink:href="https://cloud.google.com/compute/docs/instances/managing-instance-access">OS Login</link>
5050+ to manage SSH access to Google Compute Engine instances, which supersedes
5151+ the imperative and broken <literal>google-accounts-daemon</literal> used
5252+ in <literal>nixos/modules/virtualisation/google-compute-config.nix</literal>.
5353+ </para>
5454+ </listitem>
4655 </itemizedlist>
4756 </section>
4857···316325 path. Regenerate the <literal>authorized_keys</literal> file via
317326 <command>sudo -u git -H gitlab-rake gitlab:shell:setup</command> in that
318327 case.
328328+ </para>
329329+ </listitem>
330330+ <listitem>
331331+ <para>
332332+ The <literal>pam_unix</literal> account module is now loaded with its
333333+ control field set to <literal>required</literal> instead of
334334+ <literal>sufficient</literal>, so that later pam account modules that
335335+ might do more extensive checks are being executed.
336336+ Previously, the whole account module verification was exited prematurely
337337+ in case a nss module provided the account name to
338338+ <literal>pam_unix</literal>.
339339+ The LDAP and SSSD NixOS modules already add their NSS modules when
340340+ enabled. In case your setup breaks due to some later pam account module
341341+ previosuly shadowed, or failing NSS lookups, please file a bug. You can
342342+ get back the old behaviour by manually setting
343343+ <literal><![CDATA[security.pam.services.<name?>.text]]></literal>.
319344 </para>
320345 </listitem>
321346 </itemizedlist>
···11+{ config, lib, pkgs, ... }:
22+33+with lib;
44+55+let
66+77+ cfg = config.security.googleOsLogin;
88+ package = pkgs.google-compute-engine-oslogin;
99+1010+in
1111+1212+{
1313+1414+ options = {
1515+1616+ security.googleOsLogin.enable = mkOption {
1717+ type = types.bool;
1818+ default = false;
1919+ description = ''
2020+ Whether to enable Google OS Login
2121+2222+ The OS Login package enables the following components:
2323+ AuthorizedKeysCommand to query valid SSH keys from the user's OS Login
2424+ profile during ssh authentication phase.
2525+ NSS Module to provide user and group information
2626+ PAM Module for the sshd service, providing authorization and
2727+ authentication support, allowing the system to use data stored in
2828+ Google Cloud IAM permissions to control both, the ability to log into
2929+ an instance, and to perform operations as root (sudo).
3030+ '';
3131+ };
3232+3333+ };
3434+3535+ config = mkIf cfg.enable {
3636+ security.pam.services.sshd = {
3737+ makeHomeDir = true;
3838+ googleOsLoginAccountVerification = true;
3939+ # disabled for now: googleOsLoginAuthentication = true;
4040+ };
4141+4242+ security.sudo.extraConfig = ''
4343+ #includedir /run/google-sudoers.d
4444+ '';
4545+ systemd.tmpfiles.rules = [
4646+ "d /run/google-sudoers.d 750 root root -"
4747+ "d /var/google-users.d 750 root root -"
4848+ ];
4949+5050+ # enable the nss module, so user lookups etc. work
5151+ system.nssModules = [ package ];
5252+5353+ # Ugly: sshd refuses to start if a store path is given because /nix/store is group-writable.
5454+ # So indirect by a symlink.
5555+ environment.etc."ssh/authorized_keys_command_google_oslogin" = {
5656+ mode = "0755";
5757+ text = ''
5858+ #!/bin/sh
5959+ exec ${package}/bin/google_authorized_keys "$@"
6060+ '';
6161+ };
6262+ services.openssh.extraConfig = ''
6363+ AuthorizedKeysCommand /etc/ssh/authorized_keys_command_google_oslogin %u
6464+ AuthorizedKeysCommandUser nobody
6565+ '';
6666+ };
6767+6868+}
+31-1
nixos/modules/security/pam.nix
···7777 '';
7878 };
79798080+ googleOsLoginAccountVerification = mkOption {
8181+ default = false;
8282+ type = types.bool;
8383+ description = ''
8484+ If set, will use the Google OS Login PAM modules
8585+ (<literal>pam_oslogin_login</literal>,
8686+ <literal>pam_oslogin_admin</literal>) to verify possible OS Login
8787+ users and set sudoers configuration accordingly.
8888+ This only makes sense to enable for the <literal>sshd</literal> PAM
8989+ service.
9090+ '';
9191+ };
9292+9393+ googleOsLoginAuthentication = mkOption {
9494+ default = false;
9595+ type = types.bool;
9696+ description = ''
9797+ If set, will use the <literal>pam_oslogin_login</literal>'s user
9898+ authentication methods to authenticate users using 2FA.
9999+ This only makes sense to enable for the <literal>sshd</literal> PAM
100100+ service.
101101+ '';
102102+ };
103103+80104 fprintAuth = mkOption {
81105 default = config.services.fprintd.enable;
82106 type = types.bool;
···269293 text = mkDefault
270294 (''
271295 # Account management.
272272- account ${if cfg.sssdStrictAccess then "required" else "sufficient"} pam_unix.so
296296+ account required pam_unix.so
273297 ${optionalString use_ldap
274298 "account sufficient ${pam_ldap}/lib/security/pam_ldap.so"}
275299 ${optionalString (config.services.sssd.enable && cfg.sssdStrictAccess==false)
···278302 "account [default=bad success=ok user_unknown=ignore] ${pkgs.sssd}/lib/security/pam_sss.so"}
279303 ${optionalString config.krb5.enable
280304 "account sufficient ${pam_krb5}/lib/security/pam_krb5.so"}
305305+ ${optionalString cfg.googleOsLoginAccountVerification ''
306306+ account [success=ok ignore=ignore default=die] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so
307307+ account [success=ok default=ignore] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_admin.so
308308+ ''}
281309282310 # Authentication management.
311311+ ${optionalString cfg.googleOsLoginAuthentication
312312+ "auth [success=done perm_denied=bad default=ignore] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so"}
283313 ${optionalString cfg.rootOK
284314 "auth sufficient pam_rootok.so"}
285315 ${optionalString cfg.requireWheel
···11+import ./make-test.nix ({ pkgs, ... }: {
22+ name = "clickhouse";
33+ meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ma27 ];
44+55+ machine = {
66+ services.clickhouse.enable = true;
77+ };
88+99+ testScript =
1010+ let
1111+ # work around quote/substitution complexity by Nix, Perl, bash and SQL.
1212+ tableDDL = pkgs.writeText "ddl.sql" "CREATE TABLE `demo` (`value` FixedString(10)) engine = MergeTree PARTITION BY value ORDER BY tuple();";
1313+ insertQuery = pkgs.writeText "insert.sql" "INSERT INTO `demo` (`value`) VALUES ('foo');";
1414+ selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`";
1515+ in
1616+ ''
1717+ $machine->start();
1818+ $machine->waitForUnit("clickhouse.service");
1919+ $machine->waitForOpenPort(9000);
2020+2121+ $machine->succeed("cat ${tableDDL} | clickhouse-client");
2222+ $machine->succeed("cat ${insertQuery} | clickhouse-client");
2323+ $machine->succeed("cat ${selectQuery} | clickhouse-client | grep foo");
2424+ '';
2525+})
+52
nixos/tests/google-oslogin/default.nix
···11+import ../make-test.nix ({ pkgs, ... } :
22+let
33+ inherit (import ./../ssh-keys.nix pkgs)
44+ snakeOilPrivateKey snakeOilPublicKey;
55+in {
66+ name = "google-oslogin";
77+ meta = with pkgs.stdenv.lib.maintainers; {
88+ maintainers = [ adisbladis flokli ];
99+ };
1010+1111+ nodes = {
1212+ # the server provides both the the mocked google metadata server and the ssh server
1313+ server = (import ./server.nix pkgs);
1414+1515+ client = { ... }: {};
1616+ };
1717+ testScript = ''
1818+ startAll;
1919+2020+ $server->waitForUnit("mock-google-metadata.service");
2121+ $server->waitForOpenPort(80);
2222+2323+ # mockserver should return a non-expired ssh key for both mockuser and mockadmin
2424+ $server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockuser | grep -q "${snakeOilPublicKey}"');
2525+ $server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockadmin | grep -q "${snakeOilPublicKey}"');
2626+2727+ # install snakeoil ssh key on the client
2828+ $client->succeed("mkdir -p ~/.ssh");
2929+ $client->succeed("cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil");
3030+ $client->succeed("chmod 600 ~/.ssh/id_snakeoil");
3131+3232+ $client->waitForUnit("network.target");
3333+ $server->waitForUnit("sshd.service");
3434+3535+ # we should not be able to connect as non-existing user
3636+ $client->fail("ssh -o User=ghost -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'");
3737+3838+ # we should be able to connect as mockuser
3939+ $client->succeed("ssh -o User=mockuser -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'");
4040+ # but we shouldn't be able to sudo
4141+ $client->fail("ssh -o User=mockuser -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'");
4242+4343+ # we should also be able to log in as mockadmin
4444+ $client->succeed("ssh -o User=mockadmin -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'");
4545+ # pam_oslogin_admin.so should now have generated a sudoers file
4646+ $server->succeed("find /run/google-sudoers.d | grep -q '/run/google-sudoers.d/mockadmin'");
4747+4848+ # and we should be able to sudo
4949+ $client->succeed("ssh -o User=mockadmin -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'");
5050+ '';
5151+ })
5252+
···11+{ stdenv, makeWrapper, tesseractBase, languages
22+33+# A list of languages like [ "eng" "spa" … ] or `null` for all available languages
44+, enableLanguages ? null
55+66+# A list of files or a directory containing files
77+, tessdata ? (if enableLanguages == null then languages.all
88+ else map (lang: languages.${lang}) enableLanguages)
99+1010+# This argument is obsolete
1111+, enableLanguagesHash ? null
1212+}:
1313+1414+let
1515+ passthru = { inherit tesseractBase languages tessdata; };
1616+1717+ tesseractWithData = tesseractBase.overrideAttrs (_: {
1818+ inherit tesseractBase tessdata;
1919+2020+ buildInputs = [ makeWrapper ];
2121+2222+ buildCommand = ''
2323+ makeWrapper {$tesseractBase,$out}/bin/tesseract --set-default TESSDATA_PREFIX $out/share/tessdata
2424+2525+ # Recursively link include, share
2626+ cp -rs --no-preserve=mode $tesseractBase/{include,share} $out
2727+2828+ cp -r --no-preserve=mode $tesseractBase/lib $out
2929+ # Fixup the store paths in lib so that the tessdata from this derivation is used.
3030+ if (( ''${#tesseractBase} != ''${#out} )); then
3131+ echo "Can't replace store paths due to differing lengths"
3232+ exit 1
3333+ fi
3434+ find $out/lib -type f -exec sed -i "s|$tesseractBase|$out|g" {} \;
3535+3636+ if [[ -d "$tessdata" ]]; then
3737+ ln -s $tessdata/* $out/share/tessdata
3838+ else
3939+ for lang in $tessdata; do
4040+ ln -s $lang $out/share/tessdata/''${lang#/nix/store*-}
4141+ done
4242+ fi
4343+4444+ if [[ ! -e $out/share/tessdata/eng.traineddata ]]; then
4545+ # This is a bug in Tesseract's internal tessdata discovery mechanism
4646+ echo "eng.traineddata must be present in tessdata for Tesseract to work"
4747+ exit 1
4848+ fi
4949+ '';
5050+ });
5151+5252+ tesseract = (if enableLanguages == [] then tesseractBase else tesseractWithData) // passthru;
5353+in
5454+ if enableLanguagesHash == null then
5555+ tesseract
5656+ else
5757+ stdenv.lib.warn "Argument `enableLanguagesHash` is obsolete and can be removed."
5858+ tesseract
···4646 license = stdenv.lib.licenses.mit;
4747 maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
4848 platforms = stdenv.lib.platforms.linux;
4949+ # See pkgs/applications/science/logic/glucose/default.nix
5050+ # (The error is different due to glucose-fenv.patch, but the same)
5151+ badPlatforms = [ "aarch64-linux" ];
4952 };
5053}
···11+{ stdenv, fetchurl, gnome3 }:
22+33+stdenv.mkDerivation rec {
44+ pname = "mm-common";
55+ version = "0.9.12";
66+77+ src = fetchurl {
88+ url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
99+ sha256 = "02vwgv404b56wxy0gnm9xq9fvzgn9dhfqcy2hhl78ljv3v7drzyf";
1010+ };
1111+1212+ passthru = {
1313+ updateScript = gnome3.updateScript {
1414+ packageName = pname;
1515+ versionPolicy = "none";
1616+ };
1717+ };
1818+1919+ meta = with stdenv.lib; {
2020+ description = "Common build files of GLib/GTK+ C++ bindings";
2121+ longDescription = ''
2222+ The mm-common module provides the build infrastructure and utilities
2323+ shared among the GNOME C++ binding libraries. It is only a required
2424+ dependency for building the C++ bindings from the gnome.org version
2525+ control repository. An installation of mm-common is not required for
2626+ building tarball releases, unless configured to use maintainer-mode.
2727+ '';
2828+ homepage = http://www.gtkmm.org;
2929+ license = licenses.gpl2Plus;
3030+ maintainers = gnome3.maintainers;
3131+ platforms = platforms.linux;
3232+ };
3333+}
···11{ stdenvNoCC, writeText, fetchurl, rpmextract, undmg }:
22/*
33- Some (but not all) mkl functions require openmp, but Intel does not add these
44- to SO_NEEDED and instructs users to put openmp on their LD_LIBRARY_PATH. If
55- you are using mkl and your library/application is using some of the functions
66- that require openmp, add a setupHook like this to your package:
77-88- setupHook = writeText "setup-hook.sh" ''
99- addOpenmp() {
1010- addToSearchPath LD_LIBRARY_PATH ${openmp}/lib
1111- }
1212- addEnvHooks "$targetOffset" addOpenmp
1313- '';
1414-1515- We do not add the setup hook here, because avoiding it allows this large
1616- package to be a fixed-output derivation with better cache efficiency.
1717- */
1818-33+ For details on using mkl as a blas provider for python packages such as numpy,
44+ numexpr, scipy, etc., see the Python section of the NixPkgs manual.
55+*/
196stdenvNoCC.mkDerivation rec {
207 name = "mkl-${version}";
218 version = "${date}.${rel}";
···4330 '' else ''
4431 rpmextract rpm/intel-mkl-common-c-${date}-${rel}-${date}-${rel}.noarch.rpm
4532 rpmextract rpm/intel-mkl-core-rt-${date}-${rel}-${date}-${rel}.x86_64.rpm
3333+ rpmextract rpm/intel-openmp-19.0.0-${rel}-19.0.0-${rel}.x86_64.rpm
4634 '';
47354836 installPhase = if stdenvNoCC.isDarwin then ''
4937 mkdir -p $out/lib
3838+5039 cp -r compilers_and_libraries_${version}/mac/mkl/include $out/
4040+4141+ cp -r compilers_and_libraries_${version}/licensing/mkl/en/license.txt $out/lib/
4242+ cp -r compilers_and_libraries_${version}/mac/compiler/lib/* $out/lib/
5143 cp -r compilers_and_libraries_${version}/mac/mkl/lib/* $out/lib/
5252- cp -r compilers_and_libraries_${version}/licensing/mkl/en/license.txt $out/lib/
5344 '' else ''
5445 mkdir -p $out/lib
4646+5547 cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/include $out/
4848+4949+ cp -r opt/intel/compilers_and_libraries_${version}/linux/compiler/lib/intel64_lin/* $out/lib/
5650 cp -r opt/intel/compilers_and_libraries_${version}/linux/mkl/lib/intel64_lin/* $out/lib/
5751 cp license.txt $out/lib/
5852 '';
···6660 outputHashAlgo = "sha256";
6761 outputHashMode = "recursive";
6862 outputHash = if stdenvNoCC.isDarwin
6969- then "1224dln7n8px1rk8biiggf77wjhxh8mzw0hd8zlyjm8i6j8w7i12"
7070- else "0d8ai0wi8drp071acqkm1wv6vyg12010y843y56zzi1pql81xqvx";
6363+ then "0000000000000000000000000000000000000000000000000000"
6464+ else "1amagcaan0hk3x9v7gg03gkw02n066v4kmjb32yyzsy5rfrivb1a";
71657266 meta = with stdenvNoCC.lib; {
7367 description = "Intel Math Kernel Library";
···7872 threading models.
7973 '';
8074 homepage = https://software.intel.com/en-us/mkl;
8181- license = [ licenses.issl licenses.unfreeRedistributable ];
7575+ license = licenses.issl;
8276 platforms = [ "x86_64-linux" "x86_64-darwin" ];
8377 maintainers = [ maintainers.bhipple ];
8478 };
···1010# wrapped to be able to find aioconsole and any other packages.
1111buildPythonPackage rec {
1212 pname = "aioconsole";
1313- version = "0.1.10";
1313+ version = "0.1.11";
14141515 src = fetchPypi {
1616 inherit pname version;
1717- sha256 = "3fab07073648d70d8345e0eb745bd81fcd02b5e2b080c4663faea8c8ab281c0a";
1717+ sha256 = "0xjfx7fnmc9c8s1agj5mva3api4dywrf1q81yccb1gk7ifrrn04c";
1818 };
19192020 # hardcodes a test dependency on an old version of pytest-asyncio
···1212buildPythonPackage rec {
1313 pname = "cypari2";
1414 # upgrade may break sage, please test the sage build or ping @timokau on upgrade
1515- version = "2.0.1";
1515+ version = "1.3.1";
16161717 src = fetchPypi {
1818 inherit pname version;
1919- sha256 = "32fad615d773e9b5a9394c078ddc2c868e64e35f1ac9633ff90b456901b9d886";
1919+ sha256 = "04f00xp8aaz37v00iqg1mv5wjq00a5qhk8cqa93s13009s9x984r";
2020 };
21212222 # This differs slightly from the default python installPhase in that it pip-installs
+5-4
pkgs/development/python-modules/django/1_11.nix
···6677buildPythonPackage rec {
88 pname = "Django";
99- version = "1.11.16";
99+ version = "1.11.17";
10101111 disabled = pythonOlder "2.7";
12121313 src = fetchurl {
1414- url = "http://www.djangoproject.com/m/releases/1.11/${pname}-${version}.tar.gz";
1515- sha256 = "14apywfi8mfy50xh07cagp24kx9mlqfzfq4f60klz90ng328q9i9";
1414+ url = "https://www.djangoproject.com/m/releases/1.11/${pname}-${version}.tar.gz";
1515+ sha256 = "10xlpm21ll8mgz5py41sz9vrd603qv7an736agbqxkxlyikfx1x7";
1616 };
17171818 patches = stdenv.lib.optionals withGdal [
···3434 # too complicated to setup
3535 doCheck = false;
36363737- meta = {
3737+ meta = with stdenv.lib; {
3838 description = "A high-level Python Web framework";
3939 homepage = https://www.djangoproject.com/;
4040+ license = licenses.bsd3;
4041 };
4142}
+2-3
pkgs/development/python-modules/django/1_8.nix
···6677buildPythonPackage rec {
88 name = "Django-${version}";
99- version = "1.8.18";
1010- disabled = pythonOlder "2.7";
99+ version = "1.8.19";
11101211 src = fetchurl {
1312 url = "http://www.djangoproject.com/m/releases/1.8/${name}.tar.gz";
1414- sha256 = "1ishvbihr9pain0486qafb18dnb7v2ppq34nnx1s8f95bvfiqqf7";
1313+ sha256 = "0iy0ni9j1rnx9b06ycgbg2dkrf3qid3y2jipk9x28cykz5f4mm1k";
1514 };
16151716 # too complicated to setup
···1919 nose
2020 ];
21212222+ checkPhase = ''
2323+ nosetests
2424+ '';
2525+2226 meta = with lib; {
2327 description = "Nose plugin to randomly order tests and control random.seed";
2428 homepage = https://github.com/adamchainz/nose-randomly;
···33, fetchPypi
44, python
55, numpy
66-, llvmPackages ? null
76}:
8798buildPythonPackage rec {
···1615 };
17161817 # Remove existing site.cfg, use the one we built for numpy.
1919- # Somehow openmp needs to be added to LD_LIBRARY_PATH
2020- # https://software.intel.com/en-us/forums/intel-system-studio/topic/611682
2118 preBuild = ''
2219 rm site.cfg
2320 ln -s ${numpy.cfg} site.cfg
2424- export LD_LIBRARY_PATH=${llvmPackages.openmp}/lib
2521 '';
26222727- buildInputs = [] ++ lib.optional (numpy.blasImplementation == "mkl") llvmPackages.openmp;
2828-2923 propagatedBuildInputs = [ numpy ];
30243125 # Run the test suite.
···4741 homepage = "https://github.com/pydata/numexpr";
4842 license = lib.licenses.mit;
4943 };
5050-}4444+}
-2
pkgs/development/python-modules/numpy/default.nix
···7171 inherit blasImplementation cfg;
7272 };
73737474- doCheck = blasImplementation != "mkl";
7575-7674 # Disable two tests
7775 # - test_f2py: f2py isn't yet on path.
7876 # - test_large_file_support: takes a long time and can cause the machine to run out of disk space
···11+From 264f2f6a04d25156bba43524a6b172d2e99c53f4 Mon Sep 17 00:00:00 2001
22+From: Ben Wolsieffer <benwolsieffer@gmail.com>
33+Date: Fri, 21 Dec 2018 17:39:45 -0500
44+Subject: [PATCH] Disable tests that fail on OSX.
55+66+Some of the failures are due to the use of GNU ls.
77+---
88+ test.py | 4 ++++
99+ 1 file changed, 4 insertions(+)
1010+1111+diff --git a/test.py b/test.py
1212+index 68ef40c..2f53360 100644
1313+--- a/test.py
1414++++ b/test.py
1515+@@ -352,6 +352,7 @@ exit(3)
1616+ self.assertEqual(sed(_in="one test three", e="s/test/two/").strip(),
1717+ "one two three")
1818+1919++ @not_osx
2020+ def test_ok_code(self):
2121+ from sh import ls, ErrorReturnCode_1, ErrorReturnCode_2
2222+2323+@@ -498,6 +499,7 @@ while True:
2424+ self.assertEqual(out, match)
2525+2626+2727++ @not_osx
2828+ def test_environment(self):
2929+ """ tests that environments variables that we pass into sh commands
3030+ exist in the environment, and on the sh module """
3131+@@ -861,6 +863,7 @@ print(sys.argv[1])
3232+ self.assertTrue(now - start > sleep_time)
3333+3434+3535++ @not_osx
3636+ def test_background_exception(self):
3737+ from sh import ls, ErrorReturnCode_1, ErrorReturnCode_2
3838+ p = ls("/ofawjeofj", _bg=True) # should not raise
3939+@@ -2036,6 +2039,7 @@ else:
4040+ self.assertEqual(p, "test")
4141+4242+4343++ @not_osx
4444+ def test_signal_exception(self):
4545+ from sh import SignalException_15
4646+4747+--
4848+2.20.0
4949+
···11+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
22+, zlib, bzip2, lzma, lzo, lz4, zstd, xz
33+, libgcrypt, e2fsprogs, utillinux, libgpgerror }:
44+55+let
66+ version = "0.8.5";
77+88+in stdenv.mkDerivation {
99+ name = "fsarchiver-${version}";
1010+1111+ src = fetchFromGitHub {
1212+ owner = "fdupoux";
1313+ repo = "fsarchiver";
1414+ rev = version;
1515+ sha256 = "1rvwq5v3rl14bqxjm1ibfapyicf0sa44nw7451v10kx39lp56ylp";
1616+ };
1717+1818+ nativeBuildInputs = [
1919+ autoreconfHook pkgconfig
2020+ ];
2121+2222+ buildInputs = [
2323+ zlib bzip2 lzma lzo lz4 zstd xz
2424+ libgcrypt e2fsprogs utillinux libgpgerror
2525+ ];
2626+2727+ meta = with stdenv.lib; {
2828+ description = "File system archiver for linux";
2929+ longDescription = ''
3030+ FSArchiver is a system tool that allows you to save the contents of a
3131+ file-system to a compressed archive file. The file-system can be restored
3232+ on a partition which has a different size and it can be restored on a
3333+ different file-system. Unlike tar/dar, FSArchiver also creates the
3434+ file-system when it extracts the data to partitions. Everything is
3535+ checksummed in the archive in order to protect the data. If the archive is
3636+ corrupt, you just loose the current file, not the whole archive.
3737+ '';
3838+ homepage = http://www.fsarchiver.org/;
3939+ license = licenses.lgpl2;
4040+ maintainers = [ maintainers.etu ];
4141+ platforms = platforms.linux;
4242+ };
4343+}
···2233buildPythonApplication rec {
44 pname = "you-get";
55- version = "0.4.1181";
55+ version = "0.4.1193";
6677 # Tests aren't packaged, but they all hit the real network so
88 # probably aren't suitable for a build environment anyway.
···10101111 src = fetchPypi {
1212 inherit pname version;
1313- sha256 = "1rcy590392aycjazi3z8gf6ll39rxkbgmkgnsbsl6yl5vb3jgk83";
1313+ sha256 = "1q7wha0d55pw077bs92bbzx6ck3nsmhnxblz7zaqzladn23hs9zg";
1414 };
15151616 meta = with stdenv.lib; {
+2
pkgs/tools/networking/bud/default.nix
···2929 description = "A TLS terminating proxy";
3030 license = licenses.mit;
3131 platforms = platforms.linux;
3232+ # Does not build on aarch64-linux.
3333+ badPlatforms = [ "aarch64-linux" ];
3234 maintainers = with maintainers; [ cstrahan ];
3335 };
3436}