PHP familiarity shortcuts
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
Package: uce
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: amd64
|
||||
Depends: clang (>= 1:13.0)
|
||||
Maintainer: Udo Schroeter <udo@openfu.com>
|
||||
Description: Write server-side web stuff in C++
|
||||
@@ -0,0 +1 @@
|
||||
/etc/uce/settings.cfg
|
||||
@@ -0,0 +1,11 @@
|
||||
Package: @PACKAGE_NAME@
|
||||
Version: @VERSION@
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: @ARCH@
|
||||
Depends: bash, clang, libmariadb-dev | default-libmysqlclient-dev, systemd
|
||||
Maintainer: Udo Schroeter <udo@openfu.com>
|
||||
Installed-Size: @INSTALLED_SIZE@
|
||||
Description: UCE FastCGI runtime and live-compiling C++ web environment
|
||||
UCE is an experimental C/C++ web runtime with FastCGI request handling,
|
||||
on-demand page compilation, and a published site/doc/test tree.
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl daemon-reload >/dev/null 2>&1 || true
|
||||
if [ "$1" = "configure" ]; then
|
||||
systemctl enable uce.service >/dev/null 2>&1 || true
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl daemon-reload >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl disable --now uce.service >/dev/null 2>&1 || true
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,25 @@
|
||||
[Unit]
|
||||
Description=UCE FastCGI Runtime
|
||||
After=network-online.target mariadb.service memcached.service
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/usr/lib/uce
|
||||
RuntimeDirectory=uce
|
||||
StateDirectory=uce
|
||||
CacheDirectory=uce
|
||||
ExecStartPre=/usr/bin/mkdir -p /var/cache/uce/work /var/lib/uce/uploads /var/lib/uce/sessions
|
||||
ExecStartPre=/usr/bin/rm -f /run/uce/fastcgi.sock
|
||||
ExecStartPre=/usr/bin/bash /usr/lib/uce/scripts/build_linux.sh
|
||||
ExecStart=/usr/lib/uce/bin/uce_fastcgi.linux.bin
|
||||
ExecStopPost=/usr/bin/rm -f /run/uce/fastcgi.sock
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
TimeoutStopSec=15
|
||||
KillMode=mixed
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
+124
-33
@@ -1,46 +1,137 @@
|
||||
#!/bin/bash
|
||||
cd "$(dirname "$0")"
|
||||
cd ..
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "Usage: make_deb.sh VERSION"
|
||||
exit
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
DEB_ASSET_DIR="$SCRIPT_DIR/deb"
|
||||
PACKAGE_NAME="uce"
|
||||
REVISION="${UCE_DEB_REVISION:-1}"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage:
|
||||
scripts/make_deb.sh VERSION
|
||||
|
||||
Environment:
|
||||
UCE_DEB_REVISION Debian package revision suffix (default: 1)
|
||||
UCE_DEB_ARCH Override package architecture
|
||||
EOF
|
||||
}
|
||||
|
||||
require_command() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
echo "Required command not found: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
resolve_arch() {
|
||||
if [[ -n "${UCE_DEB_ARCH:-}" ]]; then
|
||||
printf '%s\n' "$UCE_DEB_ARCH"
|
||||
return
|
||||
fi
|
||||
if command -v dpkg-architecture >/dev/null 2>&1; then
|
||||
dpkg-architecture -qDEB_HOST_ARCH
|
||||
return
|
||||
fi
|
||||
dpkg --print-architecture
|
||||
}
|
||||
|
||||
validate_version() {
|
||||
local version="$1"
|
||||
if [[ ! "$version" =~ ^[0-9][A-Za-z0-9.+:~]*$ ]]; then
|
||||
echo "Invalid Debian version string: $version" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
copy_payload() {
|
||||
local destination="$1"
|
||||
local path
|
||||
for path in LICENSE README.md codesearch bin scripts site src; do
|
||||
cp -a "$REPO_ROOT/$path" "$destination/"
|
||||
done
|
||||
mkdir -p "$destination/etc"
|
||||
cp -a "$REPO_ROOT/etc/uce" "$destination/etc/"
|
||||
}
|
||||
|
||||
write_control_file() {
|
||||
local output_file="$1"
|
||||
local package_version="$2"
|
||||
local arch="$3"
|
||||
local installed_size="$4"
|
||||
|
||||
sed \
|
||||
-e "s/@PACKAGE_NAME@/$PACKAGE_NAME/g" \
|
||||
-e "s/@VERSION@/$package_version/g" \
|
||||
-e "s/@ARCH@/$arch/g" \
|
||||
-e "s/@INSTALLED_SIZE@/$installed_size/g" \
|
||||
"$DEB_ASSET_DIR/control.in" > "$output_file"
|
||||
}
|
||||
|
||||
write_md5sums() {
|
||||
local stage_dir="$1"
|
||||
(
|
||||
cd "$stage_dir"
|
||||
find usr etc lib -type f -print0 | sort -z | xargs -0 md5sum > DEBIAN/md5sums
|
||||
)
|
||||
}
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=$1
|
||||
REV=1
|
||||
PROJECT="uce"
|
||||
VERSION="$1"
|
||||
validate_version "$VERSION"
|
||||
|
||||
PKG_NAME="${PROJECT}_$VERSION.$REV"
|
||||
require_command bash
|
||||
require_command clang++
|
||||
require_command dpkg-deb
|
||||
require_command dpkg
|
||||
require_command install
|
||||
require_command find
|
||||
require_command xargs
|
||||
require_command md5sum
|
||||
require_command mysql_config
|
||||
require_command du
|
||||
require_command sed
|
||||
require_command awk
|
||||
require_command cp
|
||||
require_command sort
|
||||
|
||||
echo "Making package $PKG_NAME"
|
||||
ARCH="$(resolve_arch)"
|
||||
PACKAGE_VERSION="${VERSION}-${REVISION}"
|
||||
PACKAGE_BASENAME="${PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCH}"
|
||||
STAGE_DIR="$REPO_ROOT/pkg/$PACKAGE_BASENAME"
|
||||
DEBIAN_DIR="$STAGE_DIR/DEBIAN"
|
||||
INSTALL_ROOT="$STAGE_DIR/usr/lib/uce"
|
||||
DIST_DIR="$REPO_ROOT/dist"
|
||||
OUTPUT_DEB="$DIST_DIR/$PACKAGE_BASENAME.deb"
|
||||
|
||||
echo "Making package $PACKAGE_BASENAME"
|
||||
echo "==================================="
|
||||
|
||||
scripts/build_linux.sh
|
||||
bash "$REPO_ROOT/scripts/build_linux.sh"
|
||||
|
||||
rm -r "pkg/$PKG_NAME"
|
||||
mkdir -p "pkg/$PKG_NAME/opt/uce/"
|
||||
mkdir -p "pkg/$PKG_NAME/DEBIAN/"
|
||||
mkdir -p "pkg/$PKG_NAME/etc/uce/"
|
||||
mkdir -p "dist"
|
||||
rm -rf -- "$STAGE_DIR"
|
||||
mkdir -p "$DEBIAN_DIR" "$INSTALL_ROOT" "$STAGE_DIR/etc/uce" "$STAGE_DIR/lib/systemd/system" "$DIST_DIR"
|
||||
|
||||
cp scripts/control "pkg/$PKG_NAME/DEBIAN/"
|
||||
echo "Version: $VERSION" >> "pkg/$PKG_NAME/DEBIAN/control"
|
||||
echo "" >> "pkg/$PKG_NAME/DEBIAN/control"
|
||||
copy_payload "$INSTALL_ROOT"
|
||||
|
||||
cp -r bin "pkg/$PKG_NAME/opt/uce/"
|
||||
cp -r doc "pkg/$PKG_NAME/opt/uce/"
|
||||
cp -r examples "pkg/$PKG_NAME/opt/uce/"
|
||||
cp -r scripts "pkg/$PKG_NAME/opt/uce/"
|
||||
cp -r test "pkg/$PKG_NAME/opt/uce/"
|
||||
cp -r etc "pkg/$PKG_NAME/"
|
||||
install -m 0644 "$REPO_ROOT/etc/uce/settings.cfg" "$STAGE_DIR/etc/uce/settings.cfg"
|
||||
install -m 0644 "$DEB_ASSET_DIR/uce.service" "$STAGE_DIR/lib/systemd/system/uce.service"
|
||||
install -m 0644 "$DEB_ASSET_DIR/conffiles" "$DEBIAN_DIR/conffiles"
|
||||
install -m 0755 "$DEB_ASSET_DIR/postinst" "$DEBIAN_DIR/postinst"
|
||||
install -m 0755 "$DEB_ASSET_DIR/prerm" "$DEBIAN_DIR/prerm"
|
||||
install -m 0755 "$DEB_ASSET_DIR/postrm" "$DEBIAN_DIR/postrm"
|
||||
|
||||
du -sh "pkg/$PKG_NAME/"*
|
||||
INSTALLED_SIZE="$(du -sk "$STAGE_DIR" | awk '{print $1}')"
|
||||
write_control_file "$DEBIAN_DIR/control" "$PACKAGE_VERSION" "$ARCH" "$INSTALLED_SIZE"
|
||||
write_md5sums "$STAGE_DIR"
|
||||
|
||||
cd pkg
|
||||
dpkg-deb --build "$PKG_NAME"
|
||||
mv "$PKG_NAME.deb" "../dist/"
|
||||
cd ..
|
||||
dpkg-deb --root-owner-group --build "$STAGE_DIR" "$OUTPUT_DEB"
|
||||
|
||||
ls -lh "dist/" | grep "$PKG_NAME"
|
||||
dpkg-deb -I "$OUTPUT_DEB" | sed -n '1,80p'
|
||||
echo
|
||||
dpkg-deb -c "$OUTPUT_DEB" | sed -n '1,60p'
|
||||
|
||||
@@ -10,6 +10,9 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
UNIT_NAME="uce.service"
|
||||
UNIT_SOURCE="$SCRIPT_DIR/uce.service"
|
||||
if [[ ( "$REPO_ROOT" == "/usr/lib/uce" || "$REPO_ROOT" == "/opt/uce" ) && -f "$REPO_ROOT/scripts/deb/uce.service" ]]; then
|
||||
UNIT_SOURCE="$REPO_ROOT/scripts/deb/uce.service"
|
||||
fi
|
||||
UNIT_DEST="/etc/systemd/system/$UNIT_NAME"
|
||||
CONFIG_SOURCE="$REPO_ROOT/etc/uce/settings.cfg"
|
||||
CONFIG_DEST="/etc/uce/settings.cfg"
|
||||
|
||||
@@ -6,11 +6,14 @@ Wants=network-online.target
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/Code/uce.openfu.com/uce
|
||||
ExecStartPre=/usr/bin/mkdir -p /tmp/uce/work /tmp/uce/uploads /tmp/uce/sessions
|
||||
ExecStartPre=/usr/bin/rm -f /run/uce.sock
|
||||
RuntimeDirectory=uce
|
||||
StateDirectory=uce
|
||||
CacheDirectory=uce
|
||||
ExecStartPre=/usr/bin/mkdir -p /var/cache/uce/work /var/lib/uce/uploads /var/lib/uce/sessions
|
||||
ExecStartPre=/usr/bin/rm -f /run/uce/fastcgi.sock
|
||||
ExecStartPre=/usr/bin/bash /Code/uce.openfu.com/uce/scripts/build_linux.sh
|
||||
ExecStart=/Code/uce.openfu.com/uce/bin/uce_fastcgi.linux.bin
|
||||
ExecStopPost=/usr/bin/rm -f /run/uce.sock
|
||||
ExecStopPost=/usr/bin/rm -f /run/uce/fastcgi.sock
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
TimeoutStopSec=15
|
||||
|
||||
Reference in New Issue
Block a user