2021-01-04 03:48:29 +01:00
|
|
|
# Binaries
|
|
|
|
ECHO=echo
|
|
|
|
KODEV=kodev
|
|
|
|
MKDIR=mkdir -p
|
|
|
|
COPY=cp
|
|
|
|
RM=rm -f
|
|
|
|
SPP=spp
|
2021-01-16 21:59:22 +01:00
|
|
|
CD=cd
|
2022-02-20 01:12:52 +01:00
|
|
|
AWK=awk
|
|
|
|
GREP=grep
|
|
|
|
SORT=sort
|
2021-01-04 03:48:29 +01:00
|
|
|
|
2020-05-17 18:05:00 +02:00
|
|
|
# Config
|
|
|
|
chroot_dir=kore_chroot/
|
|
|
|
mirror=http://dl-cdn.alpinelinux.org/alpine/
|
|
|
|
arch=aarch64
|
|
|
|
version=2.10.5-r0
|
2020-08-13 19:59:33 +02:00
|
|
|
certbot_email=--register-unsafely-without-email
|
|
|
|
#certbot_email=-m you@cock.li
|
2021-01-04 03:48:29 +01:00
|
|
|
user=robin
|
|
|
|
port=8888
|
|
|
|
domain=test.monster:$(port)
|
2020-05-17 18:05:00 +02:00
|
|
|
|
2022-02-20 01:12:52 +01:00
|
|
|
# squelch prints, flip to print verbose information
|
2021-01-04 03:48:29 +01:00
|
|
|
Q=@
|
|
|
|
#Q=
|
|
|
|
|
|
|
|
# Probably don't change stuff past here if you're just using smr
|
|
|
|
lua_in_files=$(shell find src/lua/*.in -type f)
|
|
|
|
lua_files=$(shell find src/lua/*.lua -type f) $(shell find src/lua/endpoints -type f) $(lua_in_files:%.in=%)
|
2020-05-17 18:05:00 +02:00
|
|
|
src_files=$(shell find src -type f) $(shell find conf -type f)
|
|
|
|
sql_files=$(shell find src/sql -type f)
|
2020-12-21 05:22:22 +01:00
|
|
|
test_files=$(shell find spec -type f)
|
|
|
|
built_tests=$(test_files:%=$(chroot_dir)%)
|
2020-05-17 18:05:00 +02:00
|
|
|
built_files=$(lua_files:src/lua/%.lua=$(chroot_dir)%.lua)
|
2021-01-04 03:48:29 +01:00
|
|
|
in_page_files=$(shell find src/pages/*.in -type f)
|
|
|
|
in_part_files=$(shell find src/pages/parts/*.in -type f)
|
|
|
|
page_files=$(in_page_files:%.in=%)
|
|
|
|
part_files=$(in_part_files:%.in=%) $(shell find src/pages/parts/*.etlua -type f)
|
2020-05-17 18:05:00 +02:00
|
|
|
built_pages=$(page_files:src/pages/%.etlua=$(chroot_dir)pages/%.etlua)
|
|
|
|
built_sql=$(sql_files:src/sql/%.sql=$(chroot_dir)sql/%.sql)
|
2020-12-21 05:22:22 +01:00
|
|
|
built=$(built_files) $(built_sql) $(built_pages) $(built_tests)
|
2021-10-11 02:54:15 +02:00
|
|
|
asset_in_files=$(wildcard assets/*.in -type f)
|
|
|
|
asset_files=$(asset_in_files:%.in=%)
|
2020-05-17 18:05:00 +02:00
|
|
|
|
2022-02-20 01:12:52 +01:00
|
|
|
help: ## Print this help
|
|
|
|
$(Q)$(GREP) -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | $(SORT) | $(AWK) 'BEGIN {FS = ":.*?## "}; {printf "%-30s %s\n", $$1, $$2}'
|
|
|
|
|
|
|
|
all: $(chroot_dir) smr.so $(built_files) $(built_pages) $(built_sql) ## Build and run smr in a chroot
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[running] $@"
|
|
|
|
$(Q)$(KODEV) run
|
|
|
|
|
|
|
|
conf/smr.conf : conf/smr.conf.in Makefile
|
|
|
|
$(Q)$(ECHO) "[preprocess] $@"
|
|
|
|
$(Q)$(SPP) -o $@ -D port=$(port) -D kore_chroot=$(chroot_dir) -D chuser=$(user) $<
|
2020-05-17 18:05:00 +02:00
|
|
|
|
2020-08-13 19:59:33 +02:00
|
|
|
apk-tools-static-$(version).apk:
|
|
|
|
# wget -q $(mirror)latest-stable/main/$(arch)/apk-tools-static-$(version).apk
|
2020-05-17 18:05:00 +02:00
|
|
|
|
2022-02-20 01:12:52 +01:00
|
|
|
clean: ## clean up all the files generated by this makefile
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[clean] $@"
|
|
|
|
$(Q)$(KODEV) clean
|
|
|
|
$(Q)$(RM) $(page_files)
|
|
|
|
$(Q)$(RM) conf/smr.conf
|
|
|
|
$(Q)$(RM) src/pages/parts/story_breif.etlua
|
|
|
|
$(Q)$(RM) src/lua/config.lua
|
2021-10-11 02:54:15 +02:00
|
|
|
$(Q)$(RM) $(asset_files)
|
2021-01-04 03:48:29 +01:00
|
|
|
|
2022-02-20 01:12:52 +01:00
|
|
|
cloc: ## calculate source lines of code in smr
|
2021-08-27 03:05:18 +02:00
|
|
|
cloc --force-lang="HTML",etlua.in src assets
|
2020-05-17 18:05:00 +02:00
|
|
|
|
2020-08-13 19:59:33 +02:00
|
|
|
$(chroot_dir): apk-tools-static-$(version).apk
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(MKDIR) $(chroot_dir)
|
|
|
|
$(Q)$(MKDIR) $(chroot_dir)/pages
|
|
|
|
$(Q)$(MKDIR) $(chroot_dir)/sql
|
|
|
|
$(Q)$(MKDIR) $(chroot_dir)/data
|
2021-02-03 04:41:22 +01:00
|
|
|
$(Q)$(MKDIR) $(chroot_dir)/data/archive
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(MKDIR) $(chroot_dir)/endpoints
|
2020-08-13 19:59:33 +02:00
|
|
|
#cd $(chroot_dir) && tar -xvzf ../apk-tools-static-*.apk
|
2020-05-17 18:05:00 +02:00
|
|
|
#cd $(chroot_dir) && sudo ./sbin/apk.static -X $(mirror)latest-stable/main -U --allow-untrusted --root $(chroot_dir) --no-cache --initdb add alpine-base
|
|
|
|
#ln -s /dev/urandom $(chroot_dir)/dev/random #Prevent an attacker with access to the chroot from exhausting our entropy pool and causing a dos
|
|
|
|
#ln -s /dev/urandom $(chroot_dir)/dev/urandom
|
|
|
|
#mount /dev/ $(chroot_dir)/dev --bind
|
|
|
|
#mount -o remount,ro,bind $(chroot_dir)/dev
|
|
|
|
#mount -t proc none $(chroot_dir)/proc
|
|
|
|
#mount -o bind /sys $(chroot_dir)/sys
|
|
|
|
#cp /etc/resolv.conf $(chroot_dir)/etc/resolv.conf
|
2020-08-13 19:59:33 +02:00
|
|
|
#echo "$(mirror)/$(branch)/main" > $(chroot)/etc/apk/repositories
|
|
|
|
#echo "$(mirror)/$(branch)/community" >> $(chroot)/etc/apk/repositories
|
2020-05-17 18:05:00 +02:00
|
|
|
#cp /etc/apk/repositories $(chroot_dir)/etc/apk/repositories
|
|
|
|
#mkdir $(chroot_dir)/var/sm
|
|
|
|
## Things to build lua libraries
|
|
|
|
#chroot $(chroot_dir) apk add luarocks5.1 sqlite sqlite-dev lua5.1-dev build-base zlib zlib-dev
|
|
|
|
#chroot $(chroot_dir) luarocks-5.1 install etlua
|
|
|
|
#chroot $(chroot_dir) luarocks-5.1 install lsqlite3
|
2020-08-13 19:59:33 +02:00
|
|
|
#chroot $(chroot_dir) luarocks-5.1 install lpeg
|
|
|
|
#chroot $(chroot_dir) luarocks-5.1 install lua-zlib ZLIB_LIBDIR=/lib #for some reason lzlib looks in /usr/lib for libz, when it needs to look at /lib
|
2020-05-17 18:05:00 +02:00
|
|
|
## Once we've built + installed everything, delete extra stuff from the chroot
|
|
|
|
#chroot $(chroot_dir) apk del sqlite-dev lua5.1-dev build-base zlib-dev
|
|
|
|
## SSL certificates, if you don't trust EFF (they have an antifa black block member as their favicon at time of writing) you may want to replace this.
|
|
|
|
#chroot $(chroot_dir) apk add certbot
|
|
|
|
## After chroot, apk add luarocks5.1 sqlite sqlite-dev lua5.1-dev build-base
|
|
|
|
## After chroot, luarocks install etlua; luarocks install lsqlite3
|
|
|
|
|
|
|
|
code : $(built_files)
|
|
|
|
|
|
|
|
$(built_files): $(chroot_dir)%.lua : src/lua/%.lua
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[copy] $@"
|
|
|
|
$(Q)$(COPY) $^ $@
|
2020-05-17 18:05:00 +02:00
|
|
|
|
|
|
|
$(built_pages): $(chroot_dir)pages/%.etlua : src/pages/%.etlua
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[copy] $@"
|
|
|
|
$(Q)$(COPY) $^ $@
|
|
|
|
|
|
|
|
src/lua/config.lua : src/lua/config.lua.in Makefile
|
|
|
|
$(Q)$(ECHO) "[preprocess] $@"
|
|
|
|
$(Q)$(SPP) -o $@ -D domain=$(domain) $<
|
|
|
|
|
|
|
|
$(page_files) : % : %.in $(part_files)
|
|
|
|
$(Q)$(ECHO) "[preprocess] $@"
|
|
|
|
$(Q)$(SPP) -o $@ $<
|
|
|
|
|
|
|
|
src/pages/parts/story_breif.etlua : src/pages/parts/story_breif.etlua.in
|
|
|
|
$(Q)$(ECHO) "[preprocess] $@"
|
|
|
|
$(Q)$(SPP) -o $@ $<
|
2020-05-17 18:05:00 +02:00
|
|
|
|
|
|
|
$(built_sql): $(chroot_dir)sql/%.sql : src/sql/%.sql
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[copy] $@"
|
|
|
|
$(Q)$(COPY) $^ $@
|
2020-05-17 18:05:00 +02:00
|
|
|
|
2020-12-21 05:22:22 +01:00
|
|
|
$(built_tests) : $(chroot_dir)% : %
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[copy] $@"
|
|
|
|
$(Q)$(COPY) $^ $@
|
2020-12-21 05:22:22 +01:00
|
|
|
|
2021-10-11 02:54:15 +02:00
|
|
|
$(asset_files) : % : %.in
|
|
|
|
$(Q)$(ECHO) "[preprocess] $@"
|
|
|
|
$(Q)$(SPP) -o $@ $<
|
|
|
|
|
|
|
|
smr.so : $(src_files) conf/smr.conf conf/build.conf $(asset_files)
|
2021-01-04 03:48:29 +01:00
|
|
|
$(Q)$(ECHO) "[build] $@"
|
|
|
|
$(Q)$(KODEV) build
|
2020-12-21 05:22:22 +01:00
|
|
|
|
2022-02-20 01:12:52 +01:00
|
|
|
test : $(built) ## run the unit tests
|
|
|
|
$(Q)$(CD) kore_chroot && busted -v --no-keep-going #--exclude-tags slow
|
2021-09-12 19:37:12 +02:00
|
|
|
|
2022-02-20 01:12:52 +01:00
|
|
|
cov : $(built) ## code coverage (based on unit tests)
|
2021-09-12 19:37:12 +02:00
|
|
|
$(Q)$(RM) kore_chroot/luacov.stats.out
|
2022-02-20 01:12:52 +01:00
|
|
|
$(Q)$(CD) kore_chroot && busted -v -c --no-keep-going #--exclude-tags slow
|
2021-09-12 19:37:12 +02:00
|
|
|
$(Q)$(CD) kore_chroot && luacov $(built)
|
|
|
|
$(Q)$($ECHO) "open kore_chroot/luacov.report.out to view coverage results."
|