RobotLocomotion / libbot

Deprecated git mirror of the svn repository formerly located at https://code.google.com/p/libbot. Please use the upstream https://github.com/libbot2/libbot2 or new fork https://github.com/RobotLocomotion/libbot2 instead.
GNU Lesser General Public License v3.0
22 stars 30 forks source link

bot-vis does not build with new OS X systems that use XQuartz #3

Closed kuindersma closed 9 years ago

kuindersma commented 9 years ago

...because header file gdk/gdkx.h no longer exists. I think this will be a problem for anyone doing a clean install with a new Mac.

https://support.apple.com/en-us/HT201341

RussTedrake commented 9 years ago

thanks for the heads up.

fwiw - the drake viewer build of the director is working well for me these days.

On Jul 5, 2015, at 5:07 PM, Scott Kuindersma notifications@github.com wrote:

...because header file gdk/gdkx.h no longer exists. I think this will be a problem for anyone doing a clean install with a new Mac.

https://support.apple.com/en-us/HT201341

— Reply to this email directly or view it on GitHub.

kuindersma commented 9 years ago

Unfortunately, I think there's a cascading effect from bot-vis to bot-lcmgl to the director.

hpropp commented 9 years ago

I also have this problem.

RussTedrake commented 9 years ago

from lab, I thought I understood that the problem was that the new XQuartz didn't ship the required x11 libraries. But I just confirmed that I am using the newest version (2.7.7) on my mac without problems.

perhaps those libraries were initially supplied by apple, not xquartz?

to be fair, i guess we've been getting deprecated warnings on mac for some time now:

[ 91%] Building CXX object systems/plants/viewer/CMakeFiles/drake_urdf_renderer.dir/drake_urdf_renderer.cpp.o
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:35:5: warning: 'glutSolidSphere' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    glutSolidSphere(radius,36,36);
    ^
/System/Library/Frameworks/GLUT.framework/Headers/glut.h:571:22: note: 'glutSolidSphere' has been explicitly marked deprecated here
extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks) OPENGL_DEPRECATED(10_0, 10_9);
                     ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:59:5: warning: 'GLUquadricObj' is deprecated: first deprecated in OS X 10.9
      [-Wdeprecated-declarations]
    GLUquadricObj* quadric = gluNewQuadric();
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:224:26: note: 'GLUquadricObj' has been explicitly marked deprecated here
typedef class GLUquadric GLUquadricObj OPENGL_DEPRECATED(10_0, 10_9);
                         ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:59:30: warning: 'gluNewQuadric' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    GLUquadricObj* quadric = gluNewQuadric();
                             ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:267:20: note: 'gluNewQuadric' has been explicitly marked deprecated here
extern GLUquadric* gluNewQuadric (void) OPENGL_DEPRECATED(10_0, 10_9);
                   ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:60:5: warning: 'gluQuadricDrawStyle' is deprecated: first deprecated in OS
      X 10.9 [-Wdeprecated-declarations]
    gluQuadricDrawStyle(quadric, GLU_FILL);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:283:13: note: 'gluQuadricDrawStyle' has been explicitly marked deprecated here
extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:61:5: warning: 'gluQuadricNormals' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    gluQuadricNormals(quadric, GLU_SMOOTH);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:284:13: note: 'gluQuadricNormals' has been explicitly marked deprecated here
extern void gluQuadricNormals (GLUquadric* quad, GLenum normal) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:62:5: warning: 'gluQuadricOrientation' is deprecated: first deprecated in
      OS X 10.9 [-Wdeprecated-declarations]
    gluQuadricOrientation(quadric, GLU_OUTSIDE);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:285:13: note: 'gluQuadricOrientation' has been explicitly marked deprecated here
extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:68:5: warning: 'gluDisk' is deprecated: first deprecated in OS X 10.9
      [-Wdeprecated-declarations]
    gluDisk(quadric, 0.0, radius, 24, 1);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:255:13: note: 'gluDisk' has been explicitly marked deprecated here
extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:71:5: warning: 'gluCylinder' is deprecated: first deprecated in OS X 10.9
      [-Wdeprecated-declarations]
    gluCylinder(quadric,
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:251:13: note: 'gluCylinder' has been explicitly marked deprecated here
extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:80:5: warning: 'gluDisk' is deprecated: first deprecated in OS X 10.9
      [-Wdeprecated-declarations]
    gluDisk(quadric, 0.0, radius, 24, 1);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:255:13: note: 'gluDisk' has been explicitly marked deprecated here
extern void gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:82:5: warning: 'gluDeleteQuadric' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    gluDeleteQuadric(quadric);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:253:13: note: 'gluDeleteQuadric' has been explicitly marked deprecated here
extern void gluDeleteQuadric (GLUquadric* quad) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:141:5: warning: 'glutSolidSphere' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    glutSolidSphere(radius,36,36);
    ^
/System/Library/Frameworks/GLUT.framework/Headers/glut.h:571:22: note: 'glutSolidSphere' has been explicitly marked deprecated here
extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks) OPENGL_DEPRECATED(10_0, 10_9);
                     ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:143:5: warning: 'GLUquadricObj' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    GLUquadricObj* quadric = gluNewQuadric();
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:224:26: note: 'GLUquadricObj' has been explicitly marked deprecated here
typedef class GLUquadric GLUquadricObj OPENGL_DEPRECATED(10_0, 10_9);
                         ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:143:30: warning: 'gluNewQuadric' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    GLUquadricObj* quadric = gluNewQuadric();
                             ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:267:20: note: 'gluNewQuadric' has been explicitly marked deprecated here
extern GLUquadric* gluNewQuadric (void) OPENGL_DEPRECATED(10_0, 10_9);
                   ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:144:5: warning: 'gluQuadricDrawStyle' is deprecated: first deprecated in OS
      X 10.9 [-Wdeprecated-declarations]
    gluQuadricDrawStyle(quadric, GLU_FILL);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:283:13: note: 'gluQuadricDrawStyle' has been explicitly marked deprecated here
extern void gluQuadricDrawStyle (GLUquadric* quad, GLenum draw) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:145:5: warning: 'gluQuadricNormals' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    gluQuadricNormals(quadric, GLU_SMOOTH);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:284:13: note: 'gluQuadricNormals' has been explicitly marked deprecated here
extern void gluQuadricNormals (GLUquadric* quad, GLenum normal) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:146:5: warning: 'gluQuadricOrientation' is deprecated: first deprecated in
      OS X 10.9 [-Wdeprecated-declarations]
    gluQuadricOrientation(quadric, GLU_OUTSIDE);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:285:13: note: 'gluQuadricOrientation' has been explicitly marked deprecated here
extern void gluQuadricOrientation (GLUquadric* quad, GLenum orientation) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:147:5: warning: 'gluCylinder' is deprecated: first deprecated in OS X 10.9
      [-Wdeprecated-declarations]
    gluCylinder(quadric,
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:251:13: note: 'gluCylinder' has been explicitly marked deprecated here
extern void gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:153:5: warning: 'gluDeleteQuadric' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    gluDeleteQuadric(quadric);
    ^
/System/Library/Frameworks/OpenGL.framework/Headers/glu.h:253:13: note: 'gluDeleteQuadric' has been explicitly marked deprecated here
extern void gluDeleteQuadric (GLUquadric* quad) OPENGL_DEPRECATED(10_0, 10_9);
            ^
/Users/russt/drake-distro/drake/systems/plants/viewer/drake_urdf_renderer.cpp:155:5: warning: 'glutSolidSphere' is deprecated: first deprecated in OS X
      10.9 [-Wdeprecated-declarations]
    glutSolidSphere(radius,36,36);
    ^
/System/Library/Frameworks/GLUT.framework/Headers/glut.h:571:22: note: 'glutSolidSphere' has been explicitly marked deprecated here
extern void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks) OPENGL_DEPRECATED(10_0, 10_9);
kuindersma commented 9 years ago

Yes, that's possible. OS X stopped shipping with X11 installed this year (the link with that announcement above is dated February).

patmarion commented 9 years ago

Actually, it appears the problem may be due to how homebrew supplies gitk+. According to this page, they have dropped support for X11 in their gtk+ package, see 2nd comment on this homebrew issue:

https://github.com/Homebrew/homebrew/issues/40951

For more information about GDK see: https://en.wikipedia.org/wiki/GDK GDK is the gnome drawing kit, it provides an abstraction on top of the platform specific drawing libraries, x11, quartz, MS windows. However, it seems the bot2-vis library uses some of gdk's x11 specific API in the gl_drawing_area.c file which handles some details of the OpenGL canvas of the bot viewer. Beyond that, bot2-vis uses a fair amount of X11 api as well.

patmarion commented 9 years ago

fyi, seems that this is where the homebrew discussion went down:

https://github.com/Homebrew/homebrew/pull/39868

peteflorence commented 9 years ago

@psiorx, @diitsgp, and I got this running on Aditya's computer by installing an older version of gtk:

$ wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.25.tar.xz
$ tar -xvf gtk+-2.24.25.tar.xz
$ cd gtk+-2.24.25
$ ./configure
$ sudo make install

Seems like anybody who used brew install gtk before a couple months ago should be fine, but anybody using brew install gtk now will not have gtk with X11 support

The install_prereqs.sh file for homebrew should be updated to include the above steps instead of using brew install

Also on the topic of drake installs for osx, this closed issue https://github.com/RobotLocomotion/drake/issues/53 was still stopping snopt from compiling. We couldn't get around this by doing the fixes described both in https://github.com/RobotLocomotion/drake/issues/53 and https://github.com/RobotLocomotion/cmake/issues/12

John ended up getting around this by commenting out the mex lines in CMakeLists.txt in drake-distro/snopt

peteflorence commented 9 years ago

Update: at runtime (for example, during running examples/Quadrotor/runDircol), MATLAB was not able to call snopt

Went back into CMakeLists.txt and uncommented the mex lines, and then recompiled just drake/snopt, which for some reason was able to compile now

We are now crashing out of MATLAB when trying to run examples now...

peteflorence commented 9 years ago

Had to add the prefer IPv4 line in java.opts, as referenced back here: https://github.com/RobotLocomotion/drake/issues/558

We will make a pull request to fix this

RussTedrake commented 9 years ago

Thanks pete.

Re:snopt The newest cmake branch has turned that error into a warning. Which snopt and cmake sha's were you using.

On Jul 16, 2015, at 5:59 PM, Pete Florence notifications@github.com wrote:

@psiorx, @diitsgp, and I got this running on Aditya's computer by installing an older version of gtk:

$ wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.25.tar.xz $ tar -xvf gtk+-2.24.25.tar.xz $ cd gtk+-2.24.25 $ ./configure $ sudo make install Seems like anybody who used brew install gtk before a couple months ago should be fine, but anybody using brew install gtk now will not have gtk with X11 support

The install_prereqs.sh file for homebrew should be updated to include the above steps instead of using brew install

Also on the topic of drake installs for osx, this closed issue RobotLocomotion/drake#53 was still stopping snopt from compiling. We couldn't get around this by doing the fixes described both in RobotLocomotion/drake#53 and RobotLocomotion/cmake#12

John ended up getting around this by commenting out the line that calls mex

— Reply to this email directly or view it on GitHub.

kuindersma commented 9 years ago

Confirmed, this worked for me. Thanks!

DiitsGp commented 9 years ago

Snopt makefile sha: 16fdbe8e221b755483a6325f63f5f35087e9f8cf Cmake sha: 945e213ab3b53a86d5f6e93ce43ee8e88539daa4

-Aditya

On Thu, Jul 16, 2015 at 9:25 PM, Scott Kuindersma notifications@github.com wrote:

Confirmed, this worked for me. Thanks!

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-122143511 .

RussTedrake commented 9 years ago

i don't see those in the git history..? https://github.com/RobotLocomotion/snopt/commits/master

On Jul 16, 2015, at 9:39 PM, DiitsGp notifications@github.com wrote:

Snopt makefile sha: 16fdbe8e221b755483a6325f63f5f35087e9f8cf Cmake sha: 945e213ab3b53a86d5f6e93ce43ee8e88539daa4

-Aditya

On Thu, Jul 16, 2015 at 9:25 PM, Scott Kuindersma notifications@github.com wrote:

Confirmed, this worked for me. Thanks!

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-122143511 .

— Reply to this email directly or view it on GitHub.

DiitsGp commented 9 years ago

Whoops: Snopt: d7abb603690f41970273643ebb6e173b0e6e452b cmake: 77d1aba4f2994e20e8270ab6a2d092cc50c32f6e (this is the cmake inside the snopt directory)

tkoolen commented 9 years ago

Ran into this after installing some new packages in homebrew, which updated gtk+.

I got around it based on http://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula.

I noticed that /usr/local/Cellar/gtk+ still contained the old version along with the new one, and just used brew switch gtk+ 2.24.24. This allowed me to compile again. I then used brew pin gtk+ to make sure that gtk+ would not be upgrade when I do brew update, brew upgrade in the future.

I think this is much cleaner than compiling from source and going around homebrew sudo installing stuff.

If you no longer have the old version in your Cellar, see the link above for further instructions.

tkoolen commented 9 years ago

Addendum: you'll also have to switch cairo and pango to an older version that works with the old gtk+, and pin those as well. If you don't do that, director won't work.

peteflorence commented 9 years ago

Which cairo and pango did you revert to?

My director is crashing, but I don't think it's related to gtk+. In my Cellar/gtk+ I only have 2.24.25.

On Wed, Jul 22, 2015 at 1:00 PM, Twan Koolen notifications@github.com wrote:

Addendum: you'll also have to switch cairo and pango to an older version that works with the old gtk+, and pin those as well. If you don't do that, director won't work.

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-123792179 .

patmarion commented 9 years ago

When you say "won't work", do you mean some library loading errors at runtime? Or a compile time issue? The director code doesn't directly use gtk+ or cairo or pango, but it links with libbot's lcmgl library which probably pulls all that stuff in.

patmarion commented 9 years ago

hey @peteflorence more details on crash please. segfault? python runtime exception? does it happen immediately at startup, or not until lcm drawing? only triggered by lcm gl?

peteflorence commented 9 years ago

Pat, for me I'm getting the error at runtime when attempting to launch from MATLAB as posted here: https://github.com/RobotLocomotion/drake/issues/1196

drake_viewer still works though, so no big rush to fix

On Wed, Jul 22, 2015 at 1:08 PM, Pat Marion notifications@github.com wrote:

hey @peteflorence https://github.com/peteflorence more details on crash please. segfault? python runtime exception? does it happen immediately at startup, or not until lcm drawing? only triggered by lcm gl?

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-123794276 .

tkoolen commented 9 years ago

For reference, I'm using:

rdeits commented 9 years ago

After recently updating some homebrew packages, I can build drake_viewer but can't launch it (it fails with a missing x11-related symbol in cairo), and I can't build director at all. Following @tkoolen's version numbers, I did the following:

cd /usr/local
brew uninstall --force gtk+
brew uninstall --force cairo
brew uninstall --force pango
git checkout fc945eb01b6473824c2d9cf07af95c73e6335132 Library/Formula/cairo.rb
git checkout e8a4de3960191c5726084416a3b78c5fcd5a3b05 Library/Formula/pango.rb
git checkout dcf03535626a9fd5d19ba6d363a95c15e2671551 Library/Formula/gtk+.rb
brew install gtk+ cairo pango
brew pin gtk+ cairo pango

And that seemed to work.

rdeits commented 9 years ago

(I also had to do a completely clean build of drake and director to pick up the correct configuration of gtk)

RussTedrake commented 9 years ago

awesome. i need what you’re selling (can’t currently compile drake_viewer or director on this mac). but I’m getting

drake008% git checkout fc945eb01b6473824c2d9cf07af95c73e6335132 Library/Formula/cairo.rb fatal: reference is not a tree: fc945eb01b6473824c2d9cf07af95c73e6335132 drake008% git checkout e8a4de3960191c5726084416a3b78c5fcd5a3b05 Library/Formula/pango.rb fatal: reference is not a tree: e8a4de3960191c5726084416a3b78c5fcd5a3b05 drake008% git checkout dcf03535626a9fd5d19ba6d363a95c15e2671551 Library/Formula/gtk+.rb fatal: reference is not a tree: dcf03535626a9fd5d19ba6d363a95c15e2671551

how did you find those shas?

On Aug 7, 2015, at 2:47 PM, Robin Deits notifications@github.com wrote:

After recently updating some homebrew packages, I can build drake_viewer but can't launch it (it fails with a missing x11-related symbol in cairo), and I can't build director at all. Following @tkoolen https://github.com/tkoolen's version numbers, I did the following:

cd /usr/local brew uninstall --force gtk+ brew uninstall --force cairo brew uninstall --force pango git checkout fc945eb01b6473824c2d9cf07af95c73e6335132 Library/Formula/cairo.rb git checkout e8a4de3960191c5726084416a3b78c5fcd5a3b05 Library/Formula/pango.rb git checkout dcf03535626a9fd5d19ba6d363a95c15e2671551 Library/Formula/gtk+.rb brew install gtk+ cairo pango brew pin gtk+ cairo pango And that seemed to work.

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-128793359.

rdeits commented 9 years ago

Hm, I just did

git log -S'1.12.16_1' Library/Formula/cairo.rb

and likewise for the other versions. I also did

brew tap homebrew/boneyard
brew update

before that. I didn't think that did anything useful, but perhaps it was relevant.

rdeits commented 9 years ago

You might also want to check if you've got a shallow clone in /usr/local. I've got a git history in that folder going back to 2009.

patmarion commented 9 years ago

Just to be clear: director does not depend on any gtk packages or any old homebrew formula, except when it is built with libbot support in order to get lcm-gl. Using an alternate configuration, it is possible to compile lcm-gl without bot-vis, and therefore build director + lcm-gl without any libbot/gtk/x11 dependencies. This configuration is not currently supported by drake's build options but could be added if there is interest. When lcm-gl is compiled without bot-vis it loses its ability to display text (but this could be ported over)

rdeits commented 9 years ago

Seems like that's probably something we'd want. I can't imagine that having my gtk, cairo, and pango versions pinned is going to work forever.

RussTedrake commented 9 years ago

Agreed. I'd not only add that to the drake options, but make it the default.

On Aug 7, 2015, at 4:59 PM, Pat Marion notifications@github.com wrote:

Just to be clear: director does not depend on any gtk packages or any old homebrew formula, except when it is built with libbot support in order to get lcm-gl. Using an alternate configuration, it is possible to compile lcm-gl without bot-vis, and therefore build director + lcm-gl without any libbot/gtk/x11 dependencies. This configuration is not currently supported by drake's build options but could be added if there is interest. When lcm-gl is compiled without bot-vis it loses its ability to display text (but this could be ported over)

— Reply to this email directly or view it on GitHub.

RussTedrake commented 9 years ago

hoorah. after fetching a little more git history, Robin's solution worked great for me. I stopped short of doing the pin (in the hopes that this is not the long term solution). My final solution:

cd /usr/local
git fetch --depth=100000
brew uninstall --force gtk+
brew uninstall --force cairo
brew uninstall --force pango
git checkout fc945eb01b6473824c2d9cf07af95c73e6335132 Library/Formula/cairo.rb
git checkout e8a4de3960191c5726084416a3b78c5fcd5a3b05 Library/Formula/pango.rb
git checkout dcf03535626a9fd5d19ba6d363a95c15e2671551 Library/Formula/gtk+.rb
brew install gtk+ cairo pango

Thanks all!

RussTedrake commented 9 years ago

fwiw, i could not run procman with the set of versions above. this set got me running director and procman (but it appears not drake_viewer). a little more work might get all three:

cd /usr/local
git fetch --depth=100000
brew uninstall --force gtk+ cairo pango pygtk
git checkout 8dd3478131b232553f4c0cab197f8443a0a559a6 Library/Formula/cairo.rb
git checkout e8a4de3960191c5726084416a3b78c5fcd5a3b05 Library/Formula/pango.rb
git checkout dcf03535626a9fd5d19ba6d363a95c15e2671551 Library/Formula/gtk+.rb
git checkout 8dd3478131b232553f4c0cab197f8443a0a559a6 Library/Formula/pygtk.rb
brew install gtk+ cairo pango pygtk
tarquasso commented 9 years ago

after a fresh clone of drake-distro, I had the same issue, so I followed comment from August 24th and did, now I have the following error

$ brew install gtk+
==> Downloading http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.24.tar.xz
Already downloaded: /Library/Caches/Homebrew/gtk+-2.24.24.tar.xz
==> ./configure --disable-silent-rules --prefix=/usr/local/Cellar/gtk+/2.24.24 --disable-glibtest --enable-introspection=yes --disable-visibility
==> make install
Last 15 lines from /Users/rkk/Library/Logs/Homebrew/gtk+/02.make:
              gdk_pixdata_from_pixbuf (&idata->pixdata, pixbuf, FALSE);
                                                        ^
updateiconcache.c:824:3: error: use of undeclared identifier 'GdkPixdata'
  GdkPixdata *pixdata = &image_data->pixdata;
  ^
updateiconcache.c:824:15: error: use of undeclared identifier 'pixdata'
  GdkPixdata *pixdata = &image_data->pixdata;
              ^
updateiconcache.c:830:30: error: use of undeclared identifier 'pixdata'
  s = gdk_pixdata_serialize (pixdata, &len);
                             ^
11 errors generated.
make[2]: *** [updateiconcache.o] Error 1
make[1]: *** [gtkbuiltincache.h] Error 2
make: *** [install-recursive] Error 1

READ THIS: https://git.io/brew-troubleshooting

These open issues may also help:
cogl, clutter and clutter-gtk: version bumps https://github.com/Homebrew/homebrew/pull/44029
Gtk+3 fails to compile on 10.6.8 https://github.com/Homebrew/homebrew/issues/40438
GTK+ searches for modules in the wrong path https://github.com/Homebrew/homebrew/issues/21412

Basically, I can not get gtk+ installed anymore. Anyone can help?

RussTedrake commented 9 years ago

I feel that libbot is dying, and that we need to stop relying on it. If you disable libbot from your build you will not loose very much. Better is to disable most of libbot as described in https://github.com/RobotLocomotion/drake/issues/1261 .

tarquasso commented 9 years ago

Messing around with gtk+ within homebrew caused a bunch of issues, I took me while to get gtk+ to compile again. The fix was to $ cd $(brew --prefix) $ git status to then find out that there were modifications to cairo, pango and gtk+. I then stashed and dropped the stash to be back on the homebrew master.

In the process of doing this, I ended up with the current: gtk+ version 2.24.28_2 I don't have gtk+ 2.24.24 in my hidstory and therefore can not usebrew switch`. Any hints on what to do to get that version (according to: http://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula) and then make gtk+, pango and cairo all compile again?

Otherwise, staying with the current version of gtk+ and letting libbot die, we are back to the original problem: bot2-vis does not compile because of gdk/gdkx.h missing:

-- bot2-vis
-------------------------------------------
[  2%] Building C object src/bot_vis/CMakeFiles/bot2-vis.dir/gl_drawing_area.c.o
/Users/rkk/Documents/MATLAB/drake-distro/externals/libbot/bot2-vis/src/bot_vis/gl_drawing_area.c:7:10: fatal error: 
      'gdk/gdkx.h' file not found
#include <gdk/gdkx.h>
         ^
1 error generated.
make[8]: *** [src/bot_vis/CMakeFiles/bot2-vis.dir/gl_drawing_area.c.o] Error 1
make[7]: *** [src/bot_vis/CMakeFiles/bot2-vis.dir/all] Error 2
make[6]: *** [all] Error 2
make[5]: *** [all] Error 2
make[4]: *** [all] Error 2
make[3]: *** [libbot-prefix/src/libbot-stamp/libbot-build] Error 2
make[2]: *** [CMakeFiles/libbot.dir/all] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2

Which option shall I now take to get the make in drake-distro to work? a) Disable libbot: I read earlier to edit drake-distro/tobuild.txtand comment out the line calling libbot. according to https://github.com/RobotLocomotion/drake/issues/1151 but drake-distro/tobuild.txt does not exist anymore, so where to change this instead?

b) or run from drake-distro folder this: cmake -DUSE_BOT_VIS=OFF externals/libbot/bot2-lcmgl/pod-build make? Haven't tried this yet...

c) go into make options and deactivate libbot? I just tried this and then another set of build errors occur, see https://github.com/RobotLocomotion/drake/issues/1386 probably also not the way to go.

patmarion commented 9 years ago

Hi Robert, the quickest way to continue is to disable visualization. Use make options to disable libbot and director.

There is a pending pull request that will introduce an easy build mode to compile only part of libbot, and all of the director. If you want to do this build configuration manually, the steps are:

make options to disable libbot cd externals/libbot/bot2-lcmgl/pod-build cmake -DUSE_BOT_VIS=OFF . make

Now you can build drake with director (you won't get the error you listed in https://github.com/RobotLocomotion/drake/issues/1386)

tarquasso commented 9 years ago

Hello Pat,

thanks for the email. When do you think will that pull request go through?

This folder does not exist: cd externals/libbot/bot2-lcmgl/pod-build

I only have: externals/libbot/bot2-lcmgl

there is a cmake file in externals/libbot/bot2-lcmgl

What shall I do?

Robert

— Robert Katzschmann Research Assistant and PhD Candidate Distributed Robotics Laboratory Advisor Prof. Daniela Rus CSAIL, MIT rkk@csail.mit.edu

On Sep 30, 2015, at 16:00, Pat Marion notifications@github.com wrote:

Hi Robert, the quickest way to continue is to disable visualization. Use make options to disable libbot and director.

There is a pending pull request that will introduce an easy build mode to compile only part of libbot, and all of the director. If you want to do this build configuration manually, the steps are:

make options to disable libbot cd externals/libbot/bot2-lcmgl/pod-build cmake -DUSE_BOT_VIS=OFF . make

Now you can build drake with director (you won't get the error you listed in RobotLocomotion/drake#1386 https://github.com/RobotLocomotion/drake/issues/1386)

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-144416358.

patmarion commented 9 years ago

Oh ok. cd to externals/libbot/bot2-lcmgl and run make there. It will create pod-build, but fail to compile. Then you can run the rest of the steps.

Maybe the pull request will go through later today or tomorrow, it's mostly working it but we're still discussing a few details.

tarquasso commented 9 years ago

Hello Pat,

I followed your recommended steps, then ran

make options to disable libbot cd externals/libbot/bot2-lcmgl make cd pod-build cmake -DUSE_BOT_VIS=OFF . make cd ../../../.. (back to drake-distro) make

this is the output (same problem persists):

[ 78%] Performing configure step for 'ddapp' loading initial cache file /Users/rkk/Documents/MATLAB/drake-distro/externals/director/distro/pods/drake-distro/pod-build/tmp/ddapp-cache-Release.cmake -- checking for module 'bot2-lcmgl-client' -- package 'bot2-lcmgl-client' not found CMake Error at cmake/dd-macros.cmake:36 (message): required package bot2-lcmgl-client not found. PKG_CONFIG_PATH=/Users/rkk/Documents/MATLAB/drake-distro/build/lib/pkgconfig::/opt/X11/lib/pkgconfig Call Stack (most recent call first): src/vtk/DRCFilters/CMakeLists.txt:140 (use_pkg)

-- checking for module 'bot2-lcmgl-renderer' -- package 'bot2-lcmgl-renderer' not found CMake Error at cmake/dd-macros.cmake:36 (message): required package bot2-lcmgl-renderer not found. PKG_CONFIG_PATH=/Users/rkk/Documents/MATLAB/drake-distro/build/lib/pkgconfig::/opt/X11/lib/pkgconfig Call Stack (most recent call first): src/vtk/DRCFilters/CMakeLists.txt:140 (use_pkg)

CMake Warning (dev) at /usr/local/opt/vtk5/lib/vtk-5.10/CMake/vtkWrapPython.cmake:147 (CONFIGURE_FILE): configure_file called with unknown argument(s):

COPY_ONLY

Call Stack (most recent call first): cmake/wrap-python.cmake:12 (vtk_wrap_python3) src/vtk/DRCFilters/CMakeLists.txt:151 (wrap_python) This warning is for project developers. Use -Wno-dev to suppress it.

-- sphinx-build not found - python API documentation will not be built. -- Configuring incomplete, errors occurred! See also "/Users/rkk/Documents/MATLAB/drake-distro/externals/director/distro/pods/drake-distro/pod-build/src/ddapp-build/CMakeFiles/CMakeOutput.log". See also "/Users/rkk/Documents/MATLAB/drake-distro/externals/director/distro/pods/drake-distro/pod-build/src/ddapp-build/CMakeFiles/CMakeError.log". make[7]: * [src/ddapp-stamp/ddapp-configure] Error 1 make[6]: * [CMakeFiles/ddapp.dir/all] Error 2 make[5]: * [all] Error 2 make[4]: * [all] Error 2 make[3]: * [director-prefix/src/director-stamp/director-build] Error 2 make[2]: * [CMakeFiles/director.dir/all] Error 2 make[1]: * [all] Error 2 make: * [all] Error 2

What to do?

Robert

On Sep 30, 2015, at 16:09, Pat Marion notifications@github.com wrote:

Oh ok. cd to externals/libbot/bot2-lcmgl and run make there. It will create pod-build, but fail to compile. Then you can run the rest of the steps.

Maybe the pull request will go through later today or tomorrow, it's mostly working it but we're still discussing a few details.

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-144420741.

patmarion commented 9 years ago

Haha, sorry I think the instruction was off just a little. You can make in pod-build but that didn't cause the result to be installed.

cd externals/libbot/bot2-lcmgl/pod-build make install

or this does the same thing now:

externals/libbot/bot2-lcmgl make

Now you can confirm that drake/build/lib/libbot2-lcmgl-renderer.dylib exists and everything should build. now.

tarquasso commented 9 years ago

so I did this:

make options # to disable libbot
cd externals/libbot/bot2-lcmgl
make
cd pod-build
cmake -DUSE_BOT_VIS=OFF .
make install
cd ../../../..  #(to get back to drake-distro)
make

now drake-distro compiled (obviously without bot vis)

It outputted some warnings at the end of make that seem worth fixing:

Unrecognized MATLAB option "wait".

                                               < M A T L A B (R) >
                                     Copyright 1984-2014 The MathWorks, Inc.
                                      R2014b (8.4.0.150421) 64-bit (maci64)
                                                September 15, 2014

Warning: Name is nonexistent or not a directory: /Users/rkk/Documents/MATLAB/drake-distro/snopt/matlab 
Warning: Name is nonexistent or not a directory:
/Users/rkk/Documents/MATLAB/drake-distro/gurobi/gurobi602/mac64/matlab 
Warning: Name is nonexistent or not a directory: /Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless/util 
Warning: Name is nonexistent or not a directory:
/Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless/spotopt/util 
Warning: Name is nonexistent or not a directory:
/Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless/spotopt/solvers 
Warning: Name is nonexistent or not a directory: /Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless/spotopt 
Warning: Name is nonexistent or not a directory: /Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless/mss 
Warning: Name is nonexistent or not a directory: /Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless/mex 
Warning: Name is nonexistent or not a directory: /Users/rkk/Documents/MATLAB/drake-distro/spotless/spotless 

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

Warning: The P-code file strsplit.p was generated prior to MATLAB version 7.5 (R2007b) and will not be supported in a
future release.  Use <a href="matlab:doc pcode">pcode</a> to regenerate strsplit.p using MATLAB R2007b or later. 
Inputs must be character arrays.
Warning: MATLAB did not appear to successfully set the search path. To recover for this session of MATLAB, type
"restoredefaultpath;matlabrc". To find out how to avoid this warning the next time you start MATLAB, type "docsearch
problem path" after recovering for this session. 
Warning: Duplicate directory name: /Applications/MATLAB_R2014b.app/toolbox/local 
Adding /Users/rkk/Documents/MATLAB/drake-distro/build/matlab to the matlab path

 Installing SPOT in /Users/rkk/Documents/MATLAB/drake-distro/externals/spotless/spotless:
 updating the path...
 compiling the binaries...Building with 'Xcode with Clang’.

I assume I can use drake now… will run a test make later

On Sep 30, 2015, at 16:24, Pat Marion notifications@github.com wrote:

Haha, sorry I think the instruction was off just a little. You can make in pod-build but that didn't cause the result to be installed.

cd externals/libbot/bot2-lcmgl/pod-build make install

or this does the same thing now:

externals/libbot/bot2-lcmgl make

Now you can confirm that drake/build/lib/libbot2-lcmgl-renderer.dylib exists and everything should build. now.

— Reply to this email directly or view it on GitHub.

RussTedrake commented 9 years ago

yikes. if this is breaking default source installation of drake on linux then we need to resolve it asap.

On Sep 30, 2015, at 4:09 PM, Pat Marion notifications@github.com wrote:

Oh ok. cd to externals/libbot/bot2-lcmgl and run make there. It will create pod-build, but fail to compile. Then you can run the rest of the steps.

Maybe the pull request will go through later today or tomorrow, it's mostly working it but we're still discussing a few details.

— Reply to this email directly or view it on GitHub https://github.com/RobotLocomotion/libbot/issues/3#issuecomment-144420741.

jimka2001 commented 8 years ago

There is a comment at https://github.com/RobotLocomotion/director/issues/41#issuecomment-128896469 which links to here. I seem to be having a similar problem.

  Error opening shared object "/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib":
  dlopen(/usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib, 10): Symbol not found: _cairo_xlib_surface_create
  Referenced from: /usr/local/Cellar/gtk+/2.24.24/lib/libgdk-x11-2.0.0.dylib
  Expected in: /usr/local/lib/libcairo.dylib

As far as I can tell cairo and gtk+ are up to date on my system.

I'd be happy if someone could give me a hint as to how to proceed. Thanks.