[proaudio] libffado SConstruct patch (python 2->3) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/proaudio Archives
]
- To: proaudio@xxxxxxxxxxxxxxxxxxx
- Subject: [proaudio] libffado SConstruct patch (python 2->3)
- From: Natanael Olaiz <nolaiz@xxxxxxxxx>
- Date: Sat, 4 Nov 2017 20:15:21 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=sJ/wMRV/aR23PeSwC5hER4rzutHsdki8iVoseSpbbgE=; b=EZiTi+Fkc+uKQGs9vypla+tb0zZ2FwnOWmjjGBhIsu4+iSiBqVjU/gGKqmcaH1fA81 oFTIjYT54Bv0gzLM36OtNWdX9Y8w6SJ+3aUFTM09kcw0Zm51hwTBU233STHE0LX9h6Zk xB7nI6E+XlA/ChRhMB6JyvRPW7I2e+zB4QoJZ+NKW2oT5a/5Sy49cLRMxrhzG0khl4CD xZpbQ9IUnQApvbg8iC0lMQC9dtHPk45I+eqvqVEzIdsIDGDvs6RTv5behRvpndxgNobi PB05sdoPbU/ZXdTj7Fpdo+Wp8ORkORjbrtJhNtFdgwn5mTroqYYks4yT4g5NKRLoSOyp HP9g==
Hi,
Libffado was failing on my system with python 3. So I did this revised ebuild applying a patch to upgrade the SConstructs.
Best regards,
Natanael.
commit 941930dc892ac93b540a46149bf815d226ec5375
Author: layman <layman@localhost>
Date: Sat Nov 4 20:10:07 2017 +0100
added patch for SConstruct to be compatible with python 3
diff --git a/media-libs/libffado/files/python2to3.patch b/media-libs/libffado/files/python2to3.patch
new file mode 100644
index 0000000..cfe4bc6
--- /dev/null
+++ b/media-libs/libffado/files/python2to3.patch
@@ -0,0 +1,301 @@
+diff -urN a/SConstruct b/SConstruct
+--- a/SConstruct 2016-08-08 12:31:03.000000000 +0200
++++ b/SConstruct 2017-11-04 19:59:41.768836586 +0100
+@@ -93,7 +93,7 @@
+ custom_flags = False
+
+ if env.has_key('COMPILE_FLAGS') and len(env['COMPILE_FLAGS']) > 0:
+- print "The COMPILE_FLAGS option is deprecated. Use CFLAGS and CXXFLAGS with CUSTOM_ENV=True instead"
++ print ("The COMPILE_FLAGS option is deprecated. Use CFLAGS and CXXFLAGS with CUSTOM_ENV=True instead")
+ custom_flags = True
+ env.MergeFlags(env['COMPILE_FLAGS'])
+
+@@ -115,7 +115,7 @@
+ env.Append(LINKFLAGS = str(os.environ['LDFLAGS'].replace('\"', '')))
+
+ if custom_flags:
+- print '''
++ print ('''
+ * Usage of additional flags is not supported by the ffado-devs.
+ * Use at own risk!
+ *
+@@ -125,7 +125,7 @@
+ * CFLAGS = %s
+ * CXXFLAGS = %s
+ * LDFLAGS = %s
+-''' % (env['CC'], env['CXX'], env['CFLAGS'], env['CXXFLAGS'], env['LINKFLAGS'])
++''' % (env['CC'], env['CXX'], env['CFLAGS'], env['CXXFLAGS'], env['LINKFLAGS']))
+
+ Help( """
+ For building ffado you can set different options as listed below. You have to
+@@ -225,13 +225,13 @@
+ return (int(maj) << 24) | (int(min) << 8) | int(patch)
+
+ def CheckJackdVer():
+- print 'Checking jackd version...',
++ print ('Checking jackd version...',)
+ ret = Popen("which jackd >/dev/null 2>&1 && jackd --version | tail -n 1 | cut -d ' ' -f 3", shell=True, stdout=PIPE).stdout.read()[:-1]
+ if (ret == ""):
+- print "not installed"
++ print("not installed")
+ return -1
+ else:
+- print ret
++ print(ret)
+ return VersionInt(ret)
+
+ if env['SERIALIZE_USE_EXPAT']:
+@@ -249,12 +249,12 @@
+ # Check for working gcc and g++ compilers and their environment.
+ #
+ if not conf.CompilerCheck():
+- print "\nIt seems as if your system isn't even able to compile any C-/C++-programs. Probably you don't have gcc and g++ installed. Compiling a package from source without a working compiler is very hard to do, please install the needed packages.\nHint: on *ubuntu you need both gcc- and g++-packages installed, easiest solution is to install build-essential which depends on gcc and g++."
++ print ("\nIt seems as if your system isn't even able to compile any C-/C++-programs. Probably you don't have gcc and g++ installed. Compiling a package from source without a working compiler is very hard to do, please install the needed packages.\nHint: on *ubuntu you need both gcc- and g++-packages installed, easiest solution is to install build-essential which depends on gcc and g++.")
+ Exit( 1 )
+
+ # Check for pkg-config before using pkg-config to check for other dependencies.
+ if not conf.CheckForPKGConfig():
+- print "\nThe program 'pkg-config' could not be found.\nEither you have to install the corresponding package first or make sure that PATH points to the right directions."
++ print ("\nThe program 'pkg-config' could not be found.\nEither you have to install the corresponding package first or make sure that PATH points to the right directions.")
+ Exit( 1 )
+
+ #
+@@ -298,41 +298,41 @@
+
+ if env['ENABLE_SETBUFFERSIZE_API_VER'] == 'auto':
+ if not(have_jack):
+- print """
++ print ("""
+ No Jack Audio Connection Kit (JACK) installed: assuming a FFADO
+ setbuffersize-compatible version will be used.
+-"""
++""")
+ elif not(good_jack1 or good_jack2):
+ FFADO_API_VERSION="8"
+- print """
++ print ("""
+ Installed Jack Audio Connection Kit (JACK) jack does not support FFADO
+ setbuffersize API: will report earlier API version at runtime. Consider
+ upgrading to jack1 >=0.122.0 or jack2 >=1.9.9 at some point, and then
+ recompile ffado to gain access to this added feature.
+-"""
++""")
+ else:
+- print "Installed Jack Audio Connection Kit (JACK) supports FFADO setbuffersize API"
++ print ("Installed Jack Audio Connection Kit (JACK) supports FFADO setbuffersize API")
+ elif env['ENABLE_SETBUFFERSIZE_API_VER'] == 'true':
+ if (have_jack and not(good_jack1) and not(good_jack2)):
+- print """
++ print ("""
+ SetBufferSize API version is enabled but no suitable version of Jack Audio
+ Connection Kit (JACK) has been found. The resulting FFADO would cause your
+ jackd to abort with "incompatible FFADO version". Please upgrade to
+ jack1 >=0.122.0 or jack2 >=1.9.9, or set ENABLE_SETBUFFERSIZE_API_VER to "auto"
+ or "false".
+-"""
++""")
+ # Although it's not strictly an error, in almost every case that
+ # this occurs the user will want to know about it and fix the
+ # problem, so we exit so they're guaranteed of seeing the above
+ # message.
+ Exit( 1 )
+ else:
+- print "Will report SetBufferSize API version at runtime"
++ print ("Will report SetBufferSize API version at runtime")
+ elif env['ENABLE_SETBUFFERSIZE_API_VER'] == 'force':
+- print "Will report SetBufferSize API version at runtime"
++ print ("Will report SetBufferSize API version at runtime")
+ else:
+ FFADO_API_VERSION="8"
+- print "Will not report SetBufferSize API version at runtime"
++ print ("Will not report SetBufferSize API version at runtime")
+
+ for pkg in pkgs:
+ name2 = pkg.replace("+","").replace(".","").replace("-","").upper()
+@@ -342,14 +342,14 @@
+ allpresent &= 0
+
+ if not allpresent:
+- print """
++ print ("""
+ (At least) One of the dependencies is missing. I can't go on without it, please
+ install the needed packages for each of the lines saying "no".
+ (Remember to also install the *-devel packages!)
+
+ And remember to remove the cache with "rm -Rf .sconsign.dblite cache" so the
+ results above get rechecked.
+-"""
++""")
+ Exit( 1 )
+
+ # libxml++-2.6 requires a c++11 compiler as of version 2.39.1. The
+@@ -393,15 +393,15 @@
+ elif not env.GetOption('clean'):
+ if env['BUILD_MIXER'] == 'auto':
+ env['BUILD_MIXER'] = 'false'
+- print """
++ print ("""
+ The prerequisites ('pyuic4' and the python-modules 'dbus' and 'PyQt4', the
+ packages could be named like dbus-python and PyQt) to build the mixer were not
+-found. Therefore the qt4 mixer will not be installed."""
++found. Therefore the qt4 mixer will not be installed.""")
+ else: # env['BUILD_MIXER'] == 'true'
+- print """
++ print ("""
+ The prerequisites ('pyuic4' and the python-modules 'dbus' and 'PyQt4', the
+ packages could be named like dbus-python and PyQt) to build the mixer were not
+-found, but BUILD_MIXER was requested."""
++found, but BUILD_MIXER was requested.""")
+ Exit( 1 )
+
+ env['XDG_TOOLS'] = False
+@@ -409,10 +409,10 @@
+ if conf.CheckForApp( 'xdg-desktop-menu --help' ) and conf.CheckForApp( 'xdg-icon-resource --help' ):
+ env['XDG_TOOLS'] = True
+ else:
+- print """
++ print ("""
+ I couldn't find the 'xdg-desktop-menu' and 'xdg-icon-resource' programs. These
+ are needed to add the fancy entry for the mixer to your menu, but you can still
+-start it by executing "ffado-mixer"."""
++start it by executing "ffado-mixer".""")
+
+ #
+ # Optional pkg-config
+@@ -429,11 +429,11 @@
+ if not env['DBUS1_FLAGS'] or not env['DBUSC1_FLAGS'] or not conf.CheckForApp('which dbusxx-xml2cpp'):
+ env['DBUS1_FLAGS'] = ""
+ env['DBUSC1_FLAGS'] = ""
+- print """
++ print ("""
+ One of the dbus-headers, the dbus-c++-headers and/or the application
+ 'dbusxx-xml2cpp' where not found. The dbus-server for ffado will therefore not
+ be built.
+-"""
++""")
+ else:
+ # Get the directory where dbus stores the service-files
+ env['dbus_service_dir'] = conf.GetPKGVariable( 'dbus-1', 'session_bus_services_dir' ).strip()
+@@ -455,7 +455,7 @@
+ env = conf.Finish()
+
+ if env['DEBUG']:
+- print "Doing a debug build"
++ print ("Doing a debug build")
+ env.MergeFlags( "-Wall -g -DDEBUG" )
+ env['DEBUG_MESSAGES'] = True
+ elif not custom_flags:
+@@ -466,7 +466,7 @@
+ env.MergeFlags( "-DDEBUG_MESSAGES" )
+
+ if env['PROFILE']:
+- print "Doing a PROFILE build"
++ print ("Doing a PROFILE build")
+ env.MergeFlags( "-Wall -g" )
+
+ if env['PEDANTIC']:
+@@ -487,7 +487,7 @@
+
+ env['BUILD_STATIC_LIB'] = False
+ if env['BUILD_STATIC_TOOLS']:
+- print "Building static versions of the tools..."
++ print ("Building static versions of the tools...")
+ env['BUILD_STATIC_LIB'] = True
+
+ env['build_base']="#/"
+@@ -705,7 +705,7 @@
+ answer = 'elf32' in fmt
+ break
+ else:
+- print '!!! Not found %s' % exe
++ print ('!!! Not found %s' % exe)
+ return answer
+
+
+@@ -780,7 +780,7 @@
+ env['DIST_TARGET'] = 'powerpc'
+ else:
+ env['DIST_TARGET'] = config[config_cpu]
+- print "Detected DIST_TARGET = " + env['DIST_TARGET']
++ print ("Detected DIST_TARGET = " + env['DIST_TARGET'])
+
+ #=== Begin Revised CXXFLAGS =========================================
+ # comment on DIST_TARGET up top implies it can be used for cross-compiling
+@@ -799,21 +799,21 @@
+
+ if env['DETECT_USERSPACE_ENV']:
+ m32 = is_userspace_32bit(cpuinfo)
+- print 'User space is %s' % (m32 and '32-bit' or '64-bit')
++ print ('User space is %s' % (m32 and '32-bit' or '64-bit'))
+ if cpuinfo.is_powerpc:
+ if m32:
+- print "Doing a 32-bit PowerPC build for %s CPU" % cpuinfo.ppc_type
++ print ("Doing a 32-bit PowerPC build for %s CPU" % cpuinfo.ppc_type)
+ machineflags = { 'CXXFLAGS' : ['-m32'] }
+ else:
+- print "Doing a 64-bit PowerPC build for %s CPU" % cpuinfo.ppc_type
++ print ("Doing a 64-bit PowerPC build for %s CPU" % cpuinfo.ppc_type)
+ machineflags = { 'CXXFLAGS' : ['-m64'] }
+ env.MergeFlags( machineflags )
+ elif cpuinfo.is_x86:
+ if m32:
+- print "Doing a 32-bit %s build for %s" % (cpuinfo.machine, cpuinfo.model_name)
++ print ("Doing a 32-bit %s build for %s" % (cpuinfo.machine, cpuinfo.model_name))
+ machineflags = { 'CXXFLAGS' : ['-m32'] }
+ else:
+- print "Doing a 64-bit %s build for %s" % (cpuinfo.machine, cpuinfo.model_name)
++ print ("Doing a 64-bit %s build for %s" % (cpuinfo.machine, cpuinfo.model_name))
+ machineflags = { 'CXXFLAGS' : ['-m64'] }
+ needs_fPIC = True
+ env.MergeFlags( machineflags )
+@@ -827,7 +827,7 @@
+ if env['ENABLE_OPTIMIZATIONS']:
+ opt_flags.extend (["-fomit-frame-pointer","-ffast-math","-funroll-loops"])
+ env.MergeFlags( opt_flags )
+- print "Doing an optimized build..."
++ print ("Doing an optimized build...")
+
+ env['REVISION'] = os.popen('svnversion .').read()[:-1]
+ # This may be as simple as '89' or as complex as '4123:4184M'.
+@@ -907,7 +907,7 @@
+ #
+ if len(env.destdir) > 0:
+ if not len( ARGUMENTS.get( "WILL_DEAL_WITH_XDG_MYSELF", "" ) ) > 0:
+- print """
++ print ("""
+ WARNING!
+ You are using the (packagers) option DESTDIR to install this package to a
+ different place than the real prefix. As the xdg-tools can't cope with
+@@ -915,7 +915,7 @@
+ deal with them your own.
+ (And you have to look into the SConstruct to learn how to disable this
+ message.)
+-"""
++""")
+ else:
+
+ def CleanAction( action ):
+diff -urN a/support/dbus/SConscript b/support/dbus/SConscript
+--- a/support/dbus/SConscript 2012-06-13 03:39:07.000000000 +0200
++++ b/support/dbus/SConscript 2017-11-04 20:00:15.509837202 +0100
+@@ -79,16 +79,16 @@
+
+ servicefile = env.ScanReplace('org.ffado.Control.service.in')
+ if env['dbus_service_dir'] and ( env.destdir or os.access( env['dbus_service_dir'], os.W_OK ) ):
+- print "Will install the service-file"
++ print ("Will install the service-file")
+ targetdir = env.destdir + env['dbus_service_dir']
+ env.Alias( "install", env.Install( env.destdir + env['dbus_service_dir'], servicefile ) )
+ else:
+ if not env['dbus_service_dir']:
+- print 'Can\'t install the system-wide dbus service file as the concerned variable is not defined.'
++ print ('Can\'t install the system-wide dbus service file as the concerned variable is not defined.')
+ else:
+ if not os.access( env['dbus_service_dir'], os.W_OK ):
+- print 'Insufficient rights to install the system-wide dbus service file.'
+- print 'Please run the "scons install" command with higher authority.'
++ print ('Insufficient rights to install the system-wide dbus service file.')
++ print ('Please run the "scons install" command with higher authority.')
+
+ # static versions
+ if static_env['BUILD_STATIC_TOOLS']:
diff --git a/media-libs/libffado/libffado-2.3.0-r1.ebuild b/media-libs/libffado/libffado-2.3.0-r1.ebuild
new file mode 100644
index 0000000..9741927
--- /dev/null
+++ b/media-libs/libffado/libffado-2.3.0-r1.ebuild
@@ -0,0 +1,107 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit eutils python-single-r1 scons-utils toolchain-funcs udev multilib-minimal
+
+DESCRIPTION="Driver for IEEE1394 (Firewire) audio interfaces"
+HOMEPAGE="http://www.ffado.org"
+
+if [ "${PV}" = "9999" ]; then
+ inherit subversion
+ ESVN_REPO_URI="http://subversion.ffado.org/ffado/trunk/${PN}"
+ KEYWORDS=""
+else
+ SRC_URI="http://www.ffado.org/files/${P}.tgz"
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-2 GPL-3"
+SLOT="0"
+IUSE="debug qt4 test-programs"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="dev-cpp/libxmlpp:2.6[${MULTILIB_USEDEP}]
+ dev-libs/dbus-c++
+ dev-libs/libconfig[cxx,${MULTILIB_USEDEP}]
+ media-libs/alsa-lib
+ media-libs/libiec61883[${MULTILIB_USEDEP}]
+ !<media-sound/jack-audio-connection-kit-0.122.0:0
+ !<media-sound/jack-audio-connection-kit-1.9.9:2
+ sys-apps/dbus
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ sys-libs/libavc1394[${MULTILIB_USEDEP}]
+ ${PYTHON_DEPS}
+ qt4? (
+ dev-python/PyQt4[dbus,${PYTHON_USEDEP}]
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ x11-misc/xdg-utils
+ )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/libffado-2.3.0-modelname-strip.patch"
+ "${FILESDIR}/libffado-2.3.0-gcc6.patch"
+ "${FILESDIR}/python2to3.patch"
+)
+
+myescons() {
+ local myesconsargs=(
+ PREFIX="${EPREFIX}/usr"
+ LIBDIR="${EPREFIX}/usr/$(get_libdir)"
+ MANDIR="${EPREFIX}/usr/share/man"
+ UDEVDIR="$(get_udevdir)/rules.d"
+ CUSTOM_ENV=true
+ DETECT_USERSPACE_ENV=false
+ DEBUG=$(usex debug)
+ # ENABLE_OPTIMIZATIONS detects cpu type and sets flags accordingly
+ # -fomit-frame-pointer is added also which can cripple debugging.
+ # we set flags from portage instead
+ ENABLE_OPTIMIZATIONS=false
+ # This only works for JACK1>=0.122.0 or JACK2>=1.9.9, so we block
+ # lower versions.
+ ENABLE_SETBUFFERSIZE_API_VER=force
+ )
+ if multilib_is_native_abi; then
+ myesconsargs+=(
+ BUILD_MIXER=$(usex qt4 true false)
+ BUILD_TESTS=$(usex test-programs)
+ )
+ else
+ myesconsargs+=(
+ BUILD_MIXER=false
+ BUILD_TESTS=false
+ )
+ fi
+ escons "${myesconsargs[@]}" "${@}"
+}
+
+src_prepare() {
+ default
+ multilib_copy_sources
+}
+
+multilib_src_compile() {
+ tc-export CC CXX
+ myescons
+}
+
+multilib_src_install() {
+ myescons DESTDIR="${D}" WILL_DEAL_WITH_XDG_MYSELF="True" install
+}
+
+multilib_src_install_all() {
+ einstalldocs
+
+ python_fix_shebang "${D}"
+ python_optimize "${D}"
+
+ if use qt4; then
+ newicon "support/xdg/hi64-apps-ffado.png" "ffado.png"
+ newmenu "support/xdg/ffado.org-ffadomixer.desktop" "ffado-mixer.desktop"
+ fi
+}