diff options
Diffstat (limited to 'audio/musikcube')
-rw-r--r-- | audio/musikcube/README | 21 | ||||
-rw-r--r-- | audio/musikcube/doinst.sh | 9 | ||||
-rw-r--r-- | audio/musikcube/fix-install-locations.patch | 139 | ||||
-rw-r--r-- | audio/musikcube/musikcube.SlackBuild | 118 | ||||
-rw-r--r-- | audio/musikcube/musikcube.info | 12 | ||||
-rw-r--r-- | audio/musikcube/slack-desc | 19 |
6 files changed, 318 insertions, 0 deletions
diff --git a/audio/musikcube/README b/audio/musikcube/README new file mode 100644 index 0000000000..f9384c006b --- /dev/null +++ b/audio/musikcube/README @@ -0,0 +1,21 @@ +musikcube (Terminal-based audio engine, library, player, and server) + +A cross-platform, terminal-based audio engine, library, player and +server written in C++. + +Musikcube ships with a streaming audio server enabled by default. +It runs a websocket server on port 7905, used for metadata retrieval. +An http server runs on port 7906, and is used to serve (optionally +transcoded) audio data to clients. It's important to understand that, +out of the box, the server (and remote api) should NOT be considered +safe for use outside of a local network. The websockets service only +supports a simple password challenge, and the audio http server just +handles Basic authorization. It does not provide ssl or tls. The +server also stores the password in plain text in a settings file on +the local machine. + +If you wish to fix this, follow this guide: +https://github.com/clangen/musikcube/wiki/ssl-server-setup + +Optional dependencies include letsencrypt and nginx which are needed +if you wish to set up an ssl-server. diff --git a/audio/musikcube/doinst.sh b/audio/musikcube/doinst.sh new file mode 100644 index 0000000000..3e5691a052 --- /dev/null +++ b/audio/musikcube/doinst.sh @@ -0,0 +1,9 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1 + fi +fi diff --git a/audio/musikcube/fix-install-locations.patch b/audio/musikcube/fix-install-locations.patch new file mode 100644 index 0000000000..091a90c031 --- /dev/null +++ b/audio/musikcube/fix-install-locations.patch @@ -0,0 +1,139 @@ +Patch taken from Void Linux xbps source repository. +Currently all ELF files (binaries and libraries), get installed to /usr/share/musikcube. +This patch moves all those files to their normal locations and fixes the code to expect that + +diff --git a/.cmake/InstallFiles.cmake b/.cmake/InstallFiles.cmake +index 62d3c003..01ef58ac 100644 +--- a/.cmake/InstallFiles.cmake ++++ b/.cmake/InstallFiles.cmake +@@ -4,7 +4,7 @@ if (APPLE) + install(FILES ${plugins} DESTINATION share/musikcube/plugins) + else () + file(GLOB plugins "bin/plugins/*.so") +- install(FILES ${plugins} DESTINATION share/musikcube/plugins) ++ install(FILES ${plugins} DESTINATION lib/musikcube/plugins) + endif () + + if (${BUILD_STANDALONE} MATCHES "true") +@@ -43,20 +43,12 @@ endif() + if (APPLE) + install(FILES "bin/libmusikcore.dylib" DESTINATION share/musikcube) + else() +- install(FILES "bin/libmusikcore.so" DESTINATION share/musikcube) ++ install(FILES "bin/libmusikcore.so" DESTINATION lib/) + endif() + + # executable and shell script for musikcube + install( + FILES bin/musikcube +- DESTINATION share/musikcube +- PERMISSIONS +- OWNER_EXECUTE OWNER_READ OWNER_WRITE +- GROUP_EXECUTE GROUP_READ GROUP_WRITE +- WORLD_EXECUTE WORLD_READ) +- +-install( +- FILES "${CMAKE_CURRENT_BINARY_DIR}/src/musikcube/musikcube" + DESTINATION bin/ + PERMISSIONS + OWNER_EXECUTE OWNER_READ OWNER_WRITE +@@ -58,14 +50,6 @@ install( + # executable and shell script for daemon + install( + FILES bin/musikcubed +- DESTINATION share/musikcube +- PERMISSIONS +- OWNER_EXECUTE OWNER_READ OWNER_WRITE +- GROUP_EXECUTE GROUP_READ GROUP_WRITE +- WORLD_EXECUTE WORLD_READ) +- +-install( +- FILES "${CMAKE_CURRENT_BINARY_DIR}/src/musikcubed/musikcubed" + DESTINATION bin/ + PERMISSIONS + OWNER_EXECUTE OWNER_READ OWNER_WRITE +diff --git a/src/musikcore/support/Common.cpp b/src/musikcore/support/Common.cpp +index 31703117..53aa8a88 100644 +--- a/src/musikcore/support/Common.cpp ++++ a/src/musikcore/support/Common.cpp +@@ -87,78 +87,11 @@ + namespace musik { namespace core { + + std::string GetPluginDirectory() { +- std::string path(GetApplicationDirectory()); +- path.append("/plugins/"); +- return path; ++ return std::string("/usr/lib/musikcube/plugins"); + } + + std::string GetApplicationDirectory() { +- std::string result; +- +- #ifdef WIN32 +- wchar_t widePath[2048]; +- int length = GetModuleFileName(NULL, widePath, 2048); +- if (length != 0 && length < 2048) { +- result.assign(GetPath(u16to8(widePath).c_str())); +- } +- #elif __APPLE__ +- char pathbuf[PATH_MAX + 1]; +- uint32_t bufsize = sizeof(pathbuf); +- _NSGetExecutablePath(pathbuf, &bufsize); +- result.assign(pathbuf); +- size_t last = result.find_last_of("/"); +- result = result.substr(0, last); /* remove filename component */ +- #else +- char pathbuf[PATH_MAX + 1] = { 0 }; +- +- #ifdef __FreeBSD__ +- int mib[4]; +- mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; +- mib[2] = KERN_PROC_PATHNAME; +- mib[3] = -1; +- size_t bufsize = sizeof(pathbuf); +- sysctl(mib, 4, pathbuf, &bufsize, nullptr, 0); +- #elif defined __OpenBSD__ +- int mib[4]; +- char **argv; +- size_t len = ARG_MAX; +- +- mib[0] = CTL_KERN; +- mib[1] = KERN_PROC_ARGS; +- mib[2] = getpid(); +- mib[3] = KERN_PROC_ARGV; +- +- argv = new char*[len]; +- if (sysctl(mib, 4, argv, &len, nullptr, 0) < 0) abort(); +- +- fs::path command = fs::absolute(fs::path(fs::u8path(argv[0]))); +- realpath(command.u8string().c_str(), pathbuf); +- delete[] argv; +- #elif defined __HAIKU__ +- image_info ii; +- int32 c = 0; +- while (get_next_image_info(0, &c, &ii) == B_OK) { +- if (ii.type == B_APP_IMAGE) { +- if (strlen(ii.name)) { +- std::string fn(ii.name); +- result = fs::u8path(fn).u8string(); +- } +- } +- } +- #else +- std::string pathToProc = u8fmt("/proc/%d/exe", (int) getpid()); +- readlink(pathToProc.c_str(), pathbuf, PATH_MAX); +- #endif +- +- if (!result.size() && strlen(pathbuf)) { +- result.assign(pathbuf); +- } +- size_t last = result.find_last_of("/"); +- result = result.substr(0, last); /* remove filename component */ +- #endif +- +- return result; ++ return std::string("/usr/share/musikcube"); + } + + std::string GetHomeDirectory() { diff --git a/audio/musikcube/musikcube.SlackBuild b/audio/musikcube/musikcube.SlackBuild new file mode 100644 index 0000000000..544520a667 --- /dev/null +++ b/audio/musikcube/musikcube.SlackBuild @@ -0,0 +1,118 @@ +#!/bin/bash + +# Slackware build script for musikcube + +# Copyright 2023-2024 Samuel Young, MO, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# 20230630 bkw: Modified by SlackBuilds.org, BUILD=2: +# - +x permission for shared libs + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=musikcube +VERSION=${VERSION:-3.0.2} +ASIO=${ASIO:-f693a3eb7fe72a5f19b975289afc4f437d373d9c} +BUILD=${BUILD:-2} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} +DEPS=$TMP/$PRGNAM-$VERSION/src/3rdparty + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +tar xvf $CWD/asio-$ASIO.tar.gz -C $DEPS/asio --strip-components 1 +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} + -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} + + +# Install .so files to /usr/lib$LIBDIRSUFFIX instead of /usr/share +cp $CWD/fix-install-locations.patch . +sed -i "s/lib\//lib$LIBDIRSUFFIX\//" fix-install-locations.patch +echo "Apply fix-install-locations.patch" +patch -p1 < fix-install-locations.patch + +mkdir -p build +cd build + cmake -G "Unix Makefiles" \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release .. + make + make install/strip DESTDIR=$PKG +cd .. + +find $PKG/usr -name '*.so' -exec chmod 755 {} + + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a \ + CHANGELOG.txt CONTRIBUTORS.txt LICENSE.txt README.md fix-install-locations.patch \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/audio/musikcube/musikcube.info b/audio/musikcube/musikcube.info new file mode 100644 index 0000000000..064fba5f70 --- /dev/null +++ b/audio/musikcube/musikcube.info @@ -0,0 +1,12 @@ +PRGNAM="musikcube" +VERSION="3.0.2" +HOMEPAGE="https://musikcube.com" +DOWNLOAD="https://github.com/clangen/musikcube/archive/3.0.2/musikcube-3.0.2.tar.gz \ + https://github.com/chriskohlhoff/asio/archive/f693a3eb7fe72a5f19b975289afc4f437d373d9c/asio-f693a3eb7fe72a5f19b975289afc4f437d373d9c.tar.gz" +MD5SUM="a8618ebc15424a559497bc6cd287d207 \ + 343e9434cad3006dc74ba13bdf84445a" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="libev libmicrohttpd" +MAINTAINER="Samuel Young" +EMAIL="samyoung12788@gmail.com" diff --git a/audio/musikcube/slack-desc b/audio/musikcube/slack-desc new file mode 100644 index 0000000000..8218248817 --- /dev/null +++ b/audio/musikcube/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +musikcube: musikcube (Terminal-based audio engine, library, player, and server) +musikcube: +musikcube: A cross-platform, terminal-based audio engine, library, player and +musikcube: server written in C++. +musikcube: +musikcube: +musikcube: +musikcube: +musikcube: +musikcube: Homepage: https://musikcube.com +musikcube: |