Some notes on building from CVS

Hi,

I just built matplotlib from CVS on debian/linux and mac os x,
and had to modify some things. I thought the information might
be useful to others, and that people on this list might advise me
if there were better fixes.

On debian, I had to make the following modification to setupext.py:

···

---
Index: setupext.py

RCS file: /cvsroot/matplotlib/matplotlib/setupext.py,v
retrieving revision 1.30
diff -c -r1.30 setupext.py
*** setupext.py 31 Mar 2004 14:29:35 -0000 1.30
--- setupext.py 13 Apr 2004 00:39:54 -0000
***************
*** 169,177 ****
       else:
         tk.withdraw()
         o.tcl_lib = os.path.join((tk.getvar('tcl_library')), '../')
- o.tcl_inc = os.path.join((tk.getvar('tcl_library')), '../../include')
         o.tk_lib = os.path.join((tk.getvar('tk_library')), '../')
         o.tkv = str(Tkinter.TkVersion)[:3]
       return o

--- 169,177 ----
       else:
         tk.withdraw()
         o.tcl_lib = os.path.join((tk.getvar('tcl_library')), '../')
         o.tk_lib = os.path.join((tk.getvar('tk_library')), '../')
         o.tkv = str(Tkinter.TkVersion)[:3]
+ o.tcl_inc = os.path.join((tk.getvar('tcl_library')), '../../include/tcl'+o.tkv)
       return o
---

I'm using a fairly mixed stable/testing/unstable version of debian, so
maybe that's the reason for my needing to make this change.

On mac os x, I was going to use fink for the dependencies, and so
I modified setupext.py as follows:

---
Index: setupext.py

RCS file: /cvsroot/matplotlib/matplotlib/setupext.py,v
retrieving revision 1.30
diff -c -r1.30 setupext.py
*** setupext.py 31 Mar 2004 14:29:35 -0000 1.30
--- setupext.py 13 Apr 2004 00:46:31 -0000
***************
*** 36,42 ****
       'win32' : 'win32_static',
       'linux2' : '/usr',
       'linux' : '/usr',
! 'darwin' : '/usr/local',
       'sunos5' : os.getenv('MPLIB_BASE') or '/usr/local'
   }

--- 36,43 ----
       'win32' : 'win32_static',
       'linux2' : '/usr',
       'linux' : '/usr',
! #'darwin' : '/usr/local',
! 'darwin' : '/sw',
       'sunos5' : os.getenv('MPLIB_BASE') or '/usr/local'
   }

***************
*** 92,99 ****
--- 93,105 ----
       inc = os.path.join(basedir[sys.platform], 'include')
       module.include_dirs.append(inc)
       module.include_dirs.append(os.path.join(inc, 'freetype2'))
+ if sys.platform == 'darwin':
+ module.include_dirs.append(os.path.join(basedir[sys.platform], 'lib/freetype2/include'))
+ module.include_dirs.append(os.path.join(basedir[sys.platform], 'lib/freetype2/include/freetype2'))

       module.library_dirs.append(os.path.join(basedir[sys.platform], 'lib'))
+ if sys.platform == 'darwin':
+ module.library_dirs.append(os.path.join(basedir[sys.platform], 'lib/freetype2/lib'))

       if sys.platform == 'win32':
           module.libraries.append('gw32c')
---

Do most of the users of matplotlib on os x not use fink? The stumper
for me is that I have been unable to build scipy/numpy for the python
that is bundled with os x - has anyone been successful with this?
(is this process documented anywhere?)

For both debian and os x, I found that I would get the following error:

---
   File "...../lib/python2.3/site-packages/matplotlib/backends/backend_wx.py", line 611, in get_wx_font
     self.fontweights[t.get_fontweight()], # Weight
KeyError
---

where t.get_fontweight() seems to be returning None. I "fixed" this by
adding

---
Index: backends/backend_gtk.py

RCS file: /cvsroot/matplotlib/matplotlib/matplotlib/backends/backend_gtk.py,v
retrieving revision 1.81
diff -c -r1.81 backend_gtk.py
*** backends/backend_gtk.py 12 Apr 2004 13:32:05 -0000 1.81
--- backends/backend_gtk.py 13 Apr 2004 01:08:20 -0000
***************
*** 89,94 ****
--- 89,95 ----
                      'normal' : pango.WEIGHT_NORMAL,
                      'ultrabold' : pango.WEIGHT_ULTRABOLD,
                      'ultralight' : pango.WEIGHT_ULTRALIGHT,
+ None : pango.WEIGHT_NORMAL
                      }
       fontangles = {
           'italic': pango.STYLE_ITALIC,
Index: backends/backend_wx.py

RCS file: /cvsroot/matplotlib/matplotlib/matplotlib/backends/backend_wx.py,v
retrieving revision 1.51
diff -c -r1.51 backend_wx.py
*** backends/backend_wx.py 5 Apr 2004 12:58:54 -0000 1.51
--- backends/backend_wx.py 13 Apr 2004 01:08:20 -0000
***************
*** 338,344 ****
                      'heavy' : wxBOLD,
                      'light' : wxLIGHT,
                      'ultrabold' : wxBOLD,
! 'ultralight' : wxLIGHT }

       fontangles = { 'italic' : wxITALIC,
                      'normal' : wxNORMAL,
--- 338,346 ----
                      'heavy' : wxBOLD,
                      'light' : wxLIGHT,
                      'ultrabold' : wxBOLD,
! 'ultralight' : wxLIGHT,
! None : wxNORMAL
! }

       fontangles = { 'italic' : wxITALIC,
                      'normal' : wxNORMAL,
---

but there is probably a better/cleaner way to solve this problem...

d

On mac os x, I was going to use fink for the dependencies, and so
I modified setupext.py as follows:

(snipped diff output)

Do most of the users of matplotlib on os x not use fink?

Because I often build extensions for others, I try to stay away from fink as much as possible in this step. Not because I don't like it, but because I'm reluctant to require yet another dependency. For someone without fink, it's probably easier to just install freetype than fink and freetype. Furthermore, I think it should be possible to compile matplotlib against the a static freetype library that gets installed directly with matplotlib, thus not relying on any external dependency.

I think I can share some of the credit/blame Mac OS X-specific build stuff, and I certainly didn't want to make fink a requirement.

For the fink-inclined, I think the best thing to do is to make fink-based matplotlib distribution which is built against the other fink stuff.

The stumper
for me is that I have been unable to build scipy/numpy for the python
that is bundled with os x - has anyone been successful with this?
(is this process documented anywhere?)

I have an old build that just worked from mid-2003, and I haven't had much success in the few times I've tried to update since then. Sorry, I can't be much help here. But why do you include numpy in your statement? There's no problem with this one. I think it's even included with the PackageManager stuff, and I'd be surprised if fink didn't include it, too.

PGP.sig (155 Bytes)

···

On Apr 12, 2004, at 6:33 PM, Daishi Harada wrote: