forked from lix-project/lix
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
41 lines
763 B
C++
41 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,
|
|
});
|