Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 519408 - dev-python/pylint[doc]: building docs requires pylint to be installed first
Summary: dev-python/pylint[doc]: building docs requires pylint to be installed first
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: All Linux
: Normal minor (vote)
Assignee: Alex Brandt (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-08-08 14:50 UTC by Andrey Grozin
Modified: 2015-08-03 00:58 UTC (History)
1 user (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 Andrey Grozin gentoo-dev 2014-08-08 14:50:05 UTC
>>> Preparing source in /var/tmp/portage/dev-python/pylint-1.3.0/work/pylint-1.3.0 ...
make -j4 -C doc singlehtml 
make: Entering directory '/var/tmp/portage/dev-python/pylint-1.3.0/work/pylint-1.3.0/doc'
sphinx-build -b singlehtml -d _build/doctrees   . _build/singlehtml
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.2/sphinx-build", line 9, in <module>
    load_entry_point('Sphinx==1.2.2', 'console_scripts', 'sphinx-build')()
  File "/usr/lib/python3.2/site-packages/sphinx/__init__.py", line 49, in main
    from sphinx import cmdline
  File "/usr/lib/python3.2/site-packages/sphinx/cmdline.py", line 22, in <module>
    from sphinx.application import Sphinx
  File "/usr/lib/python3.2/site-packages/sphinx/application.py", line 22, in <module>
    from docutils.parsers.rst import convert_directive_function, \
  File "/usr/lib/python3.2/site-packages/docutils/parsers/rst/__init__.py", line 75, in <module>
    from docutils.parsers.rst import states
  File "/usr/lib/python3.2/site-packages/docutils/parsers/rst/states.py", line 116, in <module>
    from docutils.parsers.rst import directives, languages, tableparser, roles
  File "/usr/lib/python3.2/site-packages/docutils/parsers/rst/roles.py", line 78, in <module>
    from docutils.utils.code_analyzer import Lexer, LexerError
  File "/usr/lib/python3.2/site-packages/docutils/utils/code_analyzer.py", line 12, in <module>
    import pygments
  File "/usr/lib/python3.2/site-packages/pygments/__init__.py", line 37, in <module>
    from pygments.util import StringIO, BytesIO
  File "/usr/lib/python3.2/site-packages/pygments/util.py", line 224
    return u'[%s-%s]' % (unichr(a), unichr(b))
                    ^
SyntaxError: invalid syntax
Makefile:51: recipe for target 'singlehtml' failed
make: *** [singlehtml] Error 1
make: Leaving directory '/var/tmp/portage/dev-python/pylint-1.3.0/work/pylint-1.3.0/doc'
 * ERROR: dev-python/pylint-1.3.0::gentoo failed (prepare phase):
 *   emake failed

elrond ~ # eix dev-python/sphinx
[I] dev-python/sphinx
     Available versions:  1.1.3-r7 (~)1.2.1 (~)1.2.2 {doc latex test PYTHON_TARGETS="pypy python2_7 python3_2 python3_3 python3_4"}
     Installed versions:  1.2.2(21:25:49 08.08.2014)(doc latex -test PYTHON_TARGETS="python2_7 python3_2 -pypy -python3_3 -python3_4")
     Homepage:            http://sphinx.pocoo.org/ http://pypi.python.org/pypi/Sphinx
     Description:         Python documentation generator


python-3.2 is eselected

elrond ~ # emerge --info dev-python/pylint
Portage 2.2.11-r1 (python 3.2.5-final-0, default/linux/x86/13.0/desktop/kde, gcc-4.8.3, glibc-2.19-r1, 3.12.6-gentoo i686)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.12.6-gentoo-i686-Pentium-R-_Dual-Core_CPU_E5300_@_2.60GHz-with-gentoo-2.2
KiB Mem:     2062036 total,    423452 free
KiB Swap:    2088412 total,   2070908 free
Timestamp of tree: Fri, 08 Aug 2014 08:15:01 +0000
ld GNU ld (GNU Binutils) 2.24
app-shells/bash:          4.2_p47
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.8, 3.2.5-r6, 3.3.5, 3.4.1
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r2
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.9.6-r3, 1.10.3, 1.11.6, 1.12.6, 1.13.4, 1.14.1
sys-devel/binutils:       2.24-r3
sys-devel/gcc:            4.7.3-r1, 4.8.3
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2-r1
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.16 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo science lisp sunrise grozin
ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE="*"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/polkit-1/actions /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.4/ext-active/ /etc/php/apache2-php5.5/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cli-php5.4/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=native -pipe"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -march=i686 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms sign strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync"
FFLAGS="-O2 -march=native -pipe"
GENTOO_MIRRORS="ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo"
LANG="ru_RU.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j4"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/science /var/lib/layman/lisp /var/lib/layman/sunrise /usr/local/portage"
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="X a52 aac acpi alsa bash-completion berkdb blas bluetooth boehm-gc branding browserplugin bzip2 cairo cdda cdr consolekit cracklib crypt css cups curl cxx dbus declarative dirac doc dri dvd dvdnav dvdr emacs enca encode exif fam ffmpeg fftw firefox flac fltk fortran gd gdbm gif gmp gpm gsl gtk iconv imagemagick jpeg kde kipi kpathsea lapack latex lcms ldap leim libnotify lzma mad mmx mng modules mozilla mp3 mp4 mpeg mule ncurses nls nptl nsplugin offensive ogg opengl openmp pam pango pcre pdf phonon plasma plotutils png policykit ppds python qt3support qt4 readline schroedinger sdl semantic-desktop session speex spell sse sse2 ssl startup-notification svg tcl tcpd theora tiff tk truetype udev udisks umfpack unicode upower usb v4l2 vcd vorbis win32codecs wxwidgets x264 x86 xcb xcomposite xinerama xml xscreensaver xv xvid zlib" ABI_X86="32" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="ru" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby20 ruby21" USERLAND="GNU" VIDEO_CARDS="intel" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

=================================================================
                        Package Settings
=================================================================

dev-python/pylint-1.2.1 was built with the following:
USE="doc -examples -test" PYTHON_TARGETS="python2_7 -pypy -python3_3 -python3_4"
Comment 1 Ian Delaney (RETIRED) gentoo-dev 2014-08-09 11:54:22 UTC
dev-python/pylint $ USE=doc ebuild pylint-1.3.0.ebuild install

~/cvsPortage/gentoo-x86/dev-python/pylint $ ls /mnt/gen2/TmpDir/portage/dev-python/pylint-1.3.0/work/pylint-1.3.0/doc/_build/
doctrees  singlehtml

 * python2_7: running distutils-r1_run_phase python_install_all
>>> Completed installing pylint-1.3.0 into /mnt/gen2/TmpDir/portage/dev-python/pylint-1.3.0/image/

~/cvsPortage/gentoo-x86/dev-python/pylint $ ls /mnt/gen2/TmpDir/portage/dev-python/pylint-1.3.0/image/usr/share/doc/pylint-1.3.0/html/
_images  index.html  _static
Comment 2 Andrey Grozin gentoo-dev 2014-08-12 04:23:06 UTC
This problem has been solved by re-emerging pygments, sorry for the noise. But after re-emerging pygments and sphinx I'm having another problem:

make -j1 -C doc singlehtml 
make: Entering directory '/var/tmp/portage/dev-python/pylint-1.3.0/work/pylint-1.3.0/doc'
sphinx-build -b singlehtml -d _build/doctrees   . _build/singlehtml
Making output directory...
Running Sphinx v1.2.2

Exception occurred:
  File "conf.py", line 51, in <module>
    from pylint.__pkginfo__ import version
ImportError: No module named pylint.__pkginfo__
The full traceback has been saved in /var/tmp/portage/dev-python/pylint-1.3.0/temp/sphinx-err-_zupu1.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!
Makefile:51: recipe for target 'singlehtml' failed
make: *** [singlehtml] Error 1
make: Leaving directory '/var/tmp/portage/dev-python/pylint-1.3.0/work/pylint-1.3.0/doc'
 * ERROR: dev-python/pylint-1.3.0::gentoo failed (prepare phase):

/var/tmp/portage/dev-python/pylint-1.3.0/temp/sphinx-err-_zupu1.log:
--------------------------------------------------------------------
# Sphinx version: 1.2.2
# Python version: 3.2.5
# Docutils version: 0.12 release
# Jinja2 version: 2.6
# Loaded extensions:
Traceback (most recent call last):
  File "/usr/lib/python3.2/site-packages/sphinx/cmdline.py", line 253, in main
    warningiserror, tags, verbosity, parallel)
  File "/usr/lib/python3.2/site-packages/sphinx/application.py", line 107, in __init__
    confoverrides or {}, self.tags)
  File "/usr/lib/python3.2/site-packages/sphinx/config.py", line 229, in __init__
    execfile_(filename, config)
  File "/usr/lib/python3.2/site-packages/sphinx/util/pycompat.py", line 105, in execfile_
    exec(code, _globals)
  File "conf.py", line 51, in <module>
    from pylint.__pkginfo__ import version
ImportError: No module named pylint.__pkginfo__
--------------------------------------------------------------------
Comment 3 Ian Delaney (RETIRED) gentoo-dev 2014-11-29 03:23:51 UTC
~/cvsPortage/gentoo-x86/dev-python/pylint $ USE=doc ebuild pylint-1.3.0.ebuild clean install

yields

 * python2_7: running distutils-r1_run_phase python_install_all
>>> Completed installing pylint-1.3.0 into /mnt/gen2/TmpDir/portage/dev-python/pylint-1.3.0/image/

ecompressdir: bzip2 -9 /usr/share/doc
ecompressdir: bzip2 -9 /usr/share/man

~/cvsPortage/gentoo-x86/dev-python/pylint $ python -c "from pylint.__pkginfo__ import version"
~/cvsPortage/gentoo-x86/dev-python/pylint $ python3.3 -c "from pylint.__pkginfo__ import version"
~/cvsPortage/gentoo-x86/dev-python/pylint $ python3.4 -c "from pylint.__pkginfo__ import version"

all return blank == success

This problem has been solved by re-emerging pygments,

You might try re-emerging pylint
Comment 4 Alex Brandt (RETIRED) gentoo-dev 2015-05-01 01:18:54 UTC
I'm seeing this issue even after a fresh install of pygments.  Looks like the same error as reported by Andrey.

This looks like it is due to pylint not being installed when trying to install pylint with documentation.  Can we find a way to build the pylint egg and put it in the path before building the documentation?
Comment 5 Ian Delaney (RETIRED) gentoo-dev 2015-05-02 12:03:01 UTC
Possibly but is it the desired solution. In other ebuilds, a msg is simply put to user informing that the package need be installed to build the docs.  It's the path of least resistance, a compromise
Comment 6 Alex Brandt (RETIRED) gentoo-dev 2015-05-02 14:56:04 UTC
I'd vote that just printing a message is unacceptable because it adds more load to the user to accomplish what portage should be doing for them (installing package with docs).

I'd also think that pylint might do with a patch to make this requirement moot but haven't looked at it to see how feasible that would be.

Regardless, we seem to (in the occasional corner case) require an install of a python package that isn't live for various reasons and we should probably solve this generically.
Comment 7 Ian Delaney (RETIRED) gentoo-dev 2015-05-02 23:51:20 UTC
(In reply to Alex Brandt from comment #6)
> I'd vote that just printing a message is unacceptable because it adds more
> load to the user to accomplish what portage should be doing for them
> (installing package with docs).
> 

yes this is a 'reasonable' assessment with which I agree. It's merely a form or resolution that has precedent however it doesn't make it a 'good' one.

> I'd also think that pylint might do with a patch to make this requirement
> moot but haven't looked at it to see how feasible that would be.
> 
> Regardless, we seem to (in the occasional corner case) require an install of
> a python package that isn't live for various reasons and we should probably
> solve this generically.

Agreed. feel free to proceed.
Comment 8 Alex Brandt (RETIRED) gentoo-dev 2015-05-06 15:15:05 UTC
(In reply to Ian Delaney from comment #7)
> yes this is a 'reasonable' assessment with which I agree. It's merely a form
> or resolution that has precedent however it doesn't make it a 'good' one.

Just to clarify, you're saying my proposal is agreeable but bad?

> Agreed. feel free to proceed.

If only I had the time.  I was simply adding rhetoric to the already smoking ember.
Comment 9 Mike Gilbert gentoo-dev 2015-05-06 20:30:00 UTC
(In reply to Alex Brandt from comment #8)
> (In reply to Ian Delaney from comment #7)
> > yes this is a 'reasonable' assessment with which I agree. It's merely a form
> > or resolution that has precedent however it doesn't make it a 'good' one.
> 
> Just to clarify, you're saying my proposal is agreeable but bad?

I read it as saying that the existing ewarn message "solution" is not a good one. It's just what we have been doing thus far to work around the problem.

Ian: Do you have some examples of ebuilds which output such a message? I would like to take a look.
Comment 10 Ian Delaney (RETIRED) gentoo-dev 2015-05-10 11:55:42 UTC
(In reply to Mike Gilbert from comment #9)

> 
> Ian: Do you have some examples of ebuilds which output such a message? I
> would like to take a look.

So you can dissect them, put them under scrutiny and declare them as improper ebuild writing?

I might be guilty of drawing too long a bow here.  I cannot remember this for a doc build but certainly for tests. i.e. emerge package to run testsuite. logilab-common did this I think, or the reverse I am not sure. My memory tells me that

1. months ago on looking at the first disaster of a tarball for a bump of ipython, it required the package to be installed for a doc build.  While the next version of a tarball for that bumped version did that 'properly', and hence took away the need for a generic fix, Arfrever mentioned he knew how to do it, or at least that it could be done.
2. I recall there was a package where the (stupid) testsuite wouldn't run until it was installed.  While trying to find a way to avoid installing the package to run tests, I couldn't. I recall Arfrever advising to just settle on elog  msg to user to "if you want to run the testsuite, emerge the package then re-emerge with FEATURES=test". Since no-one clearly had an alternate proper fix and everyone was determined for second best, who am I to argue?
3. No I DO NOT remember what the package was. It was at least 6 months ago and I'll tell you when I have a photographic memory. I might also be remembering incorrectly if only ever so slightly.
4. IUSE test and doc are rather similar; global use flags often used and pertinent in pythonic packages. For all the packages I have done I haven't yet learned a 'proper fix' for install package first run USE=test or doc second, proving it a corner case and fundamentally bad or wrong authorship by maintainers. I have just gleaned that it almost certainly can be done.
distutils_install_for_testing was written as an attempt to fix this blunder for testsuites, mainly for logilab-common itself I think, but on last I saw or heard it is close to unusable for a number of distinct reasons.

(In reply to Alex Brandt from comment #8)
> Just to clarify, you're saying my proposal is agreeable but bad?
> 

When I was commenting as a form or resolution that has precedent, it was
"a msg is simply put to user informing that the package need be installed", 
"It's the path of least resistance, a compromise". Assessing this as bad is taking it to another level. Your proposal "that pylint might do with a patch to make this requirement moot" is hardly what I would call bad. What I want to know is how you managed to seemingly assign the assessment of one onto the other. To put a msg via elog is light weight and nothing more than a workaround.  To fix it is the better path, but sigh

"If only I had the time."
Comment 11 Alex Brandt (RETIRED) gentoo-dev 2015-08-02 18:18:00 UTC
I dug into this and found that it actually was missing the PYTHONPATH for doc building.  I have a working version in my overlay that I'll commit soon that resolves this.
Comment 12 Alex Brandt (RETIRED) gentoo-dev 2015-08-03 00:58:07 UTC
Committed fix to tree.  Added PYTHONPATH="${S}" to documentation build.