Merge pull request #38577 from etu/openzwave
openzwave & pythonPackages.python_openzwave: init at 20180404 and 0.4.4
This commit is contained in:
commit
492ab201c4
56
pkgs/development/libraries/openzwave/default.nix
Normal file
56
pkgs/development/libraries/openzwave/default.nix
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
{ stdenv, fetchFromGitHub
|
||||||
|
, doxygen, fontconfig, graphviz-nox, libxml2, pkgconfig, which
|
||||||
|
, systemd }:
|
||||||
|
|
||||||
|
let
|
||||||
|
version = "2018-04-04";
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
name = "openzwave-${version}";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "OpenZWave";
|
||||||
|
repo = "open-zwave";
|
||||||
|
rev = "ab5fe966fee882bb9e8d78a91db892a60a1863d9";
|
||||||
|
sha256 = "0yby8ygzjn5zp5vhysxaadbzysqanwd2zakz379299qs454pr2h9";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ doxygen fontconfig graphviz-nox libxml2 pkgconfig which ];
|
||||||
|
|
||||||
|
buildInputs = [ systemd ];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
DESTDIR=$out PREFIX= pkgconfigdir=lib/pkgconfig make install $installFlags
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
FONTCONFIG_FILE="${fontconfig.out}/etc/fonts/fonts.conf";
|
||||||
|
FONTCONFIG_PATH="${fontconfig.out}/etc/fonts/";
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace cpp/src/Options.cpp \
|
||||||
|
--replace /etc/openzwave $out/etc/openzwave
|
||||||
|
'';
|
||||||
|
|
||||||
|
fixupPhase = ''
|
||||||
|
substituteInPlace $out/lib/pkgconfig/libopenzwave.pc \
|
||||||
|
--replace prefix= prefix=$out \
|
||||||
|
--replace dir= dir=$out
|
||||||
|
|
||||||
|
substituteInPlace $out/bin/ozw_config \
|
||||||
|
--replace pcfile=${pkgconfig} pcfile=$out
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "C++ library to control Z-Wave Networks via a USB Z-Wave Controller";
|
||||||
|
homepage = http://www.openzwave.net/;
|
||||||
|
license = licenses.gpl3;
|
||||||
|
maintainers = with maintainers; [ etu ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
40
pkgs/development/python-modules/python_openzwave/default.nix
Normal file
40
pkgs/development/python-modules/python_openzwave/default.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{ stdenv, buildPythonPackage, fetchPypi, isPy3k
|
||||||
|
, pkgconfig
|
||||||
|
, systemd, libyaml, openzwave, cython
|
||||||
|
, six, pydispatcher, urwid }:
|
||||||
|
|
||||||
|
buildPythonPackage rec {
|
||||||
|
pname = "python_openzwave";
|
||||||
|
version = "0.4.4";
|
||||||
|
|
||||||
|
disabled = !isPy3k;
|
||||||
|
|
||||||
|
src = fetchPypi {
|
||||||
|
inherit pname version;
|
||||||
|
sha256 = "17wdgwg212agj1gxb2kih4cvhjb5bprir4x446s8qwx0mz03azk2";
|
||||||
|
extension = "zip";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
buildInputs = [ systemd libyaml openzwave cython ];
|
||||||
|
propagatedBuildInputs = [ six urwid pydispatcher ];
|
||||||
|
|
||||||
|
# primary location for the .xml files is in /etc/openzwave so we override the
|
||||||
|
# /usr/local/etc lookup instead as that allows us to dump new .xml files into
|
||||||
|
# /etc/openzwave if needed
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src-lib/libopenzwave/libopenzwave.pyx \
|
||||||
|
--replace /usr/local/etc/openzwave ${openzwave}/etc/openzwave
|
||||||
|
'';
|
||||||
|
|
||||||
|
# no tests available
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Python wrapper for the OpenZWave C++ library";
|
||||||
|
homepage = https://github.com/OpenZWave/python-openzwave;
|
||||||
|
license = licenses.gpl3Plus;
|
||||||
|
maintainers = with maintainers; [ etu ];
|
||||||
|
inherit (openzwave.meta) platforms;
|
||||||
|
};
|
||||||
|
}
|
@ -112,8 +112,8 @@
|
|||||||
"hue" = ps: with ps; [ ];
|
"hue" = ps: with ps; [ ];
|
||||||
"ifttt" = ps: with ps; [ ];
|
"ifttt" = ps: with ps; [ ];
|
||||||
"ihc" = ps: with ps; [ ];
|
"ihc" = ps: with ps; [ ];
|
||||||
"image_processing.dlib_face_detect" = ps: with ps; [ ];
|
"image_processing.dlib_face_detect" = ps: with ps; [ face_recognition ];
|
||||||
"image_processing.dlib_face_identify" = ps: with ps; [ ];
|
"image_processing.dlib_face_identify" = ps: with ps; [ face_recognition ];
|
||||||
"image_processing.opencv" = ps: with ps; [ numpy ];
|
"image_processing.opencv" = ps: with ps; [ numpy ];
|
||||||
"influxdb" = ps: with ps; [ influxdb ];
|
"influxdb" = ps: with ps; [ influxdb ];
|
||||||
"insteon_local" = ps: with ps; [ ];
|
"insteon_local" = ps: with ps; [ ];
|
||||||
@ -172,7 +172,7 @@
|
|||||||
"media_player.dunehd" = ps: with ps; [ ];
|
"media_player.dunehd" = ps: with ps; [ ];
|
||||||
"media_player.emby" = ps: with ps; [ ];
|
"media_player.emby" = ps: with ps; [ ];
|
||||||
"media_player.frontier_silicon" = ps: with ps; [ ];
|
"media_player.frontier_silicon" = ps: with ps; [ ];
|
||||||
"media_player.gpmdp" = ps: with ps; [ ];
|
"media_player.gpmdp" = ps: with ps; [ websocket_client ];
|
||||||
"media_player.gstreamer" = ps: with ps; [ ];
|
"media_player.gstreamer" = ps: with ps; [ ];
|
||||||
"media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
|
"media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
|
||||||
"media_player.lg_netcast" = ps: with ps; [ ];
|
"media_player.lg_netcast" = ps: with ps; [ ];
|
||||||
@ -447,6 +447,6 @@
|
|||||||
"zeroconf" = ps: with ps; [ zeroconf ];
|
"zeroconf" = ps: with ps; [ zeroconf ];
|
||||||
"zha" = ps: with ps; [ ];
|
"zha" = ps: with ps; [ ];
|
||||||
"zigbee" = ps: with ps; [ ];
|
"zigbee" = ps: with ps; [ ];
|
||||||
"zwave" = ps: with ps; [ pydispatcher ];
|
"zwave" = ps: with ps; [ pydispatcher python_openzwave ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ let
|
|||||||
|
|
||||||
getPackages = component: builtins.getAttr component componentPackages.components;
|
getPackages = component: builtins.getAttr component componentPackages.components;
|
||||||
|
|
||||||
componentBuildInputs = map (component: getPackages component py.pkgs) extraComponents;
|
componentBuildInputs = lib.concatMap (component: getPackages component py.pkgs) extraComponents;
|
||||||
|
|
||||||
# Ensure that we are using a consistent package set
|
# Ensure that we are using a consistent package set
|
||||||
extraBuildInputs = extraPackages py.pkgs;
|
extraBuildInputs = extraPackages py.pkgs;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#! /usr/bin/env nix-shell
|
#! /usr/bin/env nix-shell
|
||||||
#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ setuptools ])"
|
#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ ])"
|
||||||
#
|
#
|
||||||
# This script downloads https://github.com/home-assistant/home-assistant/blob/master/requirements_all.txt.
|
# This script downloads https://github.com/home-assistant/home-assistant/blob/master/requirements_all.txt.
|
||||||
# This file contains lines of the form
|
# This file contains lines of the form
|
||||||
@ -20,7 +20,6 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
from pkg_resources import Requirement, RequirementParseError
|
|
||||||
|
|
||||||
GENERAL_PREFIX = '# homeassistant.'
|
GENERAL_PREFIX = '# homeassistant.'
|
||||||
COMPONENT_PREFIX = GENERAL_PREFIX + 'components.'
|
COMPONENT_PREFIX = GENERAL_PREFIX + 'components.'
|
||||||
@ -64,9 +63,11 @@ def name_to_attr_path(req):
|
|||||||
names = [req]
|
names = [req]
|
||||||
# E.g. python-mpd2 is actually called python3.6-mpd2
|
# E.g. python-mpd2 is actually called python3.6-mpd2
|
||||||
# instead of python-3.6-python-mpd2 inside Nixpkgs
|
# instead of python-3.6-python-mpd2 inside Nixpkgs
|
||||||
if req.startswith('python-'):
|
if req.startswith('python-') or req.startswith('python_'):
|
||||||
names.append(req[len('python-'):])
|
names.append(req[len('python-'):])
|
||||||
for name in names:
|
for name in names:
|
||||||
|
# treat "-" and "_" equally
|
||||||
|
name = re.sub('[-_]', '[-_]', name)
|
||||||
pattern = re.compile('^python\\d\\.\\d-{}-\\d'.format(name), re.I)
|
pattern = re.compile('^python\\d\\.\\d-{}-\\d'.format(name), re.I)
|
||||||
for attr_path, package in packages.items():
|
for attr_path, package in packages.items():
|
||||||
if pattern.match(package['name']):
|
if pattern.match(package['name']):
|
||||||
@ -86,7 +87,7 @@ for component, reqs in OrderedDict(sorted(requirements.items())).items():
|
|||||||
attr_paths = []
|
attr_paths = []
|
||||||
for req in reqs:
|
for req in reqs:
|
||||||
try:
|
try:
|
||||||
name = Requirement.parse(req).project_name
|
name = req.split('==')[0]
|
||||||
attr_path = name_to_attr_path(name)
|
attr_path = name_to_attr_path(name)
|
||||||
if attr_path is not None:
|
if attr_path is not None:
|
||||||
# Add attribute path without "python3Packages." prefix
|
# Add attribute path without "python3Packages." prefix
|
||||||
|
@ -20598,6 +20598,8 @@ with pkgs;
|
|||||||
|
|
||||||
moltengamepad = callPackage ../misc/drivers/moltengamepad { };
|
moltengamepad = callPackage ../misc/drivers/moltengamepad { };
|
||||||
|
|
||||||
|
openzwave = callPackage ../development/libraries/openzwave { };
|
||||||
|
|
||||||
mongoc = callPackage ../development/libraries/mongoc { };
|
mongoc = callPackage ../development/libraries/mongoc { };
|
||||||
|
|
||||||
mupen64plus = callPackage ../misc/emulators/mupen64plus { };
|
mupen64plus = callPackage ../misc/emulators/mupen64plus { };
|
||||||
|
@ -8908,6 +8908,8 @@ in {
|
|||||||
|
|
||||||
python-oauth2 = callPackage ../development/python-modules/python-oauth2 { };
|
python-oauth2 = callPackage ../development/python-modules/python-oauth2 { };
|
||||||
|
|
||||||
|
python_openzwave = callPackage ../development/python-modules/python_openzwave { };
|
||||||
|
|
||||||
python-Levenshtein = buildPythonPackage rec {
|
python-Levenshtein = buildPythonPackage rec {
|
||||||
name = "python-Levenshtein-${version}";
|
name = "python-Levenshtein-${version}";
|
||||||
version = "0.12.0";
|
version = "0.12.0";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user