Package Details: mpd-sacd 0.22.1-1

Git Clone URL: https://aur.archlinux.org/mpd-sacd.git (read-only, click to copy)
Package Base: mpd-sacd
Description: MPD with patches for SACD and DVDA ISO playback.
Upstream URL: https://sourceforge.net/p/sacddecoder/mpd/MPD.git/ci/master/tree/
Keywords: dsd dvda mpd sacd
Licenses: GPL
Conflicts: mpd
Provides: mpd
Submitter: melvinvermeeren
Maintainer: melvinvermeeren (mo3r)
Last Packager: mo3r
Votes: 6
Popularity: 0.001347
First Submitted: 2016-02-08 18:52 (UTC)
Last Updated: 2020-11-13 22:03 (UTC)

Required by (45)

Sources (4)

Latest Comments

brucehsieh commented on 2022-04-17 13:58 (UTC)

New version, commit c831f983e834abf24e85dfec57e85f13ab7edccb, seems to work fine.

ArjenRR commented on 2021-06-11 17:11 (UTC) (edited on 2021-06-11 17:11 (UTC) by ArjenRR)

FYI: I built this package in a clean docker Arch container (greyltc/archlinux-aur) and found the following runtime dependencies to be missing at build time: liburing openal libmpcdec mpg123 twolame rsync

emilot commented on 2021-02-24 21:00 (UTC) (edited on 2021-02-27 22:53 (UTC) by emilot)

New version guys!

commit 787223cb1b1009693431d8ca1f797121e28ede69

zikizik commented on 2021-02-24 12:40 (UTC)

@mo3r though art a genius my friend, it works !!! out of curiosity what does this line do: use_stdio "true"

i copied my config from here: https://thepenguin.eu/2017-12-22-mpd-and-dsd-files/

and have this line (true where you have false): edited_master "true"

It works fine with this, just not sure what that line does either ...

@emilot thanks for the answer, i already had those lines with no luck

mo3r commented on 2021-02-10 20:07 (UTC)

@zikizik Try to add to your mpd.conf these lines. It looks like it helped in my case. I think this parameter helped: use_stdio true

decoder {
    plugin "sacdiso"
    dstdec_threads "4"
    edited_master "false"
    lsbitfirst "false"
    playable_area "stereo"
    tags_with_iso "true"
    use_stdio "true"
}

mo3r commented on 2021-02-09 17:18 (UTC)

Hello @emilot These lines in the config did not help me. Still stutters when playing sacd iso.

emilot commented on 2021-02-08 19:27 (UTC) (edited on 2021-02-08 20:05 (UTC) by emilot)

Hi!

@zikizik

Did you check these values in mpd.conf?:

decoder { plugin "sacdiso"

dstdec_threads "4"

edited_master "true" lsbitfirst "false"

playable_area "stereo"

}

Do you have an mpd.log?

zikizik commented on 2021-02-02 12:03 (UTC)

@mo3r i thought this could have something to do with buffer/cache size, or period_time ... is this a new issue for you, or did it happen with previous versions?

mo3r commented on 2021-02-02 11:57 (UTC)

@zikizik I have exactly the same problems, I think it is not related to the config

zikizik commented on 2021-02-01 19:40 (UTC)

@mo3r @emilot could you post your mpd.conf pls, i am having jerks/crashes playing dsd sacd iso (dst compressed sacd iso works fine, as do all other files), looking at bashtop when mpd crashes doesn't show any cpu overload ...

emilot commented on 2020-11-22 14:56 (UTC)

@mo3r i tested the commits we are talking about...

With the current version you have in PKGBUILD everything is fine. Even iso, etc... With the latest we have broken update again.

Cheers!

emilot commented on 2020-11-20 19:16 (UTC)

Check your CPU for throttling. With the new version i do not have it on RPi

Cheers!

mo3r commented on 2020-11-19 12:39 (UTC)

@emilot Yes, thanks, I'll update the package. Tell me do you have any problem playing the sacd iso? My iso files are played with some jerks. I cannot understand what is the reason. My files are on usb storage and I have a rather slow computer, perhaps this is the reason, but this has not happened before.

emilot commented on 2020-11-18 21:27 (UTC)

@mo3r we have a new commit! Check it out:

c3c075deddd908986b93fb1509218be4c7d26080

emilot commented on 2020-11-13 21:42 (UTC) (edited on 2020-11-13 21:42 (UTC) by emilot)

Thank you @mo3r for the initial PKGBUILD!

mo3r commented on 2020-11-13 21:37 (UTC)

@emilot Yeah! The mpd logs looks much better now! I will complete rescanning of my audio library and if all goes well then, I will update the PKGBUILD in the AUR. Thanks for help and hint with this commit!

emilot commented on 2020-11-13 20:44 (UTC)

I have success only with CLANG:

env CC=clang CXX=clang++ arch-meson .. ${_opts[@]}
ninja

from your PKGBUILD!

mo3r commented on 2020-11-13 20:35 (UTC)

@emilot Yes, with GCC without any additional definition in config or env. My current PKGBUILD:

# Maintainer: Melvin Vermeeren <mail@mel.vin>

pkgname=mpd-sacd
pkgver=0.22.0
pkgrel=4
pkgdesc='MPD with patches for SACD and DVDA ISO playback.'
url='https://sourceforge.net/p/sacddecoder/mpd/MPD.git/ci/master/tree/'
license=('GPL')
arch=('i686' 'x86_64' 'aarch64' 'armv7h')
depends=('libao' 'ffmpeg' 'libmodplug' 'audiofile' 'libshout' 'libmad' 'curl' 'faad2'
        'sqlite' 'jack' 'libmms' 'wavpack' 'avahi' 'libid3tag' 'yajl' 'libmpdclient'
        'icu' 'libupnp' 'libnfs' 'libsamplerate' 'libsoxr' 'smbclient' 'libcdio-paranoia'
        'libgme' 'zziplib' 'fluidsynth' 'libmikmod' 'wildmidi')
makedepends=('boost' 'meson' 'python-sphinx' 'clang' 'ninja')
conflicts=('mpd')
provides=("mpd=${pkgver}")
#latest commit
#source=('mpd::git+https://git.code.sf.net/p/sacddecoder/mpd/MPD.git#commit=0ecc3394c396c2f3e9776160d4fba4bd5712ff0b'
#       'sysusers.d'
#       'tmpfiles.d'
#       'conf')
#archive
#source=('mpd.zip::https://sourceforge.net/projects/mpd.sacddecoder.p/files/mpd.zip/download'
#       'sysusers.d'
#       'tmpfiles.d'
#       'conf')
#from aur
source=('mpd::git+https://git.code.sf.net/p/sacddecoder/mpd/MPD.git#commit=ed387398fa3287d840da791005ec8dad9a81cc7d'
        'sysusers.d'
        'tmpfiles.d'
        'conf')
sha1sums=('SKIP'
          '7c7de7b30c6c8e1c705dd415692f6a08a3f62c82'
          'd82864959d1a1a07bf75d87c7586dbb713892f3a'
          '291fd5cda9f0845834a553017327c4586bd853f6')
backup=('etc/mpd.conf')

prepare() {
        cd "${srcdir}/mpd"
        rm -rf build
        install -d build
}

build() {
        cd "${srcdir}/mpd/build"
        _opts=('-Ddocumentation=enabled'
                '-Dchromaprint=disabled' # appears not to be used for anything
                '-Dsidplay=disabled' # unclear why but disabled in the past
                '-Dadplug=disabled' # not in an official repo
                '-Dsndio=disabled' # interferes with detection of alsa devices
                '-Dshine=disabled' # not in an official repo
                '-Dtremor=disabled' # not in official repo
                '-Dcdio_paranoia=enabled'
                '-Diso9660=enabled'
                '-Djack=enabled'
                '-Dlibmpdclient=enabled'
                '-Dpipe=true'
                '-Dpulse=enabled'
                '-Dsoundcloud=enabled'
                '-Dzzip=enabled'
                '-Dsacdiso=true'
                '-Ddvdaiso=true'
#               '-Dc_std=c99'
#               '-Dcpp_std=c++17'
        )
#       env CC=clang CXX=clang++ arch-meson .. ${_opts[@]}
#       env CC=clang CXX=clang++ arch-meson .. --reconfigure ${_opts[@]}
        arch-meson .. ${_opts[@]}
#       meson
        ninja
}

package() {
        cd "${srcdir}/mpd/build"
        DESTDIR="${pkgdir}" ninja install
        install -Dm644 ../doc/mpdconf.example "${pkgdir}"/usr/share/doc/mpd/mpdconf.example
        install -Dm644 doc/mpd.conf.5 "${pkgdir}"/usr/share/man/man5/mpd.conf.5
        install -Dm644 doc/mpd.1 "${pkgdir}"/usr/share/man/man1/mpd.1

        install -Dm644 ../../sysusers.d "${pkgdir}"/usr/lib/sysusers.d/mpd.conf
        install -Dm644 ../../conf "${pkgdir}"/etc/mpd.conf
        install -Dm644 ../../tmpfiles.d "${pkgdir}"/usr/lib/tmpfiles.d/mpd.conf

        sed \
                -e '/\[Service\]/a User=mpd' \
                -e '/WantedBy=/c WantedBy=default.target' \
                -i "${pkgdir}"/usr/lib/systemd/system/mpd.service
}

Gcc version:

gcc --version                                                                                                                                                                 Fri 23:35
gcc (GCC) 10.2.0

emilot commented on 2020-11-13 20:30 (UTC)

Did you run it with GCC?

mo3r commented on 2020-11-13 17:16 (UTC)

@emilot I get error on linking:

[703/703] Linking target mpd
FAILED: mpd 
c++  -o mpd mpd.p/meson-generated_.._GitVersion.cxx.o mpd.p/src_Main.cxx.o mpd.p/src_protocol_Ack.cxx.o mpd.p/src_protocol_ArgParser.cxx.o mpd.p/src_protocol_Result.cxx.o mpd.p/src_command_CommandError.cxx.o mpd.p/src_command_AllCommands.cxx.o mpd.p/src_command_QueueCommands.cxx.o mpd.p/src_command_TagCommands.cxx.o mpd.p/src_command_PlayerCommands.cxx.o mpd.p/src_command_PlaylistCommands.cxx.o mpd.p/src_command_FileCommands.cxx.o mpd.p/src_command_OutputCommands.cxx.o mpd.p/src_command_MessageCommands.cxx.o mpd.p/src_command_ClientCommands.cxx.o mpd.p/src_command_PartitionCommands.cxx.o mpd.p/src_command_OtherCommands.cxx.o mpd.p/src_command_CommandListBuilder.cxx.o mpd.p/src_Idle.cxx.o mpd.p/src_IdleFlags.cxx.o mpd.p/src_decoder_Domain.cxx.o mpd.p/src_decoder_Thread.cxx.o mpd.p/src_decoder_Control.cxx.o mpd.p/src_decoder_Bridge.cxx.o mpd.p/src_decoder_DecoderPrint.cxx.o mpd.p/src_client_Listener.cxx.o mpd.p/src_client_Client.cxx.o mpd.p/src_client_Config.cxx.o mpd.p/src_client_Domain.cxx.o mpd.p/src_client_Event.cxx.o mpd.p/src_client_Expire.cxx.o mpd.p/src_client_Idle.cxx.o mpd.p/src_client_List.cxx.o mpd.p/src_client_New.cxx.o mpd.p/src_client_Process.cxx.o mpd.p/src_client_Read.cxx.o mpd.p/src_client_Write.cxx.o mpd.p/src_client_Message.cxx.o mpd.p/src_client_Subscribe.cxx.o mpd.p/src_client_File.cxx.o mpd.p/src_client_Response.cxx.o mpd.p/src_client_ThreadBackgroundCommand.cxx.o mpd.p/src_Listen.cxx.o mpd.p/src_LogInit.cxx.o mpd.p/src_ls.cxx.o mpd.p/src_Instance.cxx.o mpd.p/src_win32_Win32Main.cxx.o mpd.p/src_MusicBuffer.cxx.o mpd.p/src_MusicPipe.cxx.o mpd.p/src_MusicChunk.cxx.o mpd.p/src_MusicChunkPtr.cxx.o mpd.p/src_Mapper.cxx.o mpd.p/src_Partition.cxx.o mpd.p/src_Permission.cxx.o mpd.p/src_player_CrossFade.cxx.o mpd.p/src_player_Thread.cxx.o mpd.p/src_player_Control.cxx.o mpd.p/src_PlaylistError.cxx.o mpd.p/src_PlaylistPrint.cxx.o mpd.p/src_PlaylistSave.cxx.o mpd.p/src_playlist_PlaylistStream.cxx.o mpd.p/src_playlist_PlaylistMapper.cxx.o mpd.p/src_playlist_PlaylistAny.cxx.o mpd.p/src_playlist_PlaylistSong.cxx.o mpd.p/src_playlist_PlaylistQueue.cxx.o mpd.p/src_playlist_Print.cxx.o mpd.p/src_db_PlaylistVector.cxx.o mpd.p/src_queue_Queue.cxx.o mpd.p/src_queue_QueuePrint.cxx.o mpd.p/src_queue_QueueSave.cxx.o mpd.p/src_queue_Playlist.cxx.o mpd.p/src_queue_PlaylistControl.cxx.o mpd.p/src_queue_PlaylistEdit.cxx.o mpd.p/src_queue_PlaylistTag.cxx.o mpd.p/src_queue_PlaylistState.cxx.o mpd.p/src_ReplayGainGlobal.cxx.o mpd.p/src_LocateUri.cxx.o mpd.p/src_SongUpdate.cxx.o mpd.p/src_SongLoader.cxx.o mpd.p/src_SongPrint.cxx.o mpd.p/src_SongSave.cxx.o mpd.p/src_StateFile.cxx.o mpd.p/src_StateFileConfig.cxx.o mpd.p/src_Stats.cxx.o mpd.p/src_TagPrint.cxx.o mpd.p/src_TagSave.cxx.o mpd.p/src_TagFile.cxx.o mpd.p/src_TagStream.cxx.o mpd.p/src_TagAny.cxx.o mpd.p/src_TimePrint.cxx.o mpd.p/src_mixer_Volume.cxx.o mpd.p/src_PlaylistFile.cxx.o mpd.p/src_CommandLine.cxx.o mpd.p/src_unix_SignalHandlers.cxx.o mpd.p/src_unix_Daemon.cxx.o mpd.p/src_queue_PlaylistUpdate.cxx.o mpd.p/src_command_StorageCommands.cxx.o mpd.p/src_command_DatabaseCommands.cxx.o mpd.p/src_RemoteTagCache.cxx.o mpd.p/src_command_StickerCommands.cxx.o mpd.p/src_sticker_Database.cxx.o mpd.p/src_sticker_Print.cxx.o mpd.p/src_sticker_SongSticker.cxx.o mpd.p/src_command_NeighborCommands.cxx.o mpd.p/src_TagArchive.cxx.o mpd.p/src_db_update_Archive.cxx.o -flto -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--gc-sections -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,--start-group libbasic.a src/config/libfs.a liblog.a src/fs/libfs.a src/lib/zlib/libzlib.a src/io/libio.a src/system/libsystem.a src/lib/icu/libicu.a src/util/libutil.a src/lib/dbus/libdbus.a src/event/libevent.a src/io/uring/liburing.a src/thread/libthread.a src/net/libnet.a src/neighbor/libneighbor_glue.a src/neighbor/plugins/libneighbor_plugins.a src/lib/smbclient/libsmbclient.a src/lib/upnp/libupnp.a src/lib/curl/libcurl.a src/lib/expat/libexpat.a src/input/libinput_glue.a src/input/plugins/libinput_plugins.a src/lib/alsa/libalsa.a src/lib/ffmpeg/libffmpeg.a src/lib/nfs/libnfs.a src/lib/yajl/libyajl.a src/lib/crypto/libcrypto_md5.a src/input/libinput_api.a src/pcm/libpcm.a src/pcm/libpcm_basic.a src/tag/libtag.a src/time/libtime.a src/archive/libarchive_glue.a src/archive/plugins/libarchive_plugins.a src/archive/libarchive_api.a src/output/liboutput_glue.a src/filter/libfilter_glue.a src/filter/plugins/libfilter_plugins.a src/filter/libfilter_api.a src/mixer/plugins/libmixer_plugins.a src/lib/pulse/libpulse.a src/output/plugins/liboutput_plugins.a src/output/liboutput_api.a src/mixer/libmixer_glue.a src/decoder/libdecoder_glue.a src/decoder/plugins/libdecoder_plugins.a src/lib/xiph/libflac.a src/lib/xiph/libxiph.a src/lib/xiph/libvorbis.a src/lib/xiph/libogg.a src/lib/crypto/libcrypto_base64.a src/decoder/libdecoder_api.a src/encoder/libencoder_glue.a src/encoder/plugins/libencoder_plugins.a src/playlist/libplaylist_glue.a src/playlist/plugins/libplaylist_plugins.a src/playlist/libplaylist_api.a src/db/libdb_glue.a src/db/plugins/libdb_plugins.a src/db/libdb_api.a src/storage/libstorage_api.a src/storage/libstorage_glue.a src/storage/plugins/libstorage_plugins.a src/song/libsong.a src/lib/pcre/libpcre.a src/lib/systemd/libsystemd.a src/lib/sqlite/libsqlite.a src/zeroconf/libzeroconf_bonjour.a src/lib/sacdiso/libsacdiso.a src/lib/dvdaiso/libdvdaiso.a /usr/lib/libdbus-1.so /usr/lib/liburing.so /usr/lib/libavformat.so /usr/lib/libavcodec.so /usr/lib/libavfilter.so /usr/lib/libavutil.so /usr/lib/libpcre.so /usr/lib/libz.so /usr/lib/libicui18n.so /usr/lib/libicuuc.so /usr/lib/libicudata.so -pthread /usr/lib/libsmbclient.so /usr/lib/libupnp.so /usr/lib/libixml.so /usr/lib/libcurl.so /usr/lib/libexpat.so /usr/lib/libcdio_paranoia.so /usr/lib/libcdio_cdda.so /usr/lib/libcdio.so -lm /usr/lib/libmms.so /usr/lib/libglib-2.0.so /usr/lib/libnfs.so /usr/lib/libyajl.so /usr/lib/libasound.so /usr/lib/libsamplerate.so /usr/lib/libsoxr.so /usr/lib/libid3tag.so -lbz2 /usr/lib/libiso9660.so /usr/lib/libzzip.so /usr/lib/libpulse.so /usr/lib/libao.so /usr/lib/libjack.so -lpthread /usr/lib/libshout.so /usr/lib/libopenal.so /usr/lib/libFLAC.so /usr/lib/libfluidsynth.so /usr/lib/libaudiofile.so -lfaad -lgme -lmad /usr/lib/libmikmod.so /usr/lib/libmodplug.so -lmpcdec /usr/lib/libmpg123.so /usr/lib/libopus.so /usr/lib/libsndfile.so /usr/lib/libogg.so /usr/lib/libvorbis.so /usr/lib/libwavpack.so /usr/lib/libWildMidi.so /usr/lib/libvorbisenc.so -lmp3lame /usr/lib/libtwolame.so /usr/lib/libmpdclient.so /usr/lib/libsystemd.so /usr/lib/libsqlite3.so /usr/lib/libavahi-common.so /usr/lib/libavahi-client.so -Wl,--end-group
/sbin/ld: SacdIsoDecoderPlugin.cxx.o (symbol from plugin): in function `sacdiso_decoder_plugin':
(.text+0x0): multiple definition of `dst::GET_NIBBLE'; DffDecoderPlugin.cxx.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: SacdIsoDecoderPlugin.cxx.o (symbol from plugin): in function `sacdiso_decoder_plugin':
(.text+0x0): multiple definition of `dst::GET_BIT'; DffDecoderPlugin.cxx.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: libdstdec_binding_dst_decoder_mt.cpp.o (symbol from plugin): in function `dst_decoder_t::get_slot_nr()':
(.text+0x0): multiple definition of `dst::GET_NIBBLE'; DffDecoderPlugin.cxx.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: libdstdec_binding_dst_decoder_mt.cpp.o (symbol from plugin): in function `dst_decoder_t::get_slot_nr()':
(.text+0x0): multiple definition of `dst::GET_BIT'; DffDecoderPlugin.cxx.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: libdstdec_decoder_decoder.cpp.o (symbol from plugin): in function `dst::decoder_t::close()':
(.text+0x0): multiple definition of `dst::GET_NIBBLE'; DffDecoderPlugin.cxx.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: libdstdec_decoder_decoder.cpp.o (symbol from plugin): in function `dst::decoder_t::close()':
(.text+0x0): multiple definition of `dst::GET_BIT'; DffDecoderPlugin.cxx.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: dvda_metabase.cpp.o (symbol from plugin): in function `dvda_metabase_t::~dvda_metabase_t()':
(.text+0x0): multiple definition of `xml2utf'; sacd_metabase.cpp.o (symbol from plugin):(.text+0x0): first defined here
/sbin/ld: dvda_metabase.cpp.o (symbol from plugin): in function `dvda_metabase_t::~dvda_metabase_t()':
(.text+0x0): multiple definition of `utf2xml'; sacd_metabase.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

emilot commented on 2020-11-13 16:15 (UTC)

Try with this "source" commit in PKGBUILD

source=('mpd::git+https://git.code.sf.net/p/sacddecoder/mpd/MPD.git#commit=ed387398fa3287d840da791005ec8dad9a81cc7d'

I do not have any trouble with Update...

mo3r commented on 2020-11-09 13:23 (UTC)

@brucehsieh Yes, I have the same problem. That's why I did not update the PKGBUILD in the repository. Now I do not have a powerful PC for debugging and rebuilding mpd. One compilation takes about 40-50 minutes on my hardware. Sorry.

brucehsieh commented on 2020-11-09 13:10 (UTC)

@mo3r Your PKGBUILD can build the mpd-sacd package successfully but the mpd crashes on the update and rescan operations.

melvinvermeeren commented on 2020-10-27 03:19 (UTC)

@mo3r Added you as a co-maintainer if that's ok with you, don't have access to an arch system right now. Thanks!

mo3r commented on 2020-10-27 01:25 (UTC) (edited on 2020-10-27 02:02 (UTC) by mo3r)

@melvinvermeeren Hi, please update PKGBUILD

# Maintainer: Melvin Vermeeren <mail@mel.vin>

pkgname=mpd-sacd
pkgver=0.23~git
pkgrel=1
pkgdesc='MPD with patches for SACD and DVDA ISO playback.'
url='https://sourceforge.net/p/sacddecoder/mpd/MPD.git/ci/master/tree/'
license=('GPL')
arch=('i686' 'x86_64' 'aarch64' 'armv7h')
depends=('libao' 'ffmpeg' 'libmodplug' 'audiofile' 'libshout' 'libmad' 'curl' 'faad2'
    'sqlite' 'jack' 'libmms' 'wavpack' 'avahi' 'libid3tag' 'yajl' 'libmpdclient'
    'icu' 'libupnp' 'libnfs' 'libsamplerate' 'libsoxr' 'smbclient' 'libcdio-paranoia'
    'libgme' 'zziplib' 'fluidsynth' 'libmikmod' 'wildmidi')
makedepends=('boost' 'meson' 'python-sphinx' 'clang' 'ninja')
conflicts=('mpd')
provides=("mpd=${pkgver}")
source=('mpd::git+https://git.code.sf.net/p/sacddecoder/mpd/MPD.git#commit=ad585e179f900ce1038c8a026182a8201d19474c'
    'sysusers.d'
    'tmpfiles.d'
    'conf')
sha1sums=('SKIP'
          '7c7de7b30c6c8e1c705dd415692f6a08a3f62c82'
          'd82864959d1a1a07bf75d87c7586dbb713892f3a'
          '291fd5cda9f0845834a553017327c4586bd853f6')
backup=('etc/mpd.conf')

prepare() {
    cd "${srcdir}/mpd"
    rm -rf build
    install -d build
}

build() {
    cd "${srcdir}/mpd/build"
    _opts=('-Ddocumentation=enabled'
        '-Dstrip=true'
        '-Dchromaprint=disabled' # appears not to be used for anything
        '-Dsidplay=disabled' # unclear why but disabled in the past
        '-Dadplug=disabled' # not in an official repo
        '-Dsndio=disabled' # interferes with detection of alsa devices
        '-Dshine=disabled' # not in an official repo
        '-Dtremor=disabled' # not in official repo
        '-Dcdio_paranoia=enabled'
        '-Diso9660=enabled'
        '-Djack=enabled'
        '-Dlibmpdclient=enabled'
        '-Dpipe=true'
        '-Dpulse=enabled'
        '-Dsoundcloud=enabled'
        '-Dzzip=enabled'
        '-Dsacdiso=true'
        '-Ddvdaiso=true'
        '-Diconv=enabled'
        '-Dc_std=c99'
        '-Dcpp_std=c++17'
    )
    env CC=clang CXX=clang++ arch-meson .. ${_opts[@]}
    ninja
}

package() {
    cd "${srcdir}/mpd/build"
    DESTDIR="${pkgdir}" ninja install
    install -Dm644 ../doc/mpdconf.example "${pkgdir}"/usr/share/doc/mpd/mpdconf.example
    install -Dm644 doc/mpd.conf.5 "${pkgdir}"/usr/share/man/man5/mpd.conf.5
    install -Dm644 doc/mpd.1 "${pkgdir}"/usr/share/man/man1/mpd.1

    install -Dm644 ../../sysusers.d "${pkgdir}"/usr/lib/sysusers.d/mpd.conf
    install -Dm644 ../../conf "${pkgdir}"/etc/mpd.conf
    install -Dm644 ../../tmpfiles.d "${pkgdir}"/usr/lib/tmpfiles.d/mpd.conf

    sed \
        -e '/\[Service\]/a User=mpd' \
        -e '/WantedBy=/c WantedBy=default.target' \
        -i "${pkgdir}"/usr/lib/systemd/system/mpd.service
}

melvinvermeeren commented on 2020-10-06 14:14 (UTC)

Hi, I don't think I'll be able to check this out and fix it anytime soon. Would it work for you if I add you as a co-maintainer so you can push some fixes?

brucehsieh commented on 2020-10-06 09:37 (UTC)

This package doesn't work.

https://git.code.sf.net/p/sacddecoder/mpd/MPD.git#commit=3a0c90a1155ecfd2eb57e172818153c1c95ec363

This version has compiling errors.

https://git.code.sf.net/p/sacddecoder/mpd/MPD.git

The mater branch has linking errors.

brucehsieh commented on 2019-11-16 06:56 (UTC)

It needs to be patched. For your reference.

https://github.com/MusicPlayerDaemon/MPD/commit/818b7e0641f25f55c46bf654d8edb7911c10d584

mistic commented on 2019-01-06 22:58 (UTC)

Hi

Great!!!. Now all works fine... And last but not least, I have been able to understand, where the fault came from...

           Best regards and thank's a lot again

melvinvermeeren commented on 2019-01-04 05:05 (UTC) (edited on 2019-01-06 13:27 (UTC) by melvinvermeeren)

Edit: fixed upstream also in 0.21.5-1

src/lib/sacdiso/sacd_dsdiff.cpp:464

id3_byte_t* dsdid3 = (id3_byte_t*)&id3tags[_track_index].data[0];

With some odd/malformed tags, this may be NULL. the crash happens after when id3_tag_parse() is called with this NULL value.

id3_byte_t* dsdid3 = (id3_byte_t*)&id3tags[_track_index].data[0];
if (dsdid3 == nullptr) {
    return;
}

I simply changed it to this and this time the database finished updating properly with 0.21.4-1, skipping the poor tag causing the issue. I will notify upstream about this bug tomorrow.

@mistic can you check if your error is the same if you run with mpd --no-daemon --stderr --verbose?

melvinvermeeren commented on 2019-01-04 03:55 (UTC) (edited on 2019-01-04 04:21 (UTC) by melvinvermeeren)

Happy new year to you too. :)

I have updated the pkg to the latest upstream commit, which also has changed the build system. Perhaps the bug was fixed, I notice in the changelog of WIP 0.21.4:

  • database
  • inotify: fix crash bug "terminate called after throwing ..."

For me however it discarded the database first and during scanning it crashed with the following: mpd: tag.c:640: id3_tag_parse: Assertion 'data' failed.

0.21.0-10 works fine for me.

You can try 0.20.12-1 with PKGBUILD rev 9f1893d43d96 and then change the git://git.musicpd.org/manisiutkin/mpd.git source to the new repo home. However you may also need an old version of libcdio, unless of course you disable the cdio-paranoia compilation option.

Let me know how it goes if possible, thanks.

Edit: After reverting to 0.21.0-10 it fails with the same error, appears something else is causing this. Will check later.

mistic commented on 2019-01-04 00:17 (UTC)

First, I wish you a happy new year... Sadly semms mpd-sacd-0.21.0-10 makes corrupted database, at least for me. Perhaps because this mpd version itself, not the manisiutkin patch.

It would be possible to access sources in order to compile an older mpd-sacd version? example: mpd-sacd-0.20.12-1, that works fine

Thank's a lot for your efforts and share with us

melvinvermeeren commented on 2018-02-12 16:46 (UTC)

Took a while but I found the new home for the sources:

https://sourceforge.net/p/sacddecoder/mpd/MPD.git/ci/master/tree/

pkg updated

melvinvermeeren commented on 2018-02-05 11:43 (UTC)

@delleceste I still had an up-to-date local repo, which can be found here:

https://git.mel.vin/mirror/mpd-sacd

I have been searching for the repo's new home but cannot find it. If it doesn't pop up within a few weeks I'll try to contact Maxim.

delleceste commented on 2018-02-05 10:22 (UTC)

Hello everyone. Has anyone of you a copy of the sources of mpd-sacd? the git repo has been down for a week, and I deleted the sources...

Thanks in advance.

melvinvermeeren commented on 2018-01-21 16:36 (UTC)

There are currently issues with libcdio 2.0.0 API change, it will fail to compile. If I find some time I'll see if I can fix it, otherwise do not update libcdio and related packages until upstream fixes it.

it9exm commented on 2017-10-04 11:33 (UTC) (edited on 2017-10-04 11:38 (UTC) by it9exm)

@melvinvermeeren thank you, luckily i already have msys2 and i like it more than cygwin, so it will be easier for me. What is disappointing now is that the satellite config makes the music to heavily stutter! When i mount the share and use the local database on the RPI2, everything is perfect, but when using the remote db and smb:// entries the listening is impossible. Perhaps is smbclient not well suited to do the job and nfs is better in this sense? Or is the mpd version running on the debian machine? I'll be doing more testing in the afternoon.

melvinvermeeren commented on 2017-10-04 10:57 (UTC) (edited on 2017-10-04 10:57 (UTC) by melvinvermeeren)

@arny91 glad you got it sort of working at least. You could try to create a more complete Windows build with MSYS2[1], which uses pacman and makepkg just like Arch. With some luck this exact PKGBUILD may work. I am not sure how many of the advanced features work on Windows at all though. Good luck! [1] http://www.msys2.org/

it9exm commented on 2017-10-04 10:21 (UTC) (edited on 2017-10-04 10:22 (UTC) by it9exm)

@melvinvermeeren Man, please ignore the previous comment. It was too late when i figured out that the windows version of mpd was built without smbclient support. Just installed and configured mpd on a debian machine, and now it works (everything but sacd iso, as i have only the standard version in the repos). Thanks for pointing out the way to use this.

it9exm commented on 2017-10-04 08:05 (UTC)

@melvinvermeeren: Ok, i tried again with two mpd daemons, this is the config on the machine where i have files (it's windows 10): music_directory "G:/Musica" log_file "C:/Users/Arnaldo/Desktop/mpd/mpd.log" db_file "C:/Users/Arnaldo/Desktop/mpd/mpd.db" and this is the new config on the RPI2 # See: /usr/share/doc/mpd/mpdconf.example pid_file "/run/mpd/mpd.pid" #db_file "/var/lib/mpd/mpd.db" log_file "/var/log/mpd.log" state_file "/var/lib/mpd/mpdstate" playlist_directory "/var/lib/mpd/playlists" #music_directory "/mnt/usb/Musica" music_directory "smb://I7-2600/Musica" bind_to_address "localhost" bind_to_address "/run/mpd/mpd.sock" port "6600" neighbors { plugin "smbclient" } database { plugin "proxy" host "I7-2600" } audio_output { type "alsa" name "Raspberry Onboard Audio" device "hw:0,0" format "384000:32:2" mixer_device "default" mixer_control "PCM" mixer_index "0" mixer_type "software" } This time, i can access the remote database, but when i try to play an audio file i get this Oct 04 09:49 : client: [0] opened from [::1]:53900 Oct 04 09:49 : exception: Failed to decode smb://I7-2600/Musica/Elio E Le Storie Tese/Elio e le Storie Tese - 1989 - Elio Samaga Hukapan Kariyana Turu/06 - Elio e le Storie Tese - Carro.flac Oct 04 09:49 : exception: nested: smbc_open() failed: File exists Oct 04 09:49 : player: played "Elio E Le Storie Tese/Elio e le Storie Tese - 1989 - Elio Samaga Hukapan Kariyana Turu/06 - Elio e le Storie Tese - Carro.flac" There shouldn't be any compatibility issue between the different operating systems, isn't it?

melvinvermeeren commented on 2017-10-03 20:23 (UTC)

@arny91 you need to run MPD on both machines to use this method. The advantage is that the machine with the storage (not the RPI2) can index/refresh the music database locally where I/O is fast. Then the remote MPD client (RPI2) just queries that database instead of building its own with slow SMB I/O (especially bad with many small files). This is probably intended for huge music libraries that are hundreds of gigabytes. From the link you sent: >One approach for optimization is running MPD on the file server, which not only exports raw files, but also provides access to a readily scanned database. You could try it the "slow" way, where the RPI2 indexes/scans the library from the NFS mount and see how that is performance wise. The initial index may take I while but I believe I/O during actual use isn't that heavy anyway. Let me know how stuff works out.

it9exm commented on 2017-10-03 14:00 (UTC) (edited on 2017-10-03 14:01 (UTC) by it9exm)

@melvinvermeeren This is the mpd configuration: # See: /usr/share/doc/mpd/mpdconf.example pid_file "/run/mpd/mpd.pid" db_file "/var/lib/mpd/mpd.db" log_file "/var/log/mpd.log" state_file "/var/lib/mpd/mpdstate" playlist_directory "/var/lib/mpd/playlists" music_directory "smb://I7-2600/Musica" bind_to_address "localhost" bind_to_address "/run/mpd/mpd.sock" port "6600" neighbors { plugin "smbclient" } #database { #plugin "proxy" #host "I7-2600" #} audio_output { type "alsa" name "Raspberry Onboard Audio" device "hw:0,0" format "384000:32:2" mixer_device "default" mixer_control "PCM" mixer_index "0" mixer_type "software" } >mpd configs of both machines? mpd is running only on one machine, a RPI2, the database is local. I can mount the share by using mount.cifs, there's no password, but i can't access it when mounted from the userspace smbclient storage plugin. Unless you tell me that i need 2 servers, a master and a slave to do it (in this case i would also take advantage of the remote database, and of course, i'd definitely be wrong).

melvinvermeeren commented on 2017-10-03 12:20 (UTC)

@arny91 can you post the mpd configs of both machines? Can I assume you already tested the samba connection with other tools?

it9exm commented on 2017-10-03 12:13 (UTC)

@melvinvermeeren Hi, just tried with the regular mpd, samba shares are not working anyway. Here's the log: Oct 03 14:05 : exception: Failed to access file: File exists Oct 03 14:06 : client: [1] opened from [::1]:54960 Oct 03 14:06 : exception: Failed to open directory: File exists Oct 03 14:06 : client: [1] closed or, via telnet debugging: [alarm@pi2 ~]$ telnet localhost 6600 Trying ::1... Connected to localhost. Escape character is '^]'. OK MPD 0.20.0 listmounts mount: storage: smb://I7-2600/Plug OK listfiles ACK [52@0] {} Failed to open directory: File exists

melvinvermeeren commented on 2017-10-03 11:16 (UTC)

@arny91 could you try with regular mpd and see if it works then? The plugins do build correctly with this package when you list them with mpd --version. If it works with regular mpd but not with this there is probably a bug in the patches.

it9exm commented on 2017-10-02 20:11 (UTC)

Hi, is there something wrong with the storage plugins? I was trying to mount a samba share by using the syntax as described here: https://www.musicpd.org/doc/user/advanced_config.html#satellite music_directory "smb://fileserver.local/mp3" But mpd shows this message in the log: Oct 02 21:59 : exception: Failed to access file: File exists

sagittarius commented on 2017-06-19 12:28 (UTC)

Now default PKGBUILD compiles on ARM kirckwood (Dockstar|GoflexNet|Goflex...). Thank you very very much.

melvinvermeeren commented on 2017-03-08 20:29 (UTC)

Try checking out b6004b68373384c0b4f2fdc50d6f75942920eaac "output/Source: release the mutex while the filter runs" instead. The one called "release v0.19.21" is probably upstream. "Merge tag 'v0.19.21'" should work too, but the mutex fix is probably nice to have.

sagittarius commented on 2017-03-08 20:24 (UTC)

Absolute great package Just a question @mistic or @ melvinvermeeren I've tried to build mpd-sacd for arm v0.19.21 (v≥0.20x does not build for armv5). So I used commit 3bbcda917ce7cb2fa6dcc90d6c38333ca855c941 as the source. And I've inserted in the PKGBUILD: # Quick fix for missing glib-2.0 include. sed -i 's/DSD_CFLAGS = \\/DSD_CFLAGS = $(MMS_CFLAGS) \\/' "${srcdir}"/mpd/Makefile But, unfortunally during the build the autogen.sh makes a configure that warns: configure: WARNING: unrecognized options: --enable-sacdiso, --enable-dvdaiso Am I wrong somewhere ?

mistic commented on 2017-02-23 19:21 (UTC)

@ melvinvermeeren ..Very grateful to you

melvinvermeeren commented on 2017-02-23 11:12 (UTC) (edited on 2017-02-23 11:13 (UTC) by melvinvermeeren)

@mistic Sorry for late reply. You can try to re-add the glib include fix that was introduced in commit[1]. Then, change the #commit=... in the source line to the selected commit which you can find at upstream[2]. [1]: https://aur.archlinux.org/cgit/aur.git/commit/?h=mpd-sacd&id=c05a90eca14df2fb0372acbdef0756e4903a1fd5 [2]: http://git.musicpd.org/cgit/manisiutkin/mpd.git/log/?qt=grep&q=release

mistic commented on 2017-02-19 22:58 (UTC)

@melvinvermeeren thank's lot for share us your good work with mpd. mpd 0.20 , breaks any dsd play option,at least with my USB DAC (SMSL M8). also, obviusly, mpd-sacd 0.20 also... Please, have any possibility to retrieve mpd-sacd 0.19 version? P.D*This is the first time that I compile this pkg packet

sagittarius commented on 2017-02-13 11:08 (UTC) (edited on 2017-02-13 14:18 (UTC) by sagittarius)

@melvinvermeeren Thank you again. Well, it seems it comes from GCC on ARMV5 https://bugs.musicpd.org/view.php?id=4621

melvinvermeeren commented on 2017-02-12 15:00 (UTC)

Perhaps some bug in mpd makefile that only occurs on armv5, or something wrong with the packaging on GCC in armv5. I believe Arch Linux ARM has a IRC with developers, maybe one of them has a armv5 board lying around. Also added armv7h to the arch list (and updated upstream).

sagittarius commented on 2017-02-12 09:30 (UTC)

@melvinvermeeren Thank you. So I've modified the Makefile.am in the src/mpd folder and launch makepkg -e without success: /src/player/Control.hxx:139:7: erreur : « exception_ptr » in namespace « std » does not name a type std::exception_ptr error; By the way, the package builds successfully on another platform (Odroid C1+) arch='armv7h'

melvinvermeeren commented on 2017-02-07 16:40 (UTC)

That version is definitely new enough. Could you try running the configure step by hand and adding -std=c++11 to the C++ flags in the makefile? If that works I'll edit the package to patch it automatically.

sagittarius commented on 2017-02-07 08:52 (UTC) (edited on 2017-02-07 08:53 (UTC) by sagittarius)

@melvinvermeeren Thanks for your awswer. gcc on ARM5 comes from Archlinuxarm and has version 6.3.1 20170109 (GCC). Maybe should I cross compile mpd-sacd.

melvinvermeeren commented on 2017-02-04 16:31 (UTC) (edited on 2017-02-04 16:32 (UTC) by melvinvermeeren)

I'm pretty sure you can get a recent version of GCC on the ARM V5 platform. What distro are you using on the board? Perhaps there is a new major version available?

sagittarius commented on 2017-02-04 13:25 (UTC)

Is there a way to compile it on an ARM V5 platform (Dockstar/GoFlexNet) ? Or is it because of the lack of C++11 support in ARMV5 GCC ? Error message: make[1] : on entre dans le répertoire « /home/pascal/mpd-sacd/src/mpd » g++ -DHAVE_CONFIG_H -I. -DNDEBUG -I./src -I/usr/include -DSYSTEM_CONFIG_FILE_LOCATION='"/etc/mpd.conf"' -D_REENTRANT -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -pthread -march=armv5te -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -fvisibility=hidden -fno-threadsafe-statics -fmerge-all-constants -ffast-math -ftree-vectorize -ffunction-sections -fdata-sections -Wall -Wextra -Wmissing-declarations -Wshadow -Wpointer-arith -Wcast-qual -Wwrite-strings -Wsign-compare -MT src/output/libmpd_a-MultipleOutputs.o -MD -MP -MF src/output/.deps/libmpd_a-MultipleOutputs.Tpo -c -o src/output/libmpd_a-MultipleOutputs.o `test -f 'src/output/MultipleOutputs.cxx' || echo './'`src/output/MultipleOutputs.cxx In file included from src/output/MultipleOutputs.cxx:22:0: ./src/player/Control.hxx:139:7: erreur : « exception_ptr » in namespace « std » does not name a type std::exception_ptr error; ^~~~~~~~~~~~~ ./src/player/Control.hxx:358:39: erreur : « std::exception_ptr » has not been declared void SetError(PlayerError type, std::exception_ptr &&_error); ^~~~~~~~~~~~~ ./src/player/Control.hxx: Dans la fonction membre « void PlayerControl::ClearError() »: ./src/player/Control.hxx:331:3: erreur : « error » was not declared in this scope error = std::exception_ptr(); ^~~~~ ./src/player/Control.hxx:331:11: erreur : « exception_ptr » is not a member of « std » error = std::exception_ptr(); ^~~ ./src/player/Control.hxx: Dans la fonction membre « void PlayerControl::CheckRethrowError() const »: ./src/player/Control.hxx:368:4: erreur : « rethrow_exception » is not a member of « std » std::rethrow_exception(error); ^~~ ./src/player/Control.hxx:368:27: erreur : « error » was not declared in this scope std::rethrow_exception(error); ^~~~~ make[1]: *** [Makefile:10225: src/output/libmpd_a-MultipleOutputs.o] Error 1 make[1] : on quitte le répertoire « /home/pascal/mpd-sacd/src/mpd » make: *** [Makefile:4747: all] Error 2 ==> ERREUR : Une erreur s’est produite dans build(). Abandon...

sagittarius commented on 2016-10-24 10:06 (UTC)

For info, it builds fine on Odroid C2 'aarch64'

melvinvermeeren commented on 2016-04-07 15:37 (UTC)

Updated to 0.20-3 with a quick fix for the broken makefile on the latest upstream. Thanks for flagging and mailing. :)