about summary refs log tree commit diff
path: root/pkgs/development/python-modules/Wand
diff options
context:
space:
mode:
authorChris Ostrouchov <chris.ostrouchov@gmail.com>2018-12-02 07:52:42 -0500
committerFrederik Rietdijk <fridh@fridh.nl>2018-12-03 16:50:41 +0100
commit5af94096ac589e7550506767d36fddb32d0ec2b4 (patch)
treed2e9ac336cea902b2add4467233e72e6a200cd8a /pkgs/development/python-modules/Wand
parent380b7086bc93da9abd3484ccf94f70b000e1ac63 (diff)
pythonPackages.Wand: refactor fix broken package
Diffstat (limited to 'pkgs/development/python-modules/Wand')
-rw-r--r--pkgs/development/python-modules/Wand/default.nix12
-rw-r--r--pkgs/development/python-modules/Wand/libraries.patch149
2 files changed, 4 insertions, 157 deletions
diff --git a/pkgs/development/python-modules/Wand/default.nix b/pkgs/development/python-modules/Wand/default.nix
index 8536a37bc366d..8108914814af6 100644
--- a/pkgs/development/python-modules/Wand/default.nix
+++ b/pkgs/development/python-modules/Wand/default.nix
@@ -1,5 +1,4 @@
 { stdenv
-, lib
 , buildPythonPackage
 , fetchPypi
 , imagemagick
@@ -26,22 +25,19 @@ in buildPythonPackage rec {
 
   buildInputs = [ imagemagick ];
 
-  patches = [
-    ./libraries.patch
-  ];
-
   inherit magick_wand_library imagemagick_library;
 
   postPatch = ''
     substituteAllInPlace wand/api.py
   '';
 
-  # No tests
+  # tests not included with pypi release
   doCheck = false;
-  meta = {
+
+  meta = with stdenv.lib; {
     description = "Ctypes-based simple MagickWand API binding for Python";
     homepage = http://wand-py.org/;
-    license = with lib.licenses; [ mit ];
+    license = [ licenses.mit ];
   };
 
   passthru = {
diff --git a/pkgs/development/python-modules/Wand/libraries.patch b/pkgs/development/python-modules/Wand/libraries.patch
deleted file mode 100644
index 15b19f5168bd5..0000000000000
--- a/pkgs/development/python-modules/Wand/libraries.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-diff --git a/wand/api.py b/wand/api.py
-index 2c18513..1a1b511 100644
---- a/wand/api.py
-+++ b/wand/api.py
-@@ -43,98 +43,6 @@ class c_magick_char_p(ctypes.c_char_p):
-         """
-         library.MagickRelinquishMemory(self)
- 
--
--def library_paths():
--    """Iterates for library paths to try loading.  The result paths are not
--    guaranteed that they exist.
--
--    :returns: a pair of libwand and libmagick paths.  they can be the same.
--              path can be ``None`` as well
--    :rtype: :class:`tuple`
--
--    """
--    libwand = None
--    libmagick = None
--    versions = '', '-6', '-Q16', '-Q8', '-6.Q16'
--    options = '', 'HDRI', 'HDRI-2'
--    system = platform.system()
--    magick_home = os.environ.get('MAGICK_HOME')
--
--    if system == 'Windows':
--        # ImageMagick installers normally install coder and filter DLLs in
--        # subfolders, we need to add those folders to PATH, otherwise loading
--        # the DLL later will fail.
--        try:
--            with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,
--                                r"SOFTWARE\ImageMagick\Current") as reg_key:
--                libPath = winreg.QueryValueEx(reg_key, "LibPath")
--                coderPath = winreg.QueryValueEx(reg_key, "CoderModulesPath")
--                filterPath = winreg.QueryValueEx(reg_key, "FilterModulesPath")
--                magick_home = libPath[0]
--                os.environ['PATH'] += (';' + libPath[0] + ";" +
--                                       coderPath[0] + ";" + filterPath[0])
--        except OSError:
--            # otherwise use MAGICK_HOME, and we assume the coder and
--            # filter DLLs are in the same directory
--            pass
--
--    def magick_path(path):
--        return os.path.join(magick_home, *path)
--    combinations = itertools.product(versions, options)
--    for suffix in (version + option for version, option in combinations):
--        # On Windows, the API is split between two libs. On other platforms,
--        # it's all contained in one.
--        if magick_home:
--            if system == 'Windows':
--                libwand = 'CORE_RL_wand_{0}.dll'.format(suffix),
--                libmagick = 'CORE_RL_magick_{0}.dll'.format(suffix),
--                yield magick_path(libwand), magick_path(libmagick)
--                libwand = 'libMagickWand{0}.dll'.format(suffix),
--                libmagick = 'libMagickCore{0}.dll'.format(suffix),
--                yield magick_path(libwand), magick_path(libmagick)
--            elif system == 'Darwin':
--                libwand = 'lib', 'libMagickWand{0}.dylib'.format(suffix),
--                yield magick_path(libwand), magick_path(libwand)
--            else:
--                libwand = 'lib', 'libMagickWand{0}.so'.format(suffix),
--                yield magick_path(libwand), magick_path(libwand)
--        if system == 'Windows':
--            libwand = ctypes.util.find_library('CORE_RL_wand_' + suffix)
--            libmagick = ctypes.util.find_library('CORE_RL_magick_' + suffix)
--            yield libwand, libmagick
--            libwand = ctypes.util.find_library('libMagickWand' + suffix)
--            libmagick = ctypes.util.find_library('libMagickCore' + suffix)
--            yield libwand, libmagick
--        else:
--            libwand = ctypes.util.find_library('MagickWand' + suffix)
--            yield libwand, libwand
--
--
--def load_library():
--    """Loads the MagickWand library.
--
--    :returns: the MagickWand library and the ImageMagick library
--    :rtype: :class:`ctypes.CDLL`
--
--    """
--    tried_paths = []
--    for libwand_path, libmagick_path in library_paths():
--        if libwand_path is None or libmagick_path is None:
--            continue
--        try:
--            tried_paths.append(libwand_path)
--            libwand = ctypes.CDLL(libwand_path)
--            if libwand_path == libmagick_path:
--                libmagick = libwand
--            else:
--                tried_paths.append(libmagick_path)
--                libmagick = ctypes.CDLL(libmagick_path)
--        except (IOError, OSError):
--            continue
--        return libwand, libmagick
--    raise IOError('cannot find library; tried paths: ' + repr(tried_paths))
--
--
- if not hasattr(ctypes, 'c_ssize_t'):
-     if ctypes.sizeof(ctypes.c_uint) == ctypes.sizeof(ctypes.c_void_p):
-         ctypes.c_ssize_t = ctypes.c_int
-@@ -176,43 +84,14 @@ class AffineMatrix(ctypes.Structure):
- # Preserve the module itself even if it fails to import
- sys.modules['wand._api'] = sys.modules['wand.api']
- 
--try:
--    libraries = load_library()
--except (OSError, IOError):
--    msg = 'http://docs.wand-py.org/en/latest/guide/install.html'
--    if sys.platform.startswith(('dragonfly', 'freebsd')):
--        msg = 'pkg install'
--    elif sys.platform == 'win32':
--        msg += '#install-imagemagick-on-windows'
--    elif sys.platform == 'darwin':
--        mac_pkgmgrs = {'brew': 'brew install freetype imagemagick',
--                       'port': 'port install imagemagick'}
--        for pkgmgr in mac_pkgmgrs:
--            with os.popen('which ' + pkgmgr) as f:
--                if f.read().strip():
--                    msg = mac_pkgmgrs[pkgmgr]
--                    break
--        else:
--            msg += '#install-imagemagick-on-mac'
--    else:
--        distname, _, __ = platform.linux_distribution()
--        distname = (distname or '').lower()
--        if distname in ('debian', 'ubuntu'):
--            msg = 'apt-get install libmagickwand-dev'
--        elif distname in ('fedora', 'centos', 'redhat'):
--            msg = 'yum install ImageMagick-devel'
--    raise ImportError('MagickWand shared library not found.\n'
--                      'You probably had not installed ImageMagick library.\n'
--                      'Try to install:\n  ' + msg)
--
- #: (:class:`ctypes.CDLL`) The MagickWand library.
--library = libraries[0]
-+library = ctypes.CDLL("@magick_wand_library@")
- 
- #: (:class:`ctypes.CDLL`) The ImageMagick library.  It is the same with
- #: :data:`library` on platforms other than Windows.
- #:
- #: .. versionadded:: 0.1.10
--libmagick = libraries[1]
-+libmagick = ctypes.CDLL("@imagemagick_library@")
- 
- try:
-     library.MagickWandGenesis.argtypes = []