From 80a932479b8a49ca716f017f80fdb0984b10adb3 Mon Sep 17 00:00:00 2001
From: Christophe Simonis <chs@odoo.com>
Date: Wed, 3 Sep 2014 20:05:37 +0200
Subject: [PATCH] FIX] packaging: odoo-ification

---
 debian/init                 | 103 +++++++++++++++-------------
 debian/install              |   4 +-
 debian/logrotate            |   2 +-
 debian/openerp-server.conf  |   4 +-
 debian/postinst             |  16 ++---
 debian/postrm               |   6 +-
 openerp/release.py          |   5 +-
 openerp/tools/config.py     |   4 +-
 setup/package.py            |  20 +++---
 setup/redhat/postinstall.sh | 131 ++++++++++++++++++++----------------
 10 files changed, 160 insertions(+), 135 deletions(-)

diff --git a/debian/init b/debian/init
index f2dc740b5d0b..e333c7eb2a15 100644
--- a/debian/init
+++ b/debian/init
@@ -1,62 +1,71 @@
-#!/bin/sh
-
+#!/bin/bash
 ### BEGIN INIT INFO
-# Provides:		openerp-server
-# Required-Start:	$remote_fs $syslog
-# Required-Stop:	$remote_fs $syslog
-# Should-Start:		$network
-# Should-Stop:		$network
-# Default-Start:	2 3 4 5
-# Default-Stop:		0 1 6
-# Short-Description:	Enterprise Resource Management software
-# Description:		Open ERP is a complete ERP and CRM software.
+# Provides:          openerp-server
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Start openerp daemon at boot time
+# Description:       Enable service provided by daemon.
+# X-Interactive:     true
 ### END INIT INFO
+## more info: http://wiki.debian.org/LSBInitScripts
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
 DAEMON=/usr/bin/openerp-server
-NAME=openerp-server
-DESC=openerp-server
-CONFIG=/etc/openerp/openerp-server.conf
-LOGFILE=/var/log/openerp/openerp-server.log
-USER=openerp
-
-test -x ${DAEMON} || exit 0
+NAME=openerp
+DESC=openerp
+CONFIG=/etc/odoo/openerp-server.conf
+LOGFILE=/var/log/odoo/openerp-server.log
+PIDFILE=/var/run/${NAME}.pid
+USER=odoo
+export LOGNAME=$USER
 
+test -x $DAEMON || exit 0
 set -e
 
-do_start () {
-    echo -n "Starting ${DESC}: "
-    start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid --chuid ${USER} --background --make-pidfile --exec ${DAEMON} -- --config=${CONFIG} --logfile=${LOGFILE}
-    echo "${NAME}."
+function _start() {
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE
 }
 
-do_stop () {
-    echo -n "Stopping ${DESC}: "
-    start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid --oknodo
-    echo "${NAME}."
+function _stop() {
+    start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
+    rm -f $PIDFILE
 }
 
-case "${1}" in
-    start)
-        do_start
-        ;;
-
-    stop)
-        do_stop
-        ;;
-
-    restart|force-reload)
-        echo -n "Restarting ${DESC}: "
-        do_stop
-        sleep 1
-        do_start
-        ;;
-
-    *)
-        N=/etc/init.d/${NAME}
-        echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
-        exit 1
-        ;;
+function _status() {
+    start-stop-daemon --status --quiet --pidfile $PIDFILE
+    return $?
+}
+
+
+case "$1" in
+        start)
+                echo -n "Starting $DESC: "
+                _start
+                echo "ok"
+                ;;
+        stop)
+                echo -n "Stopping $DESC: "
+                _stop
+                echo "ok"
+                ;;
+        restart|force-reload)
+                echo -n "Restarting $DESC: "
+                _stop
+                sleep 1
+                _start
+                echo "ok"
+                ;;
+        status)
+                echo -n "Status of $DESC: "
+                _status && echo "running" || echo "stopped"
+                ;;
+        *)
+                N=/etc/init.d/$NAME
+                echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
+                exit 1
+                ;;
 esac
 
 exit 0
diff --git a/debian/install b/debian/install
index 94d4cfee3e07..e984a257b083 100644
--- a/debian/install
+++ b/debian/install
@@ -1,2 +1,2 @@
-debian/openerp-server.conf /etc/openerp
-README.md /usr/share/doc/openerp
+debian/openerp-server.conf /etc/odoo
+README.md /usr/share/doc/odoo
diff --git a/debian/logrotate b/debian/logrotate
index e1f7f803a7d7..060ec54d0122 100644
--- a/debian/logrotate
+++ b/debian/logrotate
@@ -1,4 +1,4 @@
-/var/log/openerp/*.log {
+/var/log/odoo/*.log {
     copytruncate
     missingok
     notifempty
diff --git a/debian/openerp-server.conf b/debian/openerp-server.conf
index 66934bed0f81..8e788730ca18 100644
--- a/debian/openerp-server.conf
+++ b/debian/openerp-server.conf
@@ -3,6 +3,6 @@
 ; admin_passwd = admin
 db_host = False
 db_port = False
-db_user = openerp
+db_user = odoo
 db_password = False
-addons_path = /usr/lib/python2.7/dist-packages/openerp/addons
\ No newline at end of file
+addons_path = /usr/lib/python2.7/dist-packages/openerp/addons
diff --git a/debian/postinst b/debian/postinst
index ea91c1d15320..ae2c8323ef62 100644
--- a/debian/postinst
+++ b/debian/postinst
@@ -2,19 +2,19 @@
 
 set -e
 
-ODOO_CONFIGURATION_FILE=/etc/openerp/openerp-server.conf
-ODOO_GROUP="openerp"
-ODOO_DATA_DIR=/var/lib/openerp
-ODOO_LOG_DIR=/var/log/openerp
-ODOO_USER="openerp"
+ODOO_CONFIGURATION_FILE=/etc/odoo/openerp-server.conf
+ODOO_GROUP="odoo"
+ODOO_DATA_DIR=/var/lib/odoo
+ODOO_LOG_DIR=/var/log/odoo
+ODOO_USER="odoo"
 
 case "${1}" in
     configure)
-        if ! getent passwd | grep -q "^openerp:"; then
+        if ! getent passwd | grep -q "^odoo:"; then
             adduser --system --no-create-home --quiet --group $ODOO_USER
         fi
-        # Register "openerp" as a postgres superuser 
-        su - postgres -c "createuser -s openerp" 2> /dev/null || true
+        # Register "$ODOO_USER" as a postgres superuser
+        su - postgres -c "createuser -s $ODOO_USER" 2> /dev/null || true
         # Configuration file
         chown $ODOO_USER:$ODOO_GROUP $ODOO_CONFIGURATION_FILE
         chmod 0640 $ODOO_CONFIGURATION_FILE
diff --git a/debian/postrm b/debian/postrm
index f36bb04c0c33..22f7211203f2 100644
--- a/debian/postrm
+++ b/debian/postrm
@@ -2,9 +2,9 @@
 
 set -e
 
-ODOO_LIB_DIR=/var/lib/openerp
-ODOO_USER="openerp"
-ODOO_GROUP="openerp"
+ODOO_LIB_DIR=/var/lib/odoo
+ODOO_USER="odoo"
+ODOO_GROUP="odoo"
 
 case "${1}" in
     remove)
diff --git a/openerp/release.py b/openerp/release.py
index 5d3be4f50aee..6928b72cd5bb 100644
--- a/openerp/release.py
+++ b/openerp/release.py
@@ -34,6 +34,7 @@ version_info = (8, 0, 0, RELEASE_CANDIDATE, 1)
 version = '.'.join(map(str, version_info[:2])) + RELEASE_LEVELS_DISPLAY[version_info[3]] + str(version_info[4] or '')
 series = serie = major_version = '.'.join(map(str, version_info[:2]))
 
+product_name = 'Odoo'
 description = 'Odoo Server'
 long_desc = '''Odoo is a complete ERP and CRM. The main features are accounting (analytic
 and financial), stock management, sales and purchases management, tasks
@@ -45,9 +46,9 @@ classifiers = """Development Status :: 5 - Production/Stable
 License :: OSI Approved :: GNU Affero General Public License v3
 Programming Language :: Python
 """
-url = 'http://www.openerp.com'
+url = 'https://www.odoo.com'
 author = 'OpenERP S.A.'
-author_email = 'info@openerp.com'
+author_email = 'info@odoo.com'
 license = 'AGPL-3'
 
 nt_service_name = "openerp-server-" + series
diff --git a/openerp/tools/config.py b/openerp/tools/config.py
index 02a4ff6e3faf..3fb940e1639a 100644
--- a/openerp/tools/config.py
+++ b/openerp/tools/config.py
@@ -68,9 +68,9 @@ def _get_default_datadir():
         if sys.platform in ['win32', 'darwin']:
             func = appdirs.site_data_dir
         else:
-            func = lambda **kwarg: "/var/lib/%s" % kwarg['appname']
+            func = lambda **kwarg: "/var/lib/%s" % kwarg['appname'].lower()
     # No "version" kwarg as session and filestore paths are shared against series
-    return func(appname='openerp', appauthor=release.author)
+    return func(appname=release.product_name, appauthor=release.author)
 
 class configmanager(object):
     def __init__(self, fname=None):
diff --git a/setup/package.py b/setup/package.py
index 9bcf321fc81a..1e8b9efb310f 100755
--- a/setup/package.py
+++ b/setup/package.py
@@ -266,13 +266,13 @@ def test_tgz(o):
         wheezy.system('su postgres -s /bin/bash -c "pg_createcluster --start -e UTF-8 9.1 main"')
         wheezy.system('pip install -r /opt/release/requirements.txt')
         wheezy.system('/usr/local/bin/pip install /opt/release/%s' % wheezy.release)
-        wheezy.system("useradd --system --no-create-home openerp")
-        wheezy.system('su postgres -s /bin/bash -c "createuser -s openerp"')
+        wheezy.system("useradd --system --no-create-home odoo")
+        wheezy.system('su postgres -s /bin/bash -c "createuser -s odoo"')
         wheezy.system('su postgres -s /bin/bash -c "createdb mycompany"')
-        wheezy.system('mkdir /var/lib/openerp')
-        wheezy.system('chown openerp:openerp /var/lib/openerp')
-        wheezy.system('su openerp -s /bin/bash -c "odoo.py --addons-path=/usr/local/lib/python2.7/dist-packages/openerp/addons -d mycompany -i base --stop-after-init"')
-        wheezy.system('su openerp -s /bin/bash -c "odoo.py --addons-path=/usr/local/lib/python2.7/dist-packages/openerp/addons -d mycompany &"')
+        wheezy.system('mkdir /var/lib/odoo')
+        wheezy.system('chown odoo:odoo /var/lib/odoo')
+        wheezy.system('su odoo -s /bin/bash -c "odoo.py --addons-path=/usr/local/lib/python2.7/dist-packages/openerp/addons -d mycompany -i base --stop-after-init"')
+        wheezy.system('su odoo -s /bin/bash -c "odoo.py --addons-path=/usr/local/lib/python2.7/dist-packages/openerp/addons -d mycompany &"')
 
 def test_deb(o):
     with docker('debian:stable', o.build_dir, o.pub) as wheezy:
@@ -285,8 +285,8 @@ def test_deb(o):
         wheezy.system('su postgres -s /bin/bash -c "createdb mycompany"')
         wheezy.system('/usr/bin/dpkg -i /opt/release/%s' % wheezy.release)
         wheezy.system('/usr/bin/apt-get install -f -y')
-        wheezy.system('su openerp -s /bin/bash -c "odoo.py -c /etc/openerp/openerp-server.conf -d mycompany -i base --stop-after-init"')
-        wheezy.system('su openerp -s /bin/bash -c "odoo.py -c /etc/openerp/openerp-server.conf -d mycompany &"')
+        wheezy.system('su odoo -s /bin/bash -c "odoo.py -c /etc/odoo/openerp-server.conf -d mycompany -i base --stop-after-init"')
+        wheezy.system('su odoo -s /bin/bash -c "odoo.py -c /etc/odoo/openerp-server.conf -d mycompany &"')
 
 def test_rpm(o):
     with docker('centos:centos7', o.build_dir, o.pub) as centos7:
@@ -306,8 +306,8 @@ def test_rpm(o):
         centos7.system('export PYTHONPATH=${PYTHONPATH}:/usr/local/lib/python2.7/dist-packages')
         centos7.system('su postgres -c "createdb mycompany"')
         centos7.system('yum install /opt/release/%s -y' % centos7.release)
-        centos7.system('su openerp -s /bin/bash -c "openerp-server -c /etc/openerp/openerp-server.conf -d mycompany -i base --stop-after-init"')
-        centos7.system('su openerp -s /bin/bash -c "openerp-server -c /etc/openerp/openerp-server.conf -d mycompany &"')
+        centos7.system('su odoo -s /bin/bash -c "openerp-server -c /etc/odoo/openerp-server.conf -d mycompany -i base --stop-after-init"')
+        centos7.system('su odoo -s /bin/bash -c "openerp-server -c /etc/odoo/openerp-server.conf -d mycompany &"')
 
 def test_exe(o):
     KVMWinTestExe(o, o.vm_winxp_image, o.vm_winxp_ssh_key, o.vm_winxp_login).start()
diff --git a/setup/redhat/postinstall.sh b/setup/redhat/postinstall.sh
index bde7db493bc7..437fdcec4261 100644
--- a/setup/redhat/postinstall.sh
+++ b/setup/redhat/postinstall.sh
@@ -1,28 +1,29 @@
-#!/bin/sh
+#!/bin/bash
 
 set -e
 
-ODOO_CONFIGURATION_FILE=/etc/openerp/openerp-server.conf
-ODOO_CONFIGURATION_DIR=/etc/openerp
-ODOO_DATA_DIR=/var/lib/openerp
-ODOO_GROUP="openerp"
-ODOO_LOG_DIR=/var/log/openerp
-ODOO_USER="openerp"
+ODOO_CONFIGURATION_DIR=/etc/odoo
+ODOO_CONFIGURATION_FILE=$ODOO_CONFIGURATION_DIR/openerp-server.conf
+ODOO_DATA_DIR=/var/lib/odoo
+ODOO_GROUP="odoo"
+ODOO_LOG_DIR=/var/log/odoo
+ODOO_USER="odoo"
 
-if ! getent passwd | grep -q "^openerp:"; then
+if ! getent passwd | grep -q "^odoo:"; then
     groupadd $ODOO_GROUP
     adduser --system --no-create-home $ODOO_USER -g $ODOO_GROUP
 fi
-# Register "openerp" as a postgres superuser 
-su - postgres -c "createuser -s openerp" 2> /dev/null || true
+# Register "$ODOO_USER" as a postgres superuser
+su - postgres -c "createuser -s $ODOO_USER" 2> /dev/null || true
 # Configuration file
 mkdir -p $ODOO_CONFIGURATION_DIR
+# can't copy debian config-file as addons_path is not the same
 echo "[options]
 ; This is the password that allows database operations:
 ; admin_passwd = admin
 db_host = False
 db_port = False
-db_user = openerp
+db_user = $ODOO_USER
 db_password = False
 addons_path = /usr/local/lib/python2.7/dist-packages/openerp/addons
 " > $ODOO_CONFIGURATION_FILE
@@ -36,67 +37,81 @@ chmod 0750 $ODOO_LOG_DIR
 mkdir -p $ODOO_DATA_DIR
 chown $ODOO_USER:$ODOO_GROUP $ODOO_DATA_DIR
 
-echo '#!/bin/sh
-
+INIT_FILE=/etc/init.d/openerp
+touch $INIT_FILE
+chmod 0700 $INIT_FILE
+# FIXME this is a copy of debian/init file.
+#       If anyone know how to tell bdist_rpm to use this file directly...
+cat << 'EOF' > $INIT_FILE
+#!/bin/bash
 ### BEGIN INIT INFO
-# Provides:     openerp-server
-# Required-Start:   $remote_fs $syslog
-# Required-Stop:    $remote_fs $syslog
-# Should-Start:     $network
-# Should-Stop:      $network
-# Default-Start:    2 3 4 5
-# Default-Stop:     0 1 6
-# Short-Description:    Enterprise Resource Management software
-# Description:      Open ERP is a complete ERP and CRM software.
+# Provides:          openerp-server
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Start openerp daemon at boot time
+# Description:       Enable service provided by daemon.
+# X-Interactive:     true
 ### END INIT INFO
+## more info: http://wiki.debian.org/LSBInitScripts
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
 DAEMON=/usr/bin/openerp-server
-NAME=openerp-server
-DESC=openerp-server
-CONFIG=/etc/openerp/openerp-server.conf
-LOGFILE=/var/log/openerp/openerp-server.log
-USER=openerp
-
-test -x ${DAEMON} || exit 0
+NAME=openerp
+DESC=openerp
+CONFIG=/etc/odoo/openerp-server.conf
+LOGFILE=/var/log/odoo/openerp-server.log
+PIDFILE=/var/run/${NAME}.pid
+USER=odoo
+export LOGNAME=$USER
 
+test -x $DAEMON || exit 0
 set -e
 
-do_start () {
-    echo -n "Starting ${DESC}: "
-    start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid --chuid ${USER} --background --make-pidfile --exec ${DAEMON} -- --config=${CONFIG} --logfile=${LOGFILE}
-    echo "${NAME}."
+function _start() {
+    start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE
 }
 
-do_stop () {
-    echo -n "Stopping ${DESC}: "
-    start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid --oknodo
-    echo "${NAME}."
+function _stop() {
+    start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
+    rm -f $PIDFILE
 }
 
-case "${1}" in
-    start)
-        do_start
-        ;;
-
-    stop)
-        do_stop
-        ;;
+function _status() {
+    start-stop-daemon --status --quiet --pidfile $PIDFILE
+    return $?
+}
 
-    restart|force-reload)
-        echo -n "Restarting ${DESC}: "
-        do_stop
-        sleep 1
-        do_start
-        ;;
 
-    *)
-        N=/etc/init.d/${NAME}
-        echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
-        exit 1
-        ;;
+case "$1" in
+        start)
+                echo -n "Starting $DESC: "
+                _start
+                echo "ok"
+                ;;
+        stop)
+                echo -n "Stopping $DESC: "
+                _stop
+                echo "ok"
+                ;;
+        restart|force-reload)
+                echo -n "Restarting $DESC: "
+                _stop
+                sleep 1
+                _start
+                echo "ok"
+                ;;
+        status)
+                echo -n "Status of $DESC: "
+                _status && echo "running" || echo "stopped"
+                ;;
+        *)
+                N=/etc/init.d/$NAME
+                echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
+                exit 1
+                ;;
 esac
 
 exit 0
-' > /etc/init.d/openerp
-chmod 700 /etc/init.d/openerp
\ No newline at end of file
+EOF
-- 
GitLab