The current default multiple-output propagation rules don't seem to work
too well if the dev output isn't the first one; without this we get an
unnecessary runtime reference to the kernel headers.
This way the binary gets stripped & rpath-shrinked etc. as usual.
We'd seem to get a runtime reference to gcc otherwise.
TODO: Maybe we should be able to set e.g. 'dontUnpack = true;'
to make this more pretty.
Our cc-wrapper is broken whenever the '-x' flag is used:
'gcc -x c foo.c -o bar' doesn't work the same way as 'gcc foo.c -o bar'
does. (Try both with NIX_DEBUG=1.)
What happens is that passing '-x' causes linker-related flags (such as
-Wl,-dynamic-linker) not to be added, just like if '-c' is passed.
The bug happens outside the multiple-outputs branch as well, but it
doesn't break imake there. It only breaks in multiple-outputs because
linking without -Wl,-dynamic-linker produces a binary with an invalid
ELF interpreter path. (Which arguably, is a bug in its own.)
Without this, python will silently build without native extensions (e.g
openssl); this causes wget to fail its tests for instance.
vcunat added python-3.5.
- $out/libexec/ now contains subdirectories that we want to patchelf too
- $out/libexec/ now contains some .so and a related .la file, which must
not be passed to patchelf
'[[ ! -v "$propagatedOutputs" ]]' is incorrect and always evaluates to
true. The correct form using double brackets would be
'[[ ! -v propagatedOutputs ]]', but I strongly dislike '[[ ]]' due to
the totally different quoting rules compared to everything else in bash.
Configuration option for setting up virtual WLAN interfaces.
If the hardware NIC supports it, then multiple virtual WLAN interfaces can be
configured through the options of the new 'networking.wlanInterfaces' module.
For example, the following configuration transforms the device with the persistent
udev name 'wlp6s0' into a managed and a ad hoc device with the device names
'wlan-managed0' and 'wlan-adhoc0', respectively:
networking.wlanInterfaces = {
"wlan-managed0" = {
type = "managed";
device = "wlp6s0";
};
"wlan-adhoc0" = {
type = "ibss";
device = "wlp6s0";
};
};
Internally, a udev rule is created that matches wlp6s0 and runs a script which adds
the missing virtual interfaces and re-configures the wlp6s0 interface accordingly.
Once the new interfaces are created by the Linux kernel, the configuration of the
interfaces is managed by udev and systemd in the usual way.