From b639c57aaa83688ce09fa0c2ba1a51e6089884bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Fri, 30 Apr 2021 12:23:29 +0200 Subject: [PATCH 1/4] python3Packages.imageio-ffmpeg: 0.4.2 -> 0.4.3 Also hardcode path to ffmpeg executable. Can be overridden using $IMAGEIO_FFMPEG_EXE. --- .../python-modules/imageio-ffmpeg/default.nix | 45 ++++++++++++------- .../imageio-ffmpeg/ffmpeg-path.patch | 39 ++++++++++++++++ 2 files changed, 68 insertions(+), 16 deletions(-) create mode 100644 pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch diff --git a/pkgs/development/python-modules/imageio-ffmpeg/default.nix b/pkgs/development/python-modules/imageio-ffmpeg/default.nix index db59ba70bb2..bb186d6594c 100644 --- a/pkgs/development/python-modules/imageio-ffmpeg/default.nix +++ b/pkgs/development/python-modules/imageio-ffmpeg/default.nix @@ -1,29 +1,42 @@ { lib , buildPythonPackage -, fetchPypi -, fetchpatch , isPy3k +, fetchPypi +, substituteAll +, ffmpeg +, python }: buildPythonPackage rec { pname = "imageio-ffmpeg"; - version = "0.4.2"; - - src = fetchPypi { - inherit pname version; - sha256 = "13b05b17a941a9f4a90b16910b1ffac159448cff051a153da8ba4b4343ffa195"; - }; - patches = [ (fetchpatch { - # Fixes compatibility with python3.9 - # Should be included in the next release after 0.4.2 - url = "https://github.com/imageio/imageio-ffmpeg/pull/43/commits/b90c39fe3d29418d67d953588ed9fdf4d848f811.patch"; - sha256 = "0d9kf4w6ldwag3s2dr9zjin6wrj66fnl4fn8379ci4q4qfsqgx3f"; - })]; + version = "0.4.3"; disabled = !isPy3k; - # No test infrastructure in repository. - doCheck = false; + src = fetchPypi { + inherit pname version; + sha256 = "f826260a3207b872f1a4ba87ec0c8e02c00afba4fd03348a59049bdd8215841e"; + }; + + patches = [ + (substituteAll { + src = ./ffmpeg-path.patch; + ffmpeg = "${ffmpeg}/bin/ffmpeg"; + }) + ]; + + checkPhase = '' + runHook preCheck + + ${python.interpreter} << EOF + from imageio_ffmpeg import get_ffmpeg_version + assert get_ffmpeg_version() == '${ffmpeg.version}' + EOF + + runHook postCheck + ''; + + pythonImportsCheck = [ "imageio_ffmpeg" ]; meta = with lib; { description = "FFMPEG wrapper for Python"; diff --git a/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch b/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch new file mode 100644 index 00000000000..d193ec199f9 --- /dev/null +++ b/pkgs/development/python-modules/imageio-ffmpeg/ffmpeg-path.patch @@ -0,0 +1,39 @@ +diff --git a/imageio_ffmpeg/_utils.py b/imageio_ffmpeg/_utils.py +index 1399cfd..c0eb9be 100644 +--- a/imageio_ffmpeg/_utils.py ++++ b/imageio_ffmpeg/_utils.py +@@ -23,33 +23,7 @@ def get_ffmpeg_exe(): + if exe: + return exe + +- plat = get_platform() +- +- # 2. Try from here +- bin_dir = resource_filename("imageio_ffmpeg", "binaries") +- exe = os.path.join(bin_dir, FNAME_PER_PLATFORM.get(plat, "")) +- if exe and os.path.isfile(exe) and _is_valid_exe(exe): +- return exe +- +- # 3. Try binary from conda package +- # (installed e.g. via `conda install ffmpeg -c conda-forge`) +- if plat.startswith("win"): +- exe = os.path.join(sys.prefix, "Library", "bin", "ffmpeg.exe") +- else: +- exe = os.path.join(sys.prefix, "bin", "ffmpeg") +- if exe and os.path.isfile(exe) and _is_valid_exe(exe): +- return exe +- +- # 4. Try system ffmpeg command +- exe = "ffmpeg" +- if _is_valid_exe(exe): +- return exe +- +- # Nothing was found +- raise RuntimeError( +- "No ffmpeg exe could be found. Install ffmpeg on your system, " +- "or set the IMAGEIO_FFMPEG_EXE environment variable." +- ) ++ return '@ffmpeg@' + + + def _popen_kwargs(prevent_sigint=False): From e95bdd6b3c5c0464e5a8b73a1ad88cef18f5d186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Fri, 30 Apr 2021 12:30:34 +0200 Subject: [PATCH 2/4] python3Packages.imageio: refactor --- .../python-modules/imageio/default.nix | 39 +++++++------------ 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/pkgs/development/python-modules/imageio/default.nix b/pkgs/development/python-modules/imageio/default.nix index 2b334fd121c..1672e798f30 100644 --- a/pkgs/development/python-modules/imageio/default.nix +++ b/pkgs/development/python-modules/imageio/default.nix @@ -1,17 +1,12 @@ { lib , buildPythonPackage , isPy27 -, pathlib , fetchPypi +, imageio-ffmpeg +, numpy , pillow , psutil -, imageio-ffmpeg -, pytest -, numpy -, isPy3k -, ffmpeg_3 -, futures ? null -, enum34 +, pytestCheckHook }: buildPythonPackage rec { @@ -24,26 +19,21 @@ buildPythonPackage rec { inherit pname version; }; - checkInputs = [ pytest psutil ] ++ lib.optionals isPy3k [ - imageio-ffmpeg ffmpeg_3 - ]; - propagatedBuildInputs = [ numpy pillow ]; + propagatedBuildInputs = [ + imageio-ffmpeg + numpy + pillow + ]; - checkPhase = '' + checkInputs = [ + psutil + pytestCheckHook + ]; + + preCheck = '' export IMAGEIO_USERDIR="$TMP" export IMAGEIO_NO_INTERNET="true" export HOME="$(mktemp -d)" - py.test - ''; - - # For some reason, importing imageio also imports xml on Nix, see - # https://github.com/imageio/imageio/issues/395 - - # Also, there are tests that test the downloading of ffmpeg if it's not installed. - # "Uncomment" those by renaming. - postPatch = '' - substituteInPlace tests/test_meta.py --replace '"urllib",' "\"urllib\",\"xml\"," - substituteInPlace tests/test_ffmpeg.py --replace 'test_get_exe_installed' 'get_exe_installed' ''; meta = with lib; { @@ -51,5 +41,4 @@ buildPythonPackage rec { homepage = "http://imageio.github.io/"; license = licenses.bsd2; }; - } From 965ee5281be86a1a66678228fdb4a2fcc328d2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Fri, 30 Apr 2021 12:35:19 +0200 Subject: [PATCH 3/4] pythonPackages.infoqscraper: drop It's broken on both master and release-20.09 with ImportError: No module named pkg_resources so it's safe to assume nobody is using it. --- .../python-modules/infoqscraper/default.nix | 33 ------------------- pkgs/top-level/python-packages.nix | 2 -- 2 files changed, 35 deletions(-) delete mode 100644 pkgs/development/python-modules/infoqscraper/default.nix diff --git a/pkgs/development/python-modules/infoqscraper/default.nix b/pkgs/development/python-modules/infoqscraper/default.nix deleted file mode 100644 index b250dfc6c7f..00000000000 --- a/pkgs/development/python-modules/infoqscraper/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ lib -, buildPythonPackage -, html5lib -, six -, beautifulsoup4 -, pkgs -}: - -buildPythonPackage rec { - version = "0.1.0"; - pname = "infoqscraper"; - - src = pkgs.fetchFromGitHub { - owner = "cykl"; - repo = pname; - rev = "v${version}"; - sha256 = "07mxp4mla7fwfc032f3mxrhjarnhkjqdxxibf9ba87c93z3dq8jj"; - }; - - # requires network - doCheck = false; - - buildInputs = [ html5lib ]; - propagatedBuildInputs = [ six beautifulsoup4 pkgs.ffmpeg_3 pkgs.swftools pkgs.rtmpdump ]; - - meta = with lib; { - description = "Discover presentations and/or create a movie consisting of slides and audio track from an infoq url"; - homepage = "https://github.com/cykl/infoqscraper/wiki"; - license = licenses.mit; - maintainers = with maintainers; [ edwtjo ]; - }; - -} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 10c07d8d4b4..505cd1f0f82 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3252,8 +3252,6 @@ in { influxgraph = callPackage ../development/python-modules/influxgraph { }; - infoqscraper = callPackage ../development/python-modules/infoqscraper { }; - inform = callPackage ../development/python-modules/inform { }; iniconfig = callPackage ../development/python-modules/iniconfig { }; From 8e6bbb68d37575dd99b7ae240b4e8cc72d2ef056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Fri, 30 Apr 2021 12:37:06 +0200 Subject: [PATCH 4/4] python3Packages.stytra: does not depend on ffmpeg_3 The path to FFmpeg's executable is now hardcoded in imageio-ffmpeg. --- pkgs/development/python-modules/stytra/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/stytra/default.nix b/pkgs/development/python-modules/stytra/default.nix index 80eefc0a639..fba544789a8 100644 --- a/pkgs/development/python-modules/stytra/default.nix +++ b/pkgs/development/python-modules/stytra/default.nix @@ -8,7 +8,6 @@ , pandas , tables , git -, ffmpeg_3 , scikitimage , matplotlib , qdarkstyle @@ -59,7 +58,6 @@ buildPythonPackage rec { pandas tables git - ffmpeg_3 scikitimage matplotlib qdarkstyle @@ -79,7 +77,7 @@ buildPythonPackage rec { meta = { homepage = "https://github.com/portugueslab/stytra"; description = "A modular package to control stimulation and track behaviour"; - license = lib.licenses.gpl3; + license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ tbenst ]; }; }