forked from lix-project/lix
Jade Lovelace
0d85875c3a
It happens with some frequency that plugins that might be unimportant to
the evaluation at hand mismatch with the nix version, leading to
spurious load failures. Let's make these non fatal.
Change-Id: Iba10e951d171725ccf1a121bcd9be1e1d6ad69eb
40 lines
763 B
C++
40 lines
763 B
C++
#include "config.hh"
|
|
#include "primops.hh"
|
|
#include <stdlib.h>
|
|
|
|
using namespace nix;
|
|
|
|
#ifdef MISSING_REFERENCE
|
|
extern void meow();
|
|
#else
|
|
#define meow() {}
|
|
#endif
|
|
|
|
struct MySettings : Config
|
|
{
|
|
Setting<bool> settingSet{this, false, "setting-set",
|
|
"Whether the plugin-defined setting was set"};
|
|
};
|
|
|
|
MySettings mySettings;
|
|
|
|
static GlobalConfig::Register rs(&mySettings);
|
|
|
|
[[gnu::used, gnu::unused, gnu::retain]]
|
|
static void maybeRequireMeowForDlopen() {
|
|
meow();
|
|
}
|
|
|
|
static void prim_anotherNull (EvalState & state, const PosIdx pos, Value ** args, Value & v)
|
|
{
|
|
if (mySettings.settingSet)
|
|
v.mkNull();
|
|
else
|
|
v.mkBool(false);
|
|
}
|
|
|
|
static RegisterPrimOp rp({
|
|
.name = "anotherNull",
|
|
.arity = 0,
|
|
.fun = prim_anotherNull,
|
|
});
|