pythonFull: add BlueZ support

This commit introduces two changes.

First, cpython gets optional BlueZ support, which is needed for
AF_BLUETOOTH sockets. Therefore bluezSupport was added as a parameter.

Second, the call to the pythonFull packages has been adjusted. The
Python packages have a self-reference called self. This was not adjusted
for the override. As a result, Python packages for this special version
of Python were not built with the overridden Python, but with the
original one.
This commit is contained in:
Alvar Penning 2020-06-22 12:46:17 +02:00 committed by Frederik Rietdijk
parent 9be02e14df
commit b7ce309e6c
2 changed files with 42 additions and 8 deletions

@ -9,6 +9,7 @@
, readline , readline
, sqlite , sqlite
, tcl ? null, tk ? null, tix ? null, libX11 ? null, xorgproto ? null, x11Support ? false , tcl ? null, tk ? null, tix ? null, libX11 ? null, xorgproto ? null, x11Support ? false
, bluez ? null, bluezSupport ? false
, zlib , zlib
, self , self
, configd , configd
@ -45,6 +46,9 @@ assert x11Support -> tcl != null
&& tk != null && tk != null
&& xorgproto != null && xorgproto != null
&& libX11 != null; && libX11 != null;
assert bluezSupport -> bluez != null;
with stdenv.lib; with stdenv.lib;
let let
@ -73,6 +77,7 @@ let
buildInputs = filter (p: p != null) ([ buildInputs = filter (p: p != null) ([
zlib bzip2 expat lzma libffi gdbm sqlite readline ncurses openssl ] zlib bzip2 expat lzma libffi gdbm sqlite readline ncurses openssl ]
++ optionals x11Support [ tcl tk libX11 xorgproto ] ++ optionals x11Support [ tcl tk libX11 xorgproto ]
++ optionals (bluezSupport && stdenv.isLinux) [ bluez ]
++ optionals stdenv.isDarwin [ configd ]); ++ optionals stdenv.isDarwin [ configd ]);
hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false); hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false);

@ -9898,14 +9898,43 @@ in
# Python interpreter that is build with all modules, including tkinter. # Python interpreter that is build with all modules, including tkinter.
# These are for compatibility and should not be used inside Nixpkgs. # These are for compatibility and should not be used inside Nixpkgs.
pythonFull = python.override{x11Support=true;}; pythonFull = python.override {
python2Full = python2.override{x11Support=true;}; self = pythonFull;
python27Full = python27.override{x11Support=true;}; x11Support = true;
python3Full = python3.override{x11Support=true;}; };
python36Full = python36.override{x11Support=true;}; python2Full = python2.override {
python37Full = python37.override{x11Support=true;}; self = python2Full;
python38Full = python38.override{x11Support=true;}; x11Support = true;
python39Full = python39.override{x11Support=true;}; };
python27Full = python27.override {
self = python27Full;
x11Support = true;
};
python3Full = python3.override {
self = python3Full;
bluezSupport = true;
x11Support = true;
};
python36Full = python36.override {
self = python36Full;
bluezSupport = true;
x11Support = true;
};
python37Full = python37.override {
self = python37Full;
bluezSupport = true;
x11Support = true;
};
python38Full = python38.override {
self = python38Full;
bluezSupport = true;
x11Support = true;
};
python39Full = python39.override {
self = python39Full;
bluezSupport = true;
x11Support = true;
};
# pythonPackages further below, but assigned here because they need to be in sync # pythonPackages further below, but assigned here because they need to be in sync
pythonPackages = python.pkgs; pythonPackages = python.pkgs;