blob: 19ce71ca79a74d0f1189d6682b52af0710fc4bd6 (
plain)
1
2
3
4
5
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
|
# https://taskfile.dev
#Called by the vnbuild system to produce builds for my website
#https://www.vaughnnugent.com/resources/software
version: "3"
vars:
BUILDS_URL: https://www.vaughnnugent.com/public/resources/software/builds
PACKAGE_FILE_NAME: "sb-alpine3.19-oci.tgz"
INCLUDE_FILES: "Dockerfile, docker-compose.yaml"
includes:
install:
taskfile: ../install.taskfile.yaml
optional: true #not needed for inside container build
tasks:
#called from inside the container to build native libraries
build-libs:
vars:
OUT_DIR: "{{.USER_WORKING_DIR}}/out"
#build stage generates the following libraries
generates:
- "{{.USER_WORKING_DIR}}/out/libargon2.so"
- "{{.USER_WORKING_DIR}}/out/libvn_rpmalloc.so"
- "{{.USER_WORKING_DIR}}/out/libvn_compress.so"
cmds:
#build argon2 lib
- cd lib/argon2/ && task && cp build/libargon2.so {{.OUT_DIR}}/libargon2.so
#build rpmalloc library
- cd lib/vnlib_rpmalloc/ && task && cp build/libvn_rpmalloc.so {{.OUT_DIR}}/libvn_rpmalloc.so
#install zlib and brotli native libraries from the source repos (they dont have active releases anymore :()
- mkdir -p lib/third-party
- cd lib/third-party && git clone https://github.com/cloudflare/zlib.git
- cd lib/third-party && git clone https://github.com/google/brotli.git
#build native compression lib and put in lib dir
- cd lib/vnlib_compress && cmake -B./build && cmake --build build/ --config Release && cp build/libvn_compress.so {{.OUT_DIR}}/libvn_compress.so
#called from ci pipline to build the package
build:
vars:
SQLITE_RUNTIMES: 'build/app/plugins/assets/VNLib.Plugins.Extensions.Loading.Sql.SQLite/runtimes'
cmds:
- cmd: wsl dos2unix ./run.sh
#make build directory
- cmd: powershell -Command "mkdir build, build/app, build/app/config-templates/, build/app/static/ -Force"
#copy the existing linux-x64 build to the build folder
- cmd: powershell -Command "cp -Recurse -Force ../build/linux-x64/* build/app/"
#copy local scripts into the build folder
- cmd: powershell -Command "cp -Force run.sh, Taskfile.yaml build/app/"
- cmd: powershell -Command "cp -Force Dockerfile, docker-compose.yaml build/"
- cmd: powershell -Command "cp -Force static/* build/app/static/"
- cmd: powershell -Command "cp -Force config-templates/* build/app/config-templates/"
#remove the default config file as it's not needed in the container
- cmd: powershell -Command "rm -Force build/app/config.json"
- cmd: powershell -Command "rm -Force -Recurse build/app/config/"
#move the linux-musl-x64 directory out of assets before removing the rest of the runtimes and then move it back
- cmd: powershell -Command "mv {{.SQLITE_RUNTIMES}}/linux-musl-x64 build/linux-musl-x64"
- cmd: powershell -Command "rm -Recurse -Force {{.SQLITE_RUNTIMES}}" && powershell -Command "mkdir {{.SQLITE_RUNTIMES}}"
- cmd: powershell -Command "mv build/linux-musl-x64 {{.SQLITE_RUNTIMES}}/linux-musl-x64 "
#install rpmalloc
- task: install-rpmalloc-lib
postbuild_success:
cmds:
#tar up the build directory and move it to the output bin directory
- cmd: cd build/ && tar -czf ../../bin/{{.PACKAGE_FILE_NAME}} .
clean:
ignore_error: true
cmds:
- cmd: powershell -Command "rm -Recurse -Force ./build"
install-rpmalloc-lib:
internal: true
cmds:
#install compressor plugin
- task: install:install
vars:
PROJECT_NAME: 'vnlib_rpmalloc'
MODULE_NAME: "VNLib.Core"
FILE_NAME: "src.tgz"
DIR: './build/app/lib/vnlib_rpmalloc'
|