jcupitt / rtiacquire

Remote control of any DSLR camera
GNU Lesser General Public License v2.1
92 stars 21 forks source link

Updates to enable OSX compatibility #1

Closed pjb304 closed 10 years ago

pjb304 commented 10 years ago

Minor tweaks to enable the capture system to work on OSX. With thanks to Jon Hare.

jcupitt commented 10 years ago

Hey, that's great, thank you Phil. I'll read your patch and merge it.

jcupitt commented 10 years ago

I've made a few small changes to this pull and committed them.

https://github.com/jcupitt/rtiacquire/commit/83d843aeb3f5195c267d410466b5342b32520c0a

https://github.com/jcupitt/rtiacquire/commit/839199cc08d1ff47c6eea787cb30924f42182e5c

pjb304 commented 10 years ago

Ah yes, we forgot we hard coded that in. That was one of those lets hard code it for now and fix it later – we forgot the fix it later part. Ooops.

RE, the vips versioning the ./configure script explicitly requires 7.24, and I remember at the time you saying that something in 7.25 made it stop working. However, I can’t really remember any more details than that.

jcupitt commented 10 years ago

On the configure thing, do you mean the fast fitter I made? It should work with current vips, I'd think. I forget the details too.

pjb304 commented 10 years ago

I do indeed mean the fast fitter – the ./configure script explicitly requires 7.24 . I’ve never used autoconf stuff before, and my attempts at changing it so that it only requires VIPS have failed.

jcupitt commented 10 years ago

Sure, I'll fix it, should be easy (I hope). Where's the latest copy of the code?

pjb304 commented 10 years ago

Brilliant, thank you.

svn checkout svn+ssh://jrgc@svn.forge.ecs.soton.ac.uk/projects/rti/PTMfitter/ptmfit-2.3

Should get you the latest version of the fitter on steroids, without any of the other junk that’s in the repo ☺

jcupitt commented 10 years ago

I can't remember how to push to svn! Anyway, all you need to do is change vipsCC-7.24 to vipsCC and run bootstrap.sh. The script should rebuild the configure system for you.

pjb304 commented 10 years ago

It’s svn ci to do a commit.

I’ve made the change you suggested and it gets past the configuration stage however, it now fails on make:

make all-am make[1]: Entering directory /home/pjb/PTMfitter/ptmfit-2.3' g++ -g -O2 -o ptmfit computepoly.o LinearSystem.o main.o nrutil.o svd.o writeptm.o -pthread -fopenmp -I/usr/local/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/libpng12 -I/usr/include/libexif -I/usr/include/freetype2 -I/usr/include/ImageMagick -I/usr/include/OpenEXR -Wl,--export-dynamic -pthread -L/usr/local/lib -lvipsCC -lvips -ltiff -ljpeg -lstdc++ -lxml2 -lgmodule-2.0 -lrt -lfftw3 -lm -lMagickWand -llcms -lIlmImf -lz -lImath -lHalf -lIex -lIlmThread -lcfitsio -lpthread -lpangoft2-1.0 -lpng12 -lexif -lMagickCore -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 main.o: In functionmain': /home/pjb/PTMfitter/ptmfit-2.3/main.cpp:148: undefined reference to im_init_world' collect2: ld returned 1 exit status make[1]: *** [ptmfit] Error 1 make[1]: Leaving directory/home/pjb/PTMfitter/ptmfit-2.3' make: *\ [all] Error 2

I’ve installed all the dependencies of VIPS, and ImageMagick is installed too, any ideas?

jcupitt commented 10 years ago

Which vips is this? It's building OK here with git master and with 7.36.

pjb304 commented 10 years ago

I’m using 7.36.3 freshly downloaded from the server I’ve run the following to get all the possible dependencies (vips) sudo apt-get install build-essential libxml2-dev libfftw3-dev \ gettext libgtk2.0-dev python-dev liblcms1-dev liboil-dev \ libmagickwand-dev libopenexr-dev libcfitsio3-dev gobject-introspection flex bison (fitter)

sudo apt-get install ufraw csh build-essential libtiff-dev libxml2-dev libfftw3-dev \

gettext libgtk2.0-dev python-dev liblcms1-dev liboil-dev \

libmagickwand-dev libopenexr-dev libcfitsio3-dev subversion git \

autossh htop libgphoto2.2 libgphoto2.2-dev flex bison freeglut3 gphoto2

I’ve also tried it on 2 different machines in case the first one I tried had got corrupted libs some how. But it’s still failing ☹

jcupitt commented 10 years ago

I think you must have your headers mixed up. In 7.36 im_init_world() is no longer a function, it's a macro that does some ABI compatibility checking before calling vips__init(). You must be compiling against an old libvips but linking to a new one.

You can have many libvipses installed, but you need to be careful to keep them apart with env var settings. Try removing all but one of them and compiling again.

pjb304 commented 10 years ago

I agree that would cause issues, however, I’m 99 % sure that this machine never had a previous version of vips on it. I’ve just been through and deleted all vips folders in /usr/loca/include and reinstalled 7.36.3. but it’s still giving the same error.

From: John Cupitt [mailto:notifications@github.com] Sent: 15 November 2013 12:46 To: jcupitt/rtiacquire Cc: pjb304 Subject: {Disarmed} Re: [rtiacquire] Updates to enable OSX compatibility (#1)

I think you must have your headers mixed up. In 7.36 im_init_world() is no longer a function, it's a macro that does some ABI compatibility checking before calling vips__init(). You must be compiling against an old libvips but linking to a new one.

You can have many libvipses installed, but you need to be careful to keep them apart with env var settings. Try removing all but one of them and compiling again.

— Reply to this email directly or view it on GitHubhttps://github.com/jcupitt/rtiacquire/pull/1#issuecomment-28566446.

jcupitt commented 10 years ago

You were seeing a link error:

main.o: In function `main': /home/pjb/PTMfitter/ptmfit-2.3/main.cpp:148: undefined reference to `im_init_world'

ie. main.c is compiling a call to a function called "im_init_world". If you look at the 7.36 headers you'll see:

john@mm-jcupitt3 ~/GIT/libvips/libvips/include/vips (7.36) $ grep im_init_world *.h
vips7compat.h:#define im_init_world vips_init

so im_init_world() is not a function, it's just a rename of vips_init(). I think your compile can't be seeing the correct include files.

Try compiling with -Wall, is im_init_world() undefined?

pjb304 commented 10 years ago

Hmm, curious. I removed the 7.36.3 that I downloaded from the site, and used the git master version and it worked fine. Has something changed between the 2 versions that would affect this?

jcupitt commented 10 years ago

Oooops, yes, there was a problem argh, sorry for wasting so much of your time.

Here's a test 7.36, does it fix it?

http://www.vips.ecs.soton.ac.uk/development/vips-7.36.4.tar.gz

pjb304 commented 10 years ago

No worries, I was afraid it was me wasting your time by forgetting a simple stage of the process.

Yes that test 7.36 does fix it, thanks.