Index: config.lua ================================================================== --- config.lua +++ config.lua @@ -159,11 +159,11 @@ else return e end end return coalesce( pkgenv(v), - pkv(e or v), + e ~= false and pkv(e or v) or nil, (fbo and eval(fbo[v])), (fbv and eval(fbv[v]))) end local name = cnfvar('override') or name local pcname = coalesce(cnfvar('pcname'), name) @@ -180,21 +180,25 @@ else print '(warn) configuring on non-POSIX OS, all relevant paths must be specified manually in environment variables or build will fail!' end locdep = u.ping('./lib/' .. name) local incdir, libdir, prefix + local libsfx = coalesce(cnfvar('libsuffix',false),'') + local incsfx = coalesce(cnfvar('incsuffix',false),'') if locdep then prefix = './lib/' .. name - libdir = prefix .. coalesce(cnfvar('libbuilddir'),cnfvar('builddir'),'') - incdir = prefix .. coalesce(cnfvar('srcincdir'),cnfvar('builddir'),'/include') + libdir = prefix .. coalesce(cnfvar 'libbuilddir',cnfvar 'builddir','') + incdir = prefix .. coalesce(cnfvar 'srcincdir', cnfvar 'builddir','/include') else - prefix = coalesce(cnfvar('prefix'), '/usr') - libdir = cnfvar('libdir') - incdir = cnfvar('incdir','includedir') + prefix = coalesce(cnfvar 'prefix', '/usr') + libdir = cnfvar 'libdir' + if libdir then libdir = libdir .. libsfx end + incdir = cnfvar('incdir','includedir') + if incdir then incdir = incdir .. incsfx end end - libdir = libdir or prefix .. '/lib' - incdir = incdir or prefix .. '/include' + libdir = libdir or (prefix .. '/lib' .. libsfx) + incdir = incdir or (prefix .. '/include' .. incsfx) local libstr = pkc '--libs-only-l' -- (--static is not reliable) local libs = fb and fb.libs or {} local linkstatic = locdep if (not locdep) and libstr then Index: parsav.t ================================================================== --- parsav.t +++ parsav.t @@ -435,10 +435,11 @@ lib.pk = lib.loadlib('mbedtls','mbedtls/pk.h') lib.md = lib.loadlib('mbedtls','mbedtls/md.h') lib.b64 = lib.loadlib('mbedtls','mbedtls/base64.h') lib.net = lib.loadlib('mongoose','mongoose.h') lib.pq = lib.loadlib('libpq','libpq-fe.h') +lib.jc = lib.loadlib('json-c','json.h') lib.load { 'mem', 'math', 'str', 'file', 'crypt', 'ipc'; 'http', 'html', 'session', 'tpl', 'store', 'acl'; Index: pkgdata.lua ================================================================== --- pkgdata.lua +++ pkgdata.lua @@ -7,11 +7,22 @@ osvars = { linux_nixos = { -- lacks a *.pc on nixos systems prefix = sthunk('nix', 'path-info', 'nixos.mbedtls'); } }; - vars = { builddir = '/library' }; + vars = { builddir = '/library', srcincdir = '/include' }; + }; + ['json-c'] = { + osvars = { + linux_nixos = { + prefix = sthunk('nix','path-info','nixos.json_c'); + }; + }; + vars = { + builddir = ''; + incsuffix = '/json-c'; -- only used when path generated from prefix + } }; mongoose = { vars = { builddir = '' } }; libpq = { osvars = { linux_nixos = { @@ -23,15 +34,15 @@ }; }; vars = {pcname = 'postgresql';} }; libc = { - libs = {'dl'}; -- libc.so does not need explicit mention + libs = {'c'}; -- libc.so probably does not need explicit mention, but osvars = { + linux = { override = 'glibc'; }; linux_nixos = { prefix = sthunk('nix', 'path-info', 'nixos.glibc'); override = 'glibc'; }; - linux = { override = 'glibc'; }; } }; } Index: render/conf/users.t ================================================================== --- render/conf/users.t +++ render/conf/users.t @@ -184,24 +184,24 @@ end end end) local input_pusher = function(kind,wrap,uniq) - local fn = terra(acc: &lib.str.acc, name: pstr, val: pstr, lbl: pstr, on: bool, enabled: bool, class: pstr) + local fn = terra(acc: &lib.str.acc, id: pstr, name: pstr, val: pstr, lbl: pstr, on: bool, enabled: bool, class: pstr) if wrap then acc:lpush('