debmaker/ressources/mealie/debmaker

79 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
VERSION=1.0.0
APP=mealie
DEPOT=https://github.com/hay-kot/mealie.git
GIT_VERSION=last
DEB_VERSION=${VERSION}-$(date +%Y%m%d%H%M)
DEBIAN_VERSION_CODENAME=bookworm
IMAGE_SIZE=6
PACKAGE_DEPENDENCY="curl build-essential libpq-dev libwebp-dev libsasl2-dev libldap2-dev libssl-dev gnupg2 python3-pip python3-dev git wget ca-certificates python3-poetry python3-cachecontrol nodejs yarn"
main(){
base_package_upgrade
configure_depot_nodejs
configure_depot_yarn
install_package_dependency
get_git_source
build_frontend
build_api
makedeb_frontend
makedeb_api
}
build_frontend() {
cd /tmp/${APP}/frontend
yarn install
yarn build
rm -fr node_modules/
NODE_ENV=production yarn install
}
build_api() {
cd /tmp/${APP}/
export PYTHONUNBUFFERED=1
export PYTHONDONTWRITEBYTECODE=1
export PIP_NO_CACHE_DIR=off
export PIP_DISABLE_PIP_VERSION_CHECK=on
export PIP_DEFAULT_TIMEOUT=100
export POETRY_VIRTUALENVS_IN_PROJECT=true
export POETRY_NO_INTERACTION=1
export VENV_PATH="/usr/share/mealie/.venv"
export PYSETUP_PATH="/opt/pysetup"
[ -e /usr/share/mealie ] && rm -fr /usr/share/mealie
mkdir /usr/share/mealie
cp -fr mealie/ alembic* poetry.lock gunicorn_conf.py pyproject.toml /usr/share/mealie
cd /usr/share/mealie
poetry install -E pgsql --no-dev
export PRODUCTION=true
/usr/share/mealie/.venv/bin/python /usr/share/mealie/mealie/scripts/install_model.py
}
makedeb_frontend(){
PATH_DEB=/tmp/src/rootfs-frontend
mkdir -p ${PATH_DEB}/usr/share/mealie/
cp -fr /tmp/${APP}/frontend ${PATH_DEB}/usr/share/mealie/
mkdir -p ${PATH_DEB}/var/lib/mealie/api
ln -s /usr/share/mealie/alembic ${PATH_DEB}/var/lib/mealie/api/alembic
sed -i "s/%VERSION%/$DEB_VERSION/" ${PATH_DEB}/DEBIAN/control
fakeroot dpkg-deb -Z gzip --build ${PATH_DEB} /tmp/dist
}
makedeb_api(){
PATH_DEB=/tmp/src/rootfs-api
mkdir -p ${PATH_DEB}/usr/share/
cp -fr /usr/share/mealie ${PATH_DEB}/usr/share/
sed -i "s/%VERSION%/$DEB_VERSION/" ${PATH_DEB}/DEBIAN/control
fakeroot dpkg-deb -Z gzip --build ${PATH_DEB} /tmp/dist
}