Hi, "jgart" <jg...@dismail.de> writes: > What debug LEVEL's are permissible? > > For example, is 79 allowed? > > Or 5, 4, 3, 2, 1? > > What is the difference between the LEVELs? Where is the input LEVEL cutoff? > At 6?
The documentation[0] on common build options seems to be a bit more detailed on this at least on what range is available: >> Produce debugging output coming from the build daemon. level must be >> an integer between 0 and 5; higher means more verbose output. Setting >> a level of 4 or more may be helpful when debugging setup issues with >> the build daemon. So a range between 0 and 5 seems to be in use. It's possible to use a level >5, e.g. 79 or something else, which has the same effect as using 5 as a debug level. However it's not quite clear from the documentaton itself what the respective debug levels do. The levels seem to be defined in nix/libutil/types.hh: typedef enum { lvlError = 0, lvlInfo, lvlTalkative, lvlChatty, lvlDebug, lvlVomit } Verbosity; and all/most(?) levels seem to be in use: (guix230 (~/devel/guix)) λ rg -cl 'lvl(Error|Info|Talkative|Chatty|Debug|Vomit)' nix/nix-daemon/guix-daemon.cc:6 nix/libutil/serialise.cc:1 nix/libutil/util.hh:1 nix/nix-daemon/nix-daemon.cc:6 nix/libutil/types.hh:6 nix/libutil/util.cc:9 nix/libutil/affinity.cc:3 nix/libstore/sqlite.cc:2 nix/libstore/local-store.cc:18 nix/libstore/globals.cc:1 nix/libstore/optimise-store.cc:15 nix/libstore/pathlocks.cc:2 nix/libstore/build.cc:45 nix/libstore/gc.cc:21 (guix230 (~/devel/guix)) λ rg 'lvl(Error|Info|Talkative|Chatty|Debug|Vomit)' nix/libstore/local-store.cc 154: printMsg(lvlError, "waiting for the big store lock..."); 829: if (!err.empty()) printMsg(lvlError, "substitute: " + err); 1240: printMsg(lvlInfo, format("exporting path `%1%'") % path); 1453: printMsg(lvlError, format("reading the store...")); 1464: printMsg(lvlInfo, "checking path existence..."); 1477: printMsg(lvlInfo, "checking hashes..."); 1486: printMsg(lvlTalkative, format("checking contents of `%1%'") % *i); 1490: printMsg(lvlError, format("path `%1%' was modified! " 1500: printMsg(lvlError, format("fixing missing hash on `%1%'") % *i); 1507: printMsg(lvlError, format("updating size field on `%1%' to %2%") % *i % current.second); 1520: printMsg(lvlError, format("error: %1%") % e.msg()); 1522: printMsg(lvlError, format("warning: %1%") % e.msg()); 1541: printMsg(lvlError, format("path `%1%' is not in the store") % path); 1559: printMsg(lvlError, format("path `%1%' disappeared, removing from database...") % path); 1562: printMsg(lvlError, format("path `%1%' disappeared, but it still has valid referrers!") % path); 1567: printMsg(lvlError, format("warning: %1%") % e.msg()); 1584: printMsg(lvlInfo, format("checking path `%1%'...") % path); 1595: if (!res) printMsg(lvlError, format("path `%1%' is corrupted or missing!") % path); judging from my experience, the difference between 0..3 doesn't seem to be that noticeable in terms of increased verbosity; 4..5 seem to be pretty verbose (whereas the difference between 4 and 5 is also barely noticeable). I think it'd be good to update the documention/--help output with a bit more explanation on this (for this, it'd be probably good to know more about when to use which level/what the implications of each level are). [0]: https://guix.gnu.org/manual/en/html_node/Common-Build-Options.html -- Kind regards, Wilko Meyer w...@wmeyer.eu