mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-07 23:13:34 +00:00
* Proof of concept of sqlite serialization This is a minimal proof of concept in order to show that it is easily possible to store the sqlite database within the zip file itself not requiring creating an external file first. Changes include compiling the sqlite library with the serialization flag, adding serialize/deserialize to the lua sqlite library and demonstrating the work via the redbean demo. * Change demo for sqlite serialization As explained in https://github.com/jart/cosmopolitan/pull/436#issuecomment-1164706893 the original use case is not possible with sqlite serialization, as an in-memory database cannot be shared across multiple processes. Thereby, this use case simply creates a backup of the in-memory database created in '.init.lua' and loads it to do a query. * Fix sqlite3_deserialize parameters The call to the sqlite3 library for the deserilization wasn't fully correct. This should fix the size parameters.
326 lines
10 KiB
Makefile
326 lines
10 KiB
Makefile
#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
|
|
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
|
|
|
|
PKGS += TOOL_NET
|
|
|
|
TOOL_NET_FILES := $(wildcard tool/net/*)
|
|
TOOL_NET_SRCS = $(filter %.c,$(TOOL_NET_FILES))
|
|
TOOL_NET_HDRS = $(filter %.h,$(TOOL_NET_FILES))
|
|
|
|
TOOL_NET_OBJS = \
|
|
$(TOOL_NET_SRCS:%.c=o/$(MODE)/%.o)
|
|
|
|
TOOL_NET_BINS = \
|
|
$(TOOL_NET_COMS) \
|
|
$(TOOL_NET_COMS:%=%.dbg)
|
|
|
|
TOOL_NET_COMS = \
|
|
o/$(MODE)/tool/net/dig.com \
|
|
o/$(MODE)/tool/net/redbean.com \
|
|
o/$(MODE)/tool/net/redbean-demo.com \
|
|
o/$(MODE)/tool/net/redbean-static.com \
|
|
o/$(MODE)/tool/net/redbean-unsecure.com \
|
|
o/$(MODE)/tool/net/redbean-original.com \
|
|
o/$(MODE)/tool/net/wb.com
|
|
|
|
TOOL_NET_CHECKS = \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
$(TOOL_NET_HDRS:%=o/$(MODE)/%.ok)
|
|
|
|
TOOL_NET_DIRECTDEPS = \
|
|
DSP_SCALE \
|
|
LIBC_CALLS \
|
|
LIBC_DNS \
|
|
LIBC_FMT \
|
|
LIBC_INTRIN \
|
|
LIBC_LOG \
|
|
LIBC_MEM \
|
|
LIBC_NEXGEN32E \
|
|
LIBC_NT_IPHLPAPI \
|
|
LIBC_NT_KERNEL32 \
|
|
LIBC_RUNTIME \
|
|
LIBC_SOCK \
|
|
LIBC_STDIO \
|
|
LIBC_STR \
|
|
LIBC_STUBS \
|
|
LIBC_SYSV \
|
|
LIBC_SYSV_CALLS \
|
|
LIBC_TIME \
|
|
LIBC_THREAD \
|
|
LIBC_TINYMATH \
|
|
LIBC_X \
|
|
LIBC_ZIPOS \
|
|
NET_FINGER \
|
|
NET_HTTP \
|
|
NET_HTTPS \
|
|
THIRD_PARTY_ARGON2 \
|
|
THIRD_PARTY_GDTOA \
|
|
THIRD_PARTY_GETOPT \
|
|
THIRD_PARTY_LINENOISE \
|
|
THIRD_PARTY_LUA \
|
|
THIRD_PARTY_LUA_UNIX \
|
|
THIRD_PARTY_MAXMIND \
|
|
THIRD_PARTY_MBEDTLS \
|
|
THIRD_PARTY_REGEX \
|
|
THIRD_PARTY_SQLITE3 \
|
|
THIRD_PARTY_ZLIB \
|
|
TOOL_ARGS \
|
|
TOOL_BUILD_LIB \
|
|
TOOL_DECODE_LIB \
|
|
THIRD_PARTY_DOUBLECONVERSION
|
|
|
|
TOOL_NET_DEPS := \
|
|
$(call uniq,$(foreach x,$(TOOL_NET_DIRECTDEPS),$($(x))))
|
|
|
|
o/$(MODE)/tool/net/net.pkg: \
|
|
$(TOOL_NET_OBJS) \
|
|
$(foreach x,$(TOOL_NET_DIRECTDEPS),$($(x)_A).pkg)
|
|
|
|
o/$(MODE)/tool/net/%.com.dbg: \
|
|
$(TOOL_NET_DEPS) \
|
|
o/$(MODE)/tool/net/%.o \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
$(CRT) \
|
|
$(APE_NO_MODIFY_SELF)
|
|
@$(APELINK)
|
|
|
|
# REDBEAN.COM
|
|
#
|
|
# The little web server that could!
|
|
|
|
TOOL_NET_REDBEAN_LUA_MODULES = \
|
|
o/$(MODE)/tool/net/lfuncs.o \
|
|
o/$(MODE)/tool/net/lpath.o \
|
|
o/$(MODE)/tool/net/lfinger.o \
|
|
o/$(MODE)/tool/net/lre.o \
|
|
o/$(MODE)/tool/net/ljson.o \
|
|
o/$(MODE)/tool/net/lmaxmind.o \
|
|
o/$(MODE)/tool/net/lsqlite3.o \
|
|
o/$(MODE)/tool/net/largon2.o
|
|
|
|
TOOL_NET_REDBEAN_STANDARD_ASSETS = \
|
|
tool/net/.init.lua \
|
|
tool/net/favicon.ico \
|
|
tool/net/redbean.png \
|
|
tool/net/help.txt
|
|
|
|
TOOL_NET_REDBEAN_STANDARD_ASSETS_ZIP = \
|
|
$(COMPILE) -AZIP -T$@ \
|
|
o/$(MODE)/third_party/zip/zip.com -b$(TMPDIR) -9qj $@ \
|
|
$(TOOL_NET_REDBEAN_STANDARD_ASSETS)
|
|
|
|
o/$(MODE)/tool/net/redbean.com.dbg: \
|
|
$(TOOL_NET_DEPS) \
|
|
o/$(MODE)/tool/net/redbean.o \
|
|
$(TOOL_NET_REDBEAN_LUA_MODULES) \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
$(CRT) \
|
|
$(APE_NO_MODIFY_SELF)
|
|
@$(APELINK)
|
|
|
|
o/$(MODE)/tool/net/redbean.com: \
|
|
o/$(MODE)/tool/net/redbean.com.dbg \
|
|
o/$(MODE)/third_party/zip/zip.com \
|
|
o/$(MODE)/tool/build/symtab.com \
|
|
$(TOOL_NET_REDBEAN_STANDARD_ASSETS)
|
|
@$(MAKE_OBJCOPY)
|
|
@$(MAKE_SYMTAB_CREATE)
|
|
@$(MAKE_SYMTAB_ZIP)
|
|
@$(TOOL_NET_REDBEAN_STANDARD_ASSETS_ZIP)
|
|
|
|
# REDBEAN-DEMO.COM
|
|
#
|
|
# This redbean-demo.com program is the same as redbean.com except it
|
|
# bundles a bunch of example code and there's a live of it available
|
|
# online at http://redbean.justine.lol/
|
|
|
|
o/$(MODE)/tool/net/.init.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/.init.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/.reload.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/sql.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/sql-backup.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/sql-backupstore.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-unix.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-rawsocket.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-subprocess.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-webserver.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-dir.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-info.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-finger.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/fetch.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/finger.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/call-lua-module.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/store-asset.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/maxmind.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/opensource.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/binarytrees.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/crashreport.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/closedsource.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/printpayload.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/gensvg.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean-form.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean-xhr.lua.zip.o \
|
|
o/$(MODE)/tool/net/redbean.png.zip.o \
|
|
o/$(MODE)/tool/net/favicon.ico.zip.o \
|
|
o/$(MODE)/tool/net/help.txt.zip.o \
|
|
o/$(MODE)/tool/net/demo/404.html.zip.o: private \
|
|
ZIPOBJ_FLAGS += \
|
|
-B
|
|
|
|
o/$(MODE)/tool/net/demo/.lua/.zip.o \
|
|
o/$(MODE)/tool/net/demo/.lua/mymodule.lua.zip.o: private \
|
|
ZIPOBJ_FLAGS += \
|
|
-C3
|
|
|
|
o/$(MODE)/tool/net/demo/seekable.txt.zip.o: private \
|
|
ZIPOBJ_FLAGS += \
|
|
-B \
|
|
-0
|
|
|
|
o/$(MODE)/tool/net/demo/virtualbean.html.zip.o: private \
|
|
ZIPOBJ_FLAGS += \
|
|
-Predbean.justine.lol \
|
|
-B
|
|
|
|
o/$(MODE)/tool/net/redbean-demo.com.dbg: \
|
|
$(TOOL_NET_DEPS) \
|
|
o/$(MODE)/tool/net/redbean.o \
|
|
$(TOOL_NET_REDBEAN_LUA_MODULES) \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
o/$(MODE)/tool/net/demo/sql.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/sql-backup.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/sql-backupstore.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-unix.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-rawsocket.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-subprocess.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-webserver.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-dir.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-info.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/unix-finger.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/fetch.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/finger.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/store-asset.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/call-lua-module.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/maxmind.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/opensource.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/binarytrees.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/crashreport.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/closedsource.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/printpayload.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/gensvg.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean-form.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean-xhr.lua.zip.o \
|
|
o/$(MODE)/tool/.zip.o \
|
|
o/$(MODE)/tool/net/.zip.o \
|
|
o/$(MODE)/tool/net/demo/.zip.o \
|
|
o/$(MODE)/tool/net/demo/index.html.zip.o \
|
|
o/$(MODE)/tool/net/demo/redbean.css.zip.o \
|
|
o/$(MODE)/tool/net/redbean.png.zip.o \
|
|
o/$(MODE)/tool/net/favicon.ico.zip.o \
|
|
o/$(MODE)/tool/net/demo/404.html.zip.o \
|
|
o/$(MODE)/tool/net/demo/seekable.txt.zip.o \
|
|
o/$(MODE)/tool/net/demo/virtualbean.html.zip.o \
|
|
o/$(MODE)/tool/net/demo/.lua/.zip.o \
|
|
o/$(MODE)/tool/net/demo/.lua/mymodule.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/.reload.lua.zip.o \
|
|
o/$(MODE)/tool/net/demo/.init.lua.zip.o \
|
|
o/$(MODE)/tool/net/help.txt.zip.o \
|
|
$(CRT) \
|
|
$(APE_NO_MODIFY_SELF)
|
|
@$(APELINK)
|
|
|
|
o/$(MODE)/tool/net/redbean-demo.com: \
|
|
o/$(MODE)/tool/net/redbean-demo.com.dbg \
|
|
o/$(MODE)/third_party/zip/zip.com \
|
|
o/$(MODE)/tool/build/symtab.com
|
|
@$(MAKE_OBJCOPY)
|
|
@$(MAKE_SYMTAB_CREATE)
|
|
@$(MAKE_SYMTAB_ZIP)
|
|
|
|
# REDBEAN-STATIC.COM
|
|
#
|
|
# Passing the -DSTATIC causes Lua and SQLite to be removed. This reduces
|
|
# the binary size from roughly 1500 kb to 500 kb. It still supports SSL.
|
|
|
|
o/$(MODE)/tool/net/redbean-static.com.dbg: \
|
|
$(TOOL_NET_DEPS) \
|
|
o/$(MODE)/tool/net/redbean-static.o \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
$(CRT) \
|
|
$(APE_NO_MODIFY_SELF)
|
|
@$(APELINK)
|
|
|
|
o/$(MODE)/tool/net/redbean-static.com: \
|
|
o/$(MODE)/tool/net/redbean-static.com.dbg \
|
|
o/$(MODE)/third_party/zip/zip.com \
|
|
o/$(MODE)/tool/build/symtab.com \
|
|
$(TOOL_NET_REDBEAN_STANDARD_ASSETS)
|
|
@$(MAKE_OBJCOPY)
|
|
@$(MAKE_SYMTAB_CREATE)
|
|
@$(MAKE_SYMTAB_ZIP)
|
|
@$(TOOL_NET_REDBEAN_STANDARD_ASSETS_ZIP)
|
|
|
|
# REDBEAN-UNSECURE.COM
|
|
#
|
|
# Passing the -DUNSECURE will cause the TLS security code to be removed.
|
|
# That doesn't mean redbean becomes insecure. It just reduces complexity
|
|
# in situations where you'd rather have SSL be handled in an edge proxy.
|
|
|
|
o/$(MODE)/tool/net/redbean-unsecure.com.dbg: \
|
|
$(TOOL_NET_DEPS) \
|
|
o/$(MODE)/tool/net/redbean-unsecure.o \
|
|
$(TOOL_NET_REDBEAN_LUA_MODULES) \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
$(CRT) \
|
|
$(APE_NO_MODIFY_SELF)
|
|
@$(APELINK)
|
|
|
|
o/$(MODE)/tool/net/redbean-unsecure.com: \
|
|
o/$(MODE)/tool/net/redbean-unsecure.com.dbg \
|
|
o/$(MODE)/third_party/zip/zip.com \
|
|
o/$(MODE)/tool/build/symtab.com \
|
|
$(TOOL_NET_REDBEAN_STANDARD_ASSETS)
|
|
@$(MAKE_OBJCOPY)
|
|
@$(MAKE_SYMTAB_CREATE)
|
|
@$(MAKE_SYMTAB_ZIP)
|
|
@$(TOOL_NET_REDBEAN_STANDARD_ASSETS_ZIP)
|
|
|
|
# REDBEAN-ORIGINAL.COM
|
|
#
|
|
# Passing the -DSTATIC and -DUNSECURE flags together w/ MODE=tiny will
|
|
# produce 200kb binary that's very similar to redbean as it existed on
|
|
# Hacker News the day it went viral.
|
|
|
|
o/$(MODE)/tool/net/redbean-original.com.dbg: \
|
|
$(TOOL_NET_DEPS) \
|
|
o/$(MODE)/tool/net/redbean-original.o \
|
|
o/$(MODE)/tool/net/net.pkg \
|
|
$(CRT) \
|
|
$(APE_NO_MODIFY_SELF)
|
|
@$(APELINK)
|
|
|
|
o/$(MODE)/tool/net/redbean-original.com: \
|
|
o/$(MODE)/tool/net/redbean-original.com.dbg \
|
|
o/$(MODE)/third_party/zip/zip.com \
|
|
o/$(MODE)/tool/build/symtab.com \
|
|
$(TOOL_NET_REDBEAN_STANDARD_ASSETS)
|
|
@$(MAKE_OBJCOPY)
|
|
@$(MAKE_SYMTAB_CREATE)
|
|
@$(MAKE_SYMTAB_ZIP)
|
|
@$(TOOL_NET_REDBEAN_STANDARD_ASSETS_ZIP)
|
|
|
|
o/$(MODE)/tool/net/demo/.lua/.zip.o: \
|
|
tool/net/demo/.lua
|
|
o/$(MODE)/tool/net/demo/.zip.o: \
|
|
tool/net/demo
|
|
o/$(MODE)/tool/net/.zip.o: \
|
|
tool/net
|
|
o/$(MODE)/tool/.zip.o: \
|
|
tool
|
|
|
|
.PHONY: o/$(MODE)/tool/net
|
|
o/$(MODE)/tool/net: \
|
|
$(TOOL_NET_BINS) \
|
|
$(TOOL_NET_CHECKS)
|