[GRASS-dev] python2/3 and GRASS build on Arch

Maciej Sieczka msieczka at sieczka.org
Tue Oct 7 13:57:43 PDT 2014


W dniu 05.10.2014 o 15:44, Maciej Sieczka pisze:
> W dniu 04.01.2013 o 00:13, Glynn Clements pisze:
>> Maciej Sieczka wrote:
>
>>>> The python interpreter is accessed via the make variable PYTHON, so
>>>> you can use e.g.:
>>>>
>>>> make PYTHON=python2
>
>>> Still one error crops out - ctypesgen.py has "#!/usr/bin/env python"
>>> shebang, which calls Python 3.x on Arch, therefore:
>>>
>>> Changing that shebang to python2 let the build complete OK. Do you know
>>> if there is a workaround which does not involve modyfying the source
>>> though?
>
>> Create a directory containing a symlink from "python" to the python2
>> executable, than add that directory to the front of the PATH.
>
> I have successfully aplied this approach (symlink `python2' in the root
> of releasebranch_7_0 working copy as `python', add that dir to the front
> of the PATH, export PATH, run `make') until recently I started getting
> the following error during build:
>
> $ pwd
> /home/pok/aur/grass70-svn/src/grass70-svn/gui/wxpython/iclass
>
> $ make
> make

Please ignore that make log. An excerpt with issues from the proper make 
log is as follows:

---
make[5]: Entering directory 
'/home/pok/aur/grass70-svn/src/grass70-svn/gui/wxpython/iclass'
/usr/bin/install -c  g.gui.iclass.py 
/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/scripts/g.gui.iclass
/usr/bin/install -c  -m 644 iclass_frame.jpg 
/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/docs/html/iclass_frame.jpg
make 
/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/docs/html/g.gui.iclass.html
make[6]: Entering directory 
'/home/pok/aur/grass70-svn/src/grass70-svn/gui/wxpython/iclass'
GISRC=/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/demolocation/.grassrc70 
GISBASE=/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu 
PATH="/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/bin:/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/bin:/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/scripts:$PATH" 
PYTHONPATH="/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/etc/python:/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/gui/wxpython:$PYTHONPATH" 
LD_LIBRARY_PATH="/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/bin:/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/scripts:/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/lib:/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/lib:" 
LC_ALL=C 
/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/scripts/g.gui.iclass 
--html-description < /dev/null | grep -v '</body>\|</html>' > 
g.gui.iclass.tmp.html
Traceback (most recent call last):
   File 
"/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/scripts/g.gui.iclass", 
line 62, in <module>
     from iclass.frame import IClassMapFrame
   File 
"/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/gui/wxpython/iclass/frame.py", 
line 61, in <module>
     from iclass.plots       import PlotPanel
   File 
"/home/pok/aur/grass70-svn/src/grass70-svn/dist.x86_64-unknown-linux-gnu/gui/wxpython/iclass/plots.py", 
line 19, in <module>
     import wx.lib.plot as plot
   File "/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/lib/plot.py", 
line 126, in <module>
     raise ImportError, "NumPy not found.\n" + msg
ImportError: NumPy not found.

     This module requires the NumPy module, which could not be
     imported.  It probably is not installed (it's not part of the
     standard Python distribution). See the Numeric Python site
     (http://numpy.scipy.org) for information on downloading source or
     binaries.
../../../include/Make/GuiScript.make:36: recipe for target 
'g.gui.iclass.tmp.html' failed
make[6]: *** [g.gui.iclass.tmp.html] Error 1
rm g.gui.iclass.tmp.html
make[6]: Leaving directory 
'/home/pok/aur/grass70-svn/src/grass70-svn/gui/wxpython/iclass'
../../../include/Make/GuiScript.make:22: recipe for target 'guiscript' 
failed
make[5]: *** [guiscript] Error 2
make[5]: Leaving directory 
'/home/pok/aur/grass70-svn/src/grass70-svn/gui/wxpython/iclass'
---

The configure was:

     --with-cxx \
     --with-cairo \
     --with-freetype \
     --with-freetype-includes=/usr/include/freetype2 \
     --with-geos \
     --with-liblas \
     --with-nls \
     --with-netcdf \
     --with-odbc \
     --with-openmp \
     --with-postgres \
     --with-python=/usr/bin/python2-config \
     --with-readline \
     --with-proj-includes=/usr/include \
     --with-proj-libs=/usr/lib \
     --with-proj-share=/usr/share/proj \
     --with-pthread \
     --with-sqlite \
     --with-wxwidgets=/usr/bin/wx-config-2.8

Per 2.8 wxWidgets specified, I don't get it why 
/usr/lib/python2.7/site-packages/wx-3.0-gtk2/ gets involved in iclass 
build. I would rather expect it to pick 
/usr/lib/python2.7/site-packages/wx-2.8-gtk2-unicode/. Some details:

---
$ /usr/bin/wx-config-2.8 --libs
-pthread -Wl,-O1,--sort-common,--as-needed,-z,relro 
-lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 
-lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 
-lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8

$ /usr/bin/wx-config-2.8 --list

     Default config is gtk2-unicode-release-2.8

   Default config will be used for output

   Also available in /usr:
     gtk2-unicode-3.0
---

What do you make of this? Like I said, all the other Python bits seem to 
build fine. Only iclass doesn't. I'm attaching a complete build log if 
you want to look inside.

This is an Arch box. I do have all the NumPy stuff installed. There is a 
problem on Arch that wx-3.0-gtk2/wx/lib/plot.py fails to import 
numpy.oldnumeric [1] leading to those "NumPy not found" errors, but that 
would not happen if iclass build referred to 
wx-2.8-gtk2-unicode/wx/lib/plot.py instead - like I guess all the other 
GRASS 7 Python modules do.

Any helpfull thoughts or questions are most welcome.

[1] 
https://bugs.archlinux.org/task/42054?string=wxpython&project=1&type%5B0%5D=&sev%5B0%5D=&pri%5B0%5D=&due%5B0%5D=&reported%5B0%5D=&cat%5B0%5D=&status%5B0%5D=open&percent%5B0%5D=&opened=&dev=&closed=&duedatefrom=&duedateto=&changedfrom=&changedto=&openedfrom=&openedto=&closedfrom=&closedto=

Maciek

-- 
Maciej Sieczka
http://www.sieczka.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: grass70-svn-62209-1-x86_64-build.log.tar.bz2
Type: application/x-bzip
Size: 112774 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20141007/69b71359/attachment-0001.bin>


More information about the grass-dev mailing list