depot/third_party/nixpkgs/pkgs/development/python-modules/thumbor/default.nix
Default email 8ac5e011d6 Project import generated by Copybara.
GitOrigin-RevId: 2c3273caa153ee8eb5786bc8141b85b859e7efd7
2020-04-24 19:36:52 -04:00

90 lines
2.5 KiB
Nix

{ buildPythonPackage, python, tornado, pycrypto, pycurl, pytz
, pillow, derpconf, python_magic, libthumbor, webcolors
, piexif, futures, statsd, thumborPexif, fetchFromGitHub, isPy3k, lib
, mock, raven, nose, yanc, remotecv, pyssim, cairosvg, preggy, opencv3
, pkgs, coreutils, substituteAll
}:
buildPythonPackage rec {
pname = "thumbor";
version = "6.7.0";
disabled = isPy3k; # see https://github.com/thumbor/thumbor/issues/1004
# Tests aren't included in PyPI tarball so use GitHub instead
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = version;
sha256 = "1qv02jz7ivn38dsywp7nxrlflly86x9pm2pk3yqi8m8myhc7lipg";
};
patches = [
(substituteAll {
src = ./0001-Don-t-use-which-implementation-to-find-required-exec.patch;
gifsicle = "${pkgs.gifsicle}/bin/gifsicle";
exiftool = "${pkgs.exiftool}/bin/exiftool";
jpegtran = "${pkgs.libjpeg}/bin/jpegtran";
ffmpeg = "${pkgs.ffmpeg}/bin/ffmpeg";
})
];
postPatch = ''
substituteInPlace "setup.py" \
--replace '"argparse",' "" ${lib.optionalString isPy3k ''--replace '"futures",' ""''}
sed -i setup.py \
-e 's/piexif[^"]*/piexif/;s/Pillow[^"]*/Pillow/'
substituteInPlace "tests/test_utils.py" \
--replace "/bin/ls" "${coreutils}/bin/ls"
substituteInPlace "tests/detectors/test_face_detector.py" \
--replace "./thumbor" "$out/lib/${python.libPrefix}/site-packages/thumbor"
substituteInPlace "tests/detectors/test_glasses_detector.py" \
--replace "./thumbor" "$out/lib/${python.libPrefix}/site-packages/thumbor"
'';
checkInputs = [
nose
pyssim
preggy
mock
yanc
remotecv
raven
pkgs.redis
pkgs.glibcLocales
pkgs.gifsicle
];
propagatedBuildInputs = [
tornado
pycrypto
pycurl
pytz
pillow
derpconf
python_magic
libthumbor
opencv3
webcolors
piexif
statsd
cairosvg
] ++ lib.optionals (!isPy3k) [ futures thumborPexif ];
# Remove the source tree before running nosetests because otherwise nosetests
# uses that instead of the installed package. Is there some other way to
# achieve this?
checkPhase = ''
redis-server --port 6668 --requirepass hey_you &
rm -r thumbor
export LC_ALL="en_US.UTF-8"
nosetests -v --with-yanc -s tests/ -e test_redeye_applied
'';
meta = with lib; {
description = "A smart imaging service";
homepage = "https://github.com/thumbor/thumbor/wiki";
license = licenses.mit;
maintainers = with maintainers; [ ];
};
}