parsav  Check-in [afae276b2f]

Overview
Comment:rip out json-c, replace with mjson
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: afae276b2f5614c05a79a885ea7e883b979af6303eeb5e14960ead9977714e57
User & Date: lexi on 2021-01-29 21:14:57
Other Links: manifest | tags
Context
2021-06-22
15:18
various bug fixes, minor additions, more silliness check-in: 45a6e815b1 user: lexi tags: trunk
2021-01-29
21:14
rip out json-c, replace with mjson check-in: afae276b2f user: lexi tags: trunk
2021-01-28
02:50
fix more dumb leaks check-in: 4ce1aab090 user: lexi tags: trunk
Changes

Modified config.lua from [f9545a425d] to [52297260cd].

254
255
256
257
258
259
260
261
262
263
264
265
266
267
			if not found then
				me.linkargs[#me.linkargs+1] = sw
			end
		end
	end
end

pkg('mbedtls')
pkg('mongoose')
pkg('json-c')
pkg('libc')
pkg('libpq')

return conf







|
<
<
<
<


254
255
256
257
258
259
260
261




262
263
			if not found then
				me.linkargs[#me.linkargs+1] = sw
			end
		end
	end
end

for k in pairs(fallback) do pkg(k) end





return conf

Modified makefile from [51cc28542c] to [5b41282a82].

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
..
49
50
51
52
53
54
55





56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
..
93
94
95
96
97
98
99
100
101
102
103
104
clean:
	rm parsav parsav.o $(images) $(styles)

install: parsav
	mkdir $(prefix)/bin
	cp $< $(prefix)/bin/

dep: dep.mbedtls dep.mongoose dep.json-c
dep.mbedtls: lib/mbedtls/library/libmbedtls.a \
	lib/mbedtls/library/libmbedcrypto.a \
	lib/mbedtls/library/libmbedx509.a
dep.mongoose: lib/mongoose/libmongoose.a
dep.json-c: lib/json-c/libjson-c.a

static-libs = lib/json-c/libjson-c.a \
		      lib/mongoose/libmongoose.a \
		      lib/mbedtls/library/libmbedx509.a \
		      lib/mbedtls/library/libmbedcrypto.a \
		      lib/mbedtls/library/libmbedtls.a

dist-kind ?= o
parsav-dist = parsav-$(dist-kind)dist-$(version)
................................................................................
	cp -u $^ $(parsav-dist)/
	tar cf   $(parsav-dist){.tar,}
	xz -c9e  $(parsav-dist).tar > $@
	rm -r    $(parsav-dist){.tar,}

lib:
	mkdir $@





# generate a shim static library so mongoose cooperates
# with the build apparatus. note that parsav is designed
# to be fronted by a real web server like nginx if SSL
# is to be used, so we don't turn on SSL in mongoose
lib/mongoose/libmongoose.a: lib/mongoose lib/mongoose/mongoose.c lib/mongoose/mongoose.h
	$(CC) -c $</mongoose.c -o lib/mongoose/mongoose.o \
		-DMG_ENABLE_THREADS=1 \
		-DMG_ENABLE_IPV6=1 \
		-DMG_ENABLE_HTTP_WEBDAV=1 \
		-DMG_ENABLE_HTTP_WEBSOCKET=0
	ar rcs $@ lib/mongoose/*.o
	ranlib $@

lib/json-c/Makefile: lib/json-c lib/json-c/CMakeLists.txt
	cd $< && cmake .
lib/json-c/libjson-c.a: lib/json-c/Makefile
	$(MAKE) -C lib/json-c
lib/mbedtls/library/%.a: lib/mbedtls 
	$(MAKE) -C lib/mbedtls/library $*.a

ifeq ($(dl), git)
clone = git clone --depth 1 # save time
ensurelib = mkdir -p lib && cd lib
lib/mongoose: 
	$(ensurelib) && $(clone) https://github.com/cesanta/mongoose.git
lib/mbedtls: 
	$(ensurelib) && $(clone) https://github.com/ARMmbed/mbedtls.git
lib/json-c: 
	$(ensurelib) && $(clone) https://github.com/json-c/json-c.git
else
lib/%: lib/%.tar.gz
	$(ensurelib) && tar zxf $*.tar.gz
	mv lib/$$(tar tf $< | head -n1) $@

ifeq ($(dl), wget)
    dlfile = mkdir -p $(dir $@) && wget "$1" -O "$@"
................................................................................

ifeq ($(dl), curl)
    dlfile = mkdir -p $(dir $@) && curl "$1" -o "$@"
endif

lib/mongoose.tar.gz:
	$(call dlfile,https://api.github.com/repos/cesanta/mongoose/tarball/master)
lib/mbedtls.tar.gz:
	$(call dlfile,https://api.github.com/repos/ARMmbed/mbedtls/tarball/master)
lib/json-c.tar.gz:
	$(call dlfile,https://api.github.com/repos/json-c/json-c/tarball/master)
endif







|




|

|







 







>
>
>
>
>




|
|




|
|
|
|
|
|
|








|
|
|
|







 







|
|
|
|

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
..
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
..
98
99
100
101
102
103
104
105
106
107
108
109
clean:
	rm parsav parsav.o $(images) $(styles)

install: parsav
	mkdir $(prefix)/bin
	cp $< $(prefix)/bin/

dep: dep.mbedtls dep.mongoose dep.mjson
dep.mbedtls: lib/mbedtls/library/libmbedtls.a \
	lib/mbedtls/library/libmbedcrypto.a \
	lib/mbedtls/library/libmbedx509.a
dep.mongoose: lib/mongoose/libmongoose.a
dep.mjson: lib/mjson/libmjson.a

static-libs = lib/mjson/libmjson.a \
		      lib/mongoose/libmongoose.a \
		      lib/mbedtls/library/libmbedx509.a \
		      lib/mbedtls/library/libmbedcrypto.a \
		      lib/mbedtls/library/libmbedtls.a

dist-kind ?= o
parsav-dist = parsav-$(dist-kind)dist-$(version)
................................................................................
	cp -u $^ $(parsav-dist)/
	tar cf   $(parsav-dist){.tar,}
	xz -c9e  $(parsav-dist).tar > $@
	rm -r    $(parsav-dist){.tar,}

lib:
	mkdir $@

lib%.a %.a: %.o
	ar rcs $@ $<
	ranlib $@ # bsd-ism

# generate a shim static library so mongoose cooperates
# with the build apparatus. note that parsav is designed
# to be fronted by a real web server like nginx if SSL
# is to be used, so we don't turn on SSL in mongoose
lib/mongoose/mongoose.o: lib/mongoose/mongoose.c lib/mongoose/mongoose.h lib/mongoose
	$(CC) -c $< -o lib/mongoose/mongoose.o \
		-DMG_ENABLE_THREADS=1 \
		-DMG_ENABLE_IPV6=1 \
		-DMG_ENABLE_HTTP_WEBDAV=1 \
		-DMG_ENABLE_HTTP_WEBSOCKET=0

lib/mjson/mjson.o: lib/mjson/src/mjson.c lib/mjson/src/mjson.h lib/mjson
	$(CC) -c $< -o lib/mjson/mjson.o \
		-DMJSON_MAX_DEPTH=16 \
		-DMJSON_ENABLE_BASE64=0 \
		-DMJSON_ENABLE_RPC=0

lib/mbedtls/library/%.a: lib/mbedtls 
	$(MAKE) -C lib/mbedtls/library $*.a

ifeq ($(dl), git)
clone = git clone --depth 1 # save time
ensurelib = mkdir -p lib && cd lib
lib/mongoose: 
	$(ensurelib) && $(clone) https://github.com/cesanta/mongoose.git
lib/mjson: 
	$(ensurelib) && $(clone) https://github.com/cesanta/mjson.git
lib/mbedtls: 
	$(ensurelib) && $(clone) https://github.com/ARMmbed/mbedtls.git
else
lib/%: lib/%.tar.gz
	$(ensurelib) && tar zxf $*.tar.gz
	mv lib/$$(tar tf $< | head -n1) $@

ifeq ($(dl), wget)
    dlfile = mkdir -p $(dir $@) && wget "$1" -O "$@"
................................................................................

ifeq ($(dl), curl)
    dlfile = mkdir -p $(dir $@) && curl "$1" -o "$@"
endif

lib/mongoose.tar.gz:
	$(call dlfile,https://api.github.com/repos/cesanta/mongoose/tarball/master)
lib/mjson.tar.gz:
	$(call dlfile,https://api.github.com/repos/cesanta/mjson/tarball/master)
lib/mbedtls.tar.gz:
	$(call dlfile,https://api.github.com/repos/ARMmbed/mbedtls/tarball/master)
endif

Modified parsav.t from [584b173afe] to [9e243d4979].

434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
lib.err = lib.loadlib('mbedtls','mbedtls/error.h')
lib.rsa = lib.loadlib('mbedtls','mbedtls/rsa.h')
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';

	'mime'; -- mimetype database & whitelist
	'smackdown'; -- md-alike parser







|







434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
lib.err = lib.loadlib('mbedtls','mbedtls/error.h')
lib.rsa = lib.loadlib('mbedtls','mbedtls/rsa.h')
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('mjson','mjson.h')

lib.load {
	'mem', 'math', 'str', 'file', 'crypt', 'ipc';
	'http', 'html', 'session', 'tpl', 'store', 'acl';

	'mime'; -- mimetype database & whitelist
	'smackdown'; -- md-alike parser

Modified pkgdata.lua from [85c9cc69e8] to [dbac8681c6].

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
		libs = {'mbedtls', 'mbedcrypto', 'mbedx509'};
		osvars = {
			linux_nixos = { -- lacks a *.pc on nixos systems
				prefix = sthunk('nix', 'path-info', 'nixos.mbedtls');
			}
		};
		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 = {
				prefix = sthunk('nix', 'path-info', 'nixos.postgresql.lib');
				incdir = function()
					local a = {'nix', 'path-info', 'nixos.postgresql'}
					return (util.exec(a)) .. '/include';








<
<
<
<
<
<
<
|
<
<
<
|







6
7
8
9
10
11
12
13







14



15
16
17
18
19
20
21
22
		libs = {'mbedtls', 'mbedcrypto', 'mbedx509'};
		osvars = {
			linux_nixos = { -- lacks a *.pc on nixos systems
				prefix = sthunk('nix', 'path-info', 'nixos.mbedtls');
			}
		};
		vars = { builddir = '/library', srcincdir = '/include' };
	};







	mongoose = { vars = { builddir = '' } };



	mjson = { vars = { builddir = '', srcincdir = '/src' } };
	libpq = {
		osvars = {
			linux_nixos = {
				prefix = sthunk('nix', 'path-info', 'nixos.postgresql.lib');
				incdir = function()
					local a = {'nix', 'path-info', 'nixos.postgresql'}
					return (util.exec(a)) .. '/include';