Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 488270 - dev-python/python-magic conflicts with sys-apps/file[python]
Summary: dev-python/python-magic conflicts with sys-apps/file[python]
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Ian Whyman (thev00d00) (RETIRED)
URL: https://github.com/ahupp/python-magic...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-16 18:51 UTC by Stanislav Ochotnicky (RETIRED)
Modified: 2014-02-21 19:41 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stanislav Ochotnicky (RETIRED) gentoo-dev 2013-10-16 18:51:26 UTC
Both dev-python/python-magic and sys-apps/file with python flag enabled install python "magic" module. Each has different API unfortunately and they cause collisions on site-packages/magic.py path.

python-magic should likely conflict with sys-apps/file[python]. Ccing base-system so that they are aware of the issue as well.
Comment 1 Ian Whyman (thev00d00) (RETIRED) gentoo-dev 2013-10-16 19:34:26 UTC
Thanks will be fixed in -r1 which will hit the tree shortly.
Comment 2 Jeroen Roovers (RETIRED) gentoo-dev 2014-02-14 23:55:04 UTC
*python-magic-0.4.6-r1 (16 Oct 2013)
  16 Oct 2013; Ian Whyman <thev00d00@gentoo.org> +python-magic-0.4.6-r1.ebuild,
  -python-magic-0.4.3.ebuild, -python-magic-0.4.6.ebuild:
  Block python use on sys-apps/file #488270

Are you sure you want to DEPEND on sys-apps/file here? How does python-magic need sys-apps/file?
Comment 3 Samuli Suominen (RETIRED) gentoo-dev 2014-02-15 06:54:48 UTC
(In reply to Jeroen Roovers from comment #2)
> *python-magic-0.4.6-r1 (16 Oct 2013)
>   16 Oct 2013; Ian Whyman <thev00d00@gentoo.org>
> +python-magic-0.4.6-r1.ebuild,
>   -python-magic-0.4.3.ebuild, -python-magic-0.4.6.ebuild:
>   Block python use on sys-apps/file #488270
> 
> Are you sure you want to DEPEND on sys-apps/file here? How does python-magic
> need sys-apps/file?

libmagic is installed by sys-apps/file and magic.py from python-magic uses it. in fact, that's the whole purpose of this python module :-)

<snip>
libmagic = None
# Let's try to find magic or magic1
dll = ctypes.util.find_library('magic') or ctypes.util.find_library('magic1')

# This is necessary because find_library returns None if it doesn't find the library
if dll:
    libmagic = ctypes.CDLL(dll)

if not libmagic or not libmagic._name:
    import sys
    platform_to_lib = {'darwin': ['/opt/local/lib/libmagic.dylib',
                                  '/usr/local/lib/libmagic.dylib'] +
                       # Assumes there will only be one version installed
                       glob.glob('/usr/local/Cellar/libmagic/*/lib/libmagic.dylib'),
                       'win32':  ['magic1.dll']}
    for dll in platform_to_lib.get(sys.platform, []):
        try:
            libmagic = ctypes.CDLL(dll)
            break
        except OSError:
            pass

if not libmagic or not libmagic._name:
    # It is better to raise an ImportError since we are importing magic module
    raise ImportError('failed to find libmagic.  Check your installation')
</snip>

reclosing
Comment 4 Jason A. Donenfeld gentoo-dev 2014-02-21 17:23:58 UTC
This causes big problems with binwalk being installed at the same time...
Comment 5 Samuli Suominen (RETIRED) gentoo-dev 2014-02-21 18:37:49 UTC
(In reply to Jason A. Donenfeld from comment #4)
> This causes big problems with binwalk being installed at the same time...

https://github.com/ahupp/python-magic/issues/33
https://github.com/globocom/thumbor/issues/188
https://github.com/ahupp/python-magic/issues/57
Comment 6 Samuli Suominen (RETIRED) gentoo-dev 2014-02-21 19:01:38 UTC
Problem is that while dev-python/eyeD3-0.7.4 compiles without dev-python/python-magic, these files disappear:

<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/log.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/console.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/cli.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/binfuncs.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/log.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/log.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/console.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/console.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/cli.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/cli.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/binfuncs.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/binfuncs.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/__init__.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__/__init__.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/utils/__init__.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/xep_118.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/statistics.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/nfo.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/mp3.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/lameinfo.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/itunes.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/fixup.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/examples.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/classic.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/_amazon.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/xep_118.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/xep_118.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/statistics.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/statistics.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/nfo.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/nfo.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/mp3.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/mp3.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/lameinfo.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/lameinfo.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/itunes.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/itunes.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/fixup.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/fixup.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/examples.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/examples.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/classic.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/classic.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/__init__.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__/__init__.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/plugins/__init__.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/mp3/headers.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/mp3/__pycache__/headers.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/mp3/__pycache__/headers.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/mp3/__pycache__/__init__.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/mp3/__pycache__/__init__.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/mp3/__init__.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/main.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/info.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/tag.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/headers.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/frames.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/apple.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/tag.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/tag.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/headers.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/headers.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/frames.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/frames.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/apple.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/apple.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/__init__.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__/__init__.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/id3/__init__.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/core.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/compat.py
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/main.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/main.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/info.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/info.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/core.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/core.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/compat.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/compat.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/__init__.cpython-33.pyo
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__pycache__/__init__.cpython-33.pyc
<<<          obj /usr/lib64/python3.3/site-packages/eyed3/__init__.py
<<<          obj /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info/top_level.txt
<<<          obj /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info/requires.txt
<<<          obj /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info/not-zip-safe
<<<          obj /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info/dependency_links.txt
<<<          obj /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info/SOURCES.txt
<<<          obj /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info/PKG-INFO
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/utils/__pycache__
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/utils
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/plugins/__pycache__
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/plugins
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/mp3/__pycache__
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/mp3
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/id3/__pycache__
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/id3
<<<          dir /usr/lib64/python3.3/site-packages/eyed3/__pycache__
<<<          dir /usr/lib64/python3.3/site-packages/eyed3
<<<          dir /usr/lib64/python3.3/site-packages/eyeD3-0.7.4-py3.3.egg-info

ChangeLog of eyeD3 says it's optional, well "Not a hard dependecy but pull python-magic in when we can."

So I compilained a bit at https://github.com/ahupp/python-magic/issues/57 :-)
Comment 7 Samuli Suominen (RETIRED) gentoo-dev 2014-02-21 19:03:21 UTC
Arg. Ignore my last comment entirely, I've mixed it completely with overlay version. Sorry for bugspam. :-(
Comment 8 Samuli Suominen (RETIRED) gentoo-dev 2014-02-21 19:05:14 UTC
I dropped python-magic from eyeD3, it's optional and non-fatal
Comment 9 Samuli Suominen (RETIRED) gentoo-dev 2014-02-21 19:06:35 UTC
If nothing else uses it in Portage, maybe this shouldn't be in Portage either before they rename the library?
Comment 10 Samuli Suominen (RETIRED) gentoo-dev 2014-02-21 19:13:21 UTC
(In reply to Samuli Suominen from comment #9)
> If nothing else uses it in Portage, maybe this shouldn't be in Portage
> either before they rename the library?

and to clarify, nothing does
Comment 11 Ian Whyman (thev00d00) (RETIRED) gentoo-dev 2014-02-21 19:41:46 UTC
I don't see any need to remove it.

Closing this again....