Skip to content

Some faust scripts only work in nix-shell #78610

@magnetophon

Description

@magnetophon

Describe the bug
Faust is a language that can be compiled to many targets.

It has scripts that will do this for you, like faust2alsa, which will generate a alsa program with a GTK ui, or faust2alqt, which will generate an alsa + QT one.

Some of those will work as expected, others only inside a nix-shell.

To Reproduce
Steps to reproduce the behavior:

  1. cd /tmp && touch tst.dsp && echo 'process=+;' > tst.dsp
  2. nix-env -iA nixos.faust2alqt
  3. faust2alqt tst.dsp

Working version:

  1. cd /tmp && touch tst.dsp && echo 'process=+;' > tst.dsp
  2. nix-env -iA nixos.faust2alqt
  3. nix-shell $NIXPKGS -A magnetophonDSP.faustCompressors
  4. faust2alqt tst.dsp
  5. ./tst

Additional context
All faust scripts used to work up until Jan 2018.
I've created this new issue cause the old one only mentioned faust2lv2 and could be worded clearer.

To test in a normal shell:

nix-env -e faust2alqt faust2alsa faust2csound faust2firefox faust2jackrust faust2jack faust2jaqt faust2ladspa faust2lv2

To test in nix-shell, use this shell.nix:

with import <nixpkgs> {};
stdenv.mkDerivation {
  name = "faustEnv";
  buildInputs = [
    faust2alqt
    faust2alsa
    faust2csound
    faust2firefox
    # faust2jackrust #only in the new faust version
    faust2jack
    faust2jaqt
    faust2ladspa
    faust2lv2
  ];
}

working in normal shell
faust2csound
faust2firefox
faust2jack
faust2ladspa

only working in nix-shell
faust2alqt
faust2jaqt
faust2lv2

working in neither
faust2alsa

The ones that only work in nix-shell claim they are missing dependencies when
used in the normal shell, for example this one from faust2alqt:

tst.cpp:5432:10: fatal error: alsa/asoundlib.h: No such file or directory
 5432 | #include <alsa/asoundlib.h>
      |          ^~~~~~~

I'll spare you the errors for the other examples, as I assume they all have the
same root cause.
Let me know if I should provide them anyway.

faust2alqt is a wrapped shell-script.
I tried to debug by adding some relevant echo statements to it, echoing the exact gcc command being called, and echoing env | grep boost.
It outputs the exact same thing if I run it from normal shell or nix-shell.

I also tried reverting the last few faust commits and rebuilding from there. No dice.

It would be great to figure out why some only work in nix-shell and even better to fix it!
Hints how to troubleshoot further are greatly appreciated.

In my upcoming PR for a faust update, at least none of the scripts are broken in both shells.

Metadata

  • system: "x86_64-linux"
  • host os: Linux 5.4.14, NixOS, 20.03pre210531.73a59af35bb (Markhor)
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.3.2
  • channels(bart): ""
  • channels(root): "nixos-20.03pre210531.73a59af35bb"
  • nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions