Fun with Cinelerra

Cinelerra (whose domain is reminiscent more of a porn site than a software site) bills itself as a "Movie studio in a Linux Box". In reality, when it comes to getting it going from the sources it's a headache in a Linux box. They do provide information on building cinelerra, but I warn you now, the site is slower than the target of a slashdotting (and I assure you, it's not my connection - I think a modem could outrun them.) The documentation tells you nothing about dependencies other than that you will need nasm and yasm to build the software, but the download page features a longish list of applications.

First, I should mention here that running ./configure does not work on any modern linux system. The configure scripts specify /bin/sh but they will not run in the bourne shell. You must run them with bash! If your linux system has a broken version of bash that runs bourne shell scripts under bourne-again syntax, then it might work. Otherwise the configure scripts will fail. You have been warned. Witness:

mespinoza@sec2lpt7-linux:~/src/cinelerra/cinelerra-2.1$ ./configure --prefix=/usr/local
[: 24: ==: unexpected operator
[: 31: ==: unexpected operator
./configure: 47: Syntax error: Bad fd number

or

mespinoza@sec2lpt7-linux:~/src/cinelerra/cinelerra-2.1$ bash ./configure --prefix=/usr/local
CONFIGURING QUICKTIME
[: 22: ==: unexpected operator
[: 27: ==: unexpected operator
./configure: 39: Syntax error: Bad fd number
CONFIGURING LIBMPEG3
./configure: line 139: cd: libmpeg3*: No such file or directory
CONFIGURING FFTW
./configure: line 142: cd: fftw*: No such file or directory
CONFIGURING MJPEGTOOLS
./configure: line 145: cd: mjpegtools*: No such file or directory
CONFIGURING SNDFILE
./configure: line 150: cd: libsndfile*: No such file or directory
CONFIGURING RAW1394
./configure: line 153: cd: libraw1394*: No such file or directory
CONFIGURING AVC1394
./configure: line 159: cd: libavc1394*: No such file or directory
CONFIGURING IEC61883
./configure: line 165: cd: libiec61883*: No such file or directory
CONFIGURING THEORA
./configure: line 173: cd: libtheora*: No such file or directory
Writing hvirtual_config.h
Have Video4Linux 2
Have DVB
Have OpenGL 2.0
Configured successfully.  Type 'make' to build it.

Note that there are still errors. Do the "no such file or directory" erorrs mean we won't have support for these formats/libraries? Nothing whatsoever is said about them or any other dependencies in the "documentation" (which documents nothing, at least as pertains to installation - it's more of a readme, and it does not provide much in the way of guidance.

We run make and we get the following:

mespinoza@sec2lpt7-linux:~/src/cinelerra/cinelerra-2.1$ make
make -f build/Makefile.cinelerra
sh: Syntax error: end of file unexpected (expecting "then")
make[1]: Entering directory `/home/mespinoza/src/cinelerra/cinelerra-2.1'
gcc -c -O2 -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I../../freetype-2.1.4/include -I../../ -DHAVE_OSS -DHAVE_FIREWIRE  soundtest.c -o i686/soundtest.o
Assembler messages:
FATAL: can't create i686/soundtest.o: No such file or directory
make[1]: *** [i686/soundtest.o] Error 1
make[1]: Leaving directory `/home/mespinoza/src/cinelerra/cinelerra-2.1'
make: *** [all] Error 2

Fun. Creating an 'i686' directory in the root source dir fixes this error. Unfortunately:

make[4]: Entering directory `/home/mespinoza/src/cinelerra/cinelerra-2.1/libiec61883-1.0.0/src'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include      -I/root/hvirtual/libraw1394-1.2.0/ -MT cip.lo -MD -MP -MF ".deps/cip.Tpo" -c -o cip.lo cip.c; \
        then mv -f ".deps/cip.Tpo" ".deps/cip.Plo"; else rm -f ".deps/cip.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/root/hvirtual/libraw1394-1.2.0/ -MT cip.lo -MD -MP -MF .deps/cip.Tpo -c cip.c -o cip.o
In file included from cip.c:25:
iec61883.h:23:32: error: libraw1394/raw1394.h: No such file or directory
In file included from cip.c:25:
iec61883.h:115: error: expected ')' before 'handle'
iec61883.h:129: error: expected ')' before 'handle'
iec61883.h:364: error: expected ')' before 'handle'
iec61883.h:379: error: expected ')' before 'handle'
iec61883.h:574: error: expected ')' before 'handle'

Et cetera. So obviously I need some other things. Now, I'm not building this as root, which is a very stupid idea. But notice that there's a hardcoded include path to "/root/hvirtual/libraw1394-1.2.0/" in there. This is a horribly amateurish error to make. You should never do this, not least because there are security considerations (however minor.) It turns out that there's a couple versions of libraw1394 in the ubuntu repositories... Installing libraw1394-dev appears to have gotten us past this error. Of course, there's several other libraries that may or may not be on my system.

Errors abound throughout the build process. You'll see lots of this:

make[2]: Leaving directory `/home/mespinoza/src/cinelerra/cinelerra-2.1'
make -f build/Makefile.tiff
sh: Syntax error: end of file unexpected (expecting "then")
make[2]: Entering directory `/home/mespinoza/src/cinelerra/cinelerra-2.1'

And other similar errors. The whole thing finally blows up when it gets to the GUI.

(output omitted)

/usr/include/stdlib.h:952: error: storage class specified for parameter ‘ptsname_r’
/usr/include/stdlib.h:955: error: storage class specified for parameter ‘getpt’
/usr/include/stdlib.h:963: error: storage class specified for parameter ‘getloadavg’
In file included from glav.c:8:
glav.h:7: error: expected ‘)’ before ‘*’ token
glav.h:8: error: expected ‘)’ before ‘*’ token
glav.h:9: error: expected ‘)’ before ‘*’ token
glav.h:11: error: expected ‘)’ before ‘*’ token
glav.h:12: error: expected ‘)’ before ‘*’ token
glav.h:13: error: expected ‘)’ before ‘*’ token
glav.h:14: error: expected ‘)’ before ‘*’ token
glav.h:15: error: expected ‘)’ before ‘*’ token
glav.h:16: error: expected ‘)’ before ‘*’ token
glav.h:17: error: expected ‘)’ before ‘*’ token
glav.h:18: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
glav.h:23: error: expected specifier-qualifier-list before ‘GtkWidget’
glav.h:56: error: storage class specified for parameter ‘GTK_xlav’
glav.h:58: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
glav.h:59: error: storage class specified for parameter ‘dispatch_input’
glav.h:60: error: storage class specified for parameter ‘do_real_exit’
glav.h:61: error: storage class specified for parameter ‘signal_cb’
glav.c:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
glav.c:26: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
glav.c:34: error: expected declaration specifiers before ‘GTK_xlav’
glav.c:130: error: old-style parameter declarations in prototyped function definition
glav.c:130: error: expected ‘{’ at end of input
make[4]: *** [glav-glav.o] Error 1
make[4]: Leaving directory `/home/mespinoza/src/cinelerra/cinelerra-2.1/mjpegtools-1.6.3-rc1/lavtools'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/mespinoza/src/cinelerra/cinelerra-2.1/mjpegtools-1.6.3-rc1'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/mespinoza/src/cinelerra/cinelerra-2.1/mjpegtools-1.6.3-rc1'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/mespinoza/src/cinelerra/cinelerra-2.1'
make: *** [all] Error 2
mespinoza@sec2lpt7-linux:~/src/cinelerra/cinelerra-2.1$

This ends this attempt to build cinelerra; Maybe I'll go file a whole pile of bug reports against the build process later. If I don't have anything more important to do. It's clear that once the build system was working at home, work stopped on it...

ObDisclaimer: None of this is intended to downplay the work done or the usefulness of the program. You can install from binaries, or if you are sufficiently skilled of course you can get it to build. Or if you are lucky and your build system is similar enough to the development environment... I do in fact have the software installed and working on my system. But the build process is sufficiently broken that you end up forced to look to third-party repositories, which is always an undesirable solution compared to just installing from your distribution.

Comments

Add new comment