diff --git a/common/shlibs b/common/shlibs index 5f8f3b95eaf..62066b8c875 100644 --- a/common/shlibs +++ b/common/shlibs @@ -2028,3 +2028,4 @@ libnghttp2.so.5 nghttp2-0.7.4_1 librom1394.so.0 libavc1394-0.5.4_1 libavc1394.so.0 libavc1394-0.5.4_1 libiec61883.so.0 libiec61883-1.2.0_1 +libffado.so.2 libffado-2.2.1_1 diff --git a/srcpkgs/libffado-devel b/srcpkgs/libffado-devel new file mode 120000 index 00000000000..0ddb45fa85d --- /dev/null +++ b/srcpkgs/libffado-devel @@ -0,0 +1 @@ +libffado \ No newline at end of file diff --git a/srcpkgs/libffado/patches/libffado-2.2.1-detect-userspace-env.patch b/srcpkgs/libffado/patches/libffado-2.2.1-detect-userspace-env.patch new file mode 100644 index 00000000000..863106ebf55 --- /dev/null +++ b/srcpkgs/libffado/patches/libffado-2.2.1-detect-userspace-env.patch @@ -0,0 +1,62 @@ +# AUTHOR: Karl Linden +# DESCRIPTION: Patch to make the build system not detect user space on request +# STATUS: Applied upstream. + +Index: SConstruct +=================================================================== +--- SConstruct (revision 2584) ++++ SConstruct (revision 2585) +@@ -76,6 +76,7 @@ + BoolVariable( "BUILD_STATIC_TOOLS", "Build a statically linked version of the FFADO tools.", False ), + EnumVariable('DIST_TARGET', 'Build target for cross compiling packagers', 'auto', allowed_values=('auto', 'i386', 'i686', 'x86_64', 'powerpc', 'powerpc64', 'none' ), ignorecase=2), + BoolVariable( "ENABLE_OPTIMIZATIONS", "Enable optimizations and the use of processor specific extentions (MMX/SSE/...).", False ), ++ BoolVariable( "DETECT_USERSPACE_ENV", "Try to detect the user space environment and add necessary 32/64 bit machine flags.", True ), + BoolVariable( "PEDANTIC", "Enable -Werror and more pedantic options during compile.", False ), + BoolVariable( "CUSTOM_ENV", "Respect CC, CXX, CFLAGS, CXXFLAGS and LDFLAGS.\nOnly meant for distributors and gentoo-users who want to over-optimize their build.\n Using this is not supported by the ffado-devs!", False ), + ( "COMPILE_FLAGS", "Deprecated (use CFLAGS and CXXFLAGS with CUSTOM_ENV=True instead). Add additional flags to the environment.\nOnly meant for distributors and gentoo-users who want to over-optimize their build.\n Using this is not supported by the ffado-devs!" ), +@@ -783,25 +784,26 @@ + if '-msse2' in opt_flags: + env['USE_SSE2'] = 1 + +-m32 = is_userspace_32bit(cpuinfo) +-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 +- machineflags = { 'CXXFLAGS' : ['-m32'] } +- else: +- 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) +- machineflags = { 'CXXFLAGS' : ['-m32'] } +- else: +- print "Doing a 64-bit %s build for %s" % (cpuinfo.machine, cpuinfo.model_name) +- machineflags = { 'CXXFLAGS' : ['-m64'] } +- needs_fPIC = True +- env.MergeFlags( machineflags ) ++if env['DETECT_USERSPACE_ENV']: ++ m32 = is_userspace_32bit(cpuinfo) ++ 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 ++ machineflags = { 'CXXFLAGS' : ['-m32'] } ++ else: ++ 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) ++ machineflags = { 'CXXFLAGS' : ['-m32'] } ++ else: ++ print "Doing a 64-bit %s build for %s" % (cpuinfo.machine, cpuinfo.model_name) ++ machineflags = { 'CXXFLAGS' : ['-m64'] } ++ needs_fPIC = True ++ env.MergeFlags( machineflags ) + #=== End Revised CXXFLAGS ========================================= + + diff --git a/srcpkgs/libffado/patches/libffado-2.2.1-flags.patch b/srcpkgs/libffado/patches/libffado-2.2.1-flags.patch new file mode 100644 index 00000000000..28a80fac9b3 --- /dev/null +++ b/srcpkgs/libffado/patches/libffado-2.2.1-flags.patch @@ -0,0 +1,83 @@ +# Patch to make the build system honour CC, CXX, CFLAGS, CXXFLAGS and LDFLAGS. +# See http://subversion.ffado.org/ticket/382 for more information. +# Applied upstream. + +Index: SConstruct +=================================================================== +--- SConstruct (revision 2575) ++++ SConstruct (revision 2577) +@@ -77,7 +77,8 @@ + EnumVariable('DIST_TARGET', 'Build target for cross compiling packagers', 'auto', allowed_values=('auto', 'i386', 'i686', 'x86_64', 'powerpc', 'powerpc64', 'none' ), ignorecase=2), + BoolVariable( "ENABLE_OPTIMIZATIONS", "Enable optimizations and the use of processor specific extentions (MMX/SSE/...).", False ), + BoolVariable( "PEDANTIC", "Enable -Werror and more pedantic options during compile.", False ), +- ( "COMPILE_FLAGS", "Add additional flags to the environment.\nOnly meant for distributors and gentoo-users who want to over-optimize their built.\n Using this is not supported by the ffado-devs!" ), ++ BoolVariable( "CUSTOM_ENV", "Respect CC, CXX, CFLAGS, CXXFLAGS and LDFLAGS.\nOnly meant for distributors and gentoo-users who want to over-optimize their build.\n Using this is not supported by the ffado-devs!", False ), ++ ( "COMPILE_FLAGS", "Deprecated (use CFLAGS and CXXFLAGS with CUSTOM_ENV=True instead). Add additional flags to the environment.\nOnly meant for distributors and gentoo-users who want to over-optimize their build.\n Using this is not supported by the ffado-devs!" ), + EnumVariable( "ENABLE_SETBUFFERSIZE_API_VER", "Report API version at runtime which includes support for dynamic buffer resizing (requires recent jack).", 'auto', allowed_values=('auto', 'true', 'false', 'force'), ignorecase=2), + + ) +@@ -87,14 +88,42 @@ + + env = Environment( tools=['default','scanreplace','pyuic','pyuic4','dbus','doxygen','pkgconfig'], toolpath=['admin'], ENV = buildenv, options=opts ) + ++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" ++ custom_flags = True ++ env.MergeFlags(env['COMPILE_FLAGS']) ++ ++if env['CUSTOM_ENV']: ++ custom_flags = True ++ ++ # Honour the user choice of compiler (if any). ++ if os.environ.has_key('CC') and len(os.environ['CC']) > 0: ++ env['CC'] = os.environ['CC'] ++ if os.environ.has_key('CXX') and len(os.environ['CXX']) > 0: ++ env['CXX'] = os.environ['CXX'] ++ ++ # Honour the user supplied flags (if any), but notify the user that this is not supported. ++ if os.environ.has_key('CFLAGS') and len(os.environ['CFLAGS']) > 0: ++ env.Append(CFLAGS = str(os.environ['CFLAGS'].replace('\"', ''))) ++ if os.environ.has_key('CXXFLAGS') and len(os.environ['CXXFLAGS']) > 0: ++ env.Append(CXXFLAGS = str(os.environ['CXXFLAGS'].replace('\"', ''))) ++ if os.environ.has_key('LDFLAGS') and len(os.environ['LDFLAGS']) > 0: ++ env.Append(LINKFLAGS = str(os.environ['LDFLAGS'].replace('\"', ''))) ++ ++if custom_flags: + print ''' + * Usage of additional flags is not supported by the ffado-devs. + * Use at own risk! + * +- * Currentl value is '%s' +- ''' % env['COMPILE_FLAGS'] +- env.MergeFlags(env['COMPILE_FLAGS']) ++ * Flags in use: ++ * CC = %s ++ * CXX = %s ++ * CFLAGS = %s ++ * CXXFLAGS = %s ++ * LDFLAGS = %s ++''' % (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 +@@ -331,7 +360,7 @@ + oldcf = env['CFLAGS'] + else: + oldcf = "" +- oldcf = env.Append(CFLAGS = '-std=c99') ++ env.Append(CFLAGS = '-std=c99') + if conf.CheckLibWithHeader( "m", "math.h", "c", "lrint(3.2);" ): + HAVE_LRINT = 1 + else: +@@ -415,7 +444,8 @@ + print "Doing a debug build" + env.MergeFlags( "-Wall -g -DDEBUG" ) + env['DEBUG_MESSAGES'] = True +-else: ++elif not custom_flags: ++ # Only merge -O2 to flags if the user has not specified custom flags. + env.MergeFlags( "-O2" ) + + if env['DEBUG_MESSAGES']: diff --git a/srcpkgs/libffado/patches/libffado-2.2.1-jack-detect.patch b/srcpkgs/libffado/patches/libffado-2.2.1-jack-detect.patch new file mode 100644 index 00000000000..74e41a8b0b1 --- /dev/null +++ b/srcpkgs/libffado/patches/libffado-2.2.1-jack-detect.patch @@ -0,0 +1,44 @@ +# Patch to change the order of the checks for jack version. See +# http://subversion.ffado.org/ticket/381 for more information. +# Applied upstream. + +Index: SConstruct +=================================================================== +--- SConstruct (revision 2574) ++++ SConstruct (revision 2575) +@@ -250,21 +250,21 @@ + # Provide a way for users to compile newer libffado which will work + # against older jack installations which will not accept the new API + # version reported at runtime. +- jackd_ver = CheckJackdVer() +- if (jackd_ver != -1): +- # If jackd is available, use the version number reported by it. This +- # means users don't have to have jack development files present on +- # their system for this to work. +- have_jack = (jackd_ver >= VersionInt('0.0.0')) +- good_jack1 = (jackd_ver < VersionInt('1.9.0')) and (jackd_ver >= VersionInt('0.121.4')) +- good_jack2 = (jackd_ver >= VersionInt('1.9.9')) ++ have_jack = conf.CheckPKG('jack') ++ if have_jack: ++ good_jack1 = conf.CheckPKG('jack < 1.9.0') and conf.CheckPKG('jack >= 0.121.4') ++ good_jack2 = conf.CheckPKG('jack >= 1.9.9') + else: +- # Jackd is not runnable. Attempt to identify a version from +- # pkgconfig on the off-chance jack details are available from there. +- print "Will retry jack detection using pkg-config" +- have_jack = conf.CheckPKG('jack >= 0.0.0') +- good_jack1 = conf.CheckPKG('jack < 1.9.0') and conf.CheckPKG('jack >= 0.122.0') +- good_jack2 = conf.CheckPKG('jack >= 1.9.9') ++ jackd_ver = CheckJackdVer() ++ if (jackd_ver != -1): ++ # If jackd is unknown to pkg-config but is never-the-less ++ # runnable, use the version number reported by it. This means ++ # users don't have to have jack development files present on ++ # their system for this to work. ++ have_jack = (jackd_ver >= VersionInt('0.0.0')) ++ good_jack1 = (jackd_ver < VersionInt('1.9.0')) and (jackd_ver >= VersionInt('0.121.4')) ++ good_jack2 = (jackd_ver >= VersionInt('1.9.9')) ++ + if env['ENABLE_SETBUFFERSIZE_API_VER'] == 'auto': + if not(have_jack): + print """ diff --git a/srcpkgs/libffado/patches/libffado-2.2.1-mixer.patch b/srcpkgs/libffado/patches/libffado-2.2.1-mixer.patch new file mode 100644 index 00000000000..52458315e5b --- /dev/null +++ b/srcpkgs/libffado/patches/libffado-2.2.1-mixer.patch @@ -0,0 +1,102 @@ +# AUTHOR: Karl Linden (lilrc) +# DESCRIPTION: Patch to remove the automagic dependency on PyQt and friends. +# STATUS: Sent upstream as of 26 March 2015. +# SEE: http://subversion.ffado.org/ticket/391 + +Index: SConstruct +=================================================================== +--- SConstruct (revision 2587) ++++ SConstruct (working copy) +@@ -68,6 +68,7 @@ + this code.""", False ), + BoolVariable( "ENABLE_ALL", "Enable/Disable support for all devices.", False ), + BoolVariable( "SERIALIZE_USE_EXPAT", "Use libexpat for XML serialization.", False ), ++ EnumVariable( "BUILD_MIXER", "Build the ffado-mixer", 'auto', allowed_values=('auto', 'true', 'false'), ignorecase=2), + BoolVariable( "BUILD_TESTS", """\ + Build the tests in their directory. As some contain quite some functionality, + this is on by default. +@@ -379,28 +380,33 @@ + # + + # PyQT checks +-build_mixer = False +-if conf.CheckForApp( 'which pyuic4' ) and conf.CheckForPyModule( 'dbus' ) and conf.CheckForPyModule( 'PyQt4' ) and conf.CheckForPyModule( 'dbus.mainloop.qt' ): +- env['PYUIC4'] = True +- build_mixer = True ++if env['BUILD_MIXER'] != 'false': ++ if conf.CheckForApp( 'which pyuic4' ) and conf.CheckForPyModule( 'dbus' ) and conf.CheckForPyModule( 'PyQt4' ) and conf.CheckForPyModule( 'dbus.mainloop.qt' ): ++ env['BUILD_MIXER'] = 'true' ++ elif not env.GetOption('clean'): ++ if env['BUILD_MIXER'] == 'auto': ++ env['BUILD_MIXER'] = 'false' ++ 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.""" ++ else: # env['BUILD_MIXER'] == 'true' ++ 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.""" ++ Exit( 1 ) + +-if conf.CheckForApp( 'xdg-desktop-menu --help' ): +- env['XDG_TOOLS'] = True +-else: +- print """ +-I couldn't find the program 'xdg-desktop-menu'. Together with xdg-icon-resource +-this is needed to add the fancy entry to your menu. But if the mixer will be +-installed, you can start it by executing "ffado-mixer". +-""" ++env['XDG_TOOLS'] = False ++if env['BUILD_MIXER'] == 'true': ++ if conf.CheckForApp( 'xdg-desktop-menu --help' ) and conf.CheckForApp( 'xdg-icon-resource --help' ): ++ env['XDG_TOOLS'] = True ++ else: ++ 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".""" + +-if not build_mixer and not env.GetOption('clean'): +- print """ +-I couldn't find all the prerequisites ('pyuic4' and the python-modules 'dbus' +-and 'PyQt4', the packages could be named like dbus-python and PyQt) to build the +-mixer. +-Therefor the qt4 mixer will not get installed. +-""" +- + # + # Optional pkg-config + # +@@ -510,7 +516,7 @@ + env.Alias( "install", env['sharedir'] ) + env.Alias( "install", env['bindir'] ) + env.Alias( "install", env['mandir'] ) +-if build_mixer: ++if env['BUILD_MIXER'] == 'true': + env.Alias( "install", env['pypkgdir'] ) + + # +@@ -909,7 +915,7 @@ + if env.GetOption( "clean" ): + env.Execute( action ) + +- if env.has_key( 'XDG_TOOLS' ) and env.has_key( 'PYUIC4' ): ++ if env['BUILD_MIXER'] == 'true' and env['XDG_TOOLS']: + if not env.GetOption("clean"): + action = "install" + else: +Index: support/mixer-qt4/SConscript +=================================================================== +--- support/mixer-qt4/SConscript (revision 2587) ++++ support/mixer-qt4/SConscript (working copy) +@@ -26,7 +26,7 @@ + + Import( 'env' ) + +-if env.has_key('PYUIC4'): ++if env['BUILD_MIXER'] == 'true': + e = env.Clone() + + def findfiles( arg, dirname, names ): diff --git a/srcpkgs/libffado/template b/srcpkgs/libffado/template new file mode 100644 index 00000000000..76daa57e51d --- /dev/null +++ b/srcpkgs/libffado/template @@ -0,0 +1,48 @@ +# Template file for 'ffado' +pkgname=libffado +version=2.2.1 +revision=1 +hostmakedepends="scons pkg-config" +makedepends="libxml++-devel libdbus-c++-devel libsigc++-devel libconfig++-devel + jack-devel libavc1394-devel libiec61883-devel libraw1394-devel alsa-lib-devel + python-PyQt4-devel python-PyQt4-dbus python-dbus-devel" +pycompile_versions="2.7" +pycompile_module="ffado" +pycompile_dirs="usr/share/libffado/python" +short_desc="Library for accessing BeBoB IEEE1394 devices" +maintainer="Duncaen " +license="GPL-3" +homepage="http://www.ffado.org" +distfiles="http://www.ffado.org/files/libffado-${version}.tgz" +checksum=9f299b8ecd9885338aeae8c7f2fc10af9afb85ca4384256d485b010a128b35f6 + +do_build() { + scons ${makejobs} \ + CUSTOM_ENV=True \ + CC="$CC" \ + CXX="$CXX" \ + CFLAGS="$CFLAGS" \ + CXXFLAGS="$CXXFLAGS" \ + LDFLAGS="$LDFLAGS" \ + PREFIX=/usr \ + MANDIR="/usr/share/man" \ + UDEVDIR="/usr/lib/udev/rules.d" \ + BUILD_TESTS=False \ + ENABLE_OPTIMIZATIONS=False +} + +do_install() { + scons PREFIX=${DESTDIR}/usr WILL_DEAL_WITH_XDG_MYSELF="True" install + vinstall support/xdg/ffado.org-ffadomixer.desktop 644 usr/share/applications/ffadomixer.desktop + vinstall support/xdg/hi64-apps-ffado.png 644 usr/share/pixmaps/ffado.png +} + +libffado-devel_package() { + depends="${sourcepkg}>=${version}_${revision}" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/pkgconfig + vmove "usr/lib/*.so" + } +}