From 78cabc3ca9edfd04b93230aa74c132a0f81a2a25 Mon Sep 17 00:00:00 2001 From: Matthew Bauer Date: Sat, 15 Dec 2018 14:40:26 -0600 Subject: libffado: refactor lib-prefixed package --- pkgs/os-specific/linux/ffado/default.nix | 97 ++++++++++++-------------------- 1 file changed, 36 insertions(+), 61 deletions(-) (limited to 'pkgs/os-specific/linux/ffado') diff --git a/pkgs/os-specific/linux/ffado/default.nix b/pkgs/os-specific/linux/ffado/default.nix index 85218042cf7..761ca564584 100644 --- a/pkgs/os-specific/linux/ffado/default.nix +++ b/pkgs/os-specific/linux/ffado/default.nix @@ -1,30 +1,12 @@ { stdenv, fetchurl, scons, pkgconfig, which, makeWrapper, python -, expat, libraw1394, libconfig, libavc1394, libiec61883, libxmlxx, glibmm - -# Optional dependencies -, libjack2 ? null, dbus ? null, dbus_cplusplus ? null, alsaLib ? null -, pyqt4 ? null, dbus-python ? null, xdg_utils ? null - -# Other Flags -, prefix ? "" +, expat, libraw1394, libconfig, libavc1394, libiec61883, libxmlxx +, glibmm +, alsaLib, dbus, dbus_cplusplus +, pyqt4, dbus-python }: -let - - shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (stdenv.lib.meta.platformMatch stdenv.hostPlatform) pkg.meta.platforms then pkg else null; - - libOnly = prefix == "lib"; - - optLibjack2 = shouldUsePkg libjack2; - optDbus = shouldUsePkg dbus; - optDbus_cplusplus = shouldUsePkg dbus_cplusplus; - optAlsaLib = shouldUsePkg alsaLib; - optPyqt4 = shouldUsePkg pyqt4; - optPythonDBus = shouldUsePkg dbus-python; - optXdg_utils = shouldUsePkg xdg_utils; -in stdenv.mkDerivation rec { - name = "${prefix}ffado-${version}"; + name = "ffado-${version}"; version = "2.4.0"; src = fetchurl { @@ -32,54 +14,47 @@ stdenv.mkDerivation rec { sha256 = "14rprlcd0gpvg9kljh0zzjzd2rc9hbqqpjidshxxjvvfh4r00f4f"; }; + outputs = [ "out" "bin" "dev" ]; + nativeBuildInputs = [ scons pkgconfig which makeWrapper python ]; - buildInputs = [ - expat libraw1394 libconfig libavc1394 libiec61883 - ] ++ stdenv.lib.optionals (!libOnly) [ - optLibjack2 optDbus optDbus_cplusplus optAlsaLib optPyqt4 - optXdg_utils libxmlxx glibmm + prefixKey = "PREFIX="; + sconsFlags = [ + "DEBUG=False" + "ENABLE_ALL=True" + "SERIALIZE_USE_EXPAT=True" + "BUILD_TESTS=False" + "WILL_DEAL_WITH_XDG_MYSELF=True" + "BUILD_MIXER=True" ]; - postPatch = '' - sed '1iimport sys' -i SConstruct - # SConstruct checks cpuinfo and an objdump of /bin/mount to determine the appropriate arch - # Let's just skip this and tell it which to build - sed '/def is_userspace_32bit(cpuinfo):/a\ - return ${if stdenv.is64bit then "False" else "True"}' -i SConstruct - - # Lots of code is missing random headers to exist - sed -i '1i #include ' \ - src/ffadodevice.h src/bebob/bebob_dl_mgr.cpp tests/scan-devreg.cpp - sed -i -e '1i #include ' \ - -e '1i #include "version.h"' \ - src/libutil/serialize_expat.cpp - ''; - - preConfigure = '' + configurePhase = '' + mkdir -p $out/lib/udev/rules.d $bin/bin $dev/include \ + $out/lib/${python.libPrefix}/site-packages + sconsFlagsArray+=(UDEVDIR=$out/lib/udev/rules.d) + sconsFlagsArray+=(PYPKGDIR=$out/lib/${python.libPrefix}/site-packages) + sconsFlagsArray+=(BINDIR=$bin/bin) + sconsFlagsArray+=(INCLUDEDIR=$dev/include) export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libxml++-2.6)" ''; - # TODO fix ffado-diag, it doesn't seem to use PYPKGDIR - buildPhase = '' - export PYDIR=$out/lib/${python.libPrefix}/site-packages + buildInputs = [ + expat libraw1394 libconfig libavc1394 libiec61883 dbus dbus_cplusplus + libxmlxx pyqt4 dbus-python glibmm + ]; - scons PYPKGDIR=$PYDIR DEBUG=False \ - ENABLE_ALL=True \ - SERIALIZE_USE_EXPAT=True \ + postPatch = '' + sed '1iimport sys' -i SConstruct ''; - installPhase = if libOnly then '' - scons PREFIX=$TMPDIR UDEVDIR=$TMPDIR \ - LIBDIR=$out/lib INCLUDEDIR=$out/include install - '' else '' - scons PREFIX=$out PYPKGDIR=$PYDIR UDEVDIR=$out/lib/udev/rules.d install - '' + stdenv.lib.optionalString (optPyqt4 != null && optPythonDBus != null) '' - wrapProgram $out/bin/ffado-mixer --prefix PYTHONPATH : \ - $PYTHONPATH:$PYDIR:${optPyqt4}/$LIBSUFFIX:${optPythonDBus}/$LIBSUFFIX: - - wrapProgram $out/bin/ffado-diag --prefix PYTHONPATH : \ - $PYTHONPATH:$PYDIR:$out/share/libffado/python:${optPyqt4}/$LIBSUFFIX:${optPythonDBus}/$LIBSUFFIX: + postInstall = '' + for exe in $bin/bin/ffado-mixer $bin/bin/ffado-diag; do + wrapProgram $exe \ + --prefix PYTHONPATH : $out/lib/${python.libPrefix}/site-packages \ + --prefix PYTHONPATH : $out/share/libffado/python \ + --prefix PYTHONPATH : ${pyqt4}/lib/${python.libPrefix}/site-packages \ + --prefix PYTHONPATH : ${dbus-python}/lib/${python.libPrefix}/site-packages + done ''; meta = with stdenv.lib; { -- cgit 1.4.1