mirror of https://github.com/yandex/odyssey.git
Merge pull request #2 from dsarafan/master
odissey: debian package infrastructure support
This commit is contained in:
commit
3cdba194c9
|
@ -49,3 +49,66 @@ message (STATUS "Odissey (version: ${OD_VERSION_GIT} ${OD_VERSION_BUILD})")
|
|||
message (STATUS "")
|
||||
|
||||
add_subdirectory(sources)
|
||||
|
||||
|
||||
# install section
|
||||
set(NAME ${CMAKE_PROJECT_NAME})
|
||||
set(DEST_CONFIG_DIR /etc/${NAME})
|
||||
set(DEST_CONFIG_FILE ${NAME}.conf)
|
||||
set(DEST_CONFIG_PATH ${DEST_CONFIG_DIR}/${DEST_CONFIG_FILE})
|
||||
set(DEST_BIN_DIR /usr/bin)
|
||||
set(DEST_BIN_FILE ${NAME})
|
||||
set(DEST_BIN_PATH ${DEST_BIN_DIR}/${DEST_BIN_FILE})
|
||||
set(DEST_INIT_DIR /etc/init.d)
|
||||
set(DEST_INIT_FILE ${NAME})
|
||||
set(DEST_LOG_DIR /var/log/${NAME})
|
||||
set(DEST_LOG_FILE ${NAME}.log)
|
||||
set(DEST_LOG_PATH ${DEST_LOG_DIR}/${DEST_LOG_FILE})
|
||||
set(DEST_PID_DIR /var/run/${NAME})
|
||||
set(DEST_PID_FILE ${NAME}.pid)
|
||||
set(DEST_PID_PATH ${DEST_PID_DIR}/${DEST_PID_FILE})
|
||||
set(DEST_LOGROTATE_DIR /etc/logrotate.d)
|
||||
set(DEST_LOGROTATE_FILE ${NAME})
|
||||
set(DEST_LOGROTATE_PATH ${DEST_LOGROTATE_DIR}/${DEST_LOGROTATE_PATH})
|
||||
set(RENDERED_INIT_FILE ${NAME}.init)
|
||||
set(RENDERED_CONFIG_FILE ${NAME}.conf.example)
|
||||
set(RENDERED_LOGROTATE_FILE ${NAME}.logrotate)
|
||||
set(LOCAL_SCRIPTS_DIR scripts/debian)
|
||||
set(LOCAL_INIT_FILE ${LOCAL_SCRIPTS_DIR}/init)
|
||||
set(LOCAL_CONFIG_FILE ${LOCAL_SCRIPTS_DIR}/config)
|
||||
set(LOCAL_LOGROTATE_FILE ${LOCAL_SCRIPTS_DIR}/logrotate)
|
||||
set(LOCAL_BIN_DIR sources)
|
||||
set(LOCAL_BIN_FILE ${LOCAL_BIN_DIR}/${NAME})
|
||||
set(USER postgres)
|
||||
set(GROUP postgres)
|
||||
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
|
||||
${RENDERED_INIT_FILE} ${RENDERED_CONFIG_FILE} ${RENDERED_LOGROTATE_FILE}
|
||||
${DEBIAN_DIR}/rules ${DEBIAN_DIR}/control ${DEBIAN_DIR}/changelog
|
||||
)
|
||||
|
||||
configure_file(${LOCAL_INIT_FILE} ${RENDERED_INIT_FILE} @ONLY)
|
||||
configure_file(${LOCAL_CONFIG_FILE} ${RENDERED_CONFIG_FILE} @ONLY)
|
||||
configure_file(${LOCAL_LOGROTATE_FILE} ${RENDERED_LOGROTATE_FILE} @ONLY)
|
||||
|
||||
# configure debian package files
|
||||
set(VERSION $ENV{VERSION})
|
||||
if ("${VERSION}" STREQUAL "")
|
||||
set(VERSION "0.0.1")
|
||||
endif()
|
||||
set(BUILD_NUMBER $ENV{BUILD_NUMBER})
|
||||
if ("${BUILD_NUMBER}" STREQUAL "")
|
||||
set(BUILD_NUMBER "1")
|
||||
endif()
|
||||
set(DEBIAN_DIR debian)
|
||||
execute_process(COMMAND whoami OUTPUT_VARIABLE WHOAMI OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND hostname OUTPUT_VARIABLE HOSTNAME OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND date "+%a, %d %b %Y %H:%M:%S %z" OUTPUT_VARIABLE DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
configure_file(${LOCAL_SCRIPTS_DIR}/rules ${DEBIAN_DIR}/rules @ONLY)
|
||||
configure_file(${LOCAL_SCRIPTS_DIR}/control ${DEBIAN_DIR}/control @ONLY)
|
||||
configure_file(${LOCAL_SCRIPTS_DIR}/changelog ${DEBIAN_DIR}/changelog @ONLY)
|
||||
|
||||
install(PROGRAMS ${RENDERED_INIT_FILE} DESTINATION ${DEST_INIT_DIR} RENAME ${DEST_INIT_FILE})
|
||||
install(PROGRAMS ${LOCAL_BIN_FILE} DESTINATION ${DEST_BIN_DIR} RENAME ${DEST_BIN_FILE})
|
||||
install(FILES ${RENDERED_CONFIG_FILE} DESTINATION ${DEST_CONFIG_DIR} RENAME ${DEST_CONFIG_FILE})
|
||||
install(FILES ${RENDERED_LOGROTATE_FILE} DESTINATION ${DEST_LOGROTATE_DIR} RENAME ${DEST_LOGROTATE_FILE})
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
9
|
|
@ -0,0 +1 @@
|
|||
3.0 (native)
|
|
@ -0,0 +1,5 @@
|
|||
@NAME@ (@VERSION@-@BUILD_NUMBER@) unstable; urgency=low
|
||||
|
||||
* First package
|
||||
|
||||
-- @WHOAMI@ <@WHOAMI@@@HOSTNAME@> @DATE@
|
|
@ -0,0 +1,82 @@
|
|||
# @NAME@ configuration file.
|
||||
#
|
||||
|
||||
# include "path"
|
||||
|
||||
daemonize yes
|
||||
# syslog no
|
||||
# syslog_facility "daemon"
|
||||
# syslog_ident "@NAME@"
|
||||
pid_file "@DEST_PID_PATH@"
|
||||
log_file "@DEST_LOG_PATH@"
|
||||
log_format "text"
|
||||
log_to_stdout no
|
||||
log_debug no
|
||||
log_config yes
|
||||
log_session yes
|
||||
log_stats yes
|
||||
stats_interval 3
|
||||
readahead 8192
|
||||
pipelining 16384
|
||||
client_max 100
|
||||
workers 4
|
||||
|
||||
listen {
|
||||
host "*"
|
||||
port 6432
|
||||
nodelay yes
|
||||
# backlog 16
|
||||
# keepalive 7200
|
||||
tls "disable"
|
||||
# tls_cert_file ""
|
||||
# tls_key_file ""
|
||||
# tls_ca_file ""
|
||||
# tls_protocols ""
|
||||
}
|
||||
|
||||
storage "local" {
|
||||
type "local"
|
||||
}
|
||||
|
||||
storage "pg_server" {
|
||||
type "remote"
|
||||
host "127.0.0.1"
|
||||
port 5432
|
||||
tls "disable"
|
||||
# tls_ca_file ""
|
||||
# tls_key_file ""
|
||||
# tls_cert_file ""
|
||||
# tls_protocols ""
|
||||
}
|
||||
|
||||
database "console" {
|
||||
user default {
|
||||
authentication "none"
|
||||
pool "session"
|
||||
storage "local"
|
||||
}
|
||||
}
|
||||
|
||||
database default
|
||||
{
|
||||
user default {
|
||||
# none, block, clear_text, md5
|
||||
authentication "none"
|
||||
#password "test"
|
||||
|
||||
storage "pg_server"
|
||||
#storage_user "test"
|
||||
#storage_password "test"
|
||||
#storage_db "database"
|
||||
|
||||
pool "transaction"
|
||||
pool_size 100
|
||||
pool_timeout 4000
|
||||
pool_ttl 5
|
||||
pool_cancel yes
|
||||
pool_discard yes
|
||||
pool_rollback yes
|
||||
|
||||
#client_max 100
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
Source: @NAME@
|
||||
Section: database
|
||||
Priority: extra
|
||||
Maintainer: mdb <mdb-admin@yandex-team.ru>
|
||||
Standards-Version: 3.9.4
|
||||
Build-Depends: debhelper (>= 9), make, libssl-dev (>= 1.0.1)
|
||||
Homepage: https://github.yandex-team.ru/pmwkaa/odissey
|
||||
|
||||
Package: @NAME@
|
||||
Architecture: any
|
||||
Conflicts: pgbouncer
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Advanced multi-threaded PostgreSQL connection pooler and request router.
|
||||
|
||||
Package: @NAME@-dbg
|
||||
Architecture: any
|
||||
Section: debug
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, @NAME@
|
||||
Description: Debug symbols for @NAME@
|
|
@ -0,0 +1,106 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# chkconfig: 2345 99 01
|
||||
# description: @NAME@
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: @NAME@
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Start @NAME@
|
||||
# Description: Start @NAME@
|
||||
### END INIT INFO
|
||||
|
||||
NAME="@NAME@"
|
||||
USER="@USER@"
|
||||
GROUP="@GROUP@"
|
||||
LOGDIR="@DEST_LOG_DIR@"
|
||||
PIDDIR="@DEST_PID_DIR@"
|
||||
PIDFILE="@DEST_PID_PATH@"
|
||||
BINFILE="@DEST_BIN_PATH@"
|
||||
CONFFILE="@DEST_CONFIG_PATH@"
|
||||
CMD="start-stop-daemon --verbose --pidfile $PIDFILE"
|
||||
|
||||
create_dir() {
|
||||
if [ ! -d $1 ]; then
|
||||
mkdir -p $1
|
||||
chown $USER:$GROUP $1
|
||||
fi
|
||||
}
|
||||
|
||||
do_action() {
|
||||
echo -n "$1 $NAME: "
|
||||
ERROR=$($CMD $2 2>&1)
|
||||
EXIT=$?
|
||||
if [ $EXIT -eq 0 ]; then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAIL"
|
||||
if [ -n "$ERROR" ]; then
|
||||
echo "$ERROR"
|
||||
fi
|
||||
fi
|
||||
return $EXIT
|
||||
}
|
||||
|
||||
start() {
|
||||
create_dir $LOGDIR
|
||||
create_dir $PIDDIR
|
||||
# temporary unlimit core file size for debug
|
||||
ulimit -c unlimited
|
||||
do_action "Starting" "--exec $BINFILE --chuid $USER:$GROUP --start -- $CONFFILE"
|
||||
}
|
||||
|
||||
stop() {
|
||||
do_action "Stopping" "--stop"
|
||||
}
|
||||
|
||||
reload() {
|
||||
do_action "Reloading" "--signal HUP --stop"
|
||||
}
|
||||
|
||||
status() {
|
||||
ERROR=$($CMD --status 2>&1)
|
||||
EXIT=$?
|
||||
case $EXIT in
|
||||
0)
|
||||
echo "$NAME is running (pid $(cat $PIDFILE))"
|
||||
;;
|
||||
1)
|
||||
echo "$NAME is not running but pid file $PIDFILE exist"
|
||||
;;
|
||||
2)
|
||||
echo "$NAME is not running"
|
||||
;;
|
||||
*)
|
||||
echo "unable to determine $NAME status: $ERROR"
|
||||
;;
|
||||
esac
|
||||
return $EXIT
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart|force-reload)
|
||||
stop && start
|
||||
;;
|
||||
reload)
|
||||
reload
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit $?
|
|
@ -0,0 +1,4 @@
|
|||
@LOCAL_BIN_FILE@ @DEST_BIN_DIR@
|
||||
@RENDERED_INIT_FILE@ @DEST_INIT_DIR@
|
||||
@RENDERED_CONFIG_FILE@ @DEST_CONFIG_DIR@
|
||||
@RENDERED_LOGROTATE_FILE@ @DEST_LOGROTATE_DIR@
|
|
@ -0,0 +1,8 @@
|
|||
@DEST_LOG_DIR@/@NAME@*.log {
|
||||
daily
|
||||
rotate 30
|
||||
copytruncate
|
||||
delaycompress
|
||||
missingok
|
||||
create 640 @USER@ @GROUP@
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
# NOTE: Only TABs allowed here !!!
|
||||
|
||||
override_dh_strip:
|
||||
dh_strip --dbg-package=@NAME@-dbg
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_auto_install --destdir=debian/@NAME@
|
||||
|
||||
%:
|
||||
dh $@
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
set(od_binary odissey)
|
||||
set(od_binary ${CMAKE_PROJECT_NAME})
|
||||
set(od_src
|
||||
pid.c
|
||||
log_file.c
|
||||
|
|
Loading…
Reference in New Issue