summary refs log tree commit diff
path: root/pkgs/os-specific/linux/ffado
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2018-12-15 14:40:26 -0600
committerMatthew Bauer <mjbauer95@gmail.com>2018-12-15 14:43:57 -0600
commit78cabc3ca9edfd04b93230aa74c132a0f81a2a25 (patch)
treef88aa58fc239c2d989c1a0892db3cbd85580fe03 /pkgs/os-specific/linux/ffado
parente422585c0d24789c8a592cc34802a2cde6a14785 (diff)
downloadnixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.tar
nixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.tar.gz
nixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.tar.bz2
nixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.tar.lz
nixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.tar.xz
nixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.tar.zst
nixpkgs-78cabc3ca9edfd04b93230aa74c132a0f81a2a25.zip
libffado: refactor lib-prefixed package
Diffstat (limited to 'pkgs/os-specific/linux/ffado')
-rw-r--r--pkgs/os-specific/linux/ffado/default.nix97
1 files changed, 36 insertions, 61 deletions
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 <memory>' \
-      src/ffadodevice.h src/bebob/bebob_dl_mgr.cpp tests/scan-devreg.cpp
-    sed -i -e '1i #include <stdlib.h>' \
-      -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; {