2022-02-13 22:09:18 +01:00
#!/bin/bash
#=================================================
# COMMON VARIABLES
#=================================================
2016-12-14 10:55:15 +01:00
2022-02-13 19:55:00 +01:00
export appname = "libreerp"
2018-12-14 19:24:55 +01:00
export FORKNAME = "odoo"
2022-02-13 22:09:18 +01:00
2022-02-17 01:23:35 +01:00
swap_needed = 1024
2022-02-13 22:09:18 +01:00
# dependencies used by the app
2022-02-16 20:04:27 +01:00
pkg_dependencies = "curl postgresql xfonts-75dpi xfonts-base wkhtmltopdf node-less python3-dev gcc libldap2-dev libssl-dev libsasl2-dev python3-pip python3-dev python3-venv python3-wheel libxslt-dev libzip-dev python3-setuptools libjpeg-dev zlib1g-dev libfreetype6-dev libffi-dev libpq-dev"
2022-02-13 22:09:18 +01:00
#=================================================
# PERSONAL HELPERS
#=================================================
2017-05-18 23:28:18 +02:00
2018-12-16 19:41:40 +01:00
function debranding( ) {
2022-06-17 13:32:01 +02:00
# Remove Odoo references to avoid trademark issue
if [ -d $final_path /$appname /$FORKNAME ] ; then
python_app = $final_path /$appname /$FORKNAME
else
python_app = $final_path /$appname /openerp
fi
find $final_path /$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/Powered by <a[^>]*>Odoo<\/a>//g' { } \;
find $final_path /$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/<a[^>]*>Powered by <[^>]*>Odoo<\/[^>]*><\/a>//g' { } \;
find $final_path /$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/Powered by <[^>]*>Odoo<\/[^>]*>//g' { } \;
find $final_path /$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/Powered by <[^>]*><img[^>]*Odoo[^>]*><\/a>//g' { } \;
if test -f " $final_path / $appname /addons/web/static/src/xml/base.xml " ; then
sed -i 's/<a[^>]*>My Odoo.com account<\/a>//g' $final_path /$appname /addons/web/static/src/xml/base.xml
sed -i 's/<a[^>]*>Documentation<\/a>//g' $final_path /$appname /addons/web/static/src/xml/base.xml
sed -i 's/<a[^>]*>Support<\/a>//g' $final_path /$appname /addons/web/static/src/xml/base.xml
fi
cp ../conf/logo_type.png $python_app /addons/base/static/img/logo_white.png
2018-12-16 19:41:40 +01:00
}
2022-02-13 22:09:18 +01:00
2018-12-16 19:41:40 +01:00
function setup_files( ) {
2022-06-17 13:32:01 +02:00
if [ [ $oca -eq 0 ] ] ; then
ynh_setup_source $final_path /$appname $app_version
else
ynh_setup_source $final_path /$appname " oca- $app_version "
fi
debranding
mkdir -p $final_path /custom-addons
chmod 750 " $final_path "
chmod -R o-rwx " $final_path "
chown -R $app :$app " $final_path "
touch /var/log/$app .log
chown $app :$app /var/log/$app .log
if [ ! -f $conf_file ] ; then
ynh_configure server.conf $conf_file
chmod 400 " $conf_file "
2022-02-17 01:23:35 +01:00
chown $app :$app " $conf_file "
2018-12-16 19:41:40 +01:00
2022-06-17 13:32:01 +02:00
# Autoinstall the LDAP auth module
if ls $final_path /$appname /$FORKNAME -bin > /dev/null ; then
ynh_replace_string " ^{ $" "{'auto_install': True," $final_path /$appname /addons/auth_ldap/__manifest__.py
else
ynh_replace_string "'auto_install': False" "'auto_install': True" $final_path /$appname /addons/auth_ldap/__openerp__.py
fi
fi
2018-12-14 19:49:43 +01:00
}
2022-02-13 22:09:18 +01:00
function setup_database( ) {
2022-06-17 13:32:01 +02:00
export preinstall = 1
ynh_configure server.conf $conf_file
chown $app :$app $conf_file
# Load translation
#param=" --without-demo True --addons-path $final_path/$appname/addons --db_user $app --db_password $db_pwd --db_host 127.0.0.1 --db_port 5432 --db-filter '^$app\$' -d $app "
param = " -c $conf_file -d $app "
ynh_exec_as $app $bin_file -c $conf_file --stop-after-init -i base -d $app
ynh_exec_as $app $bin_file -c $conf_file --stop-after-init -i auth_ldap -d $app
ynh_exec_as $app $bin_file -c $conf_file --stop-after-init --load-language $lang -d $app
# Configure language, timezone and ldap
ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \
2022-02-13 22:09:18 +01:00
"
self.env[ 'res.users' ] .search( [ [ 'login' , '=' , 'admin' ] ] ) [ 0] .write( { 'password' : '$admin_password' } )
self.env.cr.commit( )
"
2022-06-17 13:32:01 +02:00
ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \
2022-02-13 22:09:18 +01:00
"
self.write( { 'tz' :'$tz' ,'lang' :'$lang' } )
self.env.cr.commit( )
"
2022-06-17 13:32:01 +02:00
ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \
2022-02-13 22:09:18 +01:00
"
template = env[ 'res.users' ] .create( {
'login' :'template' ,
'password' :'' ,
'name' :'template' ,
'email' :'template' ,
'sel_groups_9_10' :9,
'tz' :'$tz' ,
'lang' :'$lang'
} )
self.env.cr.commit( )
self.company_id.ldaps.create( {
'ldap_server' :'localhost' ,
'ldap_server_port' :389,
'ldap_base' :'ou=users, dc=yunohost,dc=org' ,
'ldap_filter' :'uid=%s' ,
'user' :template.id,
'company' :self.company_id.id
} )
self.env.cr.commit( )
"
2022-06-17 13:32:01 +02:00
export preinstall = 0
ynh_configure server.conf $conf_file
chown $app :$app $conf_file
2022-02-13 22:09:18 +01:00
}
ynh_configure ( ) {
2022-06-17 13:32:01 +02:00
local TEMPLATE = $1
local DEST = $2
content = ""
content2 = ""
content3 = ""
if [ [ $preinstall = = '1' ] ]
then
content = " dbfilter = $db_name "
2022-02-13 22:09:18 +01:00
else
content = " db_name = $db_name "
if [ [ $app_version > 9 ] ]
then
content2 = "dbfilter = False"
fi
content3 = "list_db = False"
fi
2022-06-17 13:32:01 +02:00
mkdir -p " $( dirname $DEST ) "
if [ -f '../manifest.json' ] ; then
ynh_add_config " ${ YNH_CWD } /../conf/ $TEMPLATE " " $DEST "
else
ynh_add_config " ${ YNH_CWD } /../settings/conf/ $TEMPLATE " " $DEST "
fi
2016-12-14 10:55:15 +01:00
}
2022-02-17 01:23:35 +01:00
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
# Add swap
#
# usage: ynh_add_swap --size=SWAP in Mb
# | arg: -s, --size= - Amount of SWAP to add in Mb.
2022-02-13 22:09:18 +01:00
ynh_add_swap ( ) {
2022-06-17 13:32:01 +02:00
# Declare an array to define the options of this helper.
declare -Ar args_array = ( [ s] = size = )
local size
# Manage arguments with getopts
ynh_handle_getopts_args " $@ "
local swap_max_size = $(( $size * 1024 ))
local free_space = $( df --output= avail / | sed 1d)
# Because we don't want to fill the disk with a swap file, divide by 2 the available space.
local usable_space = $(( $free_space / 2 ))
SD_CARD_CAN_SWAP = ${ SD_CARD_CAN_SWAP :- 0 }
# Swap on SD card only if it's is specified
if ynh_is_main_device_a_sd_card && [ " $SD_CARD_CAN_SWAP " = = "0" ]
then
ynh_print_warn --message= " The main mountpoint of your system '/' is on an SD card, swap will not be added to prevent some damage of this one, but that can cause troubles for the app $app . If you still want activate the swap, you can relaunch the command preceded by 'SD_CARD_CAN_SWAP=1' "
return
fi
# Compare the available space with the size of the swap.
# And set a acceptable size from the request
if [ $usable_space -ge $swap_max_size ]
then
local swap_size = $swap_max_size
elif [ $usable_space -ge $(( $swap_max_size / 2 )) ]
then
local swap_size = $(( $swap_max_size / 2 ))
elif [ $usable_space -ge $(( $swap_max_size / 3 )) ]
then
local swap_size = $(( $swap_max_size / 3 ))
elif [ $usable_space -ge $(( $swap_max_size / 4 )) ]
then
local swap_size = $(( $swap_max_size / 4 ))
else
echo "Not enough space left for a swap file" >& 2
local swap_size = 0
fi
# If there's enough space for a swap, and no existing swap here
if [ $swap_size -ne 0 ] && [ ! -e /swap_$app ]
then
# Preallocate space for the swap file, fallocate may sometime not be used, use dd instead in this case
if ! fallocate -l ${ swap_size } K /swap_$app
then
dd if = /dev/zero of = /swap_$app bs = 1024 count = ${ swap_size }
fi
chmod 0600 /swap_$app
# Create the swap
mkswap /swap_$app
# And activate it
swapon /swap_$app
# Then add an entry in fstab to load this swap at each boot.
echo -e " /swap_ $app swap swap defaults 0 0 #Swap added by $app " >> /etc/fstab
fi
2022-02-13 22:09:18 +01:00
}
2016-12-14 10:55:15 +01:00
2022-02-13 22:09:18 +01:00
ynh_del_swap ( ) {
2022-06-17 13:32:01 +02:00
# If there a swap at this place
if [ -e /swap_$app ]
then
# Clean the fstab
sed -i " /#Swap added by $app /d " /etc/fstab
# Desactive the swap file
swapoff /swap_$app
# And remove it
rm /swap_$app
fi
2016-12-14 10:55:15 +01:00
}
2022-02-13 22:09:18 +01:00
2022-02-17 01:23:35 +01:00
# Check if the device of the main mountpoint "/" is an SD card
#
# [internal]
#
# return 0 if it's an SD card, else 1
ynh_is_main_device_a_sd_card ( ) {
2022-06-17 13:32:01 +02:00
local main_device = $( lsblk --output PKNAME --noheadings $( findmnt / --nofsroot --uniq --output source --noheadings --first-only) )
if echo $main_device | grep --quiet "mmc" && [ $( tail -n1 /sys/block/$main_device /queue/rotational) = = "0" ]
then
return 0
else
return 1
fi
2022-02-17 01:23:35 +01:00
}
2022-02-13 22:09:18 +01:00
#=================================================
# FUTURE OFFICIAL HELPERS
#=================================================