Recently, I have been asked to try to get OpenMusic running on Linux. So far, IRCAM provides only versions for Windows and Mac OS X. Ok. OpenMusic is GPL licensed and the source code is availlable from their download page. I downloaded it, ignoring the sufficiently large list of dependencies – I can return to this topic later.
The first major hurdle to take is the build system. It's LispWorks, a commercially licensed lisp IDE. Though there is no problem in using commercial products on Linux, the build system in general imposes a restriction on the freedom of the project. In fact it might be hard to integrate OpenMusic in Debian main, as Debian builds its packages from source and propably has no commerical LispWorks license. One of the features that LispWorks provides is a GUI toolkit. If OpenMusic uses this toolkit it might be hard to port it to a really free package.
Back to the topic: Installing LispWorks is more or less straight forward. Nevertheless its more complicated than necessary, at least for the Personal licensed version: Before you get the link to the files the site ask you for your name and Email Address. You have to download at least three files:
- A shell script that generates a temporary file with some license information,
- the installation tarballl, and
- the installation shell script.
Did I mention that all these files can be easily packed into a single shell script or tarball?
Running the installation script without parameters as root installs LispWorks in
/usr/local/lib. But the executable is still not in the path. You find it afterwards in /usr/local/lib/LispWorksPersonal and have to link it manually into
/usr/local/bin. As the original name is very long I choose to name it just
linkworks (all lowercase). Now, I can open it entering
linkworks. But unfortuntely, I get a long list of lisp errors and the program exits instead of opening the main window. The output of the program has been so long that the first lines got deleted from the buffer of my terminal :-(. Fortunately I have less:
# linkworks 2>&1 |less
This tells me, that libgtk2.0 has not been found. Let's have a look:
dpkg -l libkgt2\*
This tells me that this library has been already installed. There must be another problem. Fortunately with 12.04 Ubuntu introduced multi-arch support that has been also applied to the debian project. Thus I can now just type
apt-get install libgtk2.0-0:i386
As multi-arch support is not very old and Debian so far has no stable release supporting it, I was not shure, whether it will work. But, fortunately, the installation worked without problems. Also the next run of LispWorks opens some windows, so it must have worked. Going back to the LispWorks home page I realized that there is written about 64bit support for linux, but I didn't find it for the Personal Edition so far.
Installation of dependencies
The next step seems to be to install the fonts. This is usually done on Linux by placing them in
~/fonts or the corresponding directory for X11.
This can be done running
cp -r win ~/.fonts/OpenMusic inside the subdirectory
OM-6.5.1-SRC/resources/fonts of the source tree.
According to the build instructions we have to install some dependencies, first. The first one is MidiShare, a 6 years old client/server framework that depends on a kernel module and refuses to be built with the kernel headers included in Debian.
After installing the sources I'm lost for now:
$ ./configure --help Determining processor... i386 Calling conf i386 Creating ../common/makefile Creating ../common/Memory/makefile Creating ../lib/Network/makefile Creating applications/lib/makefile Creating kernel/Makefile Creating ../lib/makefile Creating ../lib/make.module Creating tests/Drivers/makefile Creating tests/Events/makefile Creating tests/Filters/makefile Creating tests/Functions/makefile Calling lib/configure Making aliases ln: Symbolische Verknüpfung „./EventToMidiStream.h“ konnte nicht angelegt werden: Die Datei existiert bereits ln: Symbolische Verknüpfung „./FilterUtils.h“ konnte nicht angelegt werden: Die Datei existiert bereits ln: Symbolische Verknüpfung „./MidiPrint.h“ konnte nicht angelegt werden: Die Datei existiert bereits ln: Symbolische Verknüpfung „./MidiStreamToEvent.h“ konnte nicht angelegt werden: Die Datei existiert bereits ln: Symbolische Verknüpfung „./msDrvUtils.h“ konnte nicht angelegt werden: Die Datei existiert bereits ln: Symbolische Verknüpfung „./msPrefs.h“ konnte nicht angelegt werden: Die Datei existiert bereits ln: Symbolische Verknüpfung „./profport.h“ konnte nicht angelegt werden: Die Datei existiert bereits Making dependencies end of lib configure =============================================== Linux kernel source code MUST be installed prior to compile the midishare module =============================================== end of configure
If no help is availlable, I should give up now.
Integrating of OpenMusic in common GNU/Linux distributions might be hard, though it should be to provide the corresponding packages. Maybe Zero Install is an option?
In fact: I was not able to build it at all. Propably it would be wise to revise the dependencies. At least Jack does work on Linux quite well and replacing MidiShare by Jack should be managable task. But so far I don't know the impact of the other dependencies.