Closed desavil closed 6 years ago
Just ran into this as well trying to run liquidsoap from the savonet/liquidsoap-full Docker image.
I also run into this issue liquidsoap --version = Liquidsoap 1.3.3+scm
No, this just broke our station :(
Trying to downgrade liquidsoap.
Edit: Meh, older versions do not compile with recent ocaml :(
@5chdn yeah this is a pretty big issue. @toots any idea if this can be fixed easily?
@toots I'm willing to place a bounty on 2-3 critical issues here if this helps. I would love to see a more stable 1.3.4 version released if possible. just let me know what you need to get this done!
I sent a PayPal donation to this issue a month ago, but nothing has changed in this issue. :(
Looking at it right now. @5chdn Mind sending a list of issues? I definitely want to do a 1.3.4
shortly.
Y'all have any reproduction steps? This works for me:
liquidsoap 'output.ao(fallible=true,input.http("http://50.31.135.43:80/wwoz-hi.mp3"))'
Try with some SHOUTcast server, e.g.:
input.http("http://37.59.32.115:6168/stream")
Mind sending a list of issues?
Well, I'm on Archlinux and yesterday I upgraded from 1.3.3-1 to 1.3.3-2 (AUR package) and as always I have to rebuild all ocaml- dependencies and gstreamer- plugins to correctly link the binary. So I am basically forced to update liquidsoap every few months, otherwise I wouldn't be able to restart the service.
Yesterday, I broke a whole small non-profit radio station beyond repair by installing the update.
First of all MAD encoder is broken in 1.3.3 - it simply segfaults. It's probably this issue #526 - but going through the bug tracker, there are a few more open tickets talking segfaults. I'm happy to provide more details. I was able to circumvent this by disabling my FLAC endpoint, the MP3 endpoint is still working, fortunately.
Even worse, the input.http()
is silently not working anymore. I almost didn't notice that in first place. This is this issue we are in here #546. It's easily reproducible by trying to relay one mountpoint via input.http()
to another mountpoint. This basically broke the ability to relay live streams on our station and I have no idea for any other simple workaround.
Third issue that's really bothering is an unable to decode
problem reading any mp3 file from disk. This does not happen when I start liquidsoap but only after a while leaving it running. I noticed, this triggers when a new playlist is loaded (e.g., through a switch
). Simply restarting liquidsoap solves this, but I have no idea why this happens. Couldn't find any issue like this on the bug tracker yet. My workaround is to play one random playlist 24/7 so we don't run into this issue.
With these three issues above we are running in kind of emergency mode, we barely are able to keep the records spinning on our station.
Now, I was considering a downgrade to 1.3.2 maybe, but with the latest ocaml update in the Archlinux repositories, older versions do not compile anymore and it's beyond my skills to figure out patches.
Please let me know what you need to get these issues fixed. I always loved liquidsoap for it's stability and I suspect most of the issues are related to external plugins misbehaving (and most recent ocaml incompatibilities). This station has been running for several years without any blackouts - thank you for that. Let's hope we can get back to this state again :)
Y'all have any reproduction steps?
Exactly what @desavil describes, just with an icecast mountpoint on my end.
@desavil. @5chdn: they're both working here. What is y'all OS and libmad version? Also, it would help if y'all could provide a simple one-liner I could use to reproduce the issue.
@5chdn:
Looking at your issues, actually, it sounds like some corruption in the stack. I would strongly recommend trying to build something from scratch, including the OCaml compiler, just to put aside any issue that could be brought in by some distro-specific patches/changes. Are you familiar with the opam
install? This should allow us to test from clean code and also potentially downgrade OCaml version in case something is coming from a recent OCaml release (though I hope unlikely).
Thanks for the feedback y'all, I hear the frustration, let's hope we can fix this ASAP.
I personally was able to reproduce the bug by streaming to an Icecast version 2.4.3 server, then using input.http
to receive it in combination with a fallback
that is track-insensitive (for example falling back to a sine
source). Streaming this out again with output.icecast
and running it with telnet port enabled, then starting to stream something on the Icecast input tells me that the live input is stuck in a polling state and therefor it will never switch to the http input source.
@toots sure, I will dedicate some time to a fresh system setup for debugging tonight. Are you on IRC or Riot somewhere?
Linux 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux (Debian 9, 64 bit).
My full configuration:
set("log.stdout",false)
set("init.daemon",true)
set("init.daemon.pidfile.path","/home/liquidsoap.pid")
set("log.file.path","/home/liquidsoap.log")
radio = mksafe(input.http("http://shoutcast:port"))
output.shoutcast(%mp3(bitrate=128,samplerate=44100,internal_quality=7),name="Title",genre="Genre",url="http://mysite.com",public=false,host="shoutcast",port=8000,password="hackme",on_error=(fun (_) -> 5.),radio)
Log file:
2018/06/13 14:53:12 [map_metadata_6342:3] Inserting missing metadata. 2018/06/13 14:53:12 [mksafe:3] Switch to safe_blank. 2018/06/13 14:53:12 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock. 2018/06/13 14:53:12 [threads:3] Created thread "wallclock_main" (2 total). 2018/06/13 14:53:12 [output(dot)shoutcast:3] Connection setup was successful. 2018/06/13 14:53:12 [output(dot)shoutcast:3] Connecting mount sid#1 for @shoutcast... 2018/06/13 14:53:12 [threads:3] Created thread "http polling" (1 total). 2018/06/13 14:53:12 [threads:3] Created thread "non-blocking queue #2". 2018/06/13 14:53:12 [threads:3] Created thread "non-blocking queue #1". 2018/06/13 14:53:12 [threads:3] Created thread "generic queue #2". 2018/06/13 14:53:12 [threads:3] Created thread "generic queue #1". 2018/06/13 14:53:12 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks. 2018/06/13 14:53:12 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks. 2018/06/13 14:53:12 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples. 2018/06/13 14:53:12 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master. 2018/06/13 14:53:12 [main:2] 2018/06/13 14:53:12 [main:2] We hope you enjoy this snapshot build of Liquidsoap! 2018/06/13 14:53:12 [main:2] 2018/06/13 14:53:12 [main:2] at https://github.com/savonet/liquidsoap/issues. 2018/06/13 14:53:12 [main:2] Please send any bug report or feature request 2018/06/13 14:53:12 [main:2] 2018/06/13 14:53:12 [main:2] or to join the #savonet IRC channel on Freenode. 2018/06/13 14:53:12 [main:2] drop us a mail at savonet-devl@lists.sf.net 2018/06/13 14:53:12 [main:2] the development of Liquidsoap, feel free to 2018/06/13 14:53:12 [main:2] If you are interested in collaborating to 2018/06/13 14:53:12 [main:2] 2018/06/13 14:53:12 [main:2] issues as soon as possible. 2018/06/13 14:53:12 [main:2] about our development code and committed to fix 2018/06/13 14:53:12 [main:2] We are, however, very interested in any feedback 2018/06/13 14:53:12 [main:2] 2018/06/13 14:53:12 [main:2] unless you know what you are doing! 2018/06/13 14:53:12 [main:2] As such, it should not be used in production 2018/06/13 14:53:12 [main:2] compiled from a snapshot of the development code. 2018/06/13 14:53:12 [main:2] DISCLAIMER: This version of Liquidsoap has been 2018/06/13 14:53:12 [main:2] 2018/06/13 14:53:12 [main:3] Using: bytes=[distributed with OCaml 4.02 or above] pcre=7.2.3 dtools=0.3.4 duppy=0.7.1 duppy.syntax=0.7.1 cry=0.6.1 mm=0.4.0 xmlplaylist=0.1.4 lastfm=0.3.1 ogg=0.5.2 vorbis=0.7.1 mad=0.4.5 flac=0.1.4 flac.ogg=0.1.4 dynlink=[distributed with Ocaml] lame=0.3.3 fdkaac=0.2.1 ao=0.2.2 samplerate=0.1.4 taglib=0.3.4 ssl=0.5.5 magic=0.7.3 camomile=1.0.1 faad=0.3.3 2018/06/13 14:53:12 [main:3] Liquidsoap 1.3.3+scm (git://github.com/savonet/liquidsoap.git@463c6f08bbcb9b53f8d5f3efce29e1cd55382b93:20180413:014222) 2018/06/13 14:53:12 >>> LOG START
Sorry y'all I still cannot reproduce. Here's what I have:
icecast
1.3.3-1
from opam
4.05.0
My script:
set("log.stdout",false)
set("init.daemon",true)
set("init.daemon.pidfile.path","/tmp/liquidsoap.pid")
set("log.file.path","/tmp/liquidsoap.log")
output.icecast(port=8000,mount="test",%mp3,mksafe(input.http("http://50.31.135.43:80/wwoz-hi.mp3")))
Could any of y'all try my script or the simpler one-liner above to see if the issue exists with these examples? Otherwise, could you give me more specifics like a shoutcast server to hit?
@toots Check your e-mail messages. I sent you a config with shoutcast 2 servers and passwords which worked on earlier versions.
Thanks. Looks like the stream is in use so I can't connect but I've been seeing some buffer overrun. Have you tried to increase the max buffer: input.http(max=40.,...)
?
Actually sorry it's working now. Strike that :-)
Ok, sorry. It's running now with max=40.
. Seems stable for now.
@toots Only you. No one else connects. Stream Source: | 86.214.91.xxx [ kick ] Stream Uptime: | 16 minutes 28 seconds
Yeah, it's working. I'll let it run to see if it's stable with max=40.
then try again with default params and report back.
Ok. :)
Unfortunately, I can still hear the silence. :(
Might be an issue with mksafe()
actually. Trying with fallible=true
now.
I changed from: mksafe(input.http(max=40.,"http://ip:port"))
to: input.http(max=40.,"http://ip:port",fallible=true)
But I get an error:
At line 4, char 120-123: cannot apply that parameter because the function (at line 4, char 83) has no argument labeled "fallible"!
You need to put it at the output level:
output.shoutcast(fallible=true,...)
And remove mksafe()
2018/06/13 16:54:21 [output(dot)shoutcast:3] Source failed (no more tracks) stopping output...
And liquidsoap no connect to output shoutcast server.
Damn. I mean this is what's expected. Can you confirm that the script you sent me is working on your shoutcast now?
So, it looks like the script you sent me is working here with or without mksafe()
.
I do not know what is wrong. I still do not work with me. :(
@desavil: OS/OS version/OCaml version/install method?
OS: Latest Debian 9 (64 bit) Liquidsoap installed from sources (compile), full steps:
adduser --system --shell /bin/bash --group --disabled-password liquidsoap
apt-get -y install opam unzip curl git-core libfftw3-dev pkg-config autoconf make automake libtool-bin ocaml opam libao-ocaml-dev libportaudio-ocaml-dev libpulse-ocaml-dev libmad-ocaml-dev libssl-ocaml-dev libtaglib-ocaml-dev libmp3lame-ocaml-dev libogg-ocaml-dev libvorbis-ocaml-dev libopus-ocaml-dev libfdkaac-ocaml-dev libfaad-ocaml-dev libflac-ocaml-dev libsamplerate-ocaml-dev libmagic-ocaml-dev
su liquidsoap
cd
git clone https://github.com/savonet/liquidsoap-full.git
opam init [Select: N]
eval `opam config env`
opam install base-bytes pcre camomile lastfm samplerate magic ssl [Select: y]
cd liquidsoap-full && make init && make update && cp PACKAGES.minimal PACKAGES && sed -i "s/#ocaml-fdkaac/ocaml-fdkaac/g" PACKAGES && sed -i "s/#ocaml-faad/ocaml-faad/g" PACKAGES && ./bootstrap && ./configure && make
exit
cd /home/liquidsoap/liquidsoap-full && make install
Thanks. Gonna test it inside a docker container, will report asap.
Okkkay! I was able to track it down to a piece of code that'd been added since 1.3.3
. In other word @desavil's issue didn't apply to the latest released version.
I'm very happy to have this fixed, thanks for your patience. Couple of remarks from this conversaion:
@desavil: you shouldn't install all these *-ocaml-dev
debian packages since you're either installing the packages via opam
or in the liquidsoap-full
source tree. I really recommend avoiding it because it can create confusion or worst potential binary incompatibilities. The way to go to install Debian packages required before you build is via opam depext
:
opam depext base-bytes pcre camomile lastfm samplerate magic ssl ao cry dtools duppy faad fdkaac flac lame mad mm ogg taglib vorbis
@icedream, @5chdn and others: I forgot that input.http
has debug
parameter. I'm gonna close this issue now but if you still see issues with input.http
, please try again with debug=true
and perhaps set("log.level",4)
and open a new issue.
I'll post an email in the mailing list soon. tl;dr I don't really have much time for liquidsoap dev these days but I'm down to be available for quick bug fixes like this in the next 4 weeks or so and publish a 1.3.4
stable release along with a call for action to try to find some help to keep this project moving.
Thanks y'all.
Having a hard time to install from source. It requires mm >= 0.4.0 but neither opam nor archlinux repositories have that version.
checking for ocaml mm module >= 0.4.0... configure: error: requires version >= 0.4.0 found 0.3.1.
1 ✗ user@tauris ~/src/liquidsoap $ opam install mm
[NOTE] Package mm is already installed (current version is 0.3.1).
0 ✓ user@tauris ~/src/liquidsoap $ pacaur -Ss ocaml-mm
aur/ocaml-mm 0.3.1-1 (0, 0.00) [installed]
OCaml multimedia library
Interestingly, there seems not to be any mm release >= 0.4.0 at all: https://github.com/savonet/ocaml-mm/releases
Also, vorbis does not compile, I see you created a fix commit, but never released 0.7.1 - can you do that?
I managed to install vorbis from source. However, lastfm does not work:
checking for ocaml-xmlplaylist... configure: error: Not found.
Even though it's installed. And I keep going down this rabbit hole. xmlplaylist from source fails because it requires xmlm, xmlm fails because it requires ocamlbuild, but that does not compile. What the hell happened to the ocaml ecosystem? So many broken packages?
And liquidsoap does not compile either.
$ make -j 16
make[1]: Entering directory '/home/user/src/liquidsoap/src'
make[2]: Entering directory '/home/user/src/liquidsoap/src/tools'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/tools'
make[2]: Entering directory '/home/user/src/liquidsoap/src/decoder'
make[3]: Entering directory '/home/user/src/liquidsoap/src/decoder/image'
make[2]: Entering directory '/home/user/src/liquidsoap/src'
OCAMLOPT -c outputs/ao_out.ml
OCAMLOPT -c outputs/icecast2.ml
make[3]: Leaving directory '/home/user/src/liquidsoap/src/decoder/image'
OCAMLOPT -c operators/insert_metadata.ml
OCAMLOPT -c operators/map_metadata.ml
make[2]: Leaving directory '/home/user/src/liquidsoap/src/decoder'
OCAMLOPT -c operators/on_metadata.ml
OCAMLOPT -c operators/store_metadata.ml
OCAMLOPT -c operators/on_track.ml
make[2]: Entering directory '/home/user/src/liquidsoap/src/playlists'
OCAMLOPT -c operators/on_end.ml
OCAMLOPT -c operators/delay.ml
OCAMLOPT -c operators/fade.ml
make[2]: Leaving directory '/home/user/src/liquidsoap/src/playlists'
OCAMLOPT -c operators/add.ml
OCAMLOPT -c operators/sequence.ml
make[2]: Entering directory '/home/user/src/liquidsoap/src/encoder'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/encoder'
OCAMLOPT -c operators/compress_exp.ml
OCAMLOPT -c operators/pitch.ml
make[2]: Entering directory '/home/user/src/liquidsoap/src/protocols'
OCAMLOPT -c operators/pipe.ml
OCAMLOPT -c operators/fir_filter.ml
OCAMLOPT -c operators/iir_filter.ml
make[2]: Leaving directory '/home/user/src/liquidsoap/src/protocols'
OCAMLOPT -c operators/filter_rc.ml
make[2]: Entering directory '/home/user/src/liquidsoap/src/plugins'
OCAMLOPT -c operators/biquad_filter.ml
OCAMLOPT -c operators/cuepoint.ml
OCAMLOPT -c operators/map_op.ml
OCAMLOPT -c operators/flanger.ml
make[2]: Leaving directory '/home/user/src/liquidsoap/src/plugins'
make[2]: Entering directory '/home/user/src/liquidsoap/src/stream'
File "outputs/ao_out.ml", line 106, characters 25-29:
Error: This expression has type string -> unit
but an expression was expected of type Bytes.t -> unit
Type string is not compatible with type Bytes.t = bytes
make[2]: *** [../Makefile.rules:192: outputs/ao_out.cmx] Error 2
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/home/user/src/liquidsoap/src/stream'
make[2]: Entering directory '/home/user/src/liquidsoap/src/lang'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/lang'
make[2]: Entering directory '/home/user/src/liquidsoap/src/ogg_formats'
File "operators/pipe.ml", line 130, characters 33-37:
Error: This expression has type bytes but an expression was expected of type
string
make[2]: *** [../Makefile.rules:192: operators/pipe.cmx] Error 2
make[2]: Leaving directory '/home/user/src/liquidsoap/src/ogg_formats'
make[2]: Entering directory '/home/user/src/liquidsoap/src/converters'
make[3]: Entering directory '/home/user/src/liquidsoap/src/converters/audio'
make[3]: Leaving directory '/home/user/src/liquidsoap/src/converters/audio'
make[3]: Entering directory '/home/user/src/liquidsoap/src/converters/video'
make[3]: Leaving directory '/home/user/src/liquidsoap/src/converters/video'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/converters'
make[2]: Entering directory '/home/user/src/liquidsoap/src/operators'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/operators'
make[2]: Entering directory '/home/user/src/liquidsoap/src/sources'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/sources'
make[2]: Entering directory '/home/user/src/liquidsoap/src/conversions'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/conversions'
make[2]: Entering directory '/home/user/src/liquidsoap/src/outputs'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/outputs'
make[2]: Entering directory '/home/user/src/liquidsoap/src/io'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/io'
make[2]: Entering directory '/home/user/src/liquidsoap/src/visualization'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/visualization'
make[2]: Entering directory '/home/user/src/liquidsoap/src/analyze'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/analyze'
make[2]: Entering directory '/home/user/src/liquidsoap/src/synth'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/synth'
make[2]: Entering directory '/home/user/src/liquidsoap/src/harbor'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/harbor'
make[2]: Entering directory '/home/user/src/liquidsoap/src/lang_encoders'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/lang_encoders'
make[2]: Entering directory '/home/user/src/liquidsoap/src/encoder_formats'
make[2]: Leaving directory '/home/user/src/liquidsoap/src/encoder_formats'
make[2]: Leaving directory '/home/user/src/liquidsoap/src'
make[1]: *** [../Makefile.rules:67: all-auto-ocaml-prog] Error 2
make[1]: Leaving directory '/home/user/src/liquidsoap/src'
make: *** [Makefile.rules:27: all-subdirs] Error 2
I'm losing hope. I came here to debug this, but I can't even get the basic stuff working on a fresh system. I don't know where to start.
@5chdn: I initially meant to install the latest released version but since you're there already, what you should do is go with the full tarball. Here's a quick and untested way to go, with opam
already installed:
eval `opam config env`
# Install OS packages:
opam depext liquidsoap ao cry dtools duppy flac lame mad mm ogg taglib vorbis
# Install external deps:
opam install base-bytes pcre camomile
# Now the sources (you need git installed):
git clone https://github.com/savonet/liquidsoap-full.git
# Build stuff
cd liquidsoap-full && make init && make update && cp PACKAGES.minimal PACKAGES && \
./bootstrap && ./configure && make
# As root:
make install
That should get you pretty close to testing the latest code.
Okay, let me try this. I removed all pacakages from repository and opam and start from scratch. Having three different options to get the packages certainly leads to too many conflicts.
0 ✓ user@tauris ~/src/liquidsoap-full $ pacaur -Qs ocaml
local/cppo 1.6.4-1
C-style preprocessor for OCaml
local/dune 1.0b19.1-1
A composable build system for OCaml (formerly jbuilder)
local/ocaml 4.06.0-2
A functional language with OO extensions
local/ocaml-compiler-libs 4.06.0-2
Several modules used internally by the OCaml compiler
local/ocaml-findlib 1.8.0-1
OCaml package manager
local/opam 1.2.2-4
OCaml package manager
0 ✓ user@tauris ~/src/liquidsoap-full $ opam list
# Installed packages for system:
base-bigarray base Bigarray library distributed with the OCaml compiler
base-threads base Threads library distributed with the OCaml compiler
base-unix base Unix library distributed with the OCaml compiler
Getting the deps.
0 ✓ user@tauris ~/src/liquidsoap-full $ eval `opam config env`
0 ✓ user@tauris ~/src/liquidsoap-full $ opam depext liquidsoap ao cry dtools duppy flac lame mad mm ogg taglib vorbis
OPAM plugin depext is not installed. Install it on the current switch? [Y/n] Y
The following actions will be performed:
∗ install depext 1.0.5
=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[depext] Archive in cache
=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
∗ installed depext.1.0.5
Done.
=-=- Carrying on to "opam depext liquidsoap ao cry dtools duppy flac lame mad mm ogg taglib vorbis"
# Detecting depexts using flags: x86_64 linux archlinux
# The following system packages are needed:
# - flac
# - libmad
# - libogg
# - m4
# - pkg-config
flac 1.3.2-1
libmad 0.15.1b-8
libogg 1.3.3-2
m4 1.4.18-1
pkgconf 1.4.2-2
# All required OS packages found.
0 ✓ user@tauris ~/src/liquidsoap-full $ opam install base-bytes pcre camomile
The following actions will be performed:
∗ install jbuilder 1.0+beta20 [required by camomile, pcre]
∗ install conf-m4 1 [required by ocamlfind]
∗ install conf-pkg-config 1.1 [required by conf-libpcre]
∗ install sexplib0 v0.11.0 [required by base]
∗ install camomile 1.0.1
∗ install ocamlfind 1.8.0 [required by base-bytes]
∗ install conf-libpcre 1 [required by pcre]
∗ install base v0.11.0 [required by pcre]
∗ install base-bytes base
∗ install stdio v0.11.0 [required by pcre]
∗ install configurator v0.11.0 [required by pcre]
∗ install pcre 7.3.4
===== ∗ 12 =====
Do you want to continue ? [Y/n] y
=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[base] Archive in cache
[camomile] Archive in cache
[configurator] Archive in cache
[jbuilder] Archive in cache
[ocamlfind] Archive in cache
[pcre] Archive in cache
[sexplib0] Archive in cache
[stdio] Archive in cache
=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
∗ installed conf-m4.1
∗ installed conf-pkg-config.1.1
∗ installed conf-libpcre.1
∗ installed ocamlfind.1.8.0
∗ installed base-bytes.base
∗ installed jbuilder.1.0+beta20
∗ installed sexplib0.v0.11.0
∗ installed base.v0.11.0
∗ installed camomile.1.0.1
∗ installed stdio.v0.11.0
∗ installed configurator.v0.11.0
∗ installed pcre.7.3.4
Done.
Configuration.
----------------------------------------------------------------- Compilation
Compiler : ocamlfind ocamlopt
Version : 4.06.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 -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-dtools/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-duppy/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-duppy/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-cry/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-mm/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-ogg/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-vorbis/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-mad/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-flac/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-flac/src -package dynlink -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-lame/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-ao/src -I /home/user/src/liquidsoap-full/liquidsoap/../ocaml-taglib/src -package camomile
OCAML_LFLAGS : -g -linkpkg -package unix -package threads -package str -package bigarray -cc "$(CC)" -package str -package unix -package threads dtools.cmxa -package unix -package threads -package pcre -package bigarray -package camlp4 duppy.cmxa -package unix -package threads -package pcre -package bigarray -package camlp4 duppy.cmxa -package unix -package bytes cry.cmxa -package unix -package bigarray mm.cmxa ogg.cmxa -package unix vorbis.cmxa -package unix mad.cmxa flac.cmxa flac.cmxa lame.cmxa ao.cmxa -package unix taglib.cmxa
CFLAGS : -I$(top_srcdir) -I/usr/include -fPIC -I/usr/lib/ocaml -g
LDFLAGS : -L/usr/lib
CAMLP4O : camlp4o /home/user/src/liquidsoap-full/liquidsoap/../ocaml-duppy/src/pa_duppy.cmo
---------------------------------------------------------------- Installation
prefix : /usr
exec_prefix : ${prefix}
binary : ${exec_prefix}/bin
configuration : /etc/liquidsoap
logging : /var/log/liquidsoap
PIDs : /var/run/liquidsoap
logrotate conf : /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)
- 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) : yes
- Vorbis : yes
- charset detection : yes
* Input / output
- Icecast/Shoutcast : yes
- AO : yes
- OSS : no
- ALSA : no (requires alsa)
- Portaudio : no (requires portaudio)
- Pulseaudio : no (requires pulseaudio)
- JACK : no (requires bjack)
- GStreamer : no (requires gstreamer)
* Audio manipulation
- Samplerate : no (requires samplerate)
- SoundTouch : no (requires soundtouch)
- LADSPA : no (requires ladspa)
* Video manipulation
- Gavl : no (requires gavl)
- FFmpeg : no (requires ffmpeg)
- 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 : no (requires magic)
- yojson : no (requires yojson)
- ssl : no (requires ssl)
- SecureTransport : no (requires osx-secure-transport)
- windows service : no (requires winsvc)
* Graphical interfaces
- Python GUI : no
Fails in ocaml-lame
:(
make[1]: Entering directory '/home/user/src/liquidsoap-full/ocaml-lame'
make -C src all
make[2]: Entering directory '/home/user/src/liquidsoap-full/ocaml-lame/src'
ocamlc.opt -c -cc "gcc" -ccopt "-g -O2 -I/usr/include -Wall -DCAML_NAME_SPACE \
-fPIC -I/usr/include \
-o lame_stubs.o " lame_stubs.c
make[3]: Entering directory '/home/user/src/liquidsoap-full/ocaml-lame/src'
making ._bcdi/lame.di from lame.mli
making ._d/lame.d from lame.ml
ocamlc.opt -c -g -w +A-4@5-7@8-9@11@12@20-35-44-45-50 lame.mli
ocamlc.opt -c -g -w +A-4@5-7@8-9@11@12@20-35-44-45-50 lame.ml
File "lame.ml", line 1:
Error: Could not find the .cmi file for interface lame.mli.
make[2]: *** [OCamlMakefile:952: lame.cmo] Error 2
make[2]: *** Waiting for unfinished jobs....
ocamlc.opt -c -cc "gcc" -ccopt "-fPIC -g -O2 -I/usr/include -Wall -DCAML_NAME_SPACE \
-DPIC -fPIC -I/usr/include \
-o lame_stubs.o " lame_stubs.c
ocamlc.opt -c -g -w +A-4@5-7@8-9@11@12@20-35-44-45-50 lame.ml
ar rcs liblame_stubs.a lame_stubs.o
ocamlmklib -L/usr/lib \
-o lame_stubs lame_stubs.o -lmp3lame -lm \
ocamlc.opt -a -dllib dlllame_stubs.so -ccopt -L/usr/lib -ccopt -L/usr/lib \
-cclib -llame_stubs -cclib -lmp3lame -cclib -lm -o lame.cma lame.cmo
make[3]: Leaving directory '/home/user/src/liquidsoap-full/ocaml-lame/src'
make[2]: Leaving directory '/home/user/src/liquidsoap-full/ocaml-lame/src'
make[1]: *** [Makefile:10: all] Error 2
make[1]: Leaving directory '/home/user/src/liquidsoap-full/ocaml-lame'
make: *** [Makefile:11: all] Error 1
2 ✗ user@tauris ~/src/liquidsoap-full $ pacaur -Qs lame
local/lame 3.100-1
A high quality MPEG Audio Layer III (MP3) encoder
local/twolame 0.3.13-8
An optimized MPEG Audio Layer 2 (MP2) encoder
0 ✓ user@tauris ~/src/liquidsoap-full $ uname -a
Linux tauris 4.16.13-2-ARCH #1 SMP PREEMPT Fri Jun 1 18:46:11 UTC 2018 x86_64 GNU/Linux
That's odd. Are you compiling in parallel like make -j
? This isn't supported by some bindings, specially ocaml-lame
actually.
@toots indeed, I used -j
and dropping this allowed me to build it from source. Also, I was able to install the latest version with your fix. :+1:
I can confirm now, that input.http()
is working again. The FLAC issue (segfault) still persists, but I can deal with it, we disabled that encoder for the time being.
Please, tell me where I can send donations. I couldn't find a link. :raised_hands:
Great to hear! The flac encoder is unfortunately inherently hackish so I'm not surprised. But I don't think it's quite a realistic streaming encoder, unless you're using it for file archival?
Donation are through paypal at savonet.donations@gmail.com
. Much appreciated!
Will reach out to the ML this weekend. Thanks!
Thanks. I sent a little appreciation.
As in the title. The function input.http() does not work at the latest version of liquidsoap (1.3.3 installed from sources).
There is no error or message in the logs. The stream goes into safe_blank.
In older liquidsoap versions it worked. Please fix it.