FreeBSD packaging and rc script

This commit is contained in:
Robur 2021-06-09 15:17:40 +00:00
parent 5555c87afd
commit c2377dedd7
4 changed files with 122 additions and 2 deletions

View file

@ -7,9 +7,14 @@ bug-reports: "https://github.com/roburio/builder-web/issues"
license: "ISC"
build: [
["dune" "subst"] {pinned}
["dune" "subst"] {dev}
["dune" "build" "-p" name "-j" jobs]
["dune" "runtest" "-p" name "-j" jobs] {with-test}
["sh" "packaging/FreeBSD/create_package.sh"] {os = "freebsd"}
]
install: [
["cp" "builder_web.txz" "%{bin}%/"] {os = "freebsd"}
]
depends: [
@ -37,5 +42,5 @@ depends: [
synopsis: "Web interface for builder"
pin-depends: [
["builder.dev" "git+https://git.data.coop/reynir/builder.git"]
["builder.dev" "git+https://github.com/roburio/builder.git"]
]

View file

@ -0,0 +1,27 @@
name: builder_web
version: %%VERSION_NUM%%
origin: local/builder_web
comment: Builder web service
www: https://git.robur.io/robur/builder-web
maintainer: Robur <team@robur.coop>
prefix: /usr/local
licenselogic: single
licenses: [ISCL]
flatsize: %%FLATSIZE%%
categories: [local]
deps {
gmp {
origin = "math/gmp";
},
libev {
origin = "devel/libev";
},
sqlite3 {
origin = "databases/sqlite3";
}
}
desc = <<EOD
A web server serving and accepting reproducible builds
EOD;

View file

@ -0,0 +1,48 @@
#!/bin/sh -e
basedir=$(realpath "$(dirname "$0")"/../..)
pdir=$basedir/packaging/FreeBSD
bdir=$basedir/_build/install/default/bin
#tmptmpl=$(basename "$0")
#tmpd=$(mktemp -t "$tmptmpl")
tmpd=$basedir/_build/stage
manifest=$tmpd/+MANIFEST
rootdir=$tmpd/rootdir
sbindir=$rootdir/usr/local/sbin
rcdir=$rootdir/usr/local/etc/rc.d
libexecdir=$rootdir/usr/local/libexec
trap 'rm -rf $tmpd' 0 INT EXIT
mkdir -p "$rootdir"/usr/local/sbin \
"$rootdir"/usr/local/libexec \
"$rootdir"/usr/local/etc/rc.d
# stage service scripts
install -U $pdir/rc.d/builder_web $rcdir/builder_web
# stage app binaries
install -U $bdir/builder-web $libexecdir/builder-web
install -U $bdir/builder-migrations $sbindir/builder-migrations
install -U $bdir/builder-db $sbindir/builder-db
# create +MANIFEST
flatsize=$(find "$rootdir" -type f -exec stat -f %z {} + |
awk 'BEGIN {s=0} {s+=$1} END {print s}')
sed -e "s:%%FLATSIZE%%:${flatsize}:" "$pdir/MANIFEST" > "$manifest"
{
printf '\nfiles {\n'
find "$rootdir" -type f -exec sha256 -r {} + | sort |
awk '{print " " $2 ": \"" $1 "\"," }'
find "$rootdir" -type l | sort |
awk "{print \" \"\$1 \": -,\"}"
printf '}\n'
} | sed -e "s:${rootdir}::" >> "$manifest"
export SOURCE_DATE_EPOCH=$(git log -1 --pretty=format:%ct)
pkg create -r "$rootdir" -M "$manifest" -o $basedir/
mv $basedir/builder_web-*.txz $basedir/builder_web.txz
rm $basedir/builder-web.install

View file

@ -0,0 +1,40 @@
#!/bin/sh
# $FreeBSD$
#
# PROVIDE: builder_web
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Define these builder_web_* variables in one of these files
# /etc/rc.conf
# /etc/rc.conf.local
# /etc/rc.conf.d/builder_web
# /usr/local/etc/rc.conf.d/builder_web
#
# builder_web_flags:
# Default: ""
#
. /etc/rc.subr
name=builder_web
rcvar=${name}_enable
desc="Builder web service"
load_rc_config $name
start_cmd="builder_web_start"
: ${builder_web_enable:="NO"}
: ${builder_web_flags:=""}
: ${builder_web_user:="builder"}
pidfile="/var/run/builder_web.pid"
procname="/usr/local/libexec/builder-web"
builder_web_start () {
echo "Starting ${name}."
/usr/sbin/daemon -S -p "${pidfile}" -u "${builder_web_user}" \
"${procname}" ${builder_web_flags}
}
run_rc_command "$1"