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.
Join our discourse or chat with us on our mattermost if you need help and for general discussion.
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
toretry_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
orhttps
) entry is recommended over thegeneral.force_ssl
entry. - the
general.force_ssl
entry should either be removed or set to a value (true
orfalse
), 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 valuefile
.
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 to5432
- the
database.dbname
entry was renamed todatabase.name
- the
database.dbuser
entry was renamed todatabase.user
- the
database.dbpass
entry was renamed todatabase.password
The rabbitmq
section has been changed:
- the
rabbitmq.*
entries now have defaults
The pypo
section has been changed:
- the
pypo
section was renamed toplayout
- the
pypo.ls_*
entries were renamed toplayout.liquidsoap_*
- the
pypo.*_dir
entries were removed - the
pypo.api_client
entry was removed - the
pypo.record_file_type
entry was renamed toplayout.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 backend, 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 removedLIBRETIME_CONF_FILE
was renamed toLIBRETIME_CONFIG_FILEPATH
The Analayzer configuration environment variables names changed:
LIBRETIME_CONF_DIR
environment variable was replaced withLIBRETIME_CONFIG_FILEPATH
.
The Worker configuration environment variables names changed:
RMQ_CONFIG_FILE
was renamed toLIBRETIME_CONFIG_FILEPATH
.
Log files new paths
When running Playout from the command line, the service will not 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 will not 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 does not 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 are not 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.