diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a203733..e0727bfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,18 +17,12 @@ if(ENABLE_TESTS) find_package(GTest REQUIRED) endif() +# Common dependencies find_package(PkgConfig REQUIRED) find_package(Threads REQUIRED) find_package(Filesystem REQUIRED) find_package(Boost REQUIRED COMPONENTS system program_options iostreams) find_package(Wt REQUIRED COMPONENTS Wt Dbo DboSqlite3 HTTP) -pkg_check_modules(Taglib REQUIRED IMPORTED_TARGET taglib) -pkg_check_modules(Config++ REQUIRED IMPORTED_TARGET libconfig++) -pkg_check_modules(GraphicsMagick++ IMPORTED_TARGET GraphicsMagick++) -pkg_check_modules(LIBAV IMPORTED_TARGET libavcodec libavutil libavformat) -pkg_check_modules(Archive REQUIRED IMPORTED_TARGET libarchive) -find_package(PAM) -find_package(STB) # WT if (NOT Wt_FOUND) @@ -47,34 +41,6 @@ if (NOT TARGET Wt::HTTP) message(FATAL_ERROR "Cannot find Wt::HTTP!") endif () -# PAM -option(USE_PAM "Use the PAM backend authentication API" ON) -if (USE_PAM AND NOT PAM_FOUND) - message(WARNING "PAM library not found: disabling") - set(USE_PAM OFF) -endif () -if (USE_PAM) - message(STATUS "Using PAM authentication backend") -else () - message(STATUS "NOT using PAM authentication backend") -endif () - -# IMAGE -if (STB_FOUND) - set(IMAGE_LIBRARY STB CACHE STRING "STB library") -elseif (GraphicsMagick++_FOUND) - set(IMAGE_LIBRARY GraphicsMagick++ CACHE STRING "GraphicsMagick++") -else () - message(FATAL_ERROR "Cannot find suitable image library") -endif() -set_property(CACHE IMAGE_LIBRARY PROPERTY STRINGS GraphicsMagick++ STB) -if (IMAGE_LIBRARY STREQUAL GraphicsMagick++ AND NOT GraphicsMagick++_FOUND) - message(FATAL_ERROR "GraphicsMagick++ not found") -elseif (IMAGE_LIBRARY STREQUAL STB AND NOT STB_FOUND) - message(FATAL_ERROR "STB not found") -endif () -message(STATUS "IMAGE_LIBRARY set to ${IMAGE_LIBRARY}") - # Benchmark option(BUILD_BENCHMARKS "Build benchmarks" OFF) if (BUILD_BENCHMARKS) diff --git a/Dockerfile-build-alpine b/Dockerfile-build-alpine index 02c18010..e4a29b8b 100644 --- a/Dockerfile-build-alpine +++ b/Dockerfile-build-alpine @@ -1,5 +1,5 @@ FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx -FROM --platform=$BUILDPLATFORM alpine:3.18 +FROM --platform=$BUILDPLATFORM alpine:3.19 ARG BUILD_PACKAGES="\ clang \ @@ -36,7 +36,7 @@ ARG LMS_BUILD_TYPE="Release" RUN \ DIR=/tmp/lms/build && mkdir -p ${DIR} && cd ${DIR} && \ xx-info is-cross && export BUILD_TESTS=OFF || export BUILD_TESTS=ON && \ - PKG_CONFIG_PATH=/$(xx-info)/usr/lib/pkgconfig cmake /tmp/lms/ -DCMAKE_INCLUDE_PATH=${PREFIX}/include -DCMAKE_BUILD_TYPE=${LMS_BUILD_TYPE} $(xx-clang --print-cmake-defines) -DCMAKE_PREFIX_PATH=/$(xx-info)/usr/lib/cmake -DBUILD_TESTING=${BUILD_TESTS} -DBUILD_BENCHMARKS=ON && \ + PKG_CONFIG_PATH=/$(xx-info)/usr/lib/pkgconfig cmake /tmp/lms/ -DCMAKE_INCLUDE_PATH=/$(xx-info)/usr/include -DCMAKE_BUILD_TYPE=${LMS_BUILD_TYPE} $(xx-clang --print-cmake-defines) -DCMAKE_PREFIX_PATH=/$(xx-info)/usr/lib/cmake -DBUILD_TESTING=${BUILD_TESTS} -DBUILD_BENCHMARKS=ON && \ VERBOSE=1 make -j$(nproc) && \ xx-verify src/lms/lms && \ (xx-info is-cross || make test) diff --git a/Dockerfile-build-arch b/Dockerfile-build-arch index 82cc3ee0..b197342c 100644 --- a/Dockerfile-build-arch +++ b/Dockerfile-build-arch @@ -23,6 +23,6 @@ COPY . /tmp/lms/ ARG LMS_BUILD_TYPE="Release" RUN \ DIR=/tmp/lms/build && mkdir -p ${DIR} && cd ${DIR} && \ - cmake /tmp/lms/ -DCMAKE_BUILD_TYPE=${LMS_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_BENCHMARKS=ON && \ + cmake /tmp/lms/ -DCMAKE_BUILD_TYPE=${LMS_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=/usr -DLMS_IMAGE_BACKEND=graphicsmagick -DBUILD_BENCHMARKS=ON && \ VERBOSE=1 make -j$(nproc) && \ make test diff --git a/Dockerfile-release b/Dockerfile-release index b78366dc..4dc15e78 100644 --- a/Dockerfile-release +++ b/Dockerfile-release @@ -1,4 +1,4 @@ -FROM alpine:3.18 AS build +FROM alpine:3.19 AS build WORKDIR /tmp/workdir @@ -30,14 +30,14 @@ ARG BUILD_PACKAGES=" \ boost-dev \ libarchive-dev \ libconfig-dev \ - taglib-dev \ + utfcpp \ sqlite-dev \ gtest-dev" RUN apk add --no-cache --update ${BUILD_PACKAGES} # ffmpeg -ARG FFMPEG_VERSION=4.3.5 +ARG FFMPEG_VERSION=6.1.1 RUN \ DIR=/tmp/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ curl -sLO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 && \ @@ -67,9 +67,9 @@ RUN \ --enable-libopus \ --enable-libvorbis \ --disable-everything \ - --enable-decoder=aac*,ac3*,alac,als,flac,mp3*,libopus,pcm*,libvorbis,wavpack,wma*,libopenjpg,png \ + --enable-decoder=aac*,ac3*,alac,als,dsd*,flac,mp3*,libopus,pcm*,libvorbis,wavpack,wma*,libopenjpg,png \ --enable-encoder=libmp3lame,libopus,libvorbis \ - --enable-demuxer=aac,aiff,asf,flac,ipod,ogg,matroska,mov,mp3,mp4,wav,wv,webm \ + --enable-demuxer=aac,aiff,asf,dsf,flac,ipod,ogg,matroska,mov,mp3,mp4,wav,wv,webm \ --enable-muxer=ogg,matroska,mp3,webm \ --enable-protocol=file,pipe \ --enable-filter=aresample \ @@ -79,7 +79,7 @@ RUN \ make distclean # WT -ARG WT_VERSION=4.10.2 +ARG WT_VERSION=4.10.4 RUN \ DIR=/tmp/wt && mkdir -p ${DIR} && cd ${DIR} && \ curl -sLO https://github.com/emweb/wt/archive/${WT_VERSION}.tar.gz && \ @@ -92,7 +92,7 @@ RUN \ make install # STB -ARG STB_VERSION=5736b15f7ea0ffb08dd38af21067c314d6a3aae9 +ARG STB_VERSION=ae721c50eaf761660b4f90cc590453cdb0c2acd0 RUN \ DIR=/tmp/stb && mkdir -p ${DIR} && cd ${DIR} && \ curl -sLO https://github.com/nothings/stb/archive/${STB_VERSION}.tar.gz && \ @@ -100,6 +100,19 @@ RUN \ mkdir -p ${PREFIX}/include/stb && \ cp ./*.h ${PREFIX}/include/stb +# TAGLIB +ARG TAGLIB_VERSION=v2.0.1 +RUN \ + DIR=/tmp/taglib && mkdir -p ${DIR} && cd ${DIR} && \ + curl -sLO https://github.com/taglib/taglib/archive/${TAGLIB_VERSION}.tar.gz && \ + tar -x --strip-components=1 -f ${TAGLIB_VERSION}.tar.gz + +RUN \ + DIR=/tmp/taglib && mkdir -p ${DIR} && cd ${DIR} && \ + CXXFLAGS="-I/usr/include/utf8cpp" cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX} -DBUILD_SHARED_LIBS=ON -DBUILD_EXAMPLES=OFF -DBUILD_BINDINGS=OFF -DBUILD_TESTING=OFF -DTRACE_IN_RELEASE=OFF -DWITH_ZLIB=ON && \ + make -j$(nproc) && \ + make install + # LMS COPY . /tmp/lms/ RUN \ @@ -134,7 +147,7 @@ RUN \ rm -rf /tmp/fakeroot/share/Wt/resources/themes ## Release Stage -FROM alpine:3.18 AS release +FROM alpine:3.19 AS release LABEL maintainer="Emeric Poupon " ARG RUNTIME_PACKAGES=" \ @@ -154,8 +167,7 @@ ARG RUNTIME_PACKAGES=" \ boost-thread \ libarchive \ libconfig++ \ - sqlite-libs \ - taglib" + sqlite-libs" ARG LMS_USER=lms ARG LMS_GROUP=lms @@ -179,4 +191,3 @@ COPY --from=build /tmp/fakeroot/share/lms/lms.conf /etc/lms.conf EXPOSE 5082 ENTRYPOINT ["/usr/bin/lms"] - diff --git a/INSTALL.md b/INSTALL.md index 0e3d7b83..b97d2fe6 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -54,7 +54,7 @@ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ``` __Notes__: * you can customize the installation directory using `-DCMAKE_INSTALL_PREFIX=path` (defaults to `/usr/local`). -* you can customize the image library using `-DIMAGE_LIBRARY=` +* you can customize the image library using `-DLMS_IMAGE_BACKEND=` (defaults to `stb`) ```sh make ``` diff --git a/approot/artists.xml b/approot/artists.xml index a0fd6409..12938860 100644 --- a/approot/artists.xml +++ b/approot/artists.xml @@ -3,31 +3,11 @@ -
- -
-
- ${link-type class="form-select"} -
+
+ ${link-type class="me-1"} +
+ ${search class="form-control form-control-sm me-1" type="search"} + ${sort-mode}
${artists} @@ -42,4 +22,24 @@ ${loading-indicator} + + + + diff --git a/approot/explore.xml b/approot/explore.xml index 342621dc..21d93199 100644 --- a/approot/explore.xml +++ b/approot/explore.xml @@ -52,5 +52,20 @@
+ + + diff --git a/approot/main.xml b/approot/main.xml index aad114b9..0dea95e8 100644 --- a/approot/main.xml +++ b/approot/main.xml @@ -14,14 +14,11 @@