Skip to main content
Version: 3.0.0-beta.2

LibreTime 3.0.0 alpha 11

This version was released the 2022-03-28.

info

Please report new issues and/or feature requests in the issue tracker.

For general discussion or if you need help, you can join the discourse forum or chat on the mattermost server.

The full tarball for the 3.0.0-alpha.11 release of LibreTime is available here.

💖 Contributors​

The LibreTime project wants to thank the following contributors for authoring PRs to this release:

  • @jooola
  • @paddatrapper

🚀 Features​

  • Use setuptools entrypoints (#1409)
  • Support php7.4 (#1354)
  • run API tests in CI (#1421)
  • add support for Ubuntu Focal 20.04 (#1168)
  • debian 11 support (#1292)
  • create libretime_shared package (#1349)
  • enhance libretime shared (#1491)
  • shared: let user provide the log level (#1493)
  • replace verbosity flag with log-level flag (#1496)
  • playout: enhance playout logging (#1495)
  • api: update env var settings loading
  • api: allow to run without log file for dev
  • analyzer: enhance analyzer cli and logging (#1507)
  • playout: migrate notify cli to click (#1519)
  • shared: allow loading from ini config file
  • shared: allow cli parametrized decorators (#1527)
  • shared: add suffix to shared config models
  • analyzer: load config using shared helpers
  • playout: change playout working directory
  • playout: load config using shared helpers
  • analyzer: analyze replaygain using ffmpeg
  • analyzer: analyze cuepoint using ffmpeg
  • playout: change liquidsoap working dir (#1547)
  • legacy: rename log filepath (#1551)
  • shared: add url/dsn property to config classes (#1553)
  • remove locale generation from installer (#1560)
  • legacy: consolidate constants (#1558)
  • legacy: add db config defaults and allow custom port (#1559)
  • remove unused ubuntu ppa (#1591)
  • analyzer: do verify ssl certs on requests
  • analyzer: rework analyze_metadata step
  • api: improve uwsgi systemd integration (#1614)
  • analyzer: rework organise_file using pathlib
  • shared: load config from str filepath
  • shared: create general config model
  • shared: create time functions
  • shared: return log level and filepath
  • remove unused web_server_user config entry
  • legacy: clean config parsing and add defaults
  • api_client: load config using shared helpers
  • worker: load config using shared helpers
  • shared: do not exit on missing config file
  • api: remove admin app and static files
  • api: load config using shared helpers
  • legacy: replace massivescale/celery-php with jooola/celery-php
  • worker: set celery timezone to UTC
  • api: include id in file/webstream serializers
  • remove uninstall script (#1682)
  • worker: add service log filepath (#1640)

🐛 Bug fixes​

  • remove rogue buster reference
  • correct vagrantfile function call
  • declare pypo.notify module
  • revert removal of eval for shell commands
  • add missing dependencies to celery module
  • assume api client is installed
  • shared: fix tests
  • change filepath options type to pathlib.Path (#1506)
  • legacy: validate id param in show image controller (#1510)
  • playout: optional log_file for liquidsoap
  • shared: require click >=8.0.3
  • legacy: correct linting issues
  • make vagrant source.list update idempotent (#1520)
  • api: duplicate exception raising and close file
  • legacy: api migration config variable name (#1522)
  • shared: prevent child override by empty dict
  • shared: tmp_path fixture type mismatch
  • analyzer: install missing steps package
  • shared: type is required for default config submodel (#1536)
  • legacy: default values when array is null
  • legacy: do not catch too broad exceptions
  • legacy: add more null check in api live info
  • legacy: only render if img creation succeed (#1540)
  • shared: pin loguru version
  • legacy: clean sql migrations files (#1545)
  • shared: set logger encoding and dont assume encoding
  • playout: proper logger format string
  • playout: only exclude ended file event
  • api_client: use same date format as schedule key
  • api_client: properly enclose events in media dict
  • playout: properly populate scheduled_now_webstream
  • legacy: revert default storage path (#1563)
  • legacy: update setup with new db config schema (#1567)
  • shared: do not strip vhost slash (#1594)
  • analyzer: remove bad attributes in shutdown handler (#1605)
  • analyzer: update docstring for organise_file
  • shared: fix missing port in public_url
  • change celery user in worker service file (#1638)
  • api: model_bakery is a dev dependency
  • api: static_url settings is required in dev mode (#1662)
  • api_client: comply to legacy schedule events
  • playout: remove stream_buffer_start in event dispatch
  • add PPA for newer liquidsoap version on Ubuntu
  • upgrade python packages during install (#1707)
  • installer: test and create correct log path
  • installer: remove rougue reference to /var/log/airtime (#1710)
  • installer: remove /var/tmp/airtime reference
  • worker: drop logfile reference until environment variable expansion works correctly

⬆️ Upgrading​

Analyzer certificate verification​

Analyzer no longer ignore certificate verification when performing a request. We recommend using Let's Encrypt to get a certificate. If you do rely on self signed certificate, please read the requests documentation to provide a CA Bundle to verify the cert using environment variables.

Analyzer new command line interface​

The Analyzer command line interface has been reworked and uses new flags.

  • --debug flag becomes --log-level <level>
  • --rmq-config-file flag becomes --config <filepath>
  • --http-retry-queue-file flag becomes --retry-queue-filepath.
  • retry-queue-filepath default value changed from /tmp/airtime_analyzer_http_retries to retry_queue in the working directory.

New configuration schema and validation​

The configuration file parsing was improved with validation and the configuration schema was updated. Some deprecated fields were removed and other were renamed.

The general section has been changed:

  • the general.web_server_user entry was removed
  • the general.cache_ahead_hours entry now defaults to 1
  • the general.airtime_dir entry is deprecated and can be removed
  • the general.station_id entry is deprecated and can be removed
  • the general.protocol (http or https) entry is recommended over the general.force_ssl entry.
  • the general.force_ssl entry should either be removed or set to a value (true or false), an empty value will fail validation.

The storage (current_backend) section has been changed:

  • the current_backend.storage_backend entry now defaults to the only valid value file.
note

You can remove the entire current_backend section from your configuration file.

The database section has been changed:

  • the database.* entries now have defaults
  • the database.port entry was added and defaults to 5432
  • the database.dbname entry was renamed to database.name
  • the database.dbuser entry was renamed to database.user
  • the database.dbpass entry was renamed to database.password

The rabbitmq section has been changed:

  • the rabbitmq.* entries now have defaults

The pypo section has been changed:

  • the pypo section was renamed to playout
  • the pypo.ls_* entries were renamed to playout.liquidsoap_*
  • the pypo.*_dir entries were removed
  • the pypo.api_client entry was removed
  • the pypo.record_file_type entry was renamed to playout.record_file_format
  • the pypo.base_recorded_files entry was removed
  • the pypo.poll_interval entry was removed
  • the pypo.push_interval entry was removed
  • the pypo.cue_style entry was removed

The deprecated sections monit and facebook are unused, they can be removed from your configuration file.

Unless you use a custom auth mechanism, the ldap section can be removed from your configuration file.

Remove any quoted values in your configuration file, validation might fail otherwise. See the following example:

# The previously quoted value
ls_port = '1234'
# should become
liquidsoap_port = 1234

Please see the configuration documentation for more details.

Environment variables​

The API configuration environment variables names changed:

  • LIBRETIME_CONF_DIR was removed
  • LIBRETIME_CONF_FILE was renamed to LIBRETIME_CONFIG_FILEPATH

The Analayzer configuration environment variables names changed:

  • LIBRETIME_CONF_DIR environment variable was replaced with LIBRETIME_CONFIG_FILEPATH.

The Worker configuration environment variables names changed:

  • RMQ_CONFIG_FILE was renamed to LIBRETIME_CONFIG_FILEPATH.

Log files new paths​

When running Playout from the command line, the service won't log to a file by default. When running Playout as a systemd service, the log file moved from /var/log/airtime/pypo/pypo.log to /var/log/libretime/playout.log

The Playout Notify log file at /var/log/airtime/pypo-liquidsoap/notify.log was removed and merged into the existing /var/log/libretime/liquidsoap.log log file.

When running Liquidsoap from the command line, the service won't log to a file by default. When running Liquidsoap as a systemd service, the log file moved from /var/log/airtime/pypo-liquidsoap/ls_script.log to /var/log/libretime/liquidsoap.log

The Legacy log file moved from /var/log/airtime/zendphp.log to /var/log/libretime/legacy.log

The API log file moved from /var/log/airtime/api.log to /var/log/libretime/api.log

Run the following command to create the new and clean the old log directory:

sudo mkdir -p /var/log/libretime
sudo chown -R www-data:www-data /var/log/libretime

sudo rm -rf /var/log/airtime

Services new working directories​

When running Playout as a systemd service, the working directory changed from /var/tmp/airtime/pypo/ to /var/lib/libretime/playout. When running from the command line, the users current working directory is now used by default.

When running Liquidsoap as a systemd service, the working directory is now /var/lib/libretime/playout. When running from the command line, the users current working directory is now used by default.

When running Analyzer as a systemd service, the working directory is now /var/lib/libretime/analyzer.

When running Worker (celery) as a systemd service, the working directory changed from /srv/airtime to /var/lib/libretime/worker.

Run the following command to clean the old directory:

sudo rm -rf /var/tmp/airtime/pypo/

Analyzer new ffmpeg based steps​

The Analyzer now requires ffmpeg. The silan system dependency and the rgain3 python package and it's system dependencies can be removed.

Run the following command to clean the old packages:

sudo apt purge silan

sudo apt purge \
gir1.2-gtk-3.0 \
libcairo2-dev \
libgirepository1.0-dev \
libglib2.0-dev \
pkg-config \
python3-cairo \
python3-dev \
python3-gi \
python3-gi-cairo \
python3-gst-1.0
sudo pip3 uninstall rgain3

No static files for the API​

The API doesn't rely on static files in production anymore.

Run the following command to clean the old files:

sudo rm -rf /usr/share/airtime/api

⚠️ Known issues​

The following issues may need a workaround for the time being. Please search the issues before reporting problems not listed below.

Ubuntu 18.04 Playout Status​

The playout status notifications in the web interface aren't working. The issue is tracked in #1606. The playout works correctly and can be heard in Icecast, however the On Air button is greyed out and the status reported on the Streams status page can report errors connecting to Liquidsoap. The current workaround is to upgrade the server to Ubuntu 20.04.