From 30bedcafccc4145777839f78642ec16e7b843a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?To=CF=80?= Date: Fri, 21 Jul 2023 15:20:01 +0200 Subject: [PATCH] release v4.0.0-beta.2 (#923) --- CHANGELOG.md | 5 +++ LavalinkServer/build.gradle.kts | 2 +- LavalinkServer/docker/alpine.Dockerfile | 2 + .../server/config/KoeConfiguration.kt | 3 ++ README.md | 39 ++++++++++++------- settings.gradle.kts | 6 +-- 6 files changed, 40 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cef880bbb..dc71834ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ Each release usually includes various fixes and improvements. The most noteworthy of these, as well as any features and breaking changes, are listed here. +## 4.0.0-beta.2 +* Update lavaplayer to [`08cfbc0`](https://github.com/Walkyst/lavaplayer-fork/commit/08cfbc05953128f3cf727ea3bcbe41dabcd1c7db) - Fixed ogg streaming +* Add JDA-NAS support for musl (`x86-64`, `aarch64`) based systems (most notably `alpine`) +* New config option to specify the directory to load plugins from. `lavalink.pluginsDir` (defaults to `./plugins`) + ## 4.0.0-beta.1 * New Lavalink now requires Java 17 or higher to run * **Removal of all websocket messages sent by the client. Everything is now done via [REST](IMPLEMENTATION.md#rest-api)** diff --git a/LavalinkServer/build.gradle.kts b/LavalinkServer/build.gradle.kts index ad61565fe..fbb61ecae 100644 --- a/LavalinkServer/build.gradle.kts +++ b/LavalinkServer/build.gradle.kts @@ -137,7 +137,7 @@ tasks { archiveFileName.set("Lavalink-musl.jar") // Exclude base dependency jar exclude { - it.name.contains("lavaplayer-natives-fork") || it.name.contains("udpqueue-native-") + it.name.contains("lavaplayer-natives-fork") || (it.name.contains("udpqueue-native-") && !it.name.contains("musl")) } // Add custom jar diff --git a/LavalinkServer/docker/alpine.Dockerfile b/LavalinkServer/docker/alpine.Dockerfile index b410fadc6..e24daeed2 100644 --- a/LavalinkServer/docker/alpine.Dockerfile +++ b/LavalinkServer/docker/alpine.Dockerfile @@ -1,5 +1,7 @@ FROM azul/zulu-openjdk-alpine:17-jre-headless-latest +RUN apk add --no-cache libgcc + # Run as non-root user RUN addgroup -g 322 -S lavalink && \ adduser -u 322 -S lavalink lavalink diff --git a/LavalinkServer/src/main/java/lavalink/server/config/KoeConfiguration.kt b/LavalinkServer/src/main/java/lavalink/server/config/KoeConfiguration.kt index b7f5048e8..41397f506 100644 --- a/LavalinkServer/src/main/java/lavalink/server/config/KoeConfiguration.kt +++ b/LavalinkServer/src/main/java/lavalink/server/config/KoeConfiguration.kt @@ -20,6 +20,9 @@ class KoeConfiguration(val serverConfig: ServerConfig) { SystemType(DefaultArchitectureTypes.X86_32, DefaultOperatingSystemTypes.LINUX), SystemType(DefaultArchitectureTypes.ARMv8_64, DefaultOperatingSystemTypes.LINUX), + SystemType(DefaultArchitectureTypes.X86_64, DefaultOperatingSystemTypes.LINUX_MUSL), + SystemType(DefaultArchitectureTypes.ARMv8_64, DefaultOperatingSystemTypes.LINUX_MUSL), + SystemType(DefaultArchitectureTypes.X86_64, DefaultOperatingSystemTypes.WINDOWS), SystemType(DefaultArchitectureTypes.X86_32, DefaultOperatingSystemTypes.WINDOWS), diff --git a/README.md b/README.md index 733338dd6..be108bf4c 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ A [basic example bot](Testbot) is available. - [Features](#features) - [Requirements](#requirements) +- [Hardware Support](#hardware-support) - [Changelog](#changelog) - [Versioning policy](#versioning-policy) - [Client libraries](#client-libraries) @@ -49,19 +50,28 @@ A [basic example bot](Testbot) is available. * Java 17 LTS or newer required. (we recommend running the latest LTS version or newer) * OpenJDK or Zulu running on Linux AMD64 is officially supported. -Support for Darwin (Mac), Windows AMD64, and Linux ARM (Raspberry Pi) is provided on a best-effort basis. This is dependent on Lavaplayer's native libraries. - -Lavaplayer currently supports following architectures: - -`Darwin (M1 & Intel)`, `Linux aarch32`, `Linux aarch64`, `Linux ARMv7+ 32/64`, `Linux ARMHF(v6) 32`, `Linux i386 32`, `Linux x86 64`, `Windows i386 32` and `Windows x86 64` - -JDA-NAS(Native Audio Buffer) & the Timescale filter are currently not supported on following architectures: - -`Linux ARMHF(v6) 32` and `Linux aarch32` - - Support for other JVMs is also best-effort. Periodic CPU utilization stats are prone not to work everywhere. +## Hardware Support + +Lavalink also runs on other hardware, but support is best-effort. +Here is a list of known working hardware: + +| Operating System | Architecture | Lavaplayer | JDA-NAS | Timescale | AVX2 | +|------------------|--------------|------------|---------|-----------|------| +| linux | x86-64 | ✅ | ✅ | ✅ | ✅ | +| linux | x86 | ✅ | ✅ | ✅ | ✅ | +| linux | arm | ✅ | ✅ | ✅ | ❌ | +| linux | armhf | ✅ | ❌ | ❌ | ❌ | +| linux | aarch32 | ✅ | ❌ | ❌ | ❌ | +| linux | aarch64 | ✅ | ✅ | ✅ | ❌ | +| linux-musl | x86-64 | ✅ | ✅ | ✅ | ✅ | +| linux-musl | aarch64 | ✅ | ✅ | ✅ | ❌ | +| windows | x86-64 | ✅ | ✅ | ✅ | ✅ | +| Windows | x86 | ✅ | ✅ | ✅ | ✅ | +| darwin | x86-64 | ✅ | ✅ | ✅ | ✅ | +| darwin | aarch64e | ✅ | ✅ | ✅ | ❌ | + ## Changelog Please see [here](CHANGELOG.md) @@ -146,6 +156,8 @@ LAVALINK_PLUGINS_0_REPOSITORY LAVALINK_PLUGINS_1_DEPENDENCY LAVALINK_PLUGINS_1_REPOSITORY +LAVALINK_PLUGINS_DIR + LAVALINK_SERVER_PASSWORD LAVALINK_SERVER_SOURCES_YOUTUBE LAVALINK_SERVER_SOURCES_BANDCAMP @@ -261,19 +273,20 @@ WantedBy=multi-user.target ``` To initiate the service, run + ```shell sudo systemctl daemon-reload sudo systemctl enable lavalink sudo systemctl start lavalink ``` + In addition to the usual log files, you can also view the log with `sudo journalctl -u lavalink`. + ### Docker Docker images can be found under [packages](https://github.com/lavalink-devs/Lavalink/pkgs/container/lavalink) with old builds prior to `v3.7.4` being available on [Docker Hub](https://hub.docker.com/r/fredboat/lavalink/). There are 2 image variants `Ubuntu` and `Alpine`, the `Alpine` variant is smaller and can be used with the `-alpine` suffix, for example `ghcr.io/lavalink-devs/lavalink:3-alpine`. ---- - Install [Docker](https://docs.docker.com/engine/install/) & [Docker Compose](https://docs.docker.com/compose/install/) Create a `docker-compose.yml` with the following content: diff --git a/settings.gradle.kts b/settings.gradle.kts index 8cce7cd49..887c8afdc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -36,7 +36,7 @@ fun VersionCatalogBuilder.spring() { } fun VersionCatalogBuilder.voice() { - version("lavaplayer", "17c75f5") + version("lavaplayer", "08cfbc0595") library("lavaplayer", "com.github.walkyst.lavaplayer-fork", "lavaplayer").versionRef("lavaplayer") library("lavaplayer-ip-rotator", "com.github.walkyst.lavaplayer-fork", "lavaplayer-ext-youtube-rotator").versionRef("lavaplayer") @@ -45,8 +45,8 @@ fun VersionCatalogBuilder.voice() { library("koe", "moe.kyokobot.koe", "core").version("2.0.0-rc1") library("koe-udpqueue", "moe.kyokobot.koe", "ext-udpqueue").version("2.0.0-rc1") - version("udpqueue", "0.2.6") - val platforms = listOf("linux-x86-64", "linux-x86", "linux-aarch64", "linux-arm", "win-x86-64", "win-x86", "darwin") + version("udpqueue", "0.2.7") + val platforms = listOf("linux-x86-64", "linux-x86", "linux-aarch64", "linux-arm", "linux-musl-x86-64", "linux-musl-aarch64", "win-x86-64", "win-x86", "darwin") platforms.forEach { library("udpqueue-native-$it", "club.minnced", "udpqueue-native-$it").versionRef("udpqueue") }