diff --git a/pkgs/development/python-modules/cairocffi/0_9.nix b/pkgs/development/python-modules/cairocffi/0_9.nix new file mode 100644 index 000000000000..19a469dad262 --- /dev/null +++ b/pkgs/development/python-modules/cairocffi/0_9.nix @@ -0,0 +1,26 @@ +# FIXME: make gdk_pixbuf dependency optional +{ stdenv +, buildPythonPackage +, pythonOlder +, fetchPypi +, lib +, substituteAll +, makeFontsConf +, freefont_ttf +, pytest +, pytestrunner +, glibcLocales +, cairo +, cffi +, withXcffib ? false, xcffib +, python +, glib +, gdk_pixbuf +}@args: + +import ./generic.nix ({ + version = "0.9.0"; + sha256 = "15386c3a9e08823d6826c4491eaccc7b7254b1dc587a3b9ce60c350c3f990337"; + dlopen_patch = ./dlopen-paths-0.9.patch; + inherit withXcffib; +} // args) diff --git a/pkgs/development/python-modules/cairocffi/default.nix b/pkgs/development/python-modules/cairocffi/default.nix index 863e181f991a..528c845c07ea 100644 --- a/pkgs/development/python-modules/cairocffi/default.nix +++ b/pkgs/development/python-modules/cairocffi/default.nix @@ -15,64 +15,13 @@ , withXcffib ? false, xcffib , python , glib -, gdk_pixbuf }: +, gdk_pixbuf +}@args: -let - generic = { version, sha256, dlopen_patch, disabled ? false }: - buildPythonPackage rec { - pname = "cairocffi"; - inherit version disabled; - - src = fetchPypi { - inherit pname version sha256; - }; - - LC_ALL = "en_US.UTF-8"; - - # checkPhase require at least one 'normal' font and one 'monospace', - # otherwise glyph tests fails - FONTCONFIG_FILE = makeFontsConf { - fontDirectories = [ freefont_ttf ]; - }; - - checkInputs = [ pytest pytestrunner glibcLocales ]; - propagatedBuildInputs = [ cairo cffi ] ++ lib.optional withXcffib xcffib; - - checkPhase = '' - py.test $out/${python.sitePackages} - ''; - - patches = [ - # OSError: dlopen() failed to load a library: gdk_pixbuf-2.0 / gdk_pixbuf-2.0-0 - (substituteAll { - src = dlopen_patch; - ext = stdenv.hostPlatform.extensions.sharedLibrary; - cairo = cairo.out; - glib = glib.out; - gdk_pixbuf = gdk_pixbuf.out; - }) - ./fix_test_scaled_font.patch - ]; - - meta = with lib; { - homepage = https://github.com/SimonSapin/cairocffi; - license = licenses.bsd3; - maintainers = with maintainers; []; - description = "cffi-based cairo bindings for Python"; - }; - }; -in - { - cairocffi_1_0 = generic { - version = "1.0.2"; - sha256 = "01ac51ae12c4324ca5809ce270f9dd1b67f5166fe63bd3e497e9ea3ca91946ff"; - dlopen_patch = ./dlopen-paths.patch; - disabled = pythonOlder "3.5"; - }; - - cairocffi_0_9 = generic { - version = "0.9.0"; - sha256 = "15386c3a9e08823d6826c4491eaccc7b7254b1dc587a3b9ce60c350c3f990337"; - dlopen_patch = ./dlopen-paths-0.9.patch; - }; - } +import ./generic.nix ({ + version = "1.0.2"; + sha256 = "01ac51ae12c4324ca5809ce270f9dd1b67f5166fe63bd3e497e9ea3ca91946ff"; + dlopen_patch = ./dlopen-paths.patch; + disabled = pythonOlder "3.5"; + inherit withXcffib; +} // args) diff --git a/pkgs/development/python-modules/cairocffi/generic.nix b/pkgs/development/python-modules/cairocffi/generic.nix new file mode 100644 index 000000000000..4fa5cc466c31 --- /dev/null +++ b/pkgs/development/python-modules/cairocffi/generic.nix @@ -0,0 +1,51 @@ +{ version +, sha256 +, dlopen_patch +, disabled ? false +, ... +}@args: + +with args; + +buildPythonPackage rec { + pname = "cairocffi"; + inherit version disabled; + + src = fetchPypi { + inherit pname version sha256; + }; + + LC_ALL = "en_US.UTF-8"; + + # checkPhase require at least one 'normal' font and one 'monospace', + # otherwise glyph tests fails + FONTCONFIG_FILE = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; + + checkInputs = [ pytest pytestrunner glibcLocales ]; + propagatedBuildInputs = [ cairo cffi ] ++ lib.optional withXcffib xcffib; + + checkPhase = '' + py.test $out/${python.sitePackages} + ''; + + patches = [ + # OSError: dlopen() failed to load a library: gdk_pixbuf-2.0 / gdk_pixbuf-2.0-0 + (substituteAll { + src = dlopen_patch; + ext = stdenv.hostPlatform.extensions.sharedLibrary; + cairo = cairo.out; + glib = glib.out; + gdk_pixbuf = gdk_pixbuf.out; + }) + ./fix_test_scaled_font.patch + ]; + + meta = with lib; { + homepage = https://github.com/SimonSapin/cairocffi; + license = licenses.bsd3; + maintainers = with maintainers; []; + description = "cffi-based cairo bindings for Python"; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 90c97e1548e4..5544dca851d4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1323,9 +1323,10 @@ in { canmatrix = callPackage ../development/python-modules/canmatrix {}; - cairocffi = let - inherit (callPackage ../development/python-modules/cairocffi {}) cairocffi_1_0 cairocffi_0_9; - in if isPy3k then cairocffi_1_0 else cairocffi_0_9; + cairocffi = if isPy3k then + callPackage ../development/python-modules/cairocffi {} + else + callPackage ../development/python-modules/cairocffi/0_9.nix {}; cairosvg = if isPy3k then callPackage ../development/python-modules/cairosvg {}