|
|
|
@ -21,11 +21,15 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
cffi = super.cffi.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
buildInputs = old.buildInputs ++ [ pkgs.libffi ]; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
cffi = |
|
|
|
|
# cffi is bundled with pypy |
|
|
|
|
if self.python.implementation == "pypy" then null else ( |
|
|
|
|
super.cffi.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
buildInputs = old.buildInputs ++ [ pkgs.libffi ]; |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
cftime = super.cftime.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
@ -60,9 +64,30 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
dlib = super.dlib.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
# Parallel building enabled |
|
|
|
|
inherit (pkgs.python.pkgs.dlib) patches; |
|
|
|
|
|
|
|
|
|
enableParallelBuilding = true; |
|
|
|
|
dontUseCmakeConfigure = true; |
|
|
|
|
|
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ pkgs.dlib.nativeBuildInputs; |
|
|
|
|
buildInputs = old.buildInputs ++ pkgs.dlib.buildInputs; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
# Environment markers are not always included (depending on how a dep was defined) |
|
|
|
|
enum34 = if self.pythonAtLeast "3.4" then null else super.enum34; |
|
|
|
|
|
|
|
|
|
faker = super.faker.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
postPatch = '' |
|
|
|
|
substituteInPlace setup.py --replace 'setup_requires=["pytest-runner"],' 'setup_requires=[],' || true |
|
|
|
|
''; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
grandalf = super.grandalf.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
postPatch = '' |
|
|
|
@ -135,22 +160,39 @@ self: super: |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
matplotlib = super.matplotlib.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${pkgs.libcxx}/include/c++/v1"; |
|
|
|
|
old: let |
|
|
|
|
enableGhostscript = old.passthru.enableGhostscript or false; |
|
|
|
|
enableGtk3 = old.passthru.enableTk or false; |
|
|
|
|
enableQt = old.passthru.enableQt or false; |
|
|
|
|
enableTk = old.passthru.enableTk or false; |
|
|
|
|
|
|
|
|
|
XDG_RUNTIME_DIR = "/tmp"; |
|
|
|
|
inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa; |
|
|
|
|
|
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ |
|
|
|
|
pkgs.pkgconfig |
|
|
|
|
]; |
|
|
|
|
in |
|
|
|
|
{ |
|
|
|
|
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${pkgs.libcxx}/include/c++/v1"; |
|
|
|
|
|
|
|
|
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ |
|
|
|
|
pkgs.libpng |
|
|
|
|
pkgs.freetype |
|
|
|
|
]; |
|
|
|
|
XDG_RUNTIME_DIR = "/tmp"; |
|
|
|
|
|
|
|
|
|
inherit (super.matplotlib) patches; |
|
|
|
|
} |
|
|
|
|
buildInputs = old.buildInputs |
|
|
|
|
++ lib.optional enableGhostscript pkgs.ghostscript |
|
|
|
|
++ lib.optional stdenv.isDarwin [ Cocoa ]; |
|
|
|
|
|
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ |
|
|
|
|
pkgs.pkgconfig |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ |
|
|
|
|
pkgs.libpng |
|
|
|
|
pkgs.freetype |
|
|
|
|
] |
|
|
|
|
++ stdenv.lib.optionals enableGtk3 [ pkgs.cairo self.pycairo pkgs.gtk3 pkgs.gobject-introspection self.pygobject3 ] |
|
|
|
|
++ stdenv.lib.optionals enableTk [ pkgs.tcl pkgs.tk self.tkinter pkgs.libX11 ] |
|
|
|
|
++ stdenv.lib.optionals enableQt [ self.pyqt5 ] |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
inherit (super.matplotlib) patches; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
# Calls Cargo at build time for source builds and is really tricky to package |
|
|
|
@ -191,7 +233,7 @@ self: super: |
|
|
|
|
|
|
|
|
|
numpy = super.numpy.overrideAttrs ( |
|
|
|
|
old: let |
|
|
|
|
blas = pkgs.openblasCompat; |
|
|
|
|
blas = old.passthru.args.blas or pkgs.openblasCompat; |
|
|
|
|
blasImplementation = lib.nameFromURL blas.name "-"; |
|
|
|
|
cfg = pkgs.writeTextFile { |
|
|
|
|
name = "site.cfg"; |
|
|
|
@ -222,6 +264,19 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
peewee = super.peewee.overridePythonAttrs ( |
|
|
|
|
old: let |
|
|
|
|
withPostgres = old.passthru.withPostgres or false; |
|
|
|
|
withMysql = old.passthru.withMysql or false; |
|
|
|
|
in |
|
|
|
|
{ |
|
|
|
|
buildInputs = old.buildInputs ++ [ self.cython pkgs.sqlite ]; |
|
|
|
|
propagatedBuildInputs = old.propagatedBuildInputs |
|
|
|
|
++ lib.optional withPostgres self.psycopg2 |
|
|
|
|
++ lib.optional withMysql self.mysql-connector; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
pillow = super.pillow.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
nativeBuildInputs = [ pkgs.pkgconfig ] ++ old.nativeBuildInputs; |
|
|
|
@ -297,84 +352,106 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
pyqt5 = super.pyqt5.overridePythonAttrs ( |
|
|
|
|
old: { |
|
|
|
|
format = "other"; |
|
|
|
|
|
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ |
|
|
|
|
pkgs.pkgconfig |
|
|
|
|
pkgs.qt5.qmake |
|
|
|
|
pkgs.xorg.lndir |
|
|
|
|
pkgs.qt5.qtbase |
|
|
|
|
pkgs.qt5.qtsvg |
|
|
|
|
pkgs.qt5.qtdeclarative |
|
|
|
|
pkgs.qt5.qtwebchannel |
|
|
|
|
# self.pyqt5-sip |
|
|
|
|
self.sip |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
buildInputs = old.buildInputs ++ [ |
|
|
|
|
pkgs.dbus |
|
|
|
|
pkgs.qt5.qtbase |
|
|
|
|
pkgs.qt5.qtsvg |
|
|
|
|
pkgs.qt5.qtdeclarative |
|
|
|
|
self.sip |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
# Fix dbus mainloop |
|
|
|
|
inherit (pkgs.python3.pkgs.pyqt5) patches; |
|
|
|
|
|
|
|
|
|
configurePhase = '' |
|
|
|
|
runHook preConfigure |
|
|
|
|
|
|
|
|
|
export PYTHONPATH=$PYTHONPATH:$out/${self.python.sitePackages} |
|
|
|
|
|
|
|
|
|
mkdir -p $out/${self.python.sitePackages}/dbus/mainloop |
|
|
|
|
${self.python.executable} configure.py -w \ |
|
|
|
|
--confirm-license \ |
|
|
|
|
--no-qml-plugin \ |
|
|
|
|
--bindir=$out/bin \ |
|
|
|
|
--destdir=$out/${self.python.sitePackages} \ |
|
|
|
|
--stubsdir=$out/${self.python.sitePackages}/PyQt5 \ |
|
|
|
|
--sipdir=$out/share/sip/PyQt5 \ |
|
|
|
|
--designer-plugindir=$out/plugins/designer |
|
|
|
|
|
|
|
|
|
runHook postConfigure |
|
|
|
|
''; |
|
|
|
|
pyqt5 = let |
|
|
|
|
drv = super.pyqt5; |
|
|
|
|
withConnectivity = drv.passthru.args.withConnectivity or false; |
|
|
|
|
withMultimedia = drv.passthru.args.withMultimedia or false; |
|
|
|
|
withWebKit = drv.passthru.args.withWebKit or false; |
|
|
|
|
withWebSockets = drv.passthru.args.withWebSockets or false; |
|
|
|
|
in |
|
|
|
|
super.pyqt5.overridePythonAttrs ( |
|
|
|
|
old: { |
|
|
|
|
format = "other"; |
|
|
|
|
|
|
|
|
|
postInstall = '' |
|
|
|
|
ln -s ${self.pyqt5-sip}/${self.python.sitePackages}/PyQt5/sip.* $out/${self.python.sitePackages}/PyQt5/ |
|
|
|
|
for i in $out/bin/*; do |
|
|
|
|
wrapProgram $i --prefix PYTHONPATH : "$PYTHONPATH" |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
# # Let's make it a namespace package |
|
|
|
|
# cat << EOF > $out/${self.python.sitePackages}/PyQt5/__init__.py |
|
|
|
|
# from pkgutil import extend_path |
|
|
|
|
# __path__ = extend_path(__path__, __name__) |
|
|
|
|
# EOF |
|
|
|
|
''; |
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ |
|
|
|
|
pkgs.pkgconfig |
|
|
|
|
pkgs.qt5.qmake |
|
|
|
|
pkgs.xorg.lndir |
|
|
|
|
pkgs.qt5.qtbase |
|
|
|
|
pkgs.qt5.qtsvg |
|
|
|
|
pkgs.qt5.qtdeclarative |
|
|
|
|
pkgs.qt5.qtwebchannel |
|
|
|
|
# self.pyqt5-sip |
|
|
|
|
self.sip |
|
|
|
|
] |
|
|
|
|
++ lib.optional withConnectivity pkgs.qt5.qtconnectivity |
|
|
|
|
++ lib.optional withMultimedia pkgs.qt5.qtmultimedia |
|
|
|
|
++ lib.optional withWebKit pkgs.qt5.qtwebkit |
|
|
|
|
++ lib.optional withWebSockets pkgs.qt5.qtwebsockets |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
buildInputs = old.buildInputs ++ [ |
|
|
|
|
pkgs.dbus |
|
|
|
|
pkgs.qt5.qtbase |
|
|
|
|
pkgs.qt5.qtsvg |
|
|
|
|
pkgs.qt5.qtdeclarative |
|
|
|
|
self.sip |
|
|
|
|
] |
|
|
|
|
++ lib.optional withConnectivity pkgs.qt5.qtconnectivity |
|
|
|
|
++ lib.optional withWebKit pkgs.qt5.qtwebkit |
|
|
|
|
++ lib.optional withWebSockets pkgs.qt5.qtwebsockets |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
# Fix dbus mainloop |
|
|
|
|
patches = pkgs.python3.pkgs.pyqt5.patches or []; |
|
|
|
|
|
|
|
|
|
configurePhase = '' |
|
|
|
|
runHook preConfigure |
|
|
|
|
|
|
|
|
|
export PYTHONPATH=$PYTHONPATH:$out/${self.python.sitePackages} |
|
|
|
|
|
|
|
|
|
mkdir -p $out/${self.python.sitePackages}/dbus/mainloop |
|
|
|
|
${self.python.executable} configure.py -w \ |
|
|
|
|
--confirm-license \ |
|
|
|
|
--no-qml-plugin \ |
|
|
|
|
--bindir=$out/bin \ |
|
|
|
|
--destdir=$out/${self.python.sitePackages} \ |
|
|
|
|
--stubsdir=$out/${self.python.sitePackages}/PyQt5 \ |
|
|
|
|
--sipdir=$out/share/sip/PyQt5 \ |
|
|
|
|
--designer-plugindir=$out/plugins/designer |
|
|
|
|
|
|
|
|
|
runHook postConfigure |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
installCheckPhase = let |
|
|
|
|
modules = [ |
|
|
|
|
"PyQt5" |
|
|
|
|
"PyQt5.QtCore" |
|
|
|
|
"PyQt5.QtQml" |
|
|
|
|
"PyQt5.QtWidgets" |
|
|
|
|
"PyQt5.QtGui" |
|
|
|
|
]; |
|
|
|
|
imports = lib.concatMapStrings (module: "import ${module};") modules; |
|
|
|
|
in |
|
|
|
|
'' |
|
|
|
|
echo "Checking whether modules can be imported..." |
|
|
|
|
${self.python.interpreter} -c "${imports}" |
|
|
|
|
postInstall = '' |
|
|
|
|
ln -s ${self.pyqt5-sip}/${self.python.sitePackages}/PyQt5/sip.* $out/${self.python.sitePackages}/PyQt5/ |
|
|
|
|
for i in $out/bin/*; do |
|
|
|
|
wrapProgram $i --prefix PYTHONPATH : "$PYTHONPATH" |
|
|
|
|
done |
|
|
|
|
|
|
|
|
|
# Let's make it a namespace package |
|
|
|
|
cat << EOF > $out/${self.python.sitePackages}/PyQt5/__init__.py |
|
|
|
|
from pkgutil import extend_path |
|
|
|
|
__path__ = extend_path(__path__, __name__) |
|
|
|
|
EOF |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
doCheck = true; |
|
|
|
|
installCheckPhase = let |
|
|
|
|
modules = [ |
|
|
|
|
"PyQt5" |
|
|
|
|
"PyQt5.QtCore" |
|
|
|
|
"PyQt5.QtQml" |
|
|
|
|
"PyQt5.QtWidgets" |
|
|
|
|
"PyQt5.QtGui" |
|
|
|
|
] |
|
|
|
|
++ lib.optional withWebSockets "PyQt5.QtWebSockets" |
|
|
|
|
++ lib.optional withWebKit "PyQt5.QtWebKit" |
|
|
|
|
++ lib.optional withMultimedia "PyQt5.QtMultimedia" |
|
|
|
|
++ lib.optional withConnectivity "PyQt5.QtConnectivity" |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
imports = lib.concatMapStrings (module: "import ${module};") modules; |
|
|
|
|
in |
|
|
|
|
'' |
|
|
|
|
echo "Checking whether modules can be imported..." |
|
|
|
|
${self.python.interpreter} -c "${imports}" |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
doCheck = true; |
|
|
|
|
|
|
|
|
|
enableParallelBuilding = true; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
enableParallelBuilding = true; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
pytest-datadir = super.pytest-datadir.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
@ -400,9 +477,21 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
# Pybind11 is an undeclared dependency of scipy that we need to pick from nixpkgs |
|
|
|
|
# Make it not fail with infinite recursion |
|
|
|
|
pybind11 = super.pybind11.overridePythonAttrs ( |
|
|
|
|
old: { |
|
|
|
|
cmakeFlags = (old.cmakeFlags or []) ++ [ |
|
|
|
|
"-DPYBIND11_TEST=off" |
|
|
|
|
]; |
|
|
|
|
doCheck = false; # Circular test dependency |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
scipy = super.scipy.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.gfortran ]; |
|
|
|
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.pybind11 ]; |
|
|
|
|
setupPyBuildFlags = [ "--fcompiler='gnu95'" ]; |
|
|
|
|
enableParallelBuilding = true; |
|
|
|
|
buildInputs = old.buildInputs ++ [ self.numpy.blas ]; |
|
|
|
@ -416,10 +505,27 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
scikit-learn = super.scikit-learn.overridePythonAttrs ( |
|
|
|
|
old: { |
|
|
|
|
buildInputs = old.buildInputs ++ [ |
|
|
|
|
pkgs.gfortran |
|
|
|
|
pkgs.glibcLocales |
|
|
|
|
] ++ lib.optionals stdenv.cc.isClang [ |
|
|
|
|
pkgs.llvmPackages.openmp |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
nativeBuildInputs = old.nativeBuildInputs ++ [ |
|
|
|
|
self.cython |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
enableParallelBuilding = true; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
shapely = super.shapely.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
buildInputs = old.buildInputs ++ [ pkgs.geos self.cython ]; |
|
|
|
|
inherit (super.shapely) patches GEOS_LIBRARY_PATH; |
|
|
|
|
inherit (pkgs.python3.pkgs.shapely) patches GEOS_LIBRARY_PATH; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
@ -431,7 +537,7 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
vose-alias-method = super.pytest-datadir.overrideAttrs ( |
|
|
|
|
vose-alias-method = super.vose-alias-method.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
postInstall = '' |
|
|
|
|
rm -f $out/LICENSE |
|
|
|
@ -439,6 +545,15 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
uvloop = super.uvloop.overrideAttrs ( |
|
|
|
|
old: { |
|
|
|
|
buildInputs = old.buildInputs ++ lib.optionals stdenv.isDarwin [ |
|
|
|
|
pkgs.darwin.apple_sdk.frameworks.ApplicationServices |
|
|
|
|
pkgs.darwin.apple_sdk.frameworks.CoreServices |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
# Stop infinite recursion by using bootstrapped pkg from nixpkgs |
|
|
|
|
wheel = ( |
|
|
|
|
pkgs.python3.pkgs.override { |
|
|
|
@ -450,4 +565,17 @@ self: super: |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
zipp = |
|
|
|
|
if lib.versionAtLeast super.zipp.version "2.0.0" then ( |
|
|
|
|
super.zipp.overridePythonAttrs ( |
|
|
|
|
old: { |
|
|
|
|
prePatch = '' |
|
|
|
|
substituteInPlace setup.py --replace \ |
|
|
|
|
'setuptools.setup()' \ |
|
|
|
|
'setuptools.setup(version="${super.zipp.version}")' |
|
|
|
|
''; |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
) else super.zipp; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|