Hello community, here is the log from the commit of package mpd for openSUSE:Factory checked in at 2018-02-12 10:15:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mpd (Old) and /work/SRC/openSUSE:Factory/.mpd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mpd" Mon Feb 12 10:15:42 2018 rev:3 rq:575392 version:0.20.17 Changes: -------- --- /work/SRC/openSUSE:Factory/mpd/mpd.changes 2018-02-05 10:53:57.709638960 +0100 +++ /work/SRC/openSUSE:Factory/.mpd.new/mpd.changes 2018-02-12 10:15:43.288410130 +0100 @@ -1,0 +2,9 @@ +Sun Feb 11 13:17:41 UTC 2018 - mar...@gmx.de + +- Update to version 0.20.17: + * output + - alsa: fix crash bug with 8 channels + * mixer + - alsa: fix rounding error at volume 0 + +------------------------------------------------------------------- Old: ---- mpd-0.20.16.tar.xz New: ---- mpd-0.20.17.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mpd.spec ++++++ --- /var/tmp/diff_new_pack.cGFVAV/_old 2018-02-12 10:15:44.552364582 +0100 +++ /var/tmp/diff_new_pack.cGFVAV/_new 2018-02-12 10:15:44.556364438 +0100 @@ -23,7 +23,7 @@ %define _userunitdir %{_prefix}/lib/systemd/user %endif Name: mpd -Version: 0.20.16 +Version: 0.20.17 Release: 0 Summary: Music Player Daemon License: GPL-3.0+ ++++++ mpd-0.20.16.tar.xz -> mpd-0.20.17.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/Makefile.in new/mpd-0.20.17/Makefile.in --- old/mpd-0.20.16/Makefile.in 2018-01-23 16:31:44.000000000 +0100 +++ new/mpd-0.20.17/Makefile.in 2018-02-09 18:43:51.000000000 +0100 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15317,7 +15317,7 @@ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir @@ -15342,7 +15342,7 @@ @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -15360,7 +15360,7 @@ distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -15370,7 +15370,7 @@ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac @@ -15613,9 +15613,9 @@ @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -@ENABLE_DOCUMENTATION_FALSE@install-data-local: @ANDROID_FALSE@@ENABLE_DOCUMENTATION_FALSE@@ENABLE_HAIKU_FALSE@clean-local: @ENABLE_DOCUMENTATION_FALSE@uninstall-local: +@ENABLE_DOCUMENTATION_FALSE@install-data-local: clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-local \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/NEWS new/mpd-0.20.17/NEWS --- old/mpd-0.20.16/NEWS 2018-02-03 19:48:26.000000000 +0100 +++ new/mpd-0.20.17/NEWS 2018-02-11 13:02:53.000000000 +0100 @@ -1,3 +1,12 @@ +ver 0.20.17 (2018/02/11) +* output + - alsa: fix crash bug with 8 channels +* mixer + - alsa: fix rounding error at volume 0 +* fix real-time and idle scheduling with Musl +* Android + - fix compatibility with Android 4.0 + ver 0.20.16 (2018/02/03) * output - pulse: fix crash during auto-detection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/aclocal.m4 new/mpd-0.20.17/aclocal.m4 --- old/mpd-0.20.16/aclocal.m4 2018-01-06 13:16:29.000000000 +0100 +++ new/mpd-0.20.17/aclocal.m4 2018-02-09 18:43:49.000000000 +0100 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.15.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,14 +51,14 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -110,7 +110,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -141,7 +141,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -332,7 +332,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -408,7 +408,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -605,7 +605,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -626,7 +626,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -647,7 +647,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -697,7 +697,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -736,7 +736,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -765,7 +765,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -812,7 +812,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -831,7 +831,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -912,7 +912,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -972,7 +972,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1000,7 +1000,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1019,7 +1019,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/android/AndroidManifest.xml new/mpd-0.20.17/android/AndroidManifest.xml --- old/mpd-0.20.16/android/AndroidManifest.xml 2018-01-05 18:07:19.000000000 +0100 +++ new/mpd-0.20.17/android/AndroidManifest.xml 2018-02-09 23:14:31.000000000 +0100 @@ -2,10 +2,10 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.musicpd" android:installLocation="auto" - android:versionCode="14" - android:versionName="0.20.15"> + android:versionCode="16" + android:versionName="0.20.17"> - <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17"/> + <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/android/build.py new/mpd-0.20.17/android/build.py --- old/mpd-0.20.16/android/build.py 2018-01-19 22:45:54.000000000 +0100 +++ new/mpd-0.20.17/android/build.py 2018-02-09 23:59:30.000000000 +0100 @@ -46,7 +46,7 @@ self.ndk_arch = 'arm' android_abi = 'armeabi-v7a' - ndk_platform = 'android-21' + ndk_platform = 'android-14' # select the NDK compiler gcc_version = '4.9' @@ -67,7 +67,7 @@ common_flags = '-Os -g' common_flags += ' -fPIC' - common_flags += ' -march=armv7-a -mfloat-abi=softfp' + common_flags += ' -march=armv7-a -mfpu=vfp -mfloat-abi=softfp' toolchain_bin = os.path.join(toolchain_path, 'bin') llvm_bin = os.path.join(llvm_path, 'bin') @@ -87,7 +87,7 @@ self.cppflags = '--sysroot=' + sysroot + \ ' -isystem ' + os.path.join(install_prefix, 'include') + \ ' -isystem ' + os.path.join(sysroot, 'usr', 'include', arch) + \ - ' -D__ANDROID_API__=21' + ' -D__ANDROID_API__=14' self.ldflags = '--sysroot=' + sysroot + \ ' -L' + os.path.join(install_prefix, 'lib') + \ ' -L' + os.path.join(target_root, 'usr', 'lib') + \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/configure new/mpd-0.20.17/configure --- old/mpd-0.20.16/configure 2018-01-06 13:16:30.000000000 +0100 +++ new/mpd-0.20.17/configure 2018-02-09 18:43:50.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for mpd 0.20.16. +# Generated by GNU Autoconf 2.69 for mpd 0.20.17. # # Report bugs to <musicpd-dev-t...@lists.sourceforge.net>. # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='mpd' PACKAGE_TARNAME='mpd' -PACKAGE_VERSION='0.20.16' -PACKAGE_STRING='mpd 0.20.16' +PACKAGE_VERSION='0.20.17' +PACKAGE_STRING='mpd 0.20.17' PACKAGE_BUGREPORT='musicpd-dev-t...@lists.sourceforge.net' PACKAGE_URL='' @@ -1785,7 +1785,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures mpd 0.20.16 to adapt to many kinds of systems. +\`configure' configures mpd 0.20.17 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1856,7 +1856,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of mpd 0.20.16:";; + short | recursive ) echo "Configuration of mpd 0.20.17:";; esac cat <<\_ACEOF @@ -2209,7 +2209,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -mpd configure 0.20.16 +mpd configure 0.20.17 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2616,7 +2616,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by mpd $as_me 0.20.16, which was +It was created by mpd $as_me 0.20.17, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2967,7 +2967,7 @@ VERSION_MAJOR=0 VERSION_MINOR=20 -VERSION_REVISION=16 +VERSION_REVISION=17 VERSION_EXTRA=0 @@ -3486,7 +3486,7 @@ # Define the identity of the package. PACKAGE='mpd' - VERSION='0.20.16' + VERSION='0.20.17' cat >>confdefs.h <<_ACEOF @@ -21779,7 +21779,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by mpd $as_me 0.20.16, which was +This file was extended by mpd $as_me 0.20.17, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21845,7 +21845,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -mpd config.status 0.20.16 +mpd config.status 0.20.17 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/configure.ac new/mpd-0.20.17/configure.ac --- old/mpd-0.20.16/configure.ac 2018-01-06 13:16:06.000000000 +0100 +++ new/mpd-0.20.17/configure.ac 2018-02-09 18:43:32.000000000 +0100 @@ -1,10 +1,10 @@ AC_PREREQ(2.60) -AC_INIT(mpd, 0.20.16, musicpd-dev-t...@lists.sourceforge.net) +AC_INIT(mpd, 0.20.17, musicpd-dev-t...@lists.sourceforge.net) VERSION_MAJOR=0 VERSION_MINOR=20 -VERSION_REVISION=16 +VERSION_REVISION=17 VERSION_EXTRA=0 AC_CONFIG_SRCDIR([src/Main.cxx]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/doc/doxygen.conf new/mpd-0.20.17/doc/doxygen.conf --- old/mpd-0.20.16/doc/doxygen.conf 2018-02-03 19:37:52.000000000 +0100 +++ new/mpd-0.20.17/doc/doxygen.conf 2018-02-09 18:43:54.000000000 +0100 @@ -38,7 +38,7 @@ # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.20.16 +PROJECT_NUMBER = 0.20.17 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/doc/user.xml new/mpd-0.20.17/doc/user.xml --- old/mpd-0.20.16/doc/user.xml 2017-11-14 11:31:31.000000000 +0100 +++ new/mpd-0.20.17/doc/user.xml 2018-02-09 19:15:46.000000000 +0100 @@ -66,6 +66,23 @@ </para> </section> + <section id="install_android"> + <title>Installing on Android</title> + + <para> + An experimental Android build is available on <ulink + url="https://play.google.com/store/apps/details?id=org.musicpd">Google + Play</ulink>. After installing and launching it, MPD will + scan the music in your <filename>Music</filename> directory + and you can control it as usual with a MPD client. + </para> + + <para> + If you need to tweak the configuration, you can create a file + called <filename>mpd.conf</filename> on the data partition. + </para> + </section> + <section id="install_source"> <title>Compiling from source</title> @@ -323,7 +340,9 @@ <application>MPD</application> as a user daemon (and not as a system daemon), the configuration is read from <filename>$XDG_CONFIG_HOME/mpd/mpd.conf</filename> (usually - <filename>~/.config/mpd/mpd.conf</filename>). + <filename>~/.config/mpd/mpd.conf</filename>). On Android, + <filename>mpd.conf</filename> will be loaded from the + top-level directory of the data partition. </para> <para> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/python/build/libs.py new/mpd-0.20.17/python/build/libs.py --- old/mpd-0.20.16/python/build/libs.py 2018-02-03 19:46:45.000000000 +0100 +++ new/mpd-0.20.17/python/build/libs.py 2018-02-09 23:59:42.000000000 +0100 @@ -1,4 +1,6 @@ import re +from os.path import abspath + from build.project import Project from build.zlib import ZlibProject from build.autotools import AutotoolsProject @@ -358,6 +360,8 @@ '--disable-crypto-auth', '--disable-ntlm-wb', '--disable-tls-srp', '--disable-cookies', '--without-ssl', '--without-gnutls', '--without-nss', '--without-libssh2', ], + + patches='src/lib/curl/patches', ) boost = BoostProject( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/python/build/project.py new/mpd-0.20.17/python/build/project.py --- old/mpd-0.20.16/python/build/project.py 2018-01-05 10:17:31.000000000 +0100 +++ new/mpd-0.20.17/python/build/project.py 2018-02-09 23:14:20.000000000 +0100 @@ -3,10 +3,12 @@ from build.download import download_and_verify from build.tar import untar +from build.quilt import push_all class Project: def __init__(self, url, md5, installed, name=None, version=None, base=None, + patches=None, edits=None, use_cxx=False): if base is None: @@ -18,7 +20,7 @@ self.base = base if name is None or version is None: - m = re.match(r'^([-\w]+)-(\d[\d.]*[a-z]?)$', self.base) + m = re.match(r'^([-\w]+)-(\d[\d.]*[a-z]?[\d.]*)$', self.base) if name is None: name = m.group(1) if version is None: version = m.group(2) @@ -29,6 +31,10 @@ self.md5 = md5 self.installed = installed + if patches is not None: + srcdir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + patches = os.path.join(srcdir, patches) + self.patches = patches self.edits = edits self.use_cxx = use_cxx @@ -51,6 +57,9 @@ parent_path = toolchain.build_path path = untar(self.download(toolchain), parent_path, self.base) + if self.patches is not None: + push_all(toolchain, path, self.patches) + if self.edits is not None: for filename, function in self.edits.items(): with open(os.path.join(path, filename), 'r+t') as f: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/python/build/quilt.py new/mpd-0.20.17/python/build/quilt.py --- old/mpd-0.20.16/python/build/quilt.py 1970-01-01 01:00:00.000000000 +0100 +++ new/mpd-0.20.17/python/build/quilt.py 2018-02-09 22:59:09.000000000 +0100 @@ -0,0 +1,9 @@ +import subprocess + +def run_quilt(toolchain, cwd, patches_path, *args): + env = dict(toolchain.env) + env['QUILT_PATCHES'] = patches_path + subprocess.check_call(['quilt'] + list(args), cwd=cwd, env=env) + +def push_all(toolchain, src_path, patches_path): + run_quilt(toolchain, src_path, patches_path, 'push', '-a') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/SongSave.cxx new/mpd-0.20.17/src/SongSave.cxx --- old/mpd-0.20.16/src/SongSave.cxx 2017-01-27 08:46:51.000000000 +0100 +++ new/mpd-0.20.17/src/SongSave.cxx 2018-02-09 22:54:34.000000000 +0100 @@ -28,6 +28,7 @@ #include "tag/TagBuilder.hxx" #include "util/StringUtil.hxx" #include "util/RuntimeError.hxx" +#include "util/NumberParser.hxx" #include <string.h> #include <stdlib.h> @@ -94,7 +95,7 @@ if ((type = tag_name_parse(line)) != TAG_NUM_OF_ITEM_TYPES) { tag.AddItem(type, value); } else if (strcmp(line, "Time") == 0) { - tag.SetDuration(SignedSongTime::FromS(atof(value))); + tag.SetDuration(SignedSongTime::FromS(ParseDouble(value))); } else if (strcmp(line, "Playlist") == 0) { tag.SetHasPlaylist(strcmp(value, "yes") == 0); } else if (strcmp(line, SONG_MTIME) == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/db/update/Service.cxx new/mpd-0.20.17/src/db/update/Service.cxx --- old/mpd-0.20.16/src/db/update/Service.cxx 2018-02-01 19:53:28.000000000 +0100 +++ new/mpd-0.20.17/src/db/update/Service.cxx 2018-02-09 18:48:33.000000000 +0100 @@ -29,6 +29,7 @@ #include "Idle.hxx" #include "Log.hxx" #include "thread/Thread.hxx" +#include "thread/Name.hxx" #include "thread/Util.hxx" #ifndef NDEBUG @@ -113,6 +114,8 @@ { assert(walk != nullptr); + SetThreadName("update"); + if (!next.path_utf8.empty()) FormatDebug(update_domain, "starting: %s", next.path_utf8.c_str()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/filter/plugins/ConvertFilterPlugin.cxx new/mpd-0.20.17/src/filter/plugins/ConvertFilterPlugin.cxx --- old/mpd-0.20.16/src/filter/plugins/ConvertFilterPlugin.cxx 2017-01-27 08:46:51.000000000 +0100 +++ new/mpd-0.20.17/src/filter/plugins/ConvertFilterPlugin.cxx 2018-02-09 19:05:33.000000000 +0100 @@ -53,10 +53,16 @@ void Set(const AudioFormat &_out_audio_format); void Reset() override { - state.Reset(); + if (IsActive()) + state.Reset(); } ConstBuffer<void> FilterPCM(ConstBuffer<void> src) override; + +private: + bool IsActive() const noexcept { + return out_audio_format != in_audio_format; + } }; class PreparedConvertFilter final : public PreparedFilter { @@ -80,7 +86,7 @@ /* no change */ return; - if (out_audio_format != in_audio_format) { + if (IsActive()) { out_audio_format = in_audio_format; state.Close(); } @@ -111,7 +117,7 @@ { assert(in_audio_format.IsValid()); - if (out_audio_format != in_audio_format) + if (IsActive()) state.Close(); } @@ -120,11 +126,10 @@ { assert(in_audio_format.IsValid()); - if (out_audio_format == in_audio_format) + return IsActive() + ? state.Convert(src) /* optimized special case: no-op */ - return src; - - return state.Convert(src); + : src; } const FilterPlugin convert_filter_plugin = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/input/plugins/FileInputPlugin.cxx new/mpd-0.20.17/src/input/plugins/FileInputPlugin.cxx --- old/mpd-0.20.16/src/input/plugins/FileInputPlugin.cxx 2017-11-13 17:14:22.000000000 +0100 +++ new/mpd-0.20.17/src/input/plugins/FileInputPlugin.cxx 2018-02-09 22:54:37.000000000 +0100 @@ -65,10 +65,13 @@ throw FormatRuntimeError("Not a regular file: %s", path.c_str()); +#if !defined(__BIONIC__) || __ANDROID_API__ >= 21 + /* posix_fadvise() requires Android API 21 */ #ifdef POSIX_FADV_SEQUENTIAL posix_fadvise(reader.GetFD().Get(), (off_t)0, info.GetSize(), POSIX_FADV_SEQUENTIAL); #endif +#endif return InputStreamPtr(new FileInputStream(path.ToUTF8().c_str(), std::move(reader), info.GetSize(), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/mixer/plugins/volume_mapping.c new/mpd-0.20.17/src/mixer/plugins/volume_mapping.c --- old/mpd-0.20.16/src/mixer/plugins/volume_mapping.c 2018-01-02 21:47:43.000000000 +0100 +++ new/mpd-0.20.17/src/mixer/plugins/volume_mapping.c 2018-02-10 09:07:28.000000000 +0100 @@ -139,6 +139,13 @@ return set_raw[ctl_dir](elem, value); } + /* two special cases to avoid rounding errors at 0% and + 100% */ + if (volume <= 0) + return set_dB[ctl_dir](elem, min, dir); + else if (volume >= 100) + return set_dB[ctl_dir](elem, max, dir); + if (use_linear_dB_scale(min, max)) { value = lrint_dir(volume * (max - min), dir) + min; return set_dB[ctl_dir](elem, value, dir); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/pcm/Order.cxx new/mpd-0.20.17/src/pcm/Order.cxx --- old/mpd-0.20.16/src/pcm/Order.cxx 2017-01-27 08:46:51.000000000 +0100 +++ new/mpd-0.20.17/src/pcm/Order.cxx 2018-02-09 19:00:24.000000000 +0100 @@ -88,7 +88,7 @@ ToAlsaChannelOrder71(PcmBuffer &buffer, ConstBuffer<V> src) { auto dest = buffer.GetT<V>(src.size); - ToAlsaChannelOrder71(dest, src.data, src.size / 6); + ToAlsaChannelOrder71(dest, src.data, src.size / 8); return { dest, src.size }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/protocol/ArgParser.cxx new/mpd-0.20.17/src/protocol/ArgParser.cxx --- old/mpd-0.20.16/src/protocol/ArgParser.cxx 2017-01-27 08:46:51.000000000 +0100 +++ new/mpd-0.20.17/src/protocol/ArgParser.cxx 2018-02-09 22:54:32.000000000 +0100 @@ -21,6 +21,7 @@ #include "ArgParser.hxx" #include "Ack.hxx" #include "Chrono.hxx" +#include "util/NumberParser.hxx" #include <stdlib.h> @@ -151,7 +152,7 @@ ParseCommandArgFloat(const char *s) { char *endptr; - auto value = strtof(s, &endptr); + auto value = ParseFloat(s, &endptr); if (endptr == s || *endptr != 0) throw FormatProtocolError(ACK_ERROR_ARG, "Float expected: %s", s); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/queue/PlaylistState.cxx new/mpd-0.20.17/src/queue/PlaylistState.cxx --- old/mpd-0.20.16/src/queue/PlaylistState.cxx 2017-01-27 08:46:51.000000000 +0100 +++ new/mpd-0.20.17/src/queue/PlaylistState.cxx 2018-02-09 22:54:34.000000000 +0100 @@ -35,6 +35,7 @@ #include "util/CharUtil.hxx" #include "util/StringAPI.hxx" #include "util/StringCompare.hxx" +#include "util/NumberParser.hxx" #include "Log.hxx" #include <string.h> @@ -148,7 +149,7 @@ while ((line = file.ReadLine()) != nullptr) { const char *p; if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_TIME))) { - seek_time = SongTime::FromS(atof(p)); + seek_time = SongTime::FromS(ParseDouble(p)); } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_REPEAT))) { playlist.SetRepeat(pc, StringIsEqual(p, "1")); } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_SINGLE))) { @@ -158,12 +159,12 @@ } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_CROSSFADE))) { pc.SetCrossFade(atoi(p)); } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_MIXRAMPDB))) { - pc.SetMixRampDb(atof(p)); + pc.SetMixRampDb(ParseFloat(p)); } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_MIXRAMPDELAY))) { /* this check discards "nan" which was used prior to MPD 0.18 */ if (IsDigitASCII(*p)) - pc.SetMixRampDelay(atof(p)); + pc.SetMixRampDelay(ParseFloat(p)); } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_RANDOM))) { random_mode = StringIsEqual(p, "1"); } else if ((p = StringAfterPrefix(line, PLAYLIST_STATE_FILE_CURRENT))) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/tag/ReplayGain.cxx new/mpd-0.20.17/src/tag/ReplayGain.cxx --- old/mpd-0.20.16/src/tag/ReplayGain.cxx 2017-06-04 12:30:55.000000000 +0200 +++ new/mpd-0.20.17/src/tag/ReplayGain.cxx 2018-02-09 22:54:34.000000000 +0100 @@ -22,6 +22,7 @@ #include "VorbisComment.hxx" #include "ReplayGainInfo.hxx" #include "util/ASCII.hxx" +#include "util/NumberParser.hxx" #include <assert.h> #include <stdlib.h> @@ -33,16 +34,16 @@ const char *value; if ((value = t["replaygain_track_gain"]) != nullptr) { - info.track.gain = atof(value); + info.track.gain = ParseFloat(value); return true; } else if ((value = t["replaygain_album_gain"]) != nullptr) { - info.album.gain = atof(value); + info.album.gain = ParseFloat(value); return true; } else if ((value = t["replaygain_track_peak"]) != nullptr) { - info.track.peak = atof(value); + info.track.peak = ParseFloat(value); return true; } else if ((value = t["replaygain_album_peak"]) != nullptr) { - info.album.peak = atof(value); + info.album.peak = ParseFloat(value); return true; } else return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/thread/Util.cxx new/mpd-0.20.17/src/thread/Util.cxx --- old/mpd-0.20.16/src/thread/Util.cxx 2018-01-04 19:32:29.000000000 +0100 +++ new/mpd-0.20.17/src/thread/Util.cxx 2018-02-09 18:39:12.000000000 +0100 @@ -38,10 +38,12 @@ #include <windows.h> #endif -#if defined(__linux__) && !defined(ANDROID) +#ifdef __linux__ + +#ifndef ANDROID static int -ioprio_set(int which, int who, int ioprio) +linux_ioprio_set(int which, int who, int ioprio) { return syscall(__NR_ioprio_set, which, who, ioprio); } @@ -55,7 +57,20 @@ static constexpr int _IOPRIO_IDLE = (_IOPRIO_CLASS_IDLE << _IOPRIO_CLASS_SHIFT) | 7; - ioprio_set(_IOPRIO_WHO_PROCESS, 0, _IOPRIO_IDLE); + linux_ioprio_set(_IOPRIO_WHO_PROCESS, 0, _IOPRIO_IDLE); +} + +#endif /* !ANDROID */ + +/** + * Wrapper for the "sched_setscheduler" system call. We don't use the + * one from the C library because Musl has an intentionally broken + * implementation. + */ +static int +linux_sched_setscheduler(pid_t pid, int sched, const struct sched_param *param) +{ + return syscall(__NR_sched_setscheduler, pid, sched, param); } #endif @@ -66,7 +81,7 @@ #ifdef __linux__ #ifdef SCHED_IDLE static struct sched_param sched_param; - sched_setscheduler(0, SCHED_IDLE, &sched_param); + linux_sched_setscheduler(0, SCHED_IDLE, &sched_param); #endif #ifndef ANDROID @@ -92,7 +107,7 @@ policy |= SCHED_RESET_ON_FORK; #endif - if (sched_setscheduler(0, policy, &sched_param) < 0) + if (linux_sched_setscheduler(0, policy, &sched_param) < 0) throw MakeErrno("sched_setscheduler failed"); #endif // __linux__ }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpd-0.20.16/src/util/NumberParser.hxx new/mpd-0.20.17/src/util/NumberParser.hxx --- old/mpd-0.20.16/src/util/NumberParser.hxx 2017-01-27 08:46:51.000000000 +0100 +++ new/mpd-0.20.17/src/util/NumberParser.hxx 2018-02-09 22:54:32.000000000 +0100 @@ -78,7 +78,12 @@ static inline float ParseFloat(const char *p, char **endptr=nullptr) { +#if defined(__BIONIC__) && __ANDROID_API__ < 21 + /* strtof() requires API level 21 */ return (float)ParseDouble(p, endptr); +#else + return strtof(p, endptr); +#endif } #endif