diff --git a/pkgs/development/python-modules/pyturbojpeg/default.nix b/pkgs/development/python-modules/pyturbojpeg/default.nix new file mode 100644 index 00000000000..1eebc05d89e --- /dev/null +++ b/pkgs/development/python-modules/pyturbojpeg/default.nix @@ -0,0 +1,45 @@ +{ lib +, stdenv +, python +, buildPythonPackage +, fetchPypi +, substituteAll +, libjpeg_turbo +, numpy +}: + +buildPythonPackage rec { + pname = "pyturbojpeg"; + version = "1.4.1"; + + src = fetchPypi { + pname = "PyTurboJPEG"; + inherit version; + sha256 = "09688a93331281e566569b4d313e1d1a058ca32ccae1a2473847a10e4ca2f2a7"; + }; + + patches = [ + (substituteAll { + src = ./lib-path.patch; + libturbojpeg = "${libjpeg_turbo.out}/lib/libturbojpeg${stdenv.hostPlatform.extensions.sharedLibrary}"; + }) + ]; + + propagatedBuildInputs = [ + numpy + ]; + + # upstream has no tests, but we want to test whether the library is found + checkPhase = '' + ${python.interpreter} -c 'from turbojpeg import TurboJPEG; TurboJPEG()' + ''; + + pythonImportsCheck = [ "turbojpeg" ]; + + meta = with lib; { + description = "A Python wrapper of libjpeg-turbo for decoding and encoding JPEG image"; + homepage = "https://github.com/lilohuang/PyTurboJPEG"; + license = licenses.mit; + maintainers = with maintainers; [ dotlambda ]; + }; +} diff --git a/pkgs/development/python-modules/pyturbojpeg/lib-path.patch b/pkgs/development/python-modules/pyturbojpeg/lib-path.patch new file mode 100644 index 00000000000..30e6ed58bac --- /dev/null +++ b/pkgs/development/python-modules/pyturbojpeg/lib-path.patch @@ -0,0 +1,28 @@ +diff --git a/turbojpeg.py b/turbojpeg.py +index 73edb38..bfa8c67 100644 +--- a/turbojpeg.py ++++ b/turbojpeg.py +@@ -408,22 +408,7 @@ class TurboJPEG(object): + + def __find_turbojpeg(self): + """returns default turbojpeg library path if possible""" +- lib_path = find_library('turbojpeg') +- if lib_path is not None: +- return lib_path +- for lib_path in DEFAULT_LIB_PATHS[platform.system()]: +- if os.path.exists(lib_path): +- return lib_path +- if platform.system() == 'Linux' and 'LD_LIBRARY_PATH' in os.environ: +- ld_library_path = os.environ['LD_LIBRARY_PATH'] +- for path in ld_library_path.split(':'): +- lib_path = os.path.join(path, 'libturbojpeg.so.0') +- if os.path.exists(lib_path): +- return lib_path +- raise RuntimeError( +- 'Unable to locate turbojpeg library automatically. ' +- 'You may specify the turbojpeg library path manually.\n' +- 'e.g. jpeg = TurboJPEG(lib_path)') ++ return '@libturbojpeg@' + + def __getaddr(self, nda): + """returns the memory address for a given ndarray""" diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 19442dff09d..f460f07a0fc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6915,6 +6915,8 @@ in { pytun = callPackage ../development/python-modules/pytun { }; + pyturbojpeg = callPackage ../development/python-modules/pyturbojpeg { }; + pytz = callPackage ../development/python-modules/pytz { }; pytzdata = callPackage ../development/python-modules/pytzdata { };