Compiling with build.sh
With the build.sh
script you can easily build myMPD and create your own packages. Downstream packagers should use cmake directly.
Compiling and installing
The build.sh
script provides three compile targets for myMPD.
If compilation fails and you are building on top of an old version, try to run ./build.sh cleanup
before.
Release
./build.sh release
- Builds release binaries
- Directory: release
- Assets embedded in binary
- Binary is stripped
- Install prefix is
/usr
./build.sh install
installs the release binaries (run as root)
You can use ./build.sh releaseinstall
to compile and install in one step.
Debug
./build.sh debug
- Builds debug binaries
- Directory: debug
- Plain assets in htdocs directory
- Use this to debug mympd with valgrind or gdb
Sanitizers
./build.sh <asan|tsan|ubsan>
- Builds debug binaries linked with address sanitizers
- Directory: debug
- Plain assets in htdocs directory
- You must eventually preload the sanitizer library, e.g.
LD_PRELOAD=libasan.so.6 debug/bin/mympd
Removing
./build.sh uninstall
to remove only binaries./build.sh purge
to remove all
Create distribution specific packages
You can self create packages for your distribution:
./build.sh pkgalpine
for Alpine Linux./build.sh pkgarch
for Arch based distributions (e.g. Manjaro)./build.sh pkgdebian
for Debian based distributions (e.g. Ubuntu. Raspbian)./build.sh pkgrpm
for RPM based distributions (e.g. openSUSE, Fedora)./build.sh pkgdocker
to create a Docker image based on Alpine Linux- For gentoo you have to create a local overlay, the ebuild file is in the directory
contrib/packaging/gentoo
- Build a OpenWrt package
Cross compiling debian packages
The build script can use sbuild and qemu to cross compile debian packages, thanks to #264 @tsunulukai.
- Set target distributions:
export DISTROS="bullseye buster"
- Set target architectures:
export TARGETS="armhf armel"
sudo -E ./build.sh sbuild_chroots
to create chroot environments for buildsudo -E ./build.sh sbuild_build
to build the packages
The successfully build packages can be found in the packager/builds
directory.