release v0.20.21
-----BEGIN PGP SIGNATURE----- iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlt3CwMQHG1heEBtdXNp Y3BkLm9yZwAKCRAjbopYxttFEiQcD/0S7NzE9nLsuTJJB9ElzOW17XiKkLKuDErQ P1r46APwa0agqfHFTUM5a+ifMCFQ4QTh0p+MiImYniBKmTnuKYBxZJFgHYojrPOS jxJbPJI6R7vLfo07kIem1jw/3YjqF4BDJyn9FYLBLgWz3IiFC/H4XH4XYxoQhTYL Xv0aGMCnil6gD2ENvx4by3tqsM9l5ktvPwR6bktRw4ImhgT5zHShpuPYZekas1ic +A1oCXFO4UrlZQ0sHdcG7Up8NOEJvAiNR5+BCnb9aR8l6M2Mzu2u715zSSWvTBI+ SCa8lE/gkndJC2Q3BmPRp+OcWU/uwVIkWdJdCF8DgN5vmk3cLRJ/SpHGkR1iYSvF MUW8QF0tc2Xctv0NHYXlDj6wVVJ+OWNUcNy6SWHAT7o5S0ppB+2nesAfTVqqGK/Z yRmcW5CvYNH8dfN7WBkLehN57dpI6O1YkfF30xCPcT+fu4oBYv7owU4MqFVcJN2r FEbTZCfRFGjF7Kmb6aF+mFMhTnqYNEZjFS0SljLJWjlimLaSfgTXdEv23IpxIMnV i+CEy7B2RseR31tmCekyWxdLnNJPYC4Zqwer8dd7yrY/exEM/6x9JQDUbCaGccar NlwmCj6uDKXxU3tkb9Mk77oX51dFL58BtpoQw/DfXRWSX+UsAxFioyAbJ9juJUrM JO9WMABo0Q== =2zvn -----END PGP SIGNATURE----- Merge tag 'v0.20.21' release v0.20.21
This commit is contained in:
commit
1ba35e1fd4
@ -347,7 +347,7 @@ libmpd.so: $(filter %.a,$(src_mpd_LDADD)) libmain.a
|
|||||||
$(AM_V_CXXLD)$(CXXLD) -shared -Wl,--no-undefined,-shared,-Bsymbolic -llog -lz -o $@ $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) src/libmain_a-Main.o $(src_mpd_LDADD) $(LIBS)
|
$(AM_V_CXXLD)$(CXXLD) -shared -Wl,--no-undefined,-shared,-Bsymbolic -llog -lz -o $@ $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) src/libmain_a-Main.o $(src_mpd_LDADD) $(LIBS)
|
||||||
|
|
||||||
ANDROID_SDK_BUILD_TOOLS_VERSION = 27.0.0
|
ANDROID_SDK_BUILD_TOOLS_VERSION = 27.0.0
|
||||||
ANDROID_SDK_PLATFORM = android-17
|
ANDROID_SDK_PLATFORM = android-21
|
||||||
|
|
||||||
ANDROID_BUILD_TOOLS_DIR = $(ANDROID_SDK)/build-tools/$(ANDROID_SDK_BUILD_TOOLS_VERSION)
|
ANDROID_BUILD_TOOLS_DIR = $(ANDROID_SDK)/build-tools/$(ANDROID_SDK_BUILD_TOOLS_VERSION)
|
||||||
ANDROID_SDK_PLATFORM_DIR = $(ANDROID_SDK)/platforms/$(ANDROID_SDK_PLATFORM)
|
ANDROID_SDK_PLATFORM_DIR = $(ANDROID_SDK)/platforms/$(ANDROID_SDK_PLATFORM)
|
||||||
@ -394,7 +394,7 @@ android/build/include/org_musicpd_Bridge.h: android/build/classes.dex
|
|||||||
|
|
||||||
BUILT_SOURCES = android/build/include/org_musicpd_Bridge.h
|
BUILT_SOURCES = android/build/include/org_musicpd_Bridge.h
|
||||||
|
|
||||||
android/build/lib/armeabi-v7a/libmpd.so: libmpd.so
|
android/build/lib/$(ANDROID_ABI)/libmpd.so: libmpd.so
|
||||||
mkdir -p $(@D)
|
mkdir -p $(@D)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
$(STRIP) -o $@ $<
|
$(STRIP) -o $@ $<
|
||||||
@ -404,7 +404,7 @@ android/build/res/drawable/icon.png: mpd.svg
|
|||||||
rsvg-convert --width=48 --height=48 $< -o $@
|
rsvg-convert --width=48 --height=48 $< -o $@
|
||||||
|
|
||||||
.DELETE_ON_ERROR: android/build/unsigned.apk
|
.DELETE_ON_ERROR: android/build/unsigned.apk
|
||||||
android/build/unsigned.apk: android/build/classes.dex android/build/resources.apk android/build/lib/armeabi-v7a/libmpd.so
|
android/build/unsigned.apk: android/build/classes.dex android/build/resources.apk android/build/lib/$(ANDROID_ABI)/libmpd.so
|
||||||
cp android/build/resources.apk $@
|
cp android/build/resources.apk $@
|
||||||
cd $(dir $@) && zip -q -r $(notdir $@) classes.dex lib
|
cd $(dir $@) && zip -q -r $(notdir $@) classes.dex lib
|
||||||
|
|
||||||
@ -808,6 +808,8 @@ libstorage_a_SOURCES = \
|
|||||||
|
|
||||||
libstorage_a_CPPFLAGS = $(AM_CPPFLAGS) \
|
libstorage_a_CPPFLAGS = $(AM_CPPFLAGS) \
|
||||||
$(DBUS_CFLAGS) \
|
$(DBUS_CFLAGS) \
|
||||||
|
$(CURL_CFLAGS) \
|
||||||
|
$(EXPAT_CFLAGS) \
|
||||||
$(NFS_CFLAGS) \
|
$(NFS_CFLAGS) \
|
||||||
$(SMBCLIENT_CFLAGS)
|
$(SMBCLIENT_CFLAGS)
|
||||||
|
|
||||||
|
6
NEWS
6
NEWS
@ -44,14 +44,18 @@ ver 0.21 (not yet released)
|
|||||||
* systemd watchdog support
|
* systemd watchdog support
|
||||||
* require GCC 6
|
* require GCC 6
|
||||||
|
|
||||||
ver 0.20.21 (not yet released)
|
ver 0.20.21 (2018/08/17)
|
||||||
* database
|
* database
|
||||||
- proxy: add "password" setting
|
- proxy: add "password" setting
|
||||||
- proxy: support tags "ArtistSort", "AlbumArtistSort", "AlbumSort"
|
- proxy: support tags "ArtistSort", "AlbumArtistSort", "AlbumSort"
|
||||||
- simple: allow .mpdignore comments only at start of line
|
- simple: allow .mpdignore comments only at start of line
|
||||||
* output
|
* output
|
||||||
- httpd: remove broken DLNA support code
|
- httpd: remove broken DLNA support code
|
||||||
|
* playlist
|
||||||
|
- cue: support file type declaration "FLAC" (non-standard)
|
||||||
* URI schemes are case insensitive
|
* URI schemes are case insensitive
|
||||||
|
* Android, Windows
|
||||||
|
- enable the "curl" storage plugin
|
||||||
|
|
||||||
ver 0.20.20 (2018/05/22)
|
ver 0.20.20 (2018/05/22)
|
||||||
* protocol
|
* protocol
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
android:versionCode="20"
|
android:versionCode="20"
|
||||||
android:versionName="0.20.21">
|
android:versionName="0.20.21">
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/>
|
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21"/>
|
||||||
|
|
||||||
<application android:icon="@drawable/icon" android:label="@string/app_name">
|
<application android:icon="@drawable/icon" android:label="@string/app_name">
|
||||||
<activity android:name=".Main"
|
<activity android:name=".Main"
|
||||||
|
@ -29,6 +29,15 @@ android_abis = {
|
|||||||
'cflags': '-march=armv7-a -mfpu=vfp -mfloat-abi=softfp',
|
'cflags': '-march=armv7-a -mfpu=vfp -mfloat-abi=softfp',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'arm64-v8a': {
|
||||||
|
'android_api_level': '21',
|
||||||
|
'arch': 'aarch64-linux-android',
|
||||||
|
'ndk_arch': 'arm64',
|
||||||
|
'toolchain_arch': 'aarch64-linux-android',
|
||||||
|
'llvm_triple': 'aarch64-none-linux-android',
|
||||||
|
'cflags': '',
|
||||||
|
},
|
||||||
|
|
||||||
'x86': {
|
'x86': {
|
||||||
'arch': 'i686-linux-android',
|
'arch': 'i686-linux-android',
|
||||||
'ndk_arch': 'x86',
|
'ndk_arch': 'x86',
|
||||||
@ -65,7 +74,8 @@ class AndroidNdkToolchain:
|
|||||||
self.build_path = build_path
|
self.build_path = build_path
|
||||||
|
|
||||||
ndk_arch = abi_info['ndk_arch']
|
ndk_arch = abi_info['ndk_arch']
|
||||||
ndk_platform = 'android-14'
|
android_api_level = '21'
|
||||||
|
ndk_platform = 'android-' + android_api_level
|
||||||
|
|
||||||
# select the NDK compiler
|
# select the NDK compiler
|
||||||
gcc_version = '4.9'
|
gcc_version = '4.9'
|
||||||
@ -106,7 +116,7 @@ class AndroidNdkToolchain:
|
|||||||
self.cppflags = '--sysroot=' + sysroot + \
|
self.cppflags = '--sysroot=' + sysroot + \
|
||||||
' -isystem ' + os.path.join(install_prefix, 'include') + \
|
' -isystem ' + os.path.join(install_prefix, 'include') + \
|
||||||
' -isystem ' + os.path.join(sysroot, 'usr', 'include', arch) + \
|
' -isystem ' + os.path.join(sysroot, 'usr', 'include', arch) + \
|
||||||
' -D__ANDROID_API__=14'
|
' -D__ANDROID_API__=' + android_api_level
|
||||||
self.ldflags = '--sysroot=' + sysroot + \
|
self.ldflags = '--sysroot=' + sysroot + \
|
||||||
' -L' + os.path.join(install_prefix, 'lib') + \
|
' -L' + os.path.join(install_prefix, 'lib') + \
|
||||||
' -L' + os.path.join(target_root, 'usr', 'lib') + \
|
' -L' + os.path.join(target_root, 'usr', 'lib') + \
|
||||||
@ -116,6 +126,7 @@ class AndroidNdkToolchain:
|
|||||||
|
|
||||||
self.is_arm = ndk_arch == 'arm'
|
self.is_arm = ndk_arch == 'arm'
|
||||||
self.is_armv7 = self.is_arm and 'armv7' in self.cflags
|
self.is_armv7 = self.is_arm and 'armv7' in self.cflags
|
||||||
|
self.is_aarch64 = ndk_arch == 'arm64'
|
||||||
self.is_windows = False
|
self.is_windows = False
|
||||||
|
|
||||||
libcxx_path = os.path.join(ndk_path, 'sources/cxx-stl/llvm-libc++')
|
libcxx_path = os.path.join(ndk_path, 'sources/cxx-stl/llvm-libc++')
|
||||||
@ -146,6 +157,7 @@ thirdparty_libs = [
|
|||||||
libid3tag,
|
libid3tag,
|
||||||
ffmpeg,
|
ffmpeg,
|
||||||
curl,
|
curl,
|
||||||
|
libexpat,
|
||||||
libnfs,
|
libnfs,
|
||||||
boost,
|
boost,
|
||||||
]
|
]
|
||||||
|
@ -49,7 +49,7 @@ public class Main extends Activity implements Runnable {
|
|||||||
TextView tv = new TextView(this);
|
TextView tv = new TextView(this);
|
||||||
tv.setText("Failed to load the native MPD libary.\n" +
|
tv.setText("Failed to load the native MPD libary.\n" +
|
||||||
"Report this problem to us, and include the following information:\n" +
|
"Report this problem to us, and include the following information:\n" +
|
||||||
"ABI=" + Build.CPU_ABI + "\n" +
|
"SUPPORTED_ABIS=" + String.join(", ", Build.SUPPORTED_ABIS) + "\n" +
|
||||||
"PRODUCT=" + Build.PRODUCT + "\n" +
|
"PRODUCT=" + Build.PRODUCT + "\n" +
|
||||||
"FINGERPRINT=" + Build.FINGERPRINT + "\n" +
|
"FINGERPRINT=" + Build.FINGERPRINT + "\n" +
|
||||||
"error=" + Loader.error);
|
"error=" + Loader.error);
|
||||||
|
@ -16,7 +16,7 @@ AC_CONFIG_MACRO_DIR([m4])
|
|||||||
|
|
||||||
AC_DEFINE(PROTOCOL_VERSION, "0.21.0", [The MPD protocol version])
|
AC_DEFINE(PROTOCOL_VERSION, "0.21.0", [The MPD protocol version])
|
||||||
|
|
||||||
GIT_COMMIT=`GIT_DIR="$srcdir/.git" git describe --dirty --always 2>/dev/null`
|
GIT_COMMIT=`cd "$srcdir" && git describe --dirty --always 2>/dev/null`
|
||||||
if test x$GIT_COMMIT != x; then
|
if test x$GIT_COMMIT != x; then
|
||||||
AC_DEFINE_UNQUOTED(GIT_COMMIT, ["$GIT_COMMIT"], [The current git commit])
|
AC_DEFINE_UNQUOTED(GIT_COMMIT, ["$GIT_COMMIT"], [The current git commit])
|
||||||
fi
|
fi
|
||||||
@ -186,6 +186,7 @@ AC_ARG_WITH([android-sdk],
|
|||||||
[Directory for Android SDK]),
|
[Directory for Android SDK]),
|
||||||
[], [with_android_sdk=no])
|
[], [with_android_sdk=no])
|
||||||
|
|
||||||
|
android_abi=""
|
||||||
if test x$host_is_android = xyes; then
|
if test x$host_is_android = xyes; then
|
||||||
if test x$with_android_sdk = xno; then
|
if test x$with_android_sdk = xno; then
|
||||||
AC_MSG_ERROR([Android build requires option --with-android-sdk=DIR])
|
AC_MSG_ERROR([Android build requires option --with-android-sdk=DIR])
|
||||||
@ -194,9 +195,15 @@ if test x$host_is_android = xyes; then
|
|||||||
if ! test -x $with_android_sdk/tools/android; then
|
if ! test -x $with_android_sdk/tools/android; then
|
||||||
AC_MSG_ERROR([Android SDK not found in $with_android_sdk])
|
AC_MSG_ERROR([Android SDK not found in $with_android_sdk])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AS_CASE([$host_cpu],
|
||||||
|
[i686], [android_abi="x86"],
|
||||||
|
[aarch64], [android_abi="arm64-v8a"],
|
||||||
|
[android_abi="armeabi-v7a"])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(ANDROID_SDK, [$with_android_sdk])
|
AC_SUBST(ANDROID_SDK, [$with_android_sdk])
|
||||||
|
AC_SUBST(ANDROID_ABI, [$android_abi])
|
||||||
|
|
||||||
dnl ---------------------------------------------------------------------------
|
dnl ---------------------------------------------------------------------------
|
||||||
dnl Language Checks
|
dnl Language Checks
|
||||||
|
@ -21,6 +21,8 @@ class FfmpegProject(Project):
|
|||||||
|
|
||||||
if toolchain.is_arm:
|
if toolchain.is_arm:
|
||||||
arch = 'arm'
|
arch = 'arm'
|
||||||
|
elif toolchain.is_aarch64:
|
||||||
|
arch = 'aarch64'
|
||||||
else:
|
else:
|
||||||
arch = 'x86'
|
arch = 'x86'
|
||||||
|
|
||||||
|
@ -364,6 +364,16 @@ curl = AutotoolsProject(
|
|||||||
patches='src/lib/curl/patches',
|
patches='src/lib/curl/patches',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
libexpat = AutotoolsProject(
|
||||||
|
'https://github.com/libexpat/libexpat/releases/download/R_2_2_6/expat-2.2.6.tar.bz2',
|
||||||
|
'17b43c2716d521369f82fc2dc70f359860e90fa440bea65b3b85f0b246ea81f2',
|
||||||
|
'lib/libexpat.a',
|
||||||
|
[
|
||||||
|
'--disable-shared', '--enable-static',
|
||||||
|
'--without-docbook',
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
libnfs = AutotoolsProject(
|
libnfs = AutotoolsProject(
|
||||||
'https://github.com/sahlberg/libnfs/archive/libnfs-3.0.0.tar.gz',
|
'https://github.com/sahlberg/libnfs/archive/libnfs-3.0.0.tar.gz',
|
||||||
'445d92c5fc55e4a5b115e358e60486cf8f87ee50e0103d46a02e7fb4618566a5',
|
'445d92c5fc55e4a5b115e358e60486cf8f87ee50e0103d46a02e7fb4618566a5',
|
||||||
@ -374,13 +384,15 @@ libnfs = AutotoolsProject(
|
|||||||
|
|
||||||
# work around -Wtautological-compare
|
# work around -Wtautological-compare
|
||||||
'--disable-werror',
|
'--disable-werror',
|
||||||
|
|
||||||
|
'--disable-utils', '--disable-examples',
|
||||||
],
|
],
|
||||||
base='libnfs-libnfs-3.0.0',
|
base='libnfs-libnfs-3.0.0',
|
||||||
autoreconf=True,
|
autoreconf=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
boost = BoostProject(
|
boost = BoostProject(
|
||||||
'http://downloads.sourceforge.net/project/boost/boost/1.66.0/boost_1_66_0.tar.bz2',
|
'http://downloads.sourceforge.net/project/boost/boost/1.68.0/boost_1_68_0.tar.bz2',
|
||||||
'5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9',
|
'7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7',
|
||||||
'include/boost/version.hpp',
|
'include/boost/version.hpp',
|
||||||
)
|
)
|
||||||
|
@ -20,6 +20,9 @@ class MesonProject(Project):
|
|||||||
cpu = 'armv7'
|
cpu = 'armv7'
|
||||||
else:
|
else:
|
||||||
cpu = 'armv6'
|
cpu = 'armv6'
|
||||||
|
elif toolchain.is_aarch64:
|
||||||
|
cpu_family = 'aarch64'
|
||||||
|
cpu = 'arm64-v8a'
|
||||||
else:
|
else:
|
||||||
cpu_family = 'x86'
|
cpu_family = 'x86'
|
||||||
if 'x86_64' in toolchain.arch:
|
if 'x86_64' in toolchain.arch:
|
||||||
@ -51,6 +54,9 @@ c_link_args = %s
|
|||||||
cpp_args = %s
|
cpp_args = %s
|
||||||
cpp_link_args = %s
|
cpp_link_args = %s
|
||||||
|
|
||||||
|
# Keep Meson from executing Android-x86 test binariees
|
||||||
|
needs_exe_wrapper = true
|
||||||
|
|
||||||
[host_machine]
|
[host_machine]
|
||||||
system = '%s'
|
system = '%s'
|
||||||
cpu_family = '%s'
|
cpu_family = '%s'
|
||||||
|
@ -64,12 +64,9 @@ OpenFileInputStream(Path path, Mutex &mutex)
|
|||||||
throw FormatRuntimeError("Not a regular file: %s",
|
throw FormatRuntimeError("Not a regular file: %s",
|
||||||
path.c_str());
|
path.c_str());
|
||||||
|
|
||||||
#if !defined(__BIONIC__) || __ANDROID_API__ >= 21
|
|
||||||
/* posix_fadvise() requires Android API 21 */
|
|
||||||
#ifdef POSIX_FADV_SEQUENTIAL
|
#ifdef POSIX_FADV_SEQUENTIAL
|
||||||
posix_fadvise(reader.GetFD().Get(), (off_t)0, info.GetSize(),
|
posix_fadvise(reader.GetFD().Get(), (off_t)0, info.GetSize(),
|
||||||
POSIX_FADV_SEQUENTIAL);
|
POSIX_FADV_SEQUENTIAL);
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return std::make_unique<FileInputStream>(path.ToUTF8Throw().c_str(),
|
return std::make_unique<FileInputStream>(path.ToUTF8Throw().c_str(),
|
||||||
|
@ -202,6 +202,7 @@ CueParser::Feed2(char *p) noexcept
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (strcmp(type, "WAVE") != 0 &&
|
if (strcmp(type, "WAVE") != 0 &&
|
||||||
|
strcmp(type, "FLAC") != 0 && /* non-standard */
|
||||||
strcmp(type, "MP3") != 0 &&
|
strcmp(type, "MP3") != 0 &&
|
||||||
strcmp(type, "AIFF") != 0) {
|
strcmp(type, "AIFF") != 0) {
|
||||||
state = IGNORE_FILE;
|
state = IGNORE_FILE;
|
||||||
|
@ -22,21 +22,6 @@
|
|||||||
#include "EPollFD.hxx"
|
#include "EPollFD.hxx"
|
||||||
#include "Error.hxx"
|
#include "Error.hxx"
|
||||||
|
|
||||||
#if defined(__BIONIC__) && __ANDROID_API__ < 21
|
|
||||||
|
|
||||||
#include <sys/syscall.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
#define EPOLL_CLOEXEC O_CLOEXEC
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
epoll_create1(int flags) noexcept
|
|
||||||
{
|
|
||||||
return syscall(__NR_epoll_create1, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
EPollFD::EPollFD()
|
EPollFD::EPollFD()
|
||||||
:fd(::epoll_create1(EPOLL_CLOEXEC))
|
:fd(::epoll_create1(EPOLL_CLOEXEC))
|
||||||
{
|
{
|
||||||
|
@ -65,6 +65,7 @@ class CrossGccToolchain:
|
|||||||
|
|
||||||
self.is_arm = arch.startswith('arm')
|
self.is_arm = arch.startswith('arm')
|
||||||
self.is_armv7 = self.is_arm and 'armv7' in self.cflags
|
self.is_armv7 = self.is_arm and 'armv7' in self.cflags
|
||||||
|
self.is_aarch64 = arch == 'aarch64'
|
||||||
self.is_windows = 'mingw32' in arch
|
self.is_windows = 'mingw32' in arch
|
||||||
|
|
||||||
self.env = dict(os.environ)
|
self.env = dict(os.environ)
|
||||||
@ -86,6 +87,7 @@ thirdparty_libs = [
|
|||||||
liblame,
|
liblame,
|
||||||
ffmpeg,
|
ffmpeg,
|
||||||
curl,
|
curl,
|
||||||
|
libexpat,
|
||||||
libnfs,
|
libnfs,
|
||||||
boost,
|
boost,
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user