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:
Max Kellermann 2018-08-17 20:02:27 +02:00
commit 1ba35e1fd4
13 changed files with 59 additions and 29 deletions

View File

@ -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
View File

@ -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

View File

@ -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"

View File

@ -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,
] ]

View File

@ -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);

View File

@ -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

View File

@ -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'

View File

@ -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',
) )

View File

@ -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'

View File

@ -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(),

View File

@ -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;

View 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))
{ {

View File

@ -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,
] ]