diff --git a/pkgs/tools/misc/openopc/default.nix b/pkgs/tools/misc/openopc/default.nix new file mode 100644 index 00000000000..2fce3807ca7 --- /dev/null +++ b/pkgs/tools/misc/openopc/default.nix @@ -0,0 +1,46 @@ +{ stdenv, fetchurl, pythonFull }: + +stdenv.mkDerivation rec { + name = "openopc-${version}"; + version = "1.2.0"; + + src = fetchurl { + url = "mirror://sourceforge/project/openopc/openopc/${version}/OpenOPC-${version}.source.tar.bz2"; + sha256 = "0mm77fiipz5zy82l6pr3wk18bfril81milv2rdxr954c4gw5smyd"; + }; + + # There is no setup.py or any other "build system" file in the source archive. + installPhase = '' + mkdir -p "$out/bin" + mkdir -p "$out/share/doc/openopc" + mkdir -p "$out/${pythonFull.python.sitePackages}" + mkdir -p "$out/libexec/opc" + + cp src/OpenOPC.py "$out/${pythonFull.python.sitePackages}" + cp src/opc.py "$out/libexec/opc/" + + cat > "$out/bin/opc" << __EOF__ + #!${stdenv.shell} + export PYTHONPATH="$out/${pythonFull.python.sitePackages}" + exec ${pythonFull}/bin/${pythonFull.python.executable} "$out/libexec/opc/opc.py" "\$@" + __EOF__ + chmod a+x "$out/bin/opc" + + cp -R *.txt doc/* "$out/share/doc/openopc/" + + # Copy these MS Windows tools, for reference. + cp src/OpenOPCService.py src/SystemHealth.py "$out/libexec/opc/" + ''; + + meta = with stdenv.lib; { + description = "OPC (OLE for Process Control) toolkit designed for use with Python"; + homepage = http://openopc.sourceforge.net/; + # """OpenOPC for Python is freely available under the terms of the GNU GPL. + # However, the OpenOPC library module is licensed under the "GPL + linking + # exception" license, which generally means that programs written using the + # OpenOPC library may be licensed under any terms.""" + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = [ maintainers.bjornfor ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d96695c8c60..dc29ff8be05 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1694,6 +1694,12 @@ let openobex = callPackage ../tools/bluetooth/openobex { }; + openopc = callPackage ../tools/misc/openopc { + pythonFull = python27Full.override { + extraLibs = [ python27Packages.pyro3 ]; + }; + }; + openresolv = callPackage ../tools/networking/openresolv { }; opensc = callPackage ../tools/security/opensc { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 90c2ef61c31..9bf5cbe0255 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5984,6 +5984,23 @@ rec { }; }); + pyro3 = buildPythonPackage (rec { + name = "Pyro-3.16"; + + src = fetchurl { + url = "http://pypi.python.org/packages/source/P/Pyro/${name}.tar.gz"; + md5 = "59d4d3f4a8786776c9d7f9051b8f1a69"; + }; + + meta = with stdenv.lib; { + description = "Distributed object middleware for Python (IPC/RPC)"; + homepage = http://pythonhosted.org/Pyro/; + license = licenses.mit; + platforms = platforms.unix; + maintainers = [ maintainers.bjornfor ]; + }; + }); + pyrss2gen = buildPythonPackage (rec { name = "PyRSS2Gen-1.0.0";