Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 572792 - Circular dependencies involving setuptools
Summary: Circular dependencies involving setuptools
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Python Gentoo Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-01-24 18:49 UTC by Martin von Gagern
Modified: 2016-01-27 04:18 UTC (History)
3 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 Martin von Gagern 2016-01-24 18:49:32 UTC
After enabling python_targets_python3_5" I'm encountering upgrade problems:

 * Error: circular dependencies:

(dev-python/setuptools-19.2:0/0::gentoo, ebuild scheduled for merge) depends on
 (dev-python/packaging-16.0:0/0::gentoo, ebuild scheduled for merge) (buildtime)
  (dev-python/pyparsing-2.0.7:0/0::gentoo, ebuild scheduled for merge) (buildtime)
   (dev-python/setuptools-19.2:0/0::gentoo, ebuild scheduled for merge) (buildtime)

Also:

 * Error: circular dependencies:

(dev-python/setuptools-19.4:0/0::gentoo, ebuild scheduled for merge) depends on
 (dev-python/six-1.10.0:0/0::gentoo, ebuild scheduled for merge) (buildtime)
  (dev-python/setuptools-19.4:0/0::gentoo, ebuild scheduled for merge) (buildtime)

These are particularly annoying circular dependencies, since they are not conditional to any USE flag.

pyparsing-2.0.3 does not have the dependency on setuptools, so I managed to solve the first issue for now using “emerge --nodeps -1 =pyparsing-2.0.3” first. (The “--nodeps” was neccessary because I was, at the same time, disabling support for python3_3 so downgrading that single package would leave a lot of unsatisfied dependencies in packages still installed with python_targets_python3_3. I later decided to separate issues and do the 3.5 install before dropping 3.3, even if that meant re-building many packages. So it might not really be needed.) For the second, setuptools-19.2 doesn't depend on six, so temporarily downgrading that did help.

But these kinds of temporary downgrades feel pretty weird, and shouldn't become the default for Python version upgrades. So I'm filing this bug, hoping you can think of some way to break these cycles.
Comment 1 Justin Lecher (RETIRED) gentoo-dev 2016-01-26 14:36:41 UTC
Thanks for reporting, I will look into that.
Comment 2 Justin Lecher (RETIRED) gentoo-dev 2016-01-26 16:38:56 UTC
commit 6a85df91d15b2a094ac027741e9fa5be271d6c36
Author: Justin Lecher <jlec@gentoo.org>
Date:   Tue Jan 26 17:29:41 2016 +0100

    dev-python/packaging: Break circular dep on pyparsing

    Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=572792

    Package-Manager: portage-2.2.27
    Signed-off-by: Justin Lecher <jlec@gentoo.org>

    https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6a85df91d15b2a094ac027741e9fa5be271d6c36
Comment 3 Mike Gilbert gentoo-dev 2016-01-26 17:25:53 UTC
There's still the circular DEPEND between setuptools and six.
Comment 4 Justin Lecher (RETIRED) gentoo-dev 2016-01-26 19:10:04 UTC
commit a15786aa5f40452b1270fa04d4ffdbc8e034b29c
Author: Justin Lecher <jlec@gentoo.org>
Date:   Tue Jan 26 19:48:10 2016 +0100

    dev-python/six: Drop forced dependency on setuptools

    Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=572792

    Package-Manager: portage-2.2.27
    Signed-off-by: Justin Lecher <jlec@gentoo.org>

    https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a15786aa5f40452b1270fa04d4ffdbc8e034b29c
Comment 5 Mike Gilbert gentoo-dev 2016-01-26 19:15:27 UTC
Now there's an automagic dep on setuptools, which will cause egg-info file/directory conflicts.
Comment 6 Mike Gilbert gentoo-dev 2016-01-26 20:10:45 UTC
I can look into fixing this later.

commit 34a1ddd2aebdbd949c5caf22d7350a84b8267971
Author: Mike Gilbert <floppym@gentoo.org>
Date:   Tue Jan 26 15:07:48 2016 -0500

    Revert "dev-python/six: Drop forced dependency on setuptools"

    This reverts commit a15786aa5f40452b1270fa04d4ffdbc8e034b29c.

    This change is bound to cause egg-info file/directory conflicts.

    Also, upstream requires setuptools unconditionally as of 2016-01-20.

    https://bitbucket.org/gutworth/six/commits/1c793cff

    Bug: https://bugs.gentoo.org/572792
Comment 7 Martin von Gagern 2016-01-26 20:51:58 UTC
Just an idea: can you provide a temporary install of six, not byte-compiled or anything, to make the setuptools build suceed? Then you can have a proper six package as a runtime dependency of setuptools, but don't need it at build time.
Comment 8 Mike Gilbert gentoo-dev 2016-01-26 21:40:29 UTC
(In reply to Martin von Gagern from comment #7)

I have two alternate ideas in mind:

1. Ignore upstream and force six to use distutils in setup.py.

2. Somehow utilize the bundled copy of six that setuptools ships with.

#1 is probably the easier solution for now.
Comment 9 Mike Gilbert gentoo-dev 2016-01-27 04:18:25 UTC
commit f520d401bb03a3186ec057ff2cd188077e656899
Author: Mike Gilbert <floppym@gentoo.org>
Date:   Tue Jan 26 23:16:18 2016 -0500

    dev-python/six: Force usage of distutils over setuptools
    
    Avoids circular dependency.
    
    Bug: https://bugs.gentoo.org/572792
    
    Package-Manager: portage-2.2.27_p49

 dev-python/six/files/1.10.0-no-setuptools.patch | 22 ++++++++++++++++++++++
 dev-python/six/six-1.10.0.ebuild                |  6 +++---
 dev-python/six/six-1.9.0-r1.ebuild              |  6 +++---
 3 files changed, 28 insertions(+), 6 deletions(-)