OpenLightingProject / ola

The Open Lighting Architecture - The Travel Adaptor for the Lighting Industry
https://www.openlighting.org/ola/
Other
644 stars 204 forks source link

i386 Compile-time error: libolaserver_ #81

Closed ola-importer closed 10 years ago

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 10, 2010 15:22:17

Attempting to compile OLAv0.5.0 on ubuntu-hardy <8.04>, i386. I get as far as libolaserver at make, but get error, can't find/resolve it:

HttpServer,cpp:158: error: initializing argument 3 of 'MHD_PostProcessor* MHD_create_post_processor(MHDConnection, unsigned int, int ()(void, MHDValueKind, const char, const char, const char, const char_, size_t, sizet), void)' make[3]: *\ [libolaserver_la-HttpServer.lo] Error 1. ...

I'm suspecting some linker issue with libmicrohttpd?

/usr/lib/libmicrohttpd.so.3.0.0 ... exists and is on the LD_LIBS path.

olad$ grep micro Makefile LIBS = -lmicrohttpd -lpthread olad_LDADD = =lmicrohttpd -lpthread libolaserver.la \ OlaTester_LDADD = -lmicrohttpd -lpthread ${PLUGIN_LIBS} \

Any help?

--frankb

.

Original issue: http://code.google.com/p/open-lighting/issues/detail?id=80

ola-importer commented 10 years ago

From nomis52 on March 10, 2010 18:11:33

You need microhttpd >= 0.4.0. See http://opendmx.net/index.php/OLA_on_Linux

Status: Duplicate
Mergedinto: 66

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 11, 2010 06:30:38

thanks. got the correct libmicrohttpd, and latest ola-0.7.0. Made it through compile;checks; install fails at

$ /usr/bin/install -c ./libs/libolaserver.lai /usr/local/lib/libolaserver.la /usr/bin/install: cannot stat '.libs/libolaserver.lai': No such file or directory.

Perhaps this is a typo <.lai?> in a Makefile? or perhaps .libs/libolaserver.lai was an intermediate file that never got built?

help appreciated.

--frankb

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 11, 2010 06:58:24

The problem is definitely in the routine: install-binPROGRAMS:

in ~/ola-0.7.0/olad/Makefile.

franklynb@hammer:$ make install-binPROGRAMS test -z "/usr/local/lib" || /bin/mkdir -p "/usr/local/lib" /bin/bash ../libtool --mode=install /usr/bin/install -c 'libolaserver.la' '/usr/local/lib/libolaserver.la' (cd /home/franklynb/Downloads/ola-0.7.0/olad; /bin/bash ../libtool --tag=CXX --mode=relink g++ -Wall -Wformat -W -DHTTP_DATA_DIR="/usr/local/share/olad/www" -DPLUGIN_DIR="/usr/local/lib/olad" -g -O2 -lprotobuf -lctemplate -o libolaserver.la -rpath /usr/local/lib libolaserver_la-Client.lo libolaserver_la-Device.lo libolaserver_la-DeviceManager.lo libolaserver_la-DmxSource.lo libolaserver_la-DynamicPluginLoader.lo libolaserver_la-OlaServerServiceImpl.lo libolaserver_la-Plugin.lo libolaserver_la-PluginAdaptor.lo libolaserver_la-PluginManager.lo libolaserver_la-Preferences.lo libolaserver_la-Port.lo libolaserver_la-PortManager.lo libolaserver_la-Universe.lo libolaserver_la-UniverseStore.lo libolaserver_la-OlaServer.lo libolaserver_la-OlaDaemon.lo libolaserver_la-HttpServer.lo libolaserver_la-OlaHttpServer.lo ../common/libolacommon.la -lmicrohttpd -lpthread )
g++ -shared -nostdlib /usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.2.4/crtbeginS.o .libs/libolaserver_la-Client.o .libs/libolaserver_la-Device.o .libs/libolaserver_la-DeviceManager.o .libs/libolaserver_la-DmxSource.o .libs/libolaserver_la-DynamicPluginLoader.o .libs/libolaserver_la-OlaServerServiceImpl.o .libs/libolaserver_la-Plugin.o .libs/libolaserver_la-PluginAdaptor.o .libs/libolaserver_la-PluginManager.o .libs/libolaserver_la-Preferences.o .libs/libolaserver_la-Port.o .libs/libolaserver_la-PortManager.o .libs/libolaserver_la-Universe.o .libs/libolaserver_la-UniverseStore.o .libs/libolaserver_la-OlaServer.o .libs/libolaserver_la-OlaDaemon.o .libs/libolaserver_la-HttpServer.o .libs/libolaserver_la-OlaHttpServer.o -L/usr/lib -lprotobuf -lctemplate -L/usr/local/lib -lolacommon -lmicrohttpd -lpthread -L/usr/lib/gcc/i486-linux-gnu/4.2.4 -L/usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.4/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/i486-linux-gnu/4.2.4/crtendS.o /usr/lib/gcc/i486-linux-gnu/4.2.4/../../../../lib/crtn.o -Wl,-soname -Wl,libolaserver.so.0 -o .libs/libolaserver.so.0.0.0 /usr/bin/install -c .libs/libolaserver.so.0.0.0T /usr/local/lib/libolaserver.so.0.0.0 (cd /usr/local/lib && { ln -s -f libolaserver.so.0.0.0 libolaserver.so.0 || { rm -f libolaserver.so.0 && ln -s libolaserver.so.0.0.0 libolaserver.so.0; }; }) (cd /usr/local/lib && { ln -s -f libolaserver.so.0.0.0 libolaserver.so || { rm -f libolaserver.so && ln -s libolaserver.so.0.0.0 libolaserver.so; }; }) /usr/bin/install -c .libs/libolaserver.lai /usr/local/lib/libolaserver.la

ola-importer commented 10 years ago

From nomis52 on March 11, 2010 07:52:06

Can you attach your lla/Makefile and lla/Makefile.in please

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 11, 2010 09:02:26

Attached.

Attachment: Makefile Makefile.in

ola-importer commented 10 years ago

From nomis52 on March 11, 2010 23:03:21

That appears to be the top level Makefiles not the ones in olad.

Also please send the output from

'make install'

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 04:51:00

Sorry; when you asked for

...lla/Makefile and lla/Makefile.in

it confused me a bit.

ola-0.7.0/olad/Makefile, Makefile.in attached. output of

ola-0.7.0# make install 1>make-install.log

attached as well.

Attachment: Makefile Makefile.in make-install.log

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 09:40:34

Ah sorry, I wasn't at all clear in my request. Thanks for the files, I'll look at them later today

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 09:52:32

Status: New
Mergedinto: -66

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 09:55:35

That 'make install' looks like it worked fine, do you only have problems when running make install-binPROGRAMS ?

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 11:03:10

Well, that is certainly a curiousity. It has failed "both methods" multiple times; I can only conclude that re-directing stdio did SOMETHING. I still don't see a ".lai" in the directory /olad/.libs; but this make-install.log doens't have a complaint or error!

hmmm.

Nope. The problem STILL is that there is no file "libolaserver.lai" made! And it appears that the last 3 lines are just the stdout report, while the error "crash" out of the makefile ONLY went to stderr.

So, the remainder of the installation fails; which isn't much, but includes all the executables! <olad, etc>. I know this because 1) they're not installed anywhere in make-install.log, and 2) don't exist on my $PATH, and 3) olad works when executed locally in /olad, and 4) there ARE .lai files lying about in every /plugin directory.

So, still stuck trying to figure out either 1) how to make a .lai in olaserver, or 2) how to remove it from the makefile and move on, worrying it later.

???

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 11:06:10

Consistent with the above, I DO have a /usr/local/lib/libolaserver.so -> libolaserver.so.0.0.0

entry, but NONE for libolaserver.la !

--frankb

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 11:21:10

Here are sepated stdio and stderr streams for make-installbinPROGRAMS:

< ftp://franklynb.home.mindspring.com/_private/make-installbin.out >

< ftp://franklynb.home.mindspring.com/_private/make-installbin.err >

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 18:36:21

I can't access those files - it's a asking for a password

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 18:49:56

What version of automake are you using (automake --version) ?

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 18:55:09

Your libtool version would help as well

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 19:00:57

Here are the files. Booting to answer next two questions. I suspect libtool.

--f

Attachment: make-installbin.err make-installbin.out

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 19:06:39

Are you sure that the make stage is completing ok? In olad/ run 'make clean' followed by:

make ; echo $?

And tell me what the last few lines say.

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 19:10:45

Here's a copy of libtool. Automake is 1.10.1

--f

Attachment: libtool

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 12, 2010 21:05:51

make clean; make .. seems to finish correctly in olad/.

last 4 lines:

g++ -Wall -Wformat -W -f -02 -rdynamic .... ../common/.libs/libolacommon.so /usr/local/lib/libmicrohttpd.so -lpthread -Wl, --rpath -Wl,/usr/local/lib/olad

creating olad

make[1]: Leaving directory '/home/franklynb/Downloads/olad-0.7.0/olad

0

As well, executing "./olad" in the /olad directory works.

ola-importer commented 10 years ago

From nomis52 on March 12, 2010 21:13:19

Bizarre. Searching shows other people are having similar problems, but I haven't seen a solution yet.

What happens if you run:

autoreconf -fi ./configure make sudo make install

?

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 13, 2010 07:06:50

I had to run

autoreconf -fi automake ./configure

.. about three? times to get the last of the missing parameters found. On the first go rounds with make, some parameter or other wouldn't get filled in; often related to a path ending in LIB. I finally hand edited the UUID link object <-luuid> in plugins/e131/e131/Makefile, as it never did get set.

Dunno why I had to run automake, autoconf suggested it. Must've been some recursion error autoconf couldnt sort out?

how does olad/.libs/libolaserver.lai get made?

If I could find a makefile rule for ".lai" SOMEWHERE I would just compile and link it manually. All the plugin directories use this ".lai" temporary file technique before they get copied into the link libs as ".la" files; after combing through a bunch of files, I think it must be some conflabulation of the library extension and a parameter that gets set to "i" somewhere by sed or awk .... not easy to find.

???

ola-importer commented 10 years ago

From nomis52 on March 13, 2010 11:41:10

From my investigating, the .lai files are similar to the .la files but with the install paths and installed=yes. Diff some of the plugin lai files and you'll see what I mean.

Maybe you can just copy the .la and make similar changes? I'm going to download hardy and see if I can reproduce this

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 13, 2010 12:57:05

So, I tracked down the script that makes the ".lai" in plugins/dummy:

Here's the call in plugins/dummy that CREATES the ".lai" lib in .libs....

/bin/bash ../../libtool --tag=CXX --mode=link g++ -g -O2 -o liboladummy.la -rpath /usr/local/lib/olad DummyPlugin.lo DummyDevice.lo DummyPort.lo -lmicrohtt pd -lpthread -lmicrohttpd -lpthread

...

Here's the offending call in olad/Makefile that DOESN'T make the ".lai":

libolaserver_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(libolaserver_la_CXXFLAGS) $(CXXFLAGS) \ $(libolaserver_la_LDFLAGS) $(LDFLAGS) -o $@

Clearly different, in that it uses more indirection -- but it seems to be MISSING the "g++ -g -O2 -o libNNN.la" call that one would EXPECT to see, unless its buried somewhere in $CXXLD???

--frankb

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 13, 2010 13:02:35

Im not sure what you mean by the phrase:

"the .lai files are similar to the .la files but with the install paths and installed=yes".

The .la files are just copies of the .lai files in every case I've found. They are copied by a makefile script at "install" time. What's "installed=yes" mean? A parameter somewhere? If so, please point me to an example ... where? this could be another difference.

--frankb

ola-importer commented 10 years ago

From nomis52 on March 13, 2010 19:35:07

I've installed Hardy and I can't reproduce this issue. FWIW this is the diff between my libolaserver.la and libolaserver.lai:

17c17

< dependency_libs=' -lprotobuf -lctemplate /home/simon/lighting/lla/common/libolacommon.la -lmicrohttpd -luuid -lpthread'

dependency_libs=' -lprotobuf -lctemplate /usr/local/lib/libolacommon.la -lmicrohttpd -luuid -lpthread' 25c25

< installed=no

installed=yes 36d35 < relink_command="(cd /home/simon/lighting/lla/olad; /bin/bash ../libtool --tag=CXX --mode=relink g++ -Wall -Wformat -W - DHTTP_DATA_DIR=\"/usr/local/share/olad/www\" -DPLUGIN_DIR=\"/usr/local/lib/olad\" -g -O2 -lprotobuf -lctemplate -o libolaserver.la -rpath /usr/local/lib libolaserver_la- Client.lo libolaserver_la-Device.lo libolaserver_la-DeviceManager.lo libolaserver_la-DmxSource.lo libolaserver_la-DynamicPluginLoader.lo libolaserver_la-OlaServerServiceImpl.lo libolaserver_la-Plugin.lo libolaserver_la-PluginAdaptor.lo libolaserver_la-PluginManager.lo libolaserver_la-Preferences.lo libolaserver_la-Port.lo libolaserver_la-PortManager.lo libolaserver_la-Universe.lo libolaserver_la-UniverseStore.lo libolaserver_la-OlaServer.lo libolaserver_la-OlaDaemon.lo libolaserver_la-HttpServer.lo libolaserver_la-OlaHttpServer.lo ../common/libolacommon.la -lmicrohttpd -luuid -lpthread @inst_prefix_dir@) "

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 14, 2010 08:16:00

SOMETHING I did yesterday created the desired olad/.libs/libolaserver.lai file! it must have happened while running olad/Makefile, searching for the routine that creates the .libs/....lai file -- when i checked this morning, it was just there!

Anyway, the install script finished, as evidenced by /usr/local/bin/olad. Since there doesn't appear to be a ola_dev_info or olapatch equivalent to lla*; and since I could never get the lla_dev_info compiled version to connect to the dmx_usb device ... I'm off to the docs to try and figure out what to do next.

thanks for the help. I'll run a diff on .la and .lai as you suggested later today.

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 14, 2010 08:18:38

ahah. examples/ola_dev_info.

--f

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 14, 2010 13:33:37

My hardy installation was missing package pkg-config. ./configure on lla-examples complained. ./configure in ola-0.7.0 checked, but didn't complain. I'm not sure what this might explain. Does your hardy config.log show pkg-config exists?

FYI.

--f

ola-importer commented 10 years ago

From nomis52 on March 14, 2010 14:46:47

Yeah, pkg-config is one of the base set of packages I always install. I've committed a change to the cofigure script that makes missing pkg-config fatal.

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 14, 2010 21:29:41

Did another GIT tonight, since I thought I had the problem figured out. I made the package as root, which was required since the .deps and .libs were owned by root and needed to be rm'd. Thought I'd try to make as user.

Got as far as plugins/usbpro; now I get a complaint that a header file, WidgetDetector.h is missing; and most of the .Plo files in .deps are filled with #dummy.

It this correct? How do I make WidgetDetector?

I did get a completed compile on feisty-ubuntu-powerpc, and it works. Helped me to figure some things out, especially eliminating the DMX_usb erwinrol driver; the blacklist on ftdi_sio was killing my usbpro. There's probably a note somewhere .

What's up with WidgetDetector.h? Should it be a makefile entry?

--f

ola-importer commented 10 years ago

From nomis52 on March 14, 2010 21:56:27

That's me submitting the latest changes and breaking the git repo. I've just pushed more changes now so try that.

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 15, 2010 15:22:10

I've got it down to three error sources:

1) installation of libdmx4linux2-dev and libdmx4linux2 from launchpad-hardy causes some noiselevel;

2) conflicts between erwin rol's dmx_usb_module, which should be explictly disabled before using ola-0.7.0

3) confusion on my part from building sources from two different repositories; your git, and ola-0.7.0 on googlecode. since I haven't been lucky enough to find a --version arg that works, some installs partially break other installs. Your site is clear about "this thing could break, so beware." A more aggressive pointer back to olad-0.7.0 on google would have saved me from myself.

4) even though my mother told me "use sudo", my root login, and its interaction with libtool produced some strange behavior during the rm -fr of .deps and .libs. 30 years of *nix later, some habits die hard. some changes in hardy's header structure caused some grief, too <uuid-dev, in particular>.

I've spooled off an entire PROPER autoreconf -if;configure;make;fix;make;fix;make;make install "manuscript". Should I post it

, or send it to you? I suspect it could be useful to others trying to get hardy to compile. I've also saved the entirety of .debs I needed to add from fresh hardy-server; which is around 25 packages.
ola-importer commented 10 years ago

From nomis52 on March 15, 2010 16:29:43

Yes, please upload the instructions here so I can fix/ integrate into the docs.

I'm particularly interested in 1) and 2). Can you provide more details?

3) I can't do much about. I've updated with wiki page with another warning.

4) The uuid issue should be fixed in the git repo.

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 15, 2010 16:45:20

on #1, I made some comments on the automake log file. the lib-dev install 'activates' the loop of plugin code for dmx4linux -- even though the binary isn't installed. so, the header file is required , but isn't existent.

on #2, the usbpro plugin works on ftdi_sio; but the instructions for lla and the opendmx require it be blacklisted. installing the dmx_usb_driver.ko blocks access of the usbpro code by ola_dev_info, somehow. not sure how. but insmod ftdi_sio fixed the usbpro access problem, but breaks the opendmx adapter setup.

haven't got the opendmx usb adapter working with the ola-0.7.0 code, yet.

log of autoreconf -ifv;configure;make;break;fix;remake;break;remake;install is attached. so is the list of installed packages. don't know how to sort top level from dependencies, which would be nice. if you do, let me know, and i'll pare it down to just top level calls to apt.

Attachment: make-output1.txt dpkg.installed

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 15, 2010 16:52:50

I seem to be missing ola_patch in my ola-0.7.0 build. Any idea where its supposed to be made in the install scripts? the docs imply its in ola- not ola-examples. note the last entry in make-output1.txt, which shows its mia.

???

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 15, 2010 17:00:24

never mind. foound it in ola-examples. perhaps a note on the doc page< http://www.opendmx.net/index.php/Using_OLA > which calls for using ola_patch.

hope this helps.

--f

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 15, 2010 17:06:12

a re-read of the OLA page gives the one line warning" uses commands from ola-examples". So a more intellgent reader probably gets that distinction, which escaped me under the pile of libtool docs.

--f

ola-importer commented 10 years ago

From nomis52 on March 15, 2010 17:23:59

BTW it's a wiki. Feel free to improve it :)

ola-importer commented 10 years ago

From nomis52 on March 15, 2010 17:32:10

BTW #2 isn't an OLA specific problem. Without modifying the dmx_usb source I think the only way you'll be able to use both devices is to load one module, plug in the device, load the second module, plug in the other device.

I've updated the wiki with some more packages, I'll take a look at the build log in a sec

ola-importer commented 10 years ago

From nomis52 on March 15, 2010 17:37:51

Ok, the only two errors I see in the log is the uuid.h problem which is fixed in the git repo and an issue with the dmx4linux header. I'll add a more stringent test for dmx4linux.

ola-importer commented 10 years ago

From frankl...@mindspring.com on March 15, 2010 18:56:36

I agree: #2 isn't an OLA problem. Rather its a documentation challenge, as the bridge from LLA to OLA <never mind dmx4linux, which I've yet to get working after trying on four different platforms> requires one to rethink what worked previously, without always knowing why it worked.

hence, the futzing around thinking olad was inoperable, even after it was clear that I could -- at least -- get the olad server compiled -- when it was actually the dmx_usb_module shim that disabled it .. for who knows how long?

I very much appreciate the support you've given, and the challenge you've chosen to undertake. My comments, and forwarding the into is just to help clarify "making it work" for the next person down the line, as well as get my own challenges met. No criticism is intended. In the meantime, I've learned a lot about libtool and automake which is good.

And I shall take a crack at the wiki, once I've collected, and simplified my thoughts.

--f

ola-importer commented 10 years ago

From nomis52 on March 15, 2010 23:48:27

No problem, it's truly bizarre that a -dev package doesn't install headers. You may want to ping Shaun about that but I suspect he's given up packaging dmx4linux.

I've pushed a change which should fix the dmx4linux issue. If you rebuild from head now you shouldn't have any problems.

ola-importer commented 10 years ago

From nomis52 on March 20, 2010 15:53:18

I'll close this now since there isn't anything more to be done

Status: Fixed