From 2f73decba80dc354e3b4e56c267ce1e10200c084 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Wed, 9 Mar 2016 00:15:48 +0100 Subject: [PATCH] faust2: fix build Fixes https://github.com/NixOS/nixpkgs/issues/12749 The build failure was caused by brittle detection of the llvm version. See the code for (excessive) details. This fix is a quick hack, a proper fix would be to parse the version of the input llvm derivation and use that to derive a proper value. Here we just pin the version. Also move build-time deps to `nativeBuildInputs`. --- pkgs/applications/audio/faust/faust2.nix | 17 ++++++++++++++++- pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/audio/faust/faust2.nix b/pkgs/applications/audio/faust/faust2.nix index 4759f228e35..612a3dab99f 100644 --- a/pkgs/applications/audio/faust/faust2.nix +++ b/pkgs/applications/audio/faust/faust2.nix @@ -37,7 +37,8 @@ let inherit src; - buildInputs = [ makeWrapper llvm emscripten openssl libsndfile pkgconfig libmicrohttpd vim ]; + nativeBuildInputs = [ makeWrapper pkgconfig vim ]; + buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd ]; passthru = { @@ -53,6 +54,20 @@ let # correct system. unset system sed -e "232s/LLVM_STATIC_LIBS/LLVMLIBS/" -i compiler/Makefile.unix + + # The makefile sets LLVM_ depending on the current llvm + # version, but the detection code is quite brittle. + # + # Failing to properly detect the llvm version means that the macro + # LLVM_VERSION ends up being the raw output of `llvm-config --version`, while + # the code assumes that it's set to a symbol like `LLVM_35`. Two problems result: + # * :0:1: error: macro names must be identifiers.; and + # * a bunch of undefined reference errors due to conditional definitions relying on + # LLVM_XY being defined. + # + # For now, fix this by 1) pinning the llvm version; 2) manually setting LLVM_VERSION + # to something the makefile will recognize. + sed '52iLLVM_VERSION=3.7.0' -i compiler/Makefile.unix ''; # Remove most faust2appl scripts since they won't run properly diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f38ee99819a..8b641b882ee 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15895,7 +15895,9 @@ let faust1 = callPackage ../applications/audio/faust/faust1.nix { }; - faust2 = callPackage ../applications/audio/faust/faust2.nix { }; + faust2 = callPackage ../applications/audio/faust/faust2.nix { + llvm = llvm_37; + }; faust2alqt = callPackage ../applications/audio/faust/faust2alqt.nix { };