uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,37 @@
{ lib
, buildPythonPackage
, fetchPypi
, fetchpatch
, docutils
}:
buildPythonPackage rec {
pname = "Pygments";
version = "2.5.2";
src = fetchPypi {
inherit pname version;
sha256 = "98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe";
};
patches = [
(fetchpatch {
name = "CVE-2021-27291.patch";
url = "https://github.com/pygments/pygments/commit/2e7e8c4a7b318f4032493773732754e418279a14.patch";
sha256 = "0ap7jgkmvkkzijabsgnfrwl376cjsxa4jmzvqysrkwpjq3q4rxpa";
excludes = ["CHANGES"];
})
];
propagatedBuildInputs = [ docutils ];
# Circular dependency with sphinx
doCheck = false;
meta = {
homepage = "https://pygments.org/";
description = "A generic syntax highlighter";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ ];
};
}

View file

@ -0,0 +1,26 @@
{ lib
, buildPythonPackage
, fetchPypi
, cheetah
, nose
}:
buildPythonPackage rec {
pname = "TurboCheetah";
version = "1.0";
src = fetchPypi {
inherit pname version;
sha256 = "9e4c7ecb0d061bfb58281363ee1b09337083f013a8b4d0355326a5d8668f450c";
};
propagatedBuildInputs = [ cheetah ];
checkInputs = [ nose ];
meta = {
description = "TurboGears plugin to support use of Cheetah templates";
homepage = "http://docs.turbogears.org/TurboCheetah";
license = lib.licenses.mit;
};
}

View file

@ -0,0 +1,66 @@
{ lib, stdenv, python, makeWrapper, unzip
, pipInstallHook
, setuptoolsBuildHook
, wheel, pip, setuptools
}:
stdenv.mkDerivation rec {
pname = "pip";
inherit (pip) version;
name = "${python.libPrefix}-bootstrapped-${pname}-${version}";
srcs = [ wheel.src pip.src setuptools.src ];
sourceRoot = ".";
dontUseSetuptoolsBuild = true;
dontUsePipInstall = true;
# Should be propagatedNativeBuildInputs
propagatedBuildInputs = [
# Override to remove dependencies to prevent infinite recursion.
(pipInstallHook.override{pip=null;})
(setuptoolsBuildHook.override{setuptools=null; wheel=null;})
];
postPatch = ''
mkdir -p $out/bin
'';
nativeBuildInputs = [ makeWrapper unzip ];
buildInputs = [ python ];
dontBuild = true;
installPhase = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
'' + ''
# Give folders a known name
mv pip* pip
mv setuptools* setuptools
mv wheel* wheel
# Set up PYTHONPATH. The above folders need to be on PYTHONPATH
# $out is where we are installing to and takes precedence
export PYTHONPATH="$out/${python.sitePackages}:$(pwd)/pip/src:$(pwd)/setuptools:$(pwd)/setuptools/pkg_resources:$(pwd)/wheel:$PYTHONPATH"
echo "Building setuptools wheel..."
pushd setuptools
${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out --ignore-installed --no-dependencies --no-cache .
popd
echo "Building wheel wheel..."
pushd wheel
${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out --ignore-installed --no-dependencies --no-cache .
popd
echo "Building pip wheel..."
pushd pip
${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out --ignore-installed --no-dependencies --no-cache .
popd
'';
meta = {
description = "Version of pip used for bootstrapping";
license = lib.unique (pip.meta.license ++ setuptools.meta.license ++ wheel.meta.license);
homepage = pip.meta.homepage;
};
}

View file

@ -0,0 +1,50 @@
{ lib
, buildPythonPackage
, fetchPypi
, botocore
, jmespath
, s3transfer
, futures ? null
, docutils
, nose
, mock
, isPy3k
}:
buildPythonPackage rec {
pname = "boto3";
version = "1.17.97"; # N.B: if you change this, change botocore and awscli to a matching version
src = fetchPypi {
inherit pname version;
sha256 = "0ab5afc51461c30f27aebef944211d16f47697b98ff8d2e2f6e49e59584853bb";
};
propagatedBuildInputs = [ botocore jmespath s3transfer ] ++ lib.optionals (!isPy3k) [ futures ];
checkInputs = [ docutils nose mock ];
checkPhase = ''
runHook preCheck
# This method is not in mock. It might have appeared in some versions.
sed -i 's/action.assert_called_once()/self.assertEqual(action.call_count, 1)/' \
tests/unit/resources/test_factory.py
nosetests -d tests/unit --verbose
runHook postCheck
'';
# Network access
doCheck = false;
pythonImportsCheck = [ "boto3" ];
meta = {
homepage = "https://github.com/boto/boto3";
license = lib.licenses.asl20;
description = "AWS SDK for Python";
longDescription = ''
Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
Python, which allows Python developers to write software that makes use of
services like Amazon S3 and Amazon EC2.
'';
};
}

View file

@ -0,0 +1,48 @@
{ lib
, buildPythonPackage
, fetchPypi
, python-dateutil
, jmespath
, docutils
, ordereddict
, simplejson
, mock
, nose
, urllib3
}:
buildPythonPackage rec {
pname = "botocore";
version = "1.20.97"; # N.B: if you change this, change boto3 and awscli to a matching version
src = fetchPypi {
inherit pname version;
sha256 = "f7e119cf3e0f4a36100f0e983583afa91a84fb27c479a1716820aee4f2e190ab";
};
propagatedBuildInputs = [
python-dateutil
jmespath
docutils
ordereddict
simplejson
urllib3
];
checkInputs = [ mock nose ];
checkPhase = ''
nosetests -v
'';
# Network access
doCheck = false;
pythonImportsCheck = [ "botocore" ];
meta = with lib; {
homepage = "https://github.com/boto/botocore";
license = licenses.asl20;
description = "A low-level interface to a growing number of Amazon Web Services";
};
}

View file

@ -0,0 +1,34 @@
{ lib
, fetchPypi
, buildPythonPackage
, python3
}:
let
inherit (python3.pkgs) certifi;
in buildPythonPackage rec {
pname = "certifi";
version = "2019.11.28";
src = fetchPypi {
inherit pname version;
sha256 = "25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f";
};
postPatch = ''
cp ${certifi.src}/certifi/cacert.pem certifi/cacert.pem
'';
pythonImportsCheck = [ "certifi" ];
# no tests implemented
doCheck = false;
meta = with lib; {
homepage = "https://github.com/certifi/python-certifi";
description = "Python package for providing Mozilla's CA Bundle";
license = licenses.isc;
maintainers = with maintainers; [ ]; # NixOps team
};
}

View file

@ -0,0 +1,29 @@
{ lib, buildPythonPackage, fetchPypi, fetchpatch
, pytest, pytest-runner, hypothesis }:
buildPythonPackage rec {
pname = "chardet";
version = "3.0.4";
src = fetchPypi {
inherit pname version;
sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4";
};
patches = [
# Add pytest 4 support. See: https://github.com/chardet/chardet/pull/174
(fetchpatch {
url = "https://github.com/chardet/chardet/commit/0561ddcedcd12ea1f98b7ddedb93686ed8a5ffa4.patch";
sha256 = "1y1xhjf32rdhq9sfz58pghwv794f3w2f2qcn8p6hp4pc8jsdrn2q";
})
];
checkInputs = [ pytest pytest-runner hypothesis ];
meta = with lib; {
homepage = "https://github.com/chardet/chardet";
description = "Universal encoding detector";
license = licenses.lgpl2;
maintainers = with maintainers; [ domenkozar ];
};
}

View file

@ -0,0 +1,33 @@
{ lib
, buildPythonPackage
, fetchPypi
, markdown
, isPy3k
, TurboCheetah
}:
buildPythonPackage rec {
pname = "cheetah";
version = "2.4.4";
disabled = isPy3k;
src = fetchPypi {
inherit pname version;
sha256 = "be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550";
};
propagatedBuildInputs = [ markdown ];
doCheck = false; # Circular dependency
checkInputs = [
TurboCheetah
];
meta = {
homepage = "http://www.cheetahtemplate.org/";
description = "A template engine and code generation tool";
license = lib.licenses.mit;
};
}

View file

@ -0,0 +1,26 @@
{ lib, stdenv, buildPythonPackage, fetchPypi, setuptools-scm }:
buildPythonPackage rec {
pname = "configparser";
version = "4.0.2";
src = fetchPypi {
inherit pname version;
sha256 = "c7d282687a5308319bf3d2e7706e575c635b0a470342641c93bea0ea3b5331df";
};
# No tests available
doCheck = false;
nativeBuildInputs = [ setuptools-scm ];
preConfigure = ''
export LC_ALL=${if stdenv.isDarwin then "en_US" else "C"}.UTF-8
'';
meta = with lib; {
description = "Updated configparser from Python 3.7 for Python 2.6+.";
license = licenses.mit;
homepage = "https://github.com/jaraco/configparser";
};
}

View file

@ -0,0 +1,39 @@
{ lib, stdenv, buildPythonPackage, fetchFromGitHub
, pytestCheckHook, pytest-benchmark, enum34, numpy, arrow, ruamel-yaml
}:
buildPythonPackage rec {
pname = "construct";
version = "2.10.54";
# no tests in PyPI tarball
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "v${version}";
sha256 = "1mqspsn6bf3ibvih1zna2glkg8iw7vy5zg9gzg0d1m8zcndk2c48";
};
checkInputs = [ pytestCheckHook enum34 numpy ];
# these have dependencies that are broken on Python 2
disabledTestPaths = [
"tests/gallery/test_gallery.py"
"tests/test_benchmarks.py"
"tests/test_compiler.py"
];
disabledTests = [
"test_benchmarks"
"test_timestamp"
] ++ lib.optionals stdenv.isDarwin [
"test_multiprocessing"
];
meta = with lib; {
description = "Powerful declarative parser (and builder) for binary data";
homepage = "https://construct.readthedocs.org/";
license = licenses.mit;
maintainers = with maintainers; [ dotlambda ];
};
}

View file

@ -0,0 +1,23 @@
{ lib
, buildPythonPackage
, fetchPypi
, unittest2
}:
buildPythonPackage rec {
pname = "contextlib2";
version = "0.6.0.post1";
src = fetchPypi {
inherit pname version;
sha256 = "01f490098c18b19d2bd5bb5dc445b2054d2fa97f09a4280ba2c5f3c394c8162e";
};
checkInputs = [ unittest2 ];
meta = {
description = "Backports and enhancements for the contextlib module";
homepage = "https://contextlib2.readthedocs.org/";
license = lib.licenses.psfl;
};
}

View file

@ -0,0 +1,25 @@
{ lib
, buildPythonPackage
, fetchPypi
, mock
}:
buildPythonPackage rec {
pname = "coverage";
version = "5.5";
src = fetchPypi {
inherit pname version;
sha256 = "ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c";
};
# No tests in archive
doCheck = false;
checkInputs = [ mock ];
meta = {
description = "Code coverage measurement for python";
homepage = "https://coverage.readthedocs.io/";
license = lib.licenses.bsd3;
};
}

View file

@ -0,0 +1,26 @@
{ lib
, buildPythonPackage
, fetchPypi
, isPy3k
, isPyPy
}:
buildPythonPackage rec {
pname = "enum";
version = "0.4.7";
disabled = isPy3k;
src = fetchPypi {
inherit pname version;
sha256 = "001iq0yqs9f5bslvl793bhkcs71k5km9kv8yrj5h0lfsgrcg6z4c";
};
doCheck = !isPyPy;
meta = with lib; {
homepage = "https://pypi.python.org/pypi/enum/";
description = "Robust enumerated type support in Python";
license = licenses.gpl2;
};
}

View file

@ -0,0 +1,22 @@
{ lib, buildPythonPackage, fetchPypi, setuptools-scm }:
buildPythonPackage rec {
pname = "filelock";
version = "3.2.1";
src = fetchPypi {
inherit pname version;
sha256 = "1qry67zv2pmz8px6wdfbjqv75nmryy2ac7asqgs6q6db2722kpcw";
};
nativeBuildInputs = [
setuptools-scm
];
meta = with lib; {
homepage = "https://github.com/benediktschmitt/py-filelock";
description = "A platform independent file lock for Python";
license = licenses.unlicense;
maintainers = with maintainers; [ henkkalkwater ];
};
}

View file

@ -0,0 +1,27 @@
{ lib, buildPythonPackage, fetchPypi, isPy3k, python, stdenv }:
buildPythonPackage rec {
pname = "futures";
version = "3.3.0";
src = fetchPypi {
inherit pname version;
sha256 = "7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794";
};
# This module is for backporting functionality to Python 2.x, it's builtin in py3k
disabled = isPy3k;
checkPhase = ''
${python.interpreter} test_futures.py
'';
doCheck = !stdenv.isDarwin;
meta = with lib; {
description = "Backport of the concurrent.futures package from Python 3.2";
homepage = "https://github.com/agronholm/pythonfutures";
license = licenses.bsd2;
maintainers = with maintainers; [ ];
};
}

View file

@ -0,0 +1,41 @@
{ lib
, buildPythonPackage
, fetchPypi
, isPy3k
, pytz
, gflags
, python-dateutil
, mox
, python
}:
buildPythonPackage rec {
pname = "google-apputils";
version = "0.4.2";
disabled = isPy3k;
src = fetchPypi {
inherit pname version;
sha256 = "0afw0gxmh0yw5g7xsmw49gs8bbp0zyhbh6fr1b0h48f3a439v5a7";
};
preConfigure = ''
sed -i '/ez_setup/d' setup.py
'';
propagatedBuildInputs = [ pytz gflags python-dateutil mox ];
checkPhase = ''
${python.executable} setup.py google_test
'';
# ERROR:root:Trying to access flag test_tmpdir before flags were parsed.
doCheck = false;
meta = with lib; {
description = "Google Application Utilities for Python";
homepage = "https://github.com/google/google-apputils";
license = licenses.asl20;
maintainers = with maintainers; [ SuperSandro2000 ];
};
}

View file

@ -0,0 +1,36 @@
{ lib
, buildPythonPackage
, fetchPypi
, pkg-config
, gobject-introspection
, pygobject3
, gtk3
, glib
}:
buildPythonPackage rec {
pname = "gtkme";
version = "1.5.3";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-NIUgnbfcHjbPfsH3CF2Bywo8owrdsi1wqDoMxOa+2U4=";
};
nativeBuildInputs = [ pkg-config gobject-introspection gtk3 ];
buildInputs = [ pygobject3 glib ];
propagatedBuildInputs = [ gtk3 ];
pythonImportsCheck = [
"gtkme"
];
meta = with lib; {
description = "Manages an Application with Gtk windows, forms, lists and other complex items easily";
homepage = "https://gitlab.com/doctormo/gtkme";
license = licenses.gpl3Plus;
maintainers = with maintainers; [
revol-xut
];
};
}

View file

@ -0,0 +1,52 @@
{ lib
, buildPythonPackage
, fetchPypi
, tornado
, requests
, httplib2
, sure
, nose
, nose-exclude
, coverage
, rednose
, nose-randomly
, six
, mock
}:
buildPythonPackage rec {
pname = "httpretty";
version = "0.9.7";
# drop this for version > 0.9.7
# Flaky tests: https://github.com/gabrielfalcao/HTTPretty/pull/394
doCheck = lib.versionAtLeast version "0.9.8";
src = fetchPypi {
inherit pname version;
sha256 = "66216f26b9d2c52e81808f3e674a6fb65d4bf719721394a1a9be926177e55fbe";
};
propagatedBuildInputs = [ six ];
checkInputs = [ nose sure coverage mock rednose
# Following not declared in setup.py
nose-randomly requests tornado httplib2 nose-exclude
];
__darwinAllowLocalNetworking = true;
# Those flaky tests are failing intermittently on all platforms
NOSE_EXCLUDE = lib.concatStringsSep "," [
"tests.functional.test_httplib2.test_callback_response"
"tests.functional.test_requests.test_streaming_responses"
"tests.functional.test_httplib2.test_callback_response"
"tests.functional.test_requests.test_httpretty_should_allow_adding_and_overwritting_by_kwargs_u2"
];
meta = with lib; {
homepage = "https://httpretty.readthedocs.org/";
description = "HTTP client request mocking tool";
license = licenses.mit;
};
}

View file

@ -0,0 +1,45 @@
{ lib, buildPythonPackage, fetchFromGitHub
, isPy3k, attrs, coverage, enum34, pexpect
, doCheck ? true, pytest, pytest-xdist, flaky, mock
, sortedcontainers
}:
buildPythonPackage rec {
# https://hypothesis.readthedocs.org/en/latest/packaging.html
# Hypothesis has optional dependencies on the following libraries
# pytz fake_factory django numpy pytest
# If you need these, you can just add them to your environment.
version = "4.57.1";
pname = "hypothesis";
# Use github tarballs that includes tests
src = fetchFromGitHub {
owner = "HypothesisWorks";
repo = "hypothesis-python";
rev = "hypothesis-python-${version}";
sha256 = "1qcpcrk6892hzyjsdr581pw6i4fj9035nv89mcjrcrzcmycdlfds";
};
postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
propagatedBuildInputs = [
attrs
coverage
sortedcontainers
] ++ lib.optional (!isPy3k) enum34;
checkInputs = [ pytest pytest-xdist flaky mock pexpect ];
inherit doCheck;
checkPhase = ''
rm tox.ini # This file changes how py.test runs and breaks it
py.test tests/cover
'';
meta = with lib; {
description = "A Python library for property based testing";
homepage = "https://github.com/HypothesisWorks/hypothesis";
license = licenses.mpl20;
};
}

View file

@ -0,0 +1,23 @@
{ lib
, buildPythonPackage
, fetchPypi
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "idna";
version = "2.10";
src = fetchPypi {
inherit pname version;
sha256 = "b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6";
};
checkInputs = [ pytestCheckHook ];
meta = {
homepage = "https://github.com/kjd/idna/";
description = "Internationalized Domain Names in Applications (IDNA)";
license = lib.licenses.bsd3;
};
}

View file

@ -0,0 +1,37 @@
{ lib
, buildPythonPackage
, fetchPypi
, setuptools-scm
, zipp
, pathlib2
, contextlib2
, configparser
, isPy3k
}:
buildPythonPackage rec {
pname = "importlib-metadata";
version = "2.1.1";
src = fetchPypi {
pname = "importlib_metadata";
inherit version;
sha256 = "1pdmsmwagimn0lsl4x7sg3skcr2fvzqpv2pjd1rh7yrm5gzrxpmq";
};
nativeBuildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ zipp ]
++ lib.optionals (!isPy3k) [ pathlib2 contextlib2 configparser ];
# Cyclic dependencies
doCheck = false;
pythonImportsCheck = [ "importlib_metadata" ];
meta = with lib; {
description = "Read metadata from Python packages";
homepage = "https://importlib-metadata.readthedocs.io/";
license = licenses.asl20;
};
}

View file

@ -0,0 +1,42 @@
{ lib, stdenv
, buildPythonPackage
, isPy3k
, fetchPypi
, pytest
, markupsafe
, setuptools
}:
buildPythonPackage rec {
pname = "Jinja2";
version = "2.11.3";
src = fetchPypi {
inherit pname version;
sha256 = "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6";
};
checkInputs = [ pytest ];
propagatedBuildInputs = [ markupsafe setuptools ];
# Multiple tests run out of stack space on 32bit systems with python2.
# See https://github.com/pallets/jinja/issues/1158
# warnings are no longer being filtered correctly for python2
doCheck = !stdenv.is32bit && isPy3k;
checkPhase = ''
pytest -v tests -W ignore::DeprecationWarning
'';
meta = with lib; {
homepage = "http://jinja.pocoo.org/";
description = "Stand-alone template engine";
license = licenses.bsd3;
longDescription = ''
Jinja2 is a template engine written in pure Python. It provides a
Django inspired non-XML syntax but supports inline expressions and
an optional sandboxed environment.
'';
maintainers = with maintainers; [ pierron sjourdois ];
};
}

View file

@ -0,0 +1,29 @@
{ lib, buildPythonPackage, fetchFromGitHub, marisa, swig
, isPy3k
}:
buildPythonPackage rec {
pname = "marisa";
version = "1.3.40";
disabled = isPy3k;
src = fetchFromGitHub {
owner = "s-yata";
repo = "marisa-trie";
rev = "8dba9850b89d7828ebf33b8ab84df2b54d31260b";
sha256 = "0pkp9fggk53lxlicfwrskgx33qplc4v6njbavlnz4x4z63zd4933";
};
nativeBuildInputs = [ swig marisa ];
buildInputs = [ marisa ];
sourceRoot = "${src.name}/bindings/python";
meta = with lib; {
description = "Python binding for marisa package (do not confuse with marisa-trie python bindings)";
homepage = "https://github.com/s-yata/marisa-trie";
license = with licenses; [ bsd2 lgpl2 ];
maintainers = with maintainers; [ vanzef ];
};
}

View file

@ -0,0 +1,33 @@
{ lib
, buildPythonPackage
, fetchPypi
, setuptools
, nose
, pyyaml
, pythonOlder
, importlib-metadata
}:
buildPythonPackage rec {
pname = "Markdown";
version = "3.1.1";
src = fetchPypi {
inherit pname version;
sha256 = "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a";
};
propagatedBuildInputs = [
setuptools
] ++ lib.optionals (pythonOlder "3.8") [
importlib-metadata
];
checkInputs = [ nose pyyaml ];
meta = {
description = "A Python implementation of John Gruber's Markdown with Extension support";
homepage = "https://github.com/Python-Markdown/markdown";
license = lib.licenses.bsd3;
};
}

View file

@ -0,0 +1,22 @@
{ lib
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "MarkupSafe";
version = "1.1.1";
src = fetchPypi {
inherit pname version;
sha256 = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b";
};
meta = with lib; {
description = "Implements a XML/HTML/XHTML Markup safe string";
homepage = "http://dev.pocoo.org";
license = licenses.bsd3;
maintainers = with maintainers; [ domenkozar ];
};
}

View file

@ -0,0 +1,44 @@
{ lib
, buildPythonPackage
, fetchPypi
, isPy27
, funcsigs
, six
, pbr
, python
, pytest
}:
buildPythonPackage rec {
pname = "mock";
version = "3.0.5";
src = fetchPypi {
inherit pname version;
sha256 = "83657d894c90d5681d62155c82bda9c1187827525880eda8ff5df4ec813437c3";
};
propagatedBuildInputs = [ six pbr ] ++ lib.optionals isPy27 [ funcsigs ];
# On PyPy for Python 2.7 in particular, Mock's tests have a known failure.
# Mock upstream has a decoration to disable the failing test and make
# everything pass, but it is not yet released. The commit:
# https://github.com/testing-cabal/mock/commit/73bfd51b7185#diff-354f30a63fb0907d4ad57269548329e3L12
#doCheck = !(python.isPyPy && python.isPy27);
doCheck = false; # Infinite recursion pytest
checkPhase = ''
${python.interpreter} -m unittest discover
'';
checkInputs = [
pytest
];
meta = with lib; {
description = "Mock objects for Python";
homepage = "http://python-mock.sourceforge.net/";
license = licenses.bsd2;
};
}

View file

@ -0,0 +1,31 @@
{ lib
, buildPythonPackage
, fetchPypi
, nose
, six
, stdenv
}:
buildPythonPackage rec {
pname = "more-itertools";
version = "5.0.0";
src = fetchPypi {
inherit pname version;
sha256 = "38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4";
};
checkInputs = [ nose ];
propagatedBuildInputs = [ six ];
# iterable = range(10 ** 10) # Is efficiently reversible
# OverflowError: Python int too large to convert to C long
doCheck = !stdenv.hostPlatform.is32bit;
meta = {
homepage = "https://more-itertools.readthedocs.org";
description = "Expansion of the itertools module";
license = lib.licenses.mit;
};
}

View file

@ -0,0 +1,34 @@
{ lib
, buildPythonPackage
, fetchPypi
, hypothesis
, pycodestyle
, pyflakes
, pytest
, setuptools
, pkgs
}:
buildPythonPackage rec {
pname = "mutagen";
version = "1.43.1";
src = fetchPypi {
inherit pname version;
sha256 = "d873baeb7815311d3420aab0a1d83f050f628228cbc2d6045a14a16460411bc9";
};
propagatedBuildInputs = [ setuptools ];
checkInputs = [
pkgs.faad2 pkgs.flac pkgs.vorbis-tools pkgs.liboggz
pkgs.glibcLocales pycodestyle pyflakes pytest hypothesis
];
LC_ALL = "en_US.UTF-8";
meta = with lib; {
description = "Python multimedia tagging library";
homepage = "https://mutagen.readthedocs.io";
license = licenses.lgpl2Plus;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,99 @@
{ lib
, fetchPypi
, python
, buildPythonPackage
, gfortran
, pytest
, blas
, lapack
, writeTextFile
, isPyPy
, cython
, setuptoolsBuildHook
}:
assert (!blas.isILP64) && (!lapack.isILP64);
let
cfg = writeTextFile {
name = "site.cfg";
text = (lib.generators.toINI {} {
${blas.implementation} = {
include_dirs = "${lib.getDev blas}/include:${lib.getDev lapack}/include";
library_dirs = "${blas}/lib:${lapack}/lib";
runtime_library_dirs = "${blas}/lib:${lapack}/lib";
libraries = "lapack,lapacke,blas,cblas";
};
lapack = {
include_dirs = "${lib.getDev lapack}/include";
library_dirs = "${lapack}/lib";
runtime_library_dirs = "${lapack}/lib";
};
blas = {
include_dirs = "${lib.getDev blas}/include";
library_dirs = "${blas}/lib";
runtime_library_dirs = "${blas}/lib";
};
});
};
in buildPythonPackage rec {
pname = "numpy";
version = "1.16.6";
format = "pyproject.toml";
src = fetchPypi {
inherit pname version;
extension = "zip";
sha256 = "e5cf3fdf13401885e8eea8170624ec96225e2174eb0c611c6f26dd33b489e3ff";
};
nativeBuildInputs = [ gfortran pytest cython setuptoolsBuildHook ];
buildInputs = [ blas lapack ];
patches = lib.optionals python.hasDistutilsCxxPatch [
# We patch cpython/distutils to fix https://bugs.python.org/issue1222585
# Patching of numpy.distutils is needed to prevent it from undoing the
# patch to distutils.
./numpy-distutils-C++.patch
];
preConfigure = ''
sed -i 's/-faltivec//' numpy/distutils/system_info.py
export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES
export OMP_NUM_THREADS=$((NIX_BUILD_CORES > 64 ? 64 : NIX_BUILD_CORES))
'';
preBuild = ''
ln -s ${cfg} site.cfg
'';
enableParallelBuilding = true;
doCheck = !isPyPy; # numpy 1.16+ hits a bug in pypy's ctypes, using either numpy or pypy HEAD fixes this (https://github.com/numpy/numpy/issues/13807)
checkPhase = ''
runHook preCheck
pushd dist
${python.interpreter} -c 'import numpy; numpy.test("fast", verbose=10)'
popd
runHook postCheck
'';
passthru = {
# just for backwards compatibility
blas = blas.provider;
blasImplementation = blas.implementation;
inherit cfg;
};
# Disable test
# - test_large_file_support: takes a long time and can cause the machine to run out of disk space
NOSE_EXCLUDE="test_large_file_support";
meta = {
description = "Scientific tools for Python";
homepage = "https://numpy.org/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ fridh ];
};
}

View file

@ -0,0 +1,30 @@
diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
--- a/numpy/distutils/unixccompiler.py
+++ b/numpy/distutils/unixccompiler.py
@@ -44,8 +44,6 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
if opt not in llink_s:
self.linker_so = llink_s.split() + opt.split()
- display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
-
# gcc style automatic dependencies, outputs a makefile (-MF) that lists
# all headers needed by a c file as a side effect of compilation (-MMD)
if getattr(self, '_auto_depends', False):
@@ -54,8 +52,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
deps = []
try:
- self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
- extra_postargs, display = display)
+ if self.detect_language(src) == 'c++':
+ display = '%s: %s' % (os.path.basename(self.compiler_so_cxx[0]), src)
+ self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] + deps +
+ extra_postargs, display = display)
+ else:
+ display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
+ self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + deps +
+ extra_postargs, display = display)
+
except DistutilsExecError:
msg = str(get_exception())
raise CompileError(msg)

View file

@ -0,0 +1,39 @@
{ lib
, buildPythonPackage
, fetchPypi
, pyparsing
, six
, pytestCheckHook
, pretend
}:
# We keep 20.4 because it uses setuptools instead of flit-core
# which requires Python 3 to build a universal wheel.
buildPythonPackage rec {
pname = "packaging";
version = "20.4";
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8";
};
propagatedBuildInputs = [ pyparsing six ];
checkInputs = [
pytestCheckHook
pretend
];
# Prevent circular dependency
doCheck = false;
meta = with lib; {
description = "Core utilities for Python packages";
homepage = "https://github.com/pypa/packaging";
license = [ licenses.bsd2 licenses.asl20 ];
maintainers = with maintainers; [ bennofs ];
};
}

View file

@ -0,0 +1,47 @@
{ lib, stdenv, buildPythonPackage, fetchPypi, isPyPy, isPy3k
, olefile, freetype, libjpeg, zlib, libtiff, libwebp, tcl, lcms2, tk, libX11
, openjpeg, libimagequant, pyroma, numpy, pytestCheckHook
}@args:
import ./generic.nix (rec {
pname = "Pillow";
version = "6.2.2";
disabled = !isPy3k;
src = fetchPypi {
inherit pname version;
sha256 = "0l5rv8jkdrb5q846v60v03mcq64yrhklidjkgwv6s1pda71g17yv";
};
meta = with lib; {
homepage = "https://python-pillow.org/";
description = "The friendly PIL fork (Python Imaging Library)";
longDescription = ''
The Python Imaging Library (PIL) adds image processing
capabilities to your Python interpreter. This library
supports many file formats, and provides powerful image
processing and graphics capabilities.
'';
license = "http://www.pythonware.com/products/pil/license.htm";
maintainers = with maintainers; [ goibhniu prikhi SuperSandro2000 ];
knownVulnerabilities = [
"CVE-2020-10177"
"CVE-2020-10378"
"CVE-2020-10379"
"CVE-2020-10994"
"CVE-2020-11538"
"CVE-2020-35653"
"CVE-2020-35654"
"CVE-2020-35655"
"CVE-2021-25289"
"CVE-2021-25290"
"CVE-2021-25291"
"CVE-2021-25292"
"CVE-2021-25293"
"CVE-2021-27921"
"CVE-2021-27922"
"CVE-2021-27923"
];
};
} // args )

View file

@ -0,0 +1,77 @@
{ pname
, version
, disabled
, src
, meta
, ...
}@args:
with args;
buildPythonPackage rec {
inherit pname version src meta;
# Disable imagefont tests, because they don't work well with infinality:
# https://github.com/python-pillow/Pillow/issues/1259
postPatch = ''
rm Tests/test_imagefont.py
'';
# Disable darwin tests which require executables: `iconutil` and `screencapture`
disabledTests = lib.optionals stdenv.isDarwin [
"test_grab"
"test_grabclipboard"
"test_save"
# pillow-simd
"test_roundtrip"
"test_basic"
] ++ lib.optionals (lib.versions.major version == "6") [
# RuntimeError: Error setting from dictionary
"test_custom_metadata"
];
propagatedBuildInputs = [ olefile ]
++ lib.optionals (lib.versionAtLeast version "8.2.0") [ defusedxml ];
checkInputs = [ pytestCheckHook pyroma numpy ];
buildInputs = [ freetype libjpeg openjpeg libimagequant zlib libtiff libwebp tcl lcms2 ]
++ lib.optionals (lib.versionAtLeast version "7.1.0") [ libxcb ]
++ lib.optionals (isPyPy) [ tk libX11 ];
# NOTE: we use LCMS_ROOT as WEBP root since there is not other setting for webp.
# NOTE: The Pillow install script will, by default, add paths like /usr/lib
# and /usr/include to the search paths. This can break things when building
# on a non-NixOS system that has some libraries installed that are not
# installed in Nix (for example, Arch Linux has jpeg2000 but Nix doesn't
# build Pillow with this support). We patch the `disable_platform_guessing`
# setting here, instead of passing the `--disable-platform-guessing`
# command-line option, since the command-line option doesn't work when we run
# tests.
preConfigure = let
libinclude' = pkg: ''"${pkg.out}/lib", "${pkg.out}/include"'';
libinclude = pkg: ''"${pkg.out}/lib", "${pkg.dev}/include"'';
in ''
sed -i "setup.py" \
-e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = ${libinclude freetype}|g ;
s|^JPEG_ROOT =.*$|JPEG_ROOT = ${libinclude libjpeg}|g ;
s|^JPEG2K_ROOT =.*$|JPEG2K_ROOT = ${libinclude openjpeg}|g ;
s|^IMAGEQUANT_ROOT =.*$|IMAGEQUANT_ROOT = ${libinclude' libimagequant}|g ;
s|^ZLIB_ROOT =.*$|ZLIB_ROOT = ${libinclude zlib}|g ;
s|^LCMS_ROOT =.*$|LCMS_ROOT = ${libinclude lcms2}|g ;
s|^TIFF_ROOT =.*$|TIFF_ROOT = ${libinclude libtiff}|g ;
s|^TCL_ROOT=.*$|TCL_ROOT = ${libinclude' tcl}|g ;
s|self\.disable_platform_guessing = None|self.disable_platform_guessing = True|g ;'
export LDFLAGS="$LDFLAGS -L${libwebp}/lib"
export CFLAGS="$CFLAGS -I${libwebp}/include"
'' + lib.optionalString (lib.versionAtLeast version "7.1.0") ''
export LDFLAGS="$LDFLAGS -L${libxcb}/lib"
export CFLAGS="$CFLAGS -I${libxcb.dev}/include"
'' + lib.optionalString stdenv.isDarwin ''
# Remove impurities
substituteInPlace setup.py \
--replace '"/Library/Frameworks",' "" \
--replace '"/System/Library/Frameworks"' ""
'';
}

View file

@ -0,0 +1,41 @@
{ lib
, buildPythonPackage
, bootstrapped-pip
, fetchFromGitHub
, mock
, scripttest
, virtualenv
, pretend
, pytest
}:
buildPythonPackage rec {
pname = "pip";
version = "20.3.4";
format = "other";
src = fetchFromGitHub {
owner = "pypa";
repo = pname;
rev = version;
sha256 = "0hkhs9yc1cjdj1gn9wkycd3sy65c05q8k8rhqgsm5jbpksfssiwn";
name = "${pname}-${version}-source";
};
nativeBuildInputs = [ bootstrapped-pip ];
# pip detects that we already have bootstrapped_pip "installed", so we need
# to force it a little.
pipInstallFlags = [ "--ignore-installed" ];
checkInputs = [ mock scripttest virtualenv pretend pytest ];
# Pip wants pytest, but tests are not distributed
doCheck = false;
meta = {
description = "The PyPA recommended tool for installing Python packages";
license = with lib.licenses; [ mit ];
homepage = "https://pip.pypa.io/";
priority = 10;
};
}

View file

@ -0,0 +1,34 @@
{ buildPythonPackage
, lib
, fetchPypi
, setuptools-scm
, importlib-metadata
}:
buildPythonPackage rec {
pname = "pluggy";
version = "0.13.1";
src = fetchPypi {
inherit pname version;
sha256 = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0";
};
checkPhase = ''
py.test
'';
# To prevent infinite recursion with pytest
doCheck = false;
nativeBuildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ importlib-metadata ];
meta = {
description = "Plugin and hook calling mechanisms for Python";
homepage = "https://github.com/pytest-dev/pluggy";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ];
};
}

View file

@ -0,0 +1,37 @@
{ lib
, buildPythonPackage
, fetchPypi
, glibcLocales
, setuptools-scm
, wcwidth
}:
buildPythonPackage rec {
pname = "prettytable";
version = "1.0.1";
src = fetchPypi {
inherit pname version;
sha256 = "0wcpp1nkicrswb353yn6xd2x535cpif62nw5rgz33c1wj0wzbdvb";
};
nativeBuildInputs = [ setuptools-scm ];
buildInputs = [ glibcLocales ];
propagatedBuildInputs = [ wcwidth ];
preCheck = ''
export LANG="en_US.UTF-8"
'';
# no test no longer available in pypi package
doCheck = false;
pythonImportsCheck = [ "prettytable" ];
meta = with lib; {
description = "Simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
homepage = "http://code.google.com/p/prettytable/";
license = licenses.bsd3;
};
}

View file

@ -0,0 +1,59 @@
{ buildPackages
, lib
, fetchpatch
, python
, buildPythonPackage
, isPy37
, protobuf
, google-apputils ? null
, six
, pyext
, isPy27
, disabled
, doCheck ? true
}:
buildPythonPackage {
inherit (protobuf) pname src version;
inherit disabled;
doCheck = doCheck && !isPy27; # setuptools>=41.4 no longer collects correctly on python2
propagatedBuildInputs = [ six ] ++ lib.optionals isPy27 [ google-apputils ];
propagatedNativeBuildInputs = [ buildPackages.protobuf ]; # For protoc.
nativeBuildInputs = [ pyext ] ++ lib.optionals isPy27 [ google-apputils ];
buildInputs = [ protobuf ];
patches = lib.optional (isPy37 && (lib.versionOlder protobuf.version "3.6.1.2"))
# Python 3.7 compatibility (not needed for protobuf >= 3.6.1.2)
(fetchpatch {
url = "https://github.com/protocolbuffers/protobuf/commit/0a59054c30e4f0ba10f10acfc1d7f3814c63e1a7.patch";
sha256 = "09hw22y3423v8bbmc9xm07znwdxfbya6rp78d4zqw6fisdvjkqf1";
stripLen = 1;
})
;
prePatch = ''
while [ ! -d python ]; do
cd *
done
cd python
'';
setupPyGlobalFlags = lib.optional (lib.versionAtLeast protobuf.version "2.6.0")
"--cpp_implementation";
pythonImportsCheck = [
"google.protobuf"
] ++ lib.optionals (lib.versionAtLeast protobuf.version "2.6.0") [
"google.protobuf.internal._api_implementation" # Verify that --cpp_implementation worked
];
meta = with lib; {
description = "Protocol Buffers are Google's data interchange format";
homepage = "https://developers.google.com/protocol-buffers/";
license = licenses.bsd3;
maintainers = with maintainers; [ knedlsepp ];
};
passthru.protobuf = protobuf;
}

View file

@ -0,0 +1,54 @@
{ lib
, fetchFromGitHub
, meson
, ninja
, buildPythonPackage
, pytest
, pkg-config
, cairo
, python
}:
buildPythonPackage rec {
pname = "pycairo";
version = "1.18.2";
format = "other";
src = fetchFromGitHub {
owner = "pygobject";
repo = "pycairo";
rev = "v${version}";
sha256 = "142145a2whvlk92jijrbf3i2bqrzmspwpysj0bfypw0krzi0aa6j";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
cairo
];
# HACK: Don't use the pytestCheckHook because PYTHONPATH
# will be added by the Python setuptook breaking meson.
checkPhase = ''
${pytest}/bin/pytest
'';
mesonFlags = [
# This is only used for figuring out what version of Python is in
# use, and related stuff like figuring out what the install prefix
# should be, but it does need to be able to execute Python code.
"-Dpython=${python.pythonForBuild.interpreter}"
];
meta = with lib; {
description = "Python 2 bindings for cairo";
homepage = "https://pycairo.readthedocs.io/";
license = with licenses; [ lgpl21Only mpl11 ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
}

View file

@ -0,0 +1,33 @@
{ lib, stdenv, fetchurl, buildPythonPackage, pkg-config, glib, gobject-introspection,
pycairo, cairo, which, ncurses, meson, ninja, isPy3k, gnome }:
buildPythonPackage rec {
pname = "pygobject";
version = "3.36.1";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0b9CgC0c7BE7Wtqg579/N0W0RSHcIWNYjSdtXNYdcY8=";
};
outputs = [ "out" "dev" ];
mesonFlags = [
"-Dpython=python${if isPy3k then "3" else "2" }"
];
nativeBuildInputs = [ pkg-config meson ninja gobject-introspection ];
buildInputs = [ glib gobject-introspection ]
++ lib.optionals stdenv.isDarwin [ which ncurses ];
propagatedBuildInputs = [ pycairo cairo ];
meta = with lib; {
homepage = "https://pygobject.readthedocs.io/";
description = "Python bindings for Glib";
license = licenses.gpl2;
maintainers = with maintainers; [ orivej ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,75 @@
{ lib, stdenv, fetchurl, fetchpatch, python, pkg-config, gtk2, pygobject2, pycairo, pango
, buildPythonPackage, isPy3k }:
buildPythonPackage rec {
pname = "pygtk";
outputs = [ "out" "dev" ];
version = "2.24.0";
disabled = isPy3k;
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
sha256 = "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d";
};
patches = [
# https://bugzilla.gnome.org/show_bug.cgi?id=660216 - fixes some memory leaks
(fetchpatch {
url = "https://gitlab.gnome.org/Archive/pygtk/commit/eca72baa5616fbe4dbebea43c7e5940847dc5ab8.diff";
sha256 = "031px4w5cshcx1sns430sdbr2i007b9zyb2carb3z65nzr77dpdd";
})
(fetchpatch {
url = "https://gitlab.gnome.org/Archive/pygtk/commit/4aaa48eb80c6802aec6d03e5695d2a0ff20e0fc2.patch";
sha256 = "0z8cg7nr3qki8gg8alasdzzyxcihfjlxn518glq5ajglk3q5pzsn";
})
];
nativeBuildInputs = [ pkg-config ];
buildInputs = [
pango
];
propagatedBuildInputs = [ gtk2 pygobject2 pycairo ];
configurePhase = "configurePhase";
buildPhase = "buildPhase";
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-ObjC";
installPhase = "installPhase";
checkPhase =
''
sed -i -e "s/glade = importModule('gtk.glade', buildDir)//" \
tests/common.py
sed -i -e "s/, glade$//" \
-e "s/.*testGlade.*//" \
-e "s/.*(glade.*//" \
tests/test_api.py
'' + ''
sed -i -e "s/sys.path.insert(0, os.path.join(buildDir, 'gtk'))//" \
-e "s/sys.path.insert(0, buildDir)//" \
tests/common.py
make check
'';
# XXX: TypeError: Unsupported type: <class 'gtk._gtk.WindowType'>
# The check phase was not executed in the previous
# non-buildPythonPackage setup - not sure why not.
doCheck = false;
postInstall = ''
rm $out/bin/pygtk-codegen-2.0
ln -s ${pygobject2}/bin/pygobject-codegen-2.0 $out/bin/pygtk-codegen-2.0
ln -s ${pygobject2}/lib/${python.libPrefix}/site-packages/pygobject-${pygobject2.version}.pth \
$out/lib/${python.libPrefix}/site-packages/${pname}-${version}.pth
'';
meta = with lib; {
description = "GTK 2 Python bindings";
homepage = "https://gitlab.gnome.org/Archive/pygtk";
platforms = platforms.all;
license = with licenses; [ lgpl21Plus ];
};
}

View file

@ -0,0 +1,45 @@
{ buildPythonPackage
, fetchFromGitHub
, lib
# since this is a dependency of pytest, we need to avoid
# circular dependencies
, jinja2
, railroad-diagrams
}:
let
pyparsing = buildPythonPackage rec {
pname = "pyparsing";
version = "2.4.7";
src = fetchFromGitHub {
owner = "pyparsing";
repo = pname;
rev = "pyparsing_${version}";
sha256 = "14pfy80q2flgzjcx8jkracvnxxnr59kjzp3kdm5nh232gk1v6g6h";
};
# circular dependencies if enabled by default
doCheck = false;
checkInputs = [
jinja2
railroad-diagrams
];
checkPhase = ''
python -m unittest
'';
passthru.tests = {
check = pyparsing.overridePythonAttrs (_: { doCheck = true; });
};
meta = with lib; {
homepage = "https://github.com/pyparsing/pyparsing";
description = "An alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions";
license = licenses.mit;
};
};
in
pyparsing

View file

@ -0,0 +1,26 @@
{ lib, buildPythonPackage, fetchPypi
, docutils, pygments, setuptools
}:
buildPythonPackage rec {
pname = "pyroma";
version = "2.6.1";
src = fetchPypi {
inherit pname version;
sha256 = "2527423e3a24ccd56951f3ce1b0ebbcc4fa0518c82fca882e696c78726ab9c2f";
};
postPatch = ''
substituteInPlace setup.py \
--replace "pygments < 2.6" "pygments"
'';
propagatedBuildInputs = [ docutils pygments setuptools ];
meta = with lib; {
description = "Test your project's packaging friendliness";
homepage = "https://github.com/regebro/pyroma";
license = licenses.mit;
};
}

View file

@ -0,0 +1,57 @@
{ lib, stdenv
, buildPythonPackage
, fetchPypi
, isPy3k
, pkgs
}:
buildPythonPackage rec {
pname = "pysqlite";
version = "2.8.3";
src = fetchPypi {
inherit pname version;
sha256 = "17d3335863e8cf8392eea71add33dab3f96d060666fe68ab7382469d307f4490";
};
# Need to use the builtin sqlite3 on Python 3
disabled = isPy3k;
# Since the `.egg' file is zipped, the `NEEDED' of the `.so' files
# it contains is not taken into account. Thus, we must explicitly make
# it a propagated input.
propagatedBuildInputs = [ pkgs.sqlite ];
patchPhase = ''
substituteInPlace "setup.cfg" \
--replace "/usr/local/include" "${pkgs.sqlite.dev}/include" \
--replace "/usr/local/lib" "${pkgs.sqlite.out}/lib"
${lib.optionalString (!stdenv.isDarwin) ''export LDSHARED="$CC -pthread -shared"''}
'';
meta = with lib; {
homepage = "https://pysqlite.org/";
description = "Python bindings for the SQLite embedded relational database engine";
longDescription = ''
pysqlite is a DB-API 2.0-compliant database interface for SQLite.
SQLite is a relational database management system contained in
a relatively small C library. It is a public domain project
created by D. Richard Hipp. Unlike the usual client-server
paradigm, the SQLite engine is not a standalone process with
which the program communicates, but is linked in and thus
becomes an integral part of the program. The library
implements most of SQL-92 standard, including transactions,
triggers and most of complex queries.
pysqlite makes this powerful embedded SQL engine available to
Python programmers. It stays compatible with the Python
database API specification 2.0 as much as possible, but also
exposes most of SQLite's native API, so that it is for example
possible to create user-defined SQL functions and aggregates
in Python.
'';
license = licenses.bsd3;
};
}

View file

@ -0,0 +1,30 @@
{ lib, buildPythonPackage, fetchPypi, setuptools-scm, pytest }:
buildPythonPackage rec {
pname = "pytest-runner";
version = "5.2";
src = fetchPypi {
inherit pname version;
sha256 = "96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b";
};
nativeBuildInputs = [ setuptools-scm pytest ];
postPatch = ''
rm pytest.ini
'';
checkPhase = ''
py.test tests
'';
# Fixture not found
doCheck = false;
meta = with lib; {
description = "Invoke py.test as distutils command with dependency resolution";
homepage = "https://github.com/pytest-dev/pytest-runner";
license = licenses.mit;
};
}

View file

@ -0,0 +1,36 @@
{ lib, fetchPypi, buildPythonPackage, execnet, pytest
, setuptools-scm, pytest-forked, filelock, psutil, six, isPy3k }:
buildPythonPackage rec {
pname = "pytest-xdist";
version = "1.34.0";
src = fetchPypi {
inherit pname version;
sha256 = "1vh4ps32lp5ignch5adbl3pgchvigdfmrl6qpmhxih54wa1qw3il";
};
nativeBuildInputs = [ setuptools-scm pytest ];
checkInputs = [ pytest filelock ];
propagatedBuildInputs = [ execnet pytest-forked psutil six ];
# Encountered a memory leak
# https://github.com/pytest-dev/pytest-xdist/issues/462
doCheck = !isPy3k;
checkPhase = ''
# Excluded tests access file system
py.test testing -k "not test_distribution_rsyncdirs_example \
and not test_rsync_popen_with_path \
and not test_popen_rsync_subdir \
and not test_init_rsync_roots \
and not test_rsyncignore"
'';
meta = with lib; {
description = "py.test xdist plugin for distributed testing and loop-on-failing modes";
homepage = "https://github.com/pytest-dev/pytest-xdist";
license = licenses.mit;
maintainers = with maintainers; [ dotlambda ];
};
}

View file

@ -0,0 +1,68 @@
{ lib, buildPythonPackage, pythonOlder, fetchPypi, attrs, hypothesis, py
, setuptools-scm, setuptools, six, pluggy, funcsigs, isPy3k, more-itertools
, atomicwrites, mock, writeText, pathlib2, wcwidth, packaging, isPyPy
}:
buildPythonPackage rec {
version = "4.6.11";
pname = "pytest";
src = fetchPypi {
inherit pname version;
sha256 = "50fa82392f2120cc3ec2ca0a75ee615be4c479e66669789771f1758332be4353";
};
postPatch = ''
substituteInPlace setup.py \
--replace "pluggy>=0.12,<1.0" "pluggy>=0.12,<2.0"
'';
checkInputs = [ hypothesis mock ];
buildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ attrs py setuptools six pluggy more-itertools atomicwrites wcwidth packaging ]
++ lib.optionals (!isPy3k) [ funcsigs ]
++ lib.optionals (pythonOlder "3.6") [ pathlib2 ];
doCheck = !isPyPy; # https://github.com/pytest-dev/pytest/issues/3460
checkPhase = ''
runHook preCheck
# don't test bash builtins
rm testing/test_argcomplete.py
# determinism - this test writes non deterministic bytecode
rm -rf testing/test_assertrewrite.py
PYTHONDONTWRITEBYTECODE=1 $out/bin/py.test -x testing/ -k "not test_collect_pyargs_with_testpaths"
runHook postCheck
'';
# Remove .pytest_cache when using py.test in a Nix build
setupHook = writeText "pytest-hook" ''
pytestcachePhase() {
find $out -name .pytest_cache -type d -exec rm -rf {} +
}
preDistPhases+=" pytestcachePhase"
# pytest generates it's own bytecode files to improve assertion messages.
# These files similar to cpython's bytecode files but are never laoded
# by python interpreter directly. We remove them for a few reasons:
# - files are non-deterministic: https://github.com/NixOS/nixpkgs/issues/139292
# (file headers are generatedt by pytest directly and contain timestamps)
# - files are not needed after tests are finished
pytestRemoveBytecodePhase () {
# suffix is defined at:
# https://github.com/pytest-dev/pytest/blob/4.6.11/src/_pytest/assertion/rewrite.py#L32-L47
find $out -name "*-PYTEST.py[co]" -delete
}
preDistPhases+=" pytestRemoveBytecodePhase"
'';
meta = with lib; {
homepage = "https://docs.pytest.org";
description = "Framework for writing tests";
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
license = licenses.mit;
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,38 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, cython
, libyaml
, isPy27
, python
}:
buildPythonPackage rec {
pname = "PyYAML";
version = "5.4.1.1";
src = fetchFromGitHub {
owner = "yaml";
repo = "pyyaml";
rev = version;
sha256 = "1v386gzdvsjg0mgix6v03rd0cgs9dl81qvn3m547849jm8r41dx8";
};
nativeBuildInputs = [ cython ];
buildInputs = [ libyaml ];
checkPhase = ''
runHook preCheck
PYTHONPATH=""tests/lib":$PYTHONPATH" ${python.interpreter} -m test_all
runHook postCheck
'';
pythonImportsCheck = [ "yaml" ];
meta = with lib; {
description = "The next generation YAML parser and emitter for Python";
homepage = "https://github.com/yaml/pyyaml";
license = licenses.mit;
};
}

View file

@ -0,0 +1,26 @@
{ lib
, buildPythonPackage
, fetchurl
, isPy3k
}:
buildPythonPackage rec {
pname = "qpid-python";
version = "0.32";
disabled = isPy3k;
src = fetchurl {
url = "http://www.us.apache.org/dist/qpid/${version}/${pname}-${version}.tar.gz";
sha256 = "09hdfjgk8z4s3dr8ym2r6xn97j1f9mkb2743pr6zd0bnj01vhsv4";
};
# needs a broker running and then ./qpid-python-test
doCheck = false;
meta = with lib; {
homepage = "https://qpid.apache.org/";
description = "Python client implementation and AMQP conformance tests for Apache Qpid";
license = licenses.asl20;
};
}

View file

@ -0,0 +1,52 @@
{ lib
, fetchPypi
, pythonOlder
, buildPythonPackage
, docutils
, mock
, nose
, coverage
, wheel
, unittest2
, botocore
, futures ? null
}:
buildPythonPackage rec {
pname = "s3transfer";
version = "0.4.2";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-ywIvSxZVHt67sxo3fT8JYA262nNj2MXbeXbn9Hcy4bI=";
};
propagatedBuildInputs =
[
botocore
] ++ lib.optional (pythonOlder "3") futures;
buildInputs = [
docutils
mock
nose
coverage
wheel
unittest2
];
checkPhase = ''
pushd s3transfer/tests
nosetests -v unit/ functional/
popd
'';
# version on pypi has no tests/ dir
doCheck = false;
meta = with lib; {
homepage = "https://github.com/boto/s3transfer";
license = licenses.asl20;
description = "A library for managing Amazon S3 transfers";
};
}

View file

@ -0,0 +1,20 @@
{ lib, python, buildPythonPackage, fetchPypi }:
buildPythonPackage rec {
pname = "scandir";
version = "1.10.0";
src = fetchPypi {
inherit pname version;
sha256 ="1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd";
};
checkPhase = "${python.interpreter} test/run_tests.py";
meta = with lib; {
description = "A better directory iterator and faster os.walk()";
homepage = "https://github.com/benhoyt/scandir";
license = licenses.gpl3;
maintainers = with maintainers; [ abbradar ];
};
}

View file

@ -0,0 +1,24 @@
{ lib, buildPythonPackage, fetchPypi, toml }:
buildPythonPackage rec {
pname = "setuptools_scm";
version = "5.0.2";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-g6DO3TRJ45RjB4EaTHudicS1/UZKL7XuzNCluxWK5cg=";
};
propagatedBuildInputs = [ toml ];
# Requires pytest, circular dependency
doCheck = false;
pythonImportsCheck = [ "setuptools_scm" ];
meta = with lib; {
homepage = "https://github.com/pypa/setuptools_scm/";
description = "Handles managing your python package versions in scm metadata";
license = licenses.mit;
maintainers = with maintainers; [ SuperSandro2000 ];
};
}

View file

@ -0,0 +1,80 @@
{ stdenv
, buildPythonPackage
, fetchFromGitHub
, python
, bootstrapped-pip
, lib
, pipInstallHook
, setuptoolsBuildHook
}:
let
pname = "setuptools";
version = "44.0.0";
# Create an sdist of setuptools
sdist = stdenv.mkDerivation rec {
name = "${pname}-${version}-sdist.tar.gz";
src = fetchFromGitHub {
owner = "pypa";
repo = pname;
rev = "v${version}";
sha256 = "0z3q0qinyp1rmnxkw3y5f6nbsxhqlfq5k7skfrqa6ymb3zr009y1";
name = "${pname}-${version}-source";
};
patches = [
./tag-date.patch
];
buildPhase = ''
${python.pythonForBuild.interpreter} bootstrap.py
${python.pythonForBuild.interpreter} setup.py sdist --formats=gztar
# Here we untar the sdist and retar it in order to control the timestamps
# of all the files included
tar -xzf dist/${pname}-${version}.post0.tar.gz -C dist/
tar -czf dist/${name} -C dist/ --mtime="@$SOURCE_DATE_EPOCH" ${pname}-${version}.post0
'';
installPhase = ''
echo "Moving sdist..."
mv dist/${name} $out
'';
};
in buildPythonPackage rec {
inherit pname version;
# Because of bootstrapping we don't use the setuptoolsBuildHook that comes with format="setuptools" directly.
# Instead, we override it to remove setuptools to avoid a circular dependency.
# The same is done for pip and the pipInstallHook.
format = "other";
src = sdist;
nativeBuildInputs = [
bootstrapped-pip
(pipInstallHook.override{pip=null;})
(setuptoolsBuildHook.override{setuptools=null; wheel=null;})
];
preBuild = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
'';
pipInstallFlags = [ "--ignore-installed" ];
# Adds setuptools to nativeBuildInputs causing infinite recursion.
catchConflicts = false;
# Requires pytest, causing infinite recursion.
doCheck = false;
meta = with lib; {
description = "Utilities to facilitate the installation of Python packages";
homepage = "https://pypi.python.org/pypi/setuptools";
license = with licenses; [ psfl zpl20 ];
platforms = python.meta.platforms;
priority = 10;
};
}

View file

@ -0,0 +1,12 @@
diff --git a/setup.cfg b/setup.cfg
index f23714b6..8aaeb330 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
[egg_info]
tag_build = .post
-tag_date = 1
+tag_date = 0
[aliases]
clean_egg_info = egg_info -Db ''

View file

@ -0,0 +1,82 @@
{ lib
, buildPythonPackage
, fetchPypi
, pytest
, simplejson
, mock
, glibcLocales
, html5lib
, pythonOlder
, enum34
, python
, docutils
, jinja2
, pygments
, alabaster
, babel
, snowballstemmer
, six
, sqlalchemy
, whoosh
, imagesize
, requests
, typing
, sphinxcontrib-websupport
, setuptools
}:
buildPythonPackage rec {
pname = "sphinx";
version = "1.8.5";
src = fetchPypi {
pname = "Sphinx";
inherit version;
sha256 = "c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08";
};
LC_ALL = "en_US.UTF-8";
checkInputs = [ pytest ];
buildInputs = [ simplejson mock glibcLocales html5lib ] ++ lib.optional (pythonOlder "3.4") enum34;
# Disable two tests that require network access.
checkPhase = ''
cd tests; ${python.interpreter} run.py --ignore py35 -k 'not test_defaults and not test_anchors_ignored'
'';
propagatedBuildInputs = [
docutils
jinja2
pygments
alabaster
babel
setuptools
snowballstemmer
six
sphinxcontrib-websupport
sqlalchemy
whoosh
imagesize
requests
] ++ lib.optional (pythonOlder "3.5") typing;
# Lots of tests. Needs network as well at some point.
doCheck = false;
patches = [
# Since pygments 2.5, PythonLexer refers to python3. If we want to use
# python2, we need to explicitly specify Python2Lexer.
# Not upstreamed since there doesn't seem to be any upstream maintenance
# branch for 1.8 (and this patch doesn't make any sense for 2.x).
./python2-lexer.patch
];
# https://github.com/NixOS/nixpkgs/issues/22501
# Do not run `python sphinx-build arguments` but `sphinx-build arguments`.
postPatch = ''
substituteInPlace sphinx/make_mode.py --replace "sys.executable, " ""
'';
meta = {
description = "A tool that makes it easy to create intelligent and beautiful documentation for Python projects";
homepage = "http://sphinx.pocoo.org/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ ];
};
}

View file

@ -0,0 +1,22 @@
diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py
index ac2bd1b06..63ca52de2 100644
--- a/sphinx/highlighting.py
+++ b/sphinx/highlighting.py
@@ -16,7 +16,7 @@ from pygments.filters import ErrorToken
from pygments.formatters import HtmlFormatter, LatexFormatter
from pygments.lexer import Lexer # NOQA
from pygments.lexers import get_lexer_by_name, guess_lexer
-from pygments.lexers import PythonLexer, Python3Lexer, PythonConsoleLexer, \
+from pygments.lexers import Python2Lexer, Python3Lexer, PythonConsoleLexer, \
CLexer, TextLexer, RstLexer
from pygments.styles import get_style_by_name
from pygments.util import ClassNotFound
@@ -40,7 +40,7 @@ logger = logging.getLogger(__name__)
lexers = dict(
none = TextLexer(stripnl=False),
- python = PythonLexer(stripnl=False),
+ python = Python2Lexer(stripnl=False),
python3 = Python3Lexer(stripnl=False),
pycon = PythonConsoleLexer(stripnl=False),
pycon3 = PythonConsoleLexer(python3=True, stripnl=False),

View file

@ -0,0 +1,25 @@
{ lib
, buildPythonPackage
, fetchPypi
, six
}:
buildPythonPackage rec {
pname = "sphinxcontrib-websupport";
version = "1.1.2";
src = fetchPypi {
inherit pname version;
sha256 = "1501befb0fdf1d1c29a800fdbf4ef5dc5369377300ddbdd16d2cd40e54c6eefc";
};
propagatedBuildInputs = [ six ];
doCheck = false;
meta = {
description = "Sphinx API for Web Apps";
homepage = "http://sphinx-doc.org/";
license = lib.licenses.bsd2;
};
}

View file

@ -0,0 +1,33 @@
{ lib, buildPythonPackage, fetchPypi, pythonOlder, isPy3k, isPyPy, python
, pythonAtLeast }:
let
testDir = if isPy3k then "src" else "python2";
in buildPythonPackage rec {
pname = "typing";
version = "3.10.0.0";
src = fetchPypi {
inherit pname version;
sha256 = "13b4ad211f54ddbf93e5901a9967b1e07720c1d1b78d596ac6a439641aa1b130";
};
disabled = pythonAtLeast "3.5";
# Error for Python3.6: ImportError: cannot import name 'ann_module'
# See https://github.com/python/typing/pull/280
# Also, don't bother on PyPy: AssertionError: TypeError not raised
doCheck = pythonOlder "3.6" && !isPyPy;
checkPhase = ''
cd ${testDir}
${python.interpreter} -m unittest discover
'';
meta = with lib; {
description = "Backport of typing module to Python versions older than 3.5";
homepage = "https://docs.python.org/3/library/typing.html";
license = licenses.psfl;
};
}

View file

@ -0,0 +1,37 @@
{ lib
, buildPythonPackage
, fetchPypi
, setuptools-scm
, pytest
, pytest-flake8
, more-itertools
}:
buildPythonPackage rec {
pname = "zipp";
version = "1.0.0";
src = fetchPypi {
inherit pname version;
sha256 = "0v3qayhqv7vyzydpydwcp51bqciw8p2ajddw68x5k8zppc0vx3yk";
};
nativeBuildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ more-itertools ];
checkInputs = [ pytest pytest-flake8 ];
checkPhase = ''
pytest
'';
# Prevent infinite recursion with pytest
doCheck = false;
meta = with lib; {
description = "Pathlib-compatible object wrapper for zip files";
homepage = "https://github.com/jaraco/zipp";
license = licenses.mit;
};
}