savonet / liquidsoap

Liquidsoap is a statically typed scripting general-purpose language with dedicated operators and backend for all thing media, streaming, file generation, automation, HTTP backend and more.
http://liquidsoap.info
GNU General Public License v2.0
1.41k stars 130 forks source link

cannot build 1.3.7 on FreeBSD using ocaml 4.05 #1955

Closed drook closed 3 years ago

drook commented 3 years ago

OS: FreeBSD 12.2 ocaml: 4.05 from ports, opam from ports, mandatory modules installed. liquidsoap: 1.3.7 (since recent versions require a fresher ocaml)

Configure tail:

[...]
configure: creating ./config.status
config.status: creating Makefile.defs
config.status: creating scripts/liquidsoap.initd
config.status: creating scripts/liquidsoap.gentoo.initd
config.status: creating src/META
config.status: creating config.h
config.status: config.h is unchanged
Creating scripts/liquidsoap.logrotate

 ----------------------------------------------------------------- Compilation

 Compiler       : ocamlfind ocamlopt
 Version        : 4.05.0
 OS             : Unix
 Plugins        :
 Custom path    : no
 OCAML_CFLAGS   : -g -annot  -g -w +A-4@5-7@8-9@11@12@20-35-44-45-50 -ccopt "$(CFLAGS)" -package bytes -package pcre -package dtools -package duppy -package cry -package mm -package ogg -package vorbis -package mad -package flac -package flac.ogg -package dynlink -package lame -package ffmpeg -package samplerate -package ssl -package magic -package camomile -package pulseaudio -package ladspa
 OCAML_LFLAGS   : -g -linkpkg -package unix -package threads -package str -package bigarray -cc "$(CC)"
 CFLAGS         : -I /usr/local/include -I$(top_srcdir) -fPIC -I/usr/local/lib/ocaml -g
 LDFLAGS        :
 CAMLP4O        : camlp4o /usr/home/emz/.opam/default/lib/duppy/pa_duppy.cmo

 ---------------------------------------------------------------- Installation

 prefix         : /usr/local
 exec_prefix    : ${prefix}
 binary         : ${exec_prefix}/bin
 configuration  : ${prefix}/etc/liquidsoap
 logging        : ${prefix}/var/log/liquidsoap
 PIDs           : ${prefix}/var/run/liquidsoap
 logrotate conf : ${prefix}/etc/logrotate.d
 man page       : ${datarootdir}/man/man1
 doc            : ${datarootdir}/doc

 -------------------------------------------------------------------- Features

 * Supported input formats
   - Vorbis            : yes
   - Theora            : no (requires theora)
   - Speex             : no (requires speex)
   - Flac (native)     : yes
   - Flac (ogg)        : yes
   - MP3               : yes
   - AAC               : no (requires faad)
   - Avcodec (ffmpeg)  : yes
   - XML playlists     : no (requires xmlplaylist)
   - Lastfm            : no (requires lastfm)

 * Supported output formats
   - Vorbis            : yes
   - MP3               : yes
   - MP3 (fixed-point) : no (requires shine)
   - FDK-AAC           : detected at runtime
   - SPEEX             : no (requires speex)
   - Opus              : no (requires opus)
   - Theora            : no (requires theora)

 * Tags
   - Taglib (ID3 tags) : no (requires taglib)
   - Vorbis            : yes
   - charset detection : yes

 * Input / output
   - Icecast/Shoutcast : yes
   - AO                : no (requires ao)
   - OSS               : yes
   - ALSA              : no (requires alsa)
   - Portaudio         : no (requires portaudio)
   - Pulseaudio        : yes
   - JACK              : no (requires bjack)
   - GStreamer         : no (requires gstreamer)

 * Audio manipulation
   - Samplerate        : yes
   - SoundTouch        : no (requires soundtouch)
   - LADSPA            : yes

 * Video manipulation
   - Gavl              : no (requires gavl)
   - FFmpeg            : yes
   - frei0r            : no (requires frei0r)
   - camlimages        : no (requires camlimages)

 * MIDI manipulation
   - DSSI              : no (requires dssi)

 * Visualization
   - Graphics          : no
   - SDL               : no (requires sdl)
   - GD                : no (requires gd)

 * Additional libraries
   - curl URI resolver : requires curl at runtime
   - dynlink           : yes
   - inotify           : no (requires inotify)
   - lo                : no (requires lo)
   - magic             : yes
   - yojson            : no (requires yojson)
   - ssl               : yes
   - SecureTransport   : no (requires osx-secure-transport)
   - windows service   : no (requires winsvc)

 * Graphical interfaces
   - Python GUI        : no

 -----------------------------------------------------------------------------

 You may now compile liquidsoap by running "gmake".
 In case of significant library update, "gmake clean" is needed first.

 If you want a local version of the documentation, run "gmake doc".

 Then, perform installation by running "gmake install" as root.

 And... have fun!

<WARNING>

 The specified user/group (/) for running liquidsoap as a daemon
 do not exist, so I won't install log and PID directories.

 For a fully functional liquidsoap installation, please configure again
 with existing user/group. You may use --with-user=<user> --with-group=<group>
 to override the default.

</WARNING>

Build log:

[...]
OCAMLOPT -c stream/frame.mli
findlib: [WARNING] Package bigarray has multiple definitions in /usr/local/lib/ocaml/site-lib/bigarray/META, /usr/home/emz/.opam/default/lib/bigarray/META
findlib: [WARNING] Package str has multiple definitions in /usr/local/lib/ocaml/site-lib/str/META, /usr/home/emz/.opam/default/lib/str/META
findlib: [WARNING] Package unix has multiple definitions in /usr/local/lib/ocaml/site-lib/unix/META, /usr/home/emz/.opam/default/lib/unix/META
findlib: [WARNING] Package dynlink has multiple definitions in /usr/local/lib/ocaml/site-lib/dynlink/META, /usr/home/emz/.opam/default/lib/dynlink/META
findlib: [WARNING] Package pcre has multiple definitions in /usr/local/lib/ocaml/site-lib/pcre/META, /usr/home/emz/.opam/default/lib/pcre/META
findlib: [WARNING] Package bytes has multiple definitions in /usr/local/lib/ocaml/site-lib/bytes/META, /usr/home/emz/.opam/default/lib/bytes/META
findlib: [WARNING] Package threads has multiple definitions in /usr/local/lib/ocaml/site-lib/threads/META, /usr/home/emz/.opam/default/lib/threads/META
File "stream/frame.mli", line 42, characters 14-31:
Error: Unbound module Audio
gmake[2]: *** [../Makefile.rules:200: stream/frame.cmi] Error 2
gmake[2]: Leaving directory '/usr/home/emz/src/liquidsoap-1.3.7/src'
gmake[1]: *** [../Makefile.rules:67: all-auto-ocaml-prog] Error 2
gmake[1]: Leaving directory '/usr/home/emz/src/liquidsoap-1.3.7/src'
gmake: *** [Makefile.rules:27: all-subdirs] Error 2

From this point I really have no idea what to look at. Looking at the sources I got a strong impression that ocaml think I'm lacking the mm module, which is present:

# ocamlfind list
findlib: [WARNING] Package ocamlbuild has multiple definitions in /usr/home/emz/.opam/default/lib/ocamlbuild/META, /usr/local/lib/ocaml/ocamlbuild/META
findlib: [WARNING] Package camlp4 has multiple definitions in /usr/local/lib/ocaml/site-lib/camlp4/META, /usr/home/emz/.opam/default/lib/camlp4/META, /usr/local/lib/ocaml/camlp4/META
findlib: [WARNING] Package stdlib has multiple definitions in /usr/local/lib/ocaml/site-lib/stdlib/META, /usr/home/emz/.opam/default/lib/stdlib/META
findlib: [WARNING] Package bigarray has multiple definitions in /usr/local/lib/ocaml/site-lib/bigarray/META, /usr/home/emz/.opam/default/lib/bigarray/META
findlib: [WARNING] Package ocamldoc has multiple definitions in /usr/local/lib/ocaml/site-lib/ocamldoc/META, /usr/home/emz/.opam/default/lib/ocamldoc/META
findlib: [WARNING] Package bytes has multiple definitions in /usr/local/lib/ocaml/site-lib/bytes/META, /usr/home/emz/.opam/default/lib/bytes/META
findlib: [WARNING] Package str has multiple definitions in /usr/local/lib/ocaml/site-lib/str/META, /usr/home/emz/.opam/default/lib/str/META
findlib: [WARNING] Package threads has multiple definitions in /usr/local/lib/ocaml/site-lib/threads/META, /usr/home/emz/.opam/default/lib/threads/META
findlib: [WARNING] Package pcre has multiple definitions in /usr/local/lib/ocaml/site-lib/pcre/META, /usr/home/emz/.opam/default/lib/pcre/META
findlib: [WARNING] Package dynlink has multiple definitions in /usr/local/lib/ocaml/site-lib/dynlink/META, /usr/home/emz/.opam/default/lib/dynlink/META
findlib: [WARNING] Package raw_spacetime has multiple definitions in /usr/local/lib/ocaml/site-lib/raw_spacetime/META, /usr/home/emz/.opam/default/lib/raw_spacetime/META
findlib: [WARNING] Package unix has multiple definitions in /usr/local/lib/ocaml/site-lib/unix/META, /usr/home/emz/.opam/default/lib/unix/META
findlib: [WARNING] Package findlib has multiple definitions in /usr/local/lib/ocaml/site-lib/findlib/META, /usr/home/emz/.opam/default/lib/findlib/META
findlib: [WARNING] Package num-top has multiple definitions in /usr/local/lib/ocaml/site-lib/num-top/META, /usr/home/emz/.opam/default/lib/num-top/META
findlib: [WARNING] Package num has multiple definitions in /usr/local/lib/ocaml/site-lib/num/META, /usr/home/emz/.opam/default/lib/num/META
findlib: [WARNING] Package compiler-libs has multiple definitions in /usr/local/lib/ocaml/site-lib/compiler-libs/META, /usr/home/emz/.opam/default/lib/compiler-libs/META
base                (version: v0.13.0)
base.base_internalhash_types (version: v0.13.0)
base.caml           (version: v0.13.0)
base.md5            (version: v0.13.0)
base.shadow_stdlib  (version: v0.13.0)
bigarray            (version: [distributed with Ocaml])
bytes               (version: [distributed with OCaml 4.02 or above])
camlp4              (version: [distributed with Ocaml])
camlp4.exceptiontracer (version: [distributed with Ocaml])
camlp4.extend       (version: [distributed with Ocaml])
camlp4.foldgenerator (version: [distributed with Ocaml])
camlp4.fulllib      (version: [distributed with Ocaml])
camlp4.gramlib      (version: [distributed with Ocaml])
camlp4.lib          (version: [distributed with Ocaml])
camlp4.listcomprehension (version: [distributed with Ocaml])
camlp4.locationstripper (version: [distributed with Ocaml])
camlp4.macro        (version: [distributed with Ocaml])
camlp4.mapgenerator (version: [distributed with Ocaml])
camlp4.metagenerator (version: [distributed with Ocaml])
camlp4.profiler     (version: [distributed with Ocaml])
camlp4.quotations   (version: [distributed with Ocaml])
camlp4.quotations.o (version: [distributed with Ocaml])
camlp4.quotations.r (version: [distributed with Ocaml])
camlp4.tracer       (version: [distributed with Ocaml])
camomile            (version: 1.0.2)
camomile.default_config (version: 1.0.2)
camomile.dyn        (version: 1.0.2)
camomile.lib_default (version: 1.0.2)
camomile.library    (version: 1.0.2)
compiler-libs       (version: [distributed with Ocaml])
compiler-libs.bytecomp (version: [distributed with Ocaml])
compiler-libs.common (version: [distributed with Ocaml])
compiler-libs.optcomp (version: [distributed with Ocaml])
compiler-libs.toplevel (version: [distributed with Ocaml])
cry                 (version: 0.6.5)
csexp               (version: 1.5.1)
dtools              (version: 0.4.4)
dune                (version: n/a)
dune-configurator   (version: 2.9.1)
dune.configurator   (version: 2.9.1)
duppy               (version: 0.9.2)
dynlink             (version: [distributed with Ocaml])
ffmpeg              (version: 0.4.3)
findlib             (version: 1.7.1)
findlib.dynload     (version: 1.7.1)
flac                (version: 0.3.0)
flac.decoder        (version: 0.3.0)
flac.ogg            (version: 0.3.0)
graphics            (version: [distributed with Ocaml])
ladspa              (version: 0.1.5)
lame                (version: 0.3.4)
mad                 (version: 0.5.0)
magic               (version: 0.7.3)
mm                  (version: 0.7.1)
mm.audio            (version: 0.7.1)
mm.base             (version: 0.7.1)
mm.image            (version: 0.7.1)
mm.mad              (version: 0.7.1)
mm.midi             (version: 0.7.1)
mm.pulseaudio       (version: 0.7.1)
mm.video            (version: 0.7.1)
num                 (version: [distributed with Ocaml])
num-top             (version: 1.7.1)
num.core            (version: [internal])
ocamlbuild          (version: [distributed with Ocaml])
ocamldoc            (version: [distributed with Ocaml])
ogg                 (version: 0.7.0)
ogg.decoder         (version: 0.7.0)
pcre                (version: 7.2.3)
pulseaudio          (version: 0.1.4)
raw_spacetime       (version: [distributed with Ocaml])
result              (version: 1.5)
samplerate          (version: 0.1.6)
sexplib0            (version: v0.13.0)
ssl                 (version: 0.5.9)
stdlib              (version: [distributed with Ocaml])
str                 (version: [distributed with Ocaml])
threads             (version: [distributed with Ocaml])
threads.posix       (version: [internal])
threads.vm          (version: [internal])
unix                (version: [distributed with Ocaml])
vorbis              (version: 0.8.0)
vorbis.decoder      (version: 0.8.0)
toots commented 3 years ago

Hi,

Unfortunately, I don't think that we want to support building with these old versions. There has been too many changes and also bug fixes since then to be able to properly help.

For the issue at hands, you probably need to find out what version of the mm module is compatible with 1.3.7. I'd start by testing with the version that was published at the time 1.3.7 was built.