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
2023-03-12 17:24:22 +01:00
worker_chroot = /var/lib/smr/kore_worker
kmgr_chroot = /var/lib/smr/kore_kmgr
parent_chroot = /var/lib/smr/kore_parent
conf_path = /etc/smr
host_config = /etc/smr
i f e q ( $( DEV ) , "true" )
approot = /
chroot_dir = ./kore_chroot$( approot)
e l s e
approot = /var/smr/
chroot_dir = $( worker_chroot) $( approot)
e n d i f
2020-05-17 18:05:00 +02:00
mirror = http://dl-cdn.alpinelinux.org/alpine/
arch = aarch64
2023-03-12 17:24:22 +01:00
version = 2.12.9
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)
2023-03-12 17:24:22 +01:00
server_cert = cert/server.pem
server_key = cert/key.pem
2020-05-17 18:05:00 +02:00
2023-03-12 17:24:22 +01:00
SPPFLAGS = -D port = $( port) -D kore_chroot = $( chroot_dir) -D chuser = $( user) -D domain = $( domain) -D bin_path = " $( bin_path) " -D server_cert = " $( server_cert) " -D server_key = " $( server_key) " -D worker_chroot = " $( worker_chroot) " -D kmgr_chroot = " $( kmgr_chroot) " -D approot = " $( approot) "
2022-02-20 01:12:52 +01:00
# squelch prints, flip to print verbose information
2023-03-12 17:24:22 +01:00
#Q=@
Q =
LUAROCKS_FLAGS = --tree $( chroot_dir) /usr/lib/luarocks --lua-version 5.1
chroot_packages = \
-p luarocks5.1 \
-p "build-base" \
-p "ca-certificates" \
-p ssl_client \
-p luajit \
-p "lua5.1-dev" \
-p "luajit-dev" \
-p "lua5.1-lpeg" \
-p sqlite \
-p "sqlite-dev" \
-p certbot \
-p zlib \
-p "zlib-dev" \
-p git
lua_packages = \
lsqlite3 \
etlua \
lpeg \
zlib
2021-01-04 03:48:29 +01:00
# 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= %)
2023-03-12 17:24:22 +01:00
initscript = /lib/systemd/system/smr.service
config = $( conf_path) /smr.conf
bin_path = $( shell pwd )
2020-05-17 18:05:00 +02:00
2022-02-20 01:12:52 +01:00
help : ## Print this help
2023-03-12 17:24:22 +01:00
$( Q) $( GREP) -E '^[a-zA-Z_-]+:.*?## .*$$' $( MAKEFILE_LIST) | $( SORT) | $( AWK) 'BEGIN {FS = ":.*?## "}; {printf "%-10s %s\n", $$1, $$2}'
2022-02-20 01:12:52 +01:00
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] $@ "
2022-09-03 01:06:38 +02:00
$( Q) $( SPP) -o $@ $( SPPFLAGS) $<
2020-05-17 18:05:00 +02:00
2020-08-13 19:59:33 +02:00
apk-tools-static-$(version).apk :
2023-03-12 17:24:22 +01:00
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
2023-03-12 17:24:22 +01:00
install : $( worker_chroot ) $( kmgr_chroot ) $( parent_chroot ) $( initscript ) $( config ) smr .so $( built_files ) $( built_pages ) $( built_sql ) ## Install smr into a new host system
$(config) : conf /smr .conf
$( Q) $( MKDIR) $( host_config)
$( Q) $( COPY) $< $@
$(initscript) : packaging /systemd /smr .service
$( Q) $( COPY) $< $@
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
2023-03-12 17:24:22 +01:00
$(chroot_dir) :
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-05-17 18:05:00 +02:00
2023-03-12 17:24:22 +01:00
alpine-chroot-install :
$( Q) wget https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.14.0/alpine-chroot-install \
&& echo 'ccbf65f85cdc351851f8ad025bb3e65bae4d5b06 alpine-chroot-install' | sha1sum -c \
|| exit 1
$( Q) chmod +x alpine-chroot-install
$(worker_chroot) $(kmgr_chroot) $(parent_chroot) : alpine -chroot -install
$( Q) export APK_TOOLS_URI = "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.12.9/aarch64/apk.static" ; \
export APK_TOOLS_SHA256 = "0164d47954c8a52e8ed10db1633174974a3b1e4182a1993a5a8343e394ee1bbc" ; \
./alpine-chroot-install -d $@ -a $( arch) -$( chroot_packages)
2020-05-17 18:05:00 +02:00
code : $( built_files )
2023-03-12 17:24:22 +01:00
$(built_files) : $( chroot_dir ) %.lua : src /lua /%.lua $( chroot_dir )
2021-01-04 03:48:29 +01:00
$( Q) $( ECHO) " [copy] $@ "
2023-03-12 17:24:22 +01:00
$( 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] $@ "
2022-09-03 01:06:38 +02:00
$( Q) $( SPP) $( SPPFLAGS) -o $@ $<
2021-01-04 03:48:29 +01:00
$(page_files) : % : %.in $( part_files )
$( Q) $( ECHO) " [preprocess] $@ "
2022-09-03 01:06:38 +02:00
$( Q) $( SPP) $( SPPFLAGS) -o $@ $<
2021-01-04 03:48:29 +01:00
src/pages/parts/story_breif.etlua : src /pages /parts /story_breif .etlua .in
$( Q) $( ECHO) " [preprocess] $@ "
2022-09-03 01:06:38 +02:00
$( Q) $( SPP) $( SPPFLAGS) -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] $@ "
2022-09-03 01:06:38 +02:00
$( Q) $( SPP) $( SPPFLAGS) -o $@ $<
2021-10-11 02:54:15 +02:00
2023-03-12 17:24:22 +01:00
smr.so : $( src_files ) conf /smr .conf conf /build .conf $( asset_files ) .flavor
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)
2023-03-12 17:24:22 +01:00
$( Q) $( RM) $( kore_chroot) /luacov.stats.out
$( Q) $( CD) $( kore_chroot) && busted -v -c --no-keep-going #--exclude-tags slow
$( Q) $( CD) $( kore_chroot) && luacov endpoints/
2022-09-03 01:22:08 +02:00
$( Q) $( ECHO) "open kore_chroot/luacov.report.out to view coverage results."