Files
codit/packaging/scripts/build-deb-in-docker.sh
2026-06-07 01:30:02 +09:00

60 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
set -eu
IMAGE="${CODIT_DEB_IMAGE:-debian:stable}"
##PLATFORM="linux/386"
ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)"
PKG_DIR="${ROOT_DIR}/packaging"
WORK_DIR="${PKG_DIR}/tmp/deb-work"
OUT_DIR="${PKG_DIR}/DEB"
REPOKIT_DIR="${CODIT_REPOKIT_DIR:-${ROOT_DIR}/../repokit}"
REPOKIT_URL="${CODIT_REPOKIT_URL:-https://code.miflux.com/hyung-hwan/repokit}"
printf '%s\n' "Building frontend natively..."
cd "${ROOT_DIR}/frontend"
npm ci
npm run build
rm -rf "${WORK_DIR}"
mkdir -p "${WORK_DIR}" "${OUT_DIR}"
printf '%s\n' "Preparing Codit source tree for Debian package build..."
rsync -a --delete \
--exclude .git \
--exclude frontend/node_modules \
--exclude backend/codit-data \
--exclude backend/codit-data.bak \
--exclude backend/codit-server \
--exclude backend/codit-server.debug \
--exclude backend/codit-data-browser \
--exclude packaging/RPM \
--exclude packaging/DEB \
--exclude packaging/tmp \
"${ROOT_DIR}/" "${WORK_DIR}/codit/"
if [ -d "${REPOKIT_DIR}/.git" ] || [ -f "${REPOKIT_DIR}/go.mod" ]; then
printf '%s\n' "Copying repokit from ${REPOKIT_DIR}..."
rsync -a --delete --exclude .git "${REPOKIT_DIR}/" "${WORK_DIR}/repokit/"
else
printf '%s\n' "Cloning repokit from ${REPOKIT_URL}..."
git clone "${REPOKIT_URL}" "${WORK_DIR}/repokit"
rm -rf "${WORK_DIR}/repokit/.git"
fi
cp -a "${WORK_DIR}/codit/packaging/debian" "${WORK_DIR}/codit/debian"
docker run --rm \
-v "${WORK_DIR}:/work" \
-v "${OUT_DIR}:/out" \
"${IMAGE}" \
/bin/sh -ec '
mkdir -p /work
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends build-essential debhelper devscripts golang-go ca-certificates
dpkg-buildpackage -us -uc -b
mkdir -p /out
cp -a /work/*.deb /work/*.buildinfo /work/*.changes /out/ 2>/dev/null || true
'