Merge pull request #32 from YunoHost-Apps/testing

Upgrade to 15.0~ynh1
This commit is contained in:
yalh76 2022-06-23 13:07:41 +02:00 committed by GitHub
commit c82770776c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 353 additions and 292 deletions

View file

@ -22,7 +22,7 @@ The main LibreERP Apps include an Open Source CRM, Website Builder, eCommerce, P
LibreERP Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps. LibreERP Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
**Shipped version:** 12.0~ynh6 **Shipped version:** 15.0~ynh1
**Demo:** https://www.odoo.com/trial **Demo:** https://www.odoo.com/trial
## Disclaimers / important information ## Disclaimers / important information

View file

@ -22,7 +22,7 @@ The main LibreERP Apps include an Open Source CRM, Website Builder, eCommerce, P
LibreERP Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps. LibreERP Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.
**Version incluse :** 12.0~ynh6 **Version incluse :** 15.0~ynh1
**Démo :** https://www.odoo.com/trial **Démo :** https://www.odoo.com/trial
## Avertissements / informations importantes ## Avertissements / informations importantes

View file

@ -1,12 +1,37 @@
;; Test complet sans multisite ;; Test complet sans multisite v14
auto_remove=1 auto_remove=1
; Manifest ; Manifest
domain="domain.tld" domain="domain.tld"
version="14" version="14"
oca=0 oca=0
admin_password="testpassw0rD"
lang="en_US" lang="en_US"
tz="Etc/GMT" tz="Etc/GMT"
admin="john"
password="1Strong-Password"
; Checks
pkg_linter=1
setup_sub_dir=0
setup_root=1
setup_nourl=0
setup_private=0
setup_public=1
upgrade=1
# 12.0~ynh6
upgrade=1 from_commit=54f28204591c902ebe4a3a6b662e88e8fa598fde
backup_restore=1
multi_instance=1
port_already_use=0
change_url=0
;; Test complet sans multisite v15
auto_remove=1
; Manifest
domain="domain.tld"
version="15"
oca=0
lang="en_US"
tz="Etc/GMT"
admin="john"
password="1Strong-Password"
; Checks ; Checks
pkg_linter=1 pkg_linter=1
setup_sub_dir=0 setup_sub_dir=0
@ -15,8 +40,6 @@
setup_private=0 setup_private=0
setup_public=1 setup_public=1
upgrade=1 upgrade=1
# 12.0-6
# upgrade=1 from_commit=2cfdbc229faa8700873e681a01f823c32475cca8
backup_restore=1 backup_restore=1
multi_instance=1 multi_instance=1
port_already_use=0 port_already_use=0

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/odoo/odoo/archive/f69c004795e0a7f32d5c6243cc3d4915cf010bbe.tar.gz SOURCE_URL=https://github.com/odoo/odoo/archive/28c3f51c4878fbcd79b2e819948465fcf2160ebc.tar.gz
SOURCE_SUM=79bfb272bc48509390386de357413e34bbb10fceee0662ca89e9e18383ed522f SOURCE_SUM=880be8b9e5a57e67d6645a527efd83224319d8fc645cbd72f24e7e50a75ff31d
SOURCE_FILENAME=odoo-10.tar.gz SOURCE_FILENAME=odoo-10.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/odoo/odoo/archive/d129b0220eb0c76c8677c6ee0f60306f57cf2c8f.tar.gz SOURCE_URL=https://github.com/odoo/odoo/archive/43200e9dcc1d91cfd5c1e5e939b27e713d20cc7c.tar.gz
SOURCE_SUM=2e209236c56b78bb410639f3f0c102479c37fdb293cb51d3f6fdd6ad20fa610f SOURCE_SUM=71418fc5536242de72baa2d17b38a439252956fbbb1ebc3e2294c858674c4659
SOURCE_FILENAME=odoo-11.tar.gz SOURCE_FILENAME=odoo-11.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/odoo/odoo/archive/336c9aab3619abb5bfbeb07f87ae014facdefb0b.tar.gz SOURCE_URL=https://github.com/odoo/odoo/archive/04e37773d1bf9b885be674d85bdf0ec069926958.tar.gz
SOURCE_SUM=3d37bc31383bfad827c3fdbab4daa3914ad036fd70fe1f20925ed18d2b9e1f87 SOURCE_SUM=023afbaada2182cd6e54c0717915f7585e6899e2c23ad54d9f2372e88bcf35ec
SOURCE_FILENAME=odoo-12.tar.gz SOURCE_FILENAME=odoo-12.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/odoo/odoo/archive/d8322e64c6d999ffc72093b2ef2db91532138c89.tar.gz SOURCE_URL=https://github.com/odoo/odoo/archive/5a8690b35a2fa9c5ed81d858ac0d170beaabaaf9.tar.gz
SOURCE_SUM=40cbbc93ab594f614499ccdd04922590c420bfadeaf2f889853a5d58073e5fef SOURCE_SUM=b52829b5f01f39d8e9bd6977eb1b9c23053e92c7574ec26e5b3d218522fccf3a
SOURCE_FILENAME=odoo-14.tar.gz SOURCE_FILENAME=odoo-14.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

5
conf/15.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/odoo/odoo/archive/2354fade236b2853835761a129ef2c4ea450d728.tar.gz
SOURCE_SUM=566c7df9d4967fdca65060f78dc0202febc72ef2691ef72ae256892fc838ea48
SOURCE_FILENAME=odoo-15.tar.gz
SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/odoo/odoo/archive/a25432cd357124242cc6e8ead19b09d58ba530ae.tar.gz SOURCE_URL=https://github.com/odoo/odoo/archive/7132a15c38a3b5e5ec232404d21aacfa2ac5874e.tar.gz
SOURCE_SUM=2e85eaaeb2609223ddda38877715aca5afb7fb8f794bef85e147e7e18e285e05 SOURCE_SUM=f4c522da29201835435b01c651032d07c2d0c0e8a14b30f9a784cb531c5ba250
SOURCE_FILENAME=odoo-9.tar.gz SOURCE_FILENAME=odoo-9.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

View file

@ -1,51 +1,51 @@
location / { location / {
if ($scheme = http) { try_files $uri @__APP__;
rewrite ^ https://$server_name$request_uri? permanent;
}
try_files $uri @__APP__;
} }
location @__APP__ {
proxy_pass http://127.0.0.1:__PORT__;
client_max_body_size 50M;
client_body_timeout 60m;
fastcgi_read_timeout 60m;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; location @__APP__ {
proxy_buffers 16 64k; proxy_pass http://127.0.0.1:__PORT__;
proxy_buffer_size 128k;
proxy_redirect off; client_max_body_size 50M;
proxy_set_header Host $host; client_body_timeout 60m;
proxy_set_header X-Real-IP $remote_addr; fastcgi_read_timeout 60m;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_set_header X-Forwarded-Host $host; proxy_buffers 16 64k;
proxy_read_timeout 720s; proxy_buffer_size 128k;
proxy_connect_timeout 720s; proxy_redirect off;
proxy_send_timeout 720s; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
} }
location /longpolling { location /longpolling {
proxy_pass http://127.0.0.1:__PORT_CHAT__; proxy_pass http://127.0.0.1:__PORT_CHAT__;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 720s; proxy_read_timeout 720s;
proxy_connect_timeout 720s; proxy_connect_timeout 720s;
proxy_send_timeout 720s; proxy_send_timeout 720s;
} }
location ~* /web/static/ { location ~* /web/static/ {
proxy_cache_valid 200 90m; proxy_cache_valid 200 90m;
proxy_buffering on; proxy_buffering on;
expires 864000; expires 864000;
proxy_pass http://127.0.0.1:__PORT__; proxy_pass http://127.0.0.1:__PORT__;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Host $host;
proxy_read_timeout 720s; proxy_read_timeout 720s;
proxy_connect_timeout 720s; proxy_connect_timeout 720s;
proxy_send_timeout 720s; proxy_send_timeout 720s;
} }

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/OCA/OCB/archive/4df6b0b164c6f384fdb7df40e51e80780572273a.tar.gz SOURCE_URL=https://github.com/OCA/OCB/archive/f38c99acbea6e1ab42deddb468b9710cabccfbdf.tar.gz
SOURCE_SUM=e064dcd121ca207cbfa18c5f5f63c394ee6a1ca03f9ebbd6b88e6a62dda6bca0 SOURCE_SUM=55cb5e87022a87cf13c9d74bf094da2c098cf64fb8fdacbf42fadeea2479daa0
SOURCE_FILENAME=odoo-12.tar.gz SOURCE_FILENAME=odoo-12.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/OCA/OCB/archive/b7dc86b530718c090ba26b8eea0154d1c50c05f2.tar.gz SOURCE_URL=https://github.com/OCA/OCB/archive/e1e9e7420a5b5b32d5359ffed19e718080764ddd.tar.gz
SOURCE_SUM=d2ca8bbe913e90f1623c6f2375d4cd2c40d4ed4abb650e66f7691669cbab90fa SOURCE_SUM=acfbf7a2428a51962d1d1a084c5a959a392c522b8aad7b98d7abac75c84259d9
SOURCE_FILENAME=odoo-14.tar.gz SOURCE_FILENAME=odoo-14.tar.gz
SOURCE_FORMAT=tar.gz SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum SOURCE_SUM_PRG=sha256sum

5
conf/oca-15.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/OCA/OCB/archive/2354fade236b2853835761a129ef2c4ea450d728.tar.gz
SOURCE_SUM=8bab7886de520295a2db4ab0895b0a3b556a2cd7d77e903347f99762310b636f
SOURCE_FILENAME=odoo-15.tar.gz
SOURCE_FORMAT=tar.gz
SOURCE_SUM_PRG=sha256sum

View file

@ -6,7 +6,7 @@
"en": "Suite of business apps (ERP: CRM, Accounting, Point of Sale, HR, Purchases...).", "en": "Suite of business apps (ERP: CRM, Accounting, Point of Sale, HR, Purchases...).",
"fr": "Une collection d'apps de gestion d'entreprise (ERP : CRM, Comptabilité, Point de Vente, RH, Achats, ...)." "fr": "Une collection d'apps de gestion d'entreprise (ERP : CRM, Comptabilité, Point de Vente, RH, Achats, ...)."
}, },
"version": "12.0~ynh6", "version": "15.0~ynh1",
"url": "https://odoo.com", "url": "https://odoo.com",
"upstream": { "upstream": {
"license": "LGPL-3.0-only", "license": "LGPL-3.0-only",
@ -37,10 +37,6 @@
"name": "domain", "name": "domain",
"type": "domain" "type": "domain"
}, },
{
"name": "admin",
"type": "user"
},
{ {
"name": "version", "name": "version",
"type": "string", "type": "string",
@ -48,8 +44,8 @@
"en": "Choose the version you want", "en": "Choose the version you want",
"fr": "Choisissez la version désirée" "fr": "Choisissez la version désirée"
}, },
"choices": ["11", "12", "14"], "choices": ["11", "12", "14", "15"],
"default": "14" "default": "15"
}, },
{ {
"name": "oca", "name": "oca",
@ -60,14 +56,6 @@
"fr": "Désirez vous installer OCA à la place des sources de LibreERP (pas encore implémenté)" "fr": "Désirez vous installer OCA à la place des sources de LibreERP (pas encore implémenté)"
} }
}, },
{
"name": "admin_password",
"type": "password",
"ask": {
"en": "Choose a strong master admin password",
"fr": "Choisissez un mot de passe maître fort pour l'administration"
}
},
{ {
"name": "lang", "name": "lang",
"type": "string", "type": "string",
@ -86,6 +74,18 @@
"fr": "Choisissez un fuseau horaire" "fr": "Choisissez un fuseau horaire"
}, },
"default": "Etc/UTC" "default": "Etc/UTC"
},
{
"name": "admin",
"type": "user"
},
{
"name": "admin_password",
"type": "password",
"ask": {
"en": "Choose a strong master admin password",
"fr": "Choisissez un mot de passe maître fort pour l'administration"
}
} }
] ]
} }

View file

@ -17,76 +17,78 @@ pkg_dependencies="curl postgresql xfonts-75dpi xfonts-base wkhtmltopdf node-less
#================================================= #=================================================
function debranding() { function debranding() {
# Remove Odoo references to avoid trademark issue # Remove Odoo references to avoid trademark issue
if [ -d $final_path/$appname/$FORKNAME ]; then if [ -d $final_path/$appname/$FORKNAME ]; then
python_app=$final_path/$appname/$FORKNAME python_app=$final_path/$appname/$FORKNAME
else else
python_app=$final_path/$appname/openerp python_app=$final_path/$appname/openerp
fi 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/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/<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 <[^>]*>Odoo<\/[^>]*>//g' {} \;
find $final_path/$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/Powered by <[^>]*><img[^>]*Odoo[^>]*><\/a>//g' {} \; find $final_path/$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/Powered by <[^>]*><img[^>]*Odoo[^>]*><\/a>//g' {} \;
sed -i 's/<a[^>]*>My Odoo.com account<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml if test -f "$final_path/$appname/addons/web/static/src/xml/base.xml"; then
sed -i 's/<a[^>]*>Documentation<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml sed -i 's/<a[^>]*>My Odoo.com account<\/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 sed -i 's/<a[^>]*>Documentation<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml
cp ../conf/logo_type.png $python_app/addons/base/static/img/logo_white.png sed -i 's/<a[^>]*>Support<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml
cp ../conf/favicon.ico $final_path/$appname/addons/web/static/src/img/favicon.ico fi
cp ../conf/logo_type.png $python_app/addons/base/static/img/logo_white.png
cp ../conf/favicon.ico $final_path/$appname/addons/web/static/src/img/favicon.ico
} }
function setup_files() { function setup_files() {
if [[ $oca -eq 0 ]]; then if [[ $oca -eq 0 ]]; then
ynh_setup_source $final_path/$appname $app_version ynh_setup_source $final_path/$appname $app_version
else else
ynh_setup_source $final_path/$appname "oca-$app_version" ynh_setup_source $final_path/$appname "oca-$app_version"
fi fi
debranding debranding
mkdir -p $final_path/custom-addons mkdir -p $final_path/custom-addons
chmod 750 "$final_path" chmod 750 "$final_path"
chmod -R o-rwx "$final_path" chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path" chown -R $app:$app "$final_path"
touch /var/log/$app.log touch /var/log/$app.log
chown $app:$app /var/log/$app.log chown $app:$app /var/log/$app.log
if [ ! -f $conf_file ]; then if [ ! -f $conf_file ]; then
ynh_configure server.conf $conf_file ynh_configure server.conf $conf_file
chmod 400 "$conf_file" chmod 400 "$conf_file"
chown $app:$app "$conf_file" chown $app:$app "$conf_file"
# Autoinstall the LDAP auth module # Autoinstall the LDAP auth module
if ls $final_path/$appname/$FORKNAME-bin > /dev/null ; then if ls $final_path/$appname/$FORKNAME-bin > /dev/null ; then
ynh_replace_string "^{$" "{'auto_install': True," $final_path/$appname/addons/auth_ldap/__manifest__.py ynh_replace_string "^{$" "{'auto_install': True," $final_path/$appname/addons/auth_ldap/__manifest__.py
else else
ynh_replace_string "'auto_install': False" "'auto_install': True" $final_path/$appname/addons/auth_ldap/__openerp__.py ynh_replace_string "'auto_install': False" "'auto_install': True" $final_path/$appname/addons/auth_ldap/__openerp__.py
fi fi
fi fi
} }
function setup_database() { function setup_database() {
export preinstall=1 export preinstall=1
ynh_configure server.conf $conf_file ynh_configure server.conf $conf_file
chown $app:$app $conf_file chown $app:$app $conf_file
# Load translation # 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=" --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 " 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 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 -i auth_ldap -d $app
ynh_exec_as $app $bin_file -c $conf_file --stop-after-init --load-language $lang -d $app ynh_exec_as $app $bin_file -c $conf_file --stop-after-init --load-language $lang -d $app
# Configure language, timezone and ldap # Configure language, timezone and ldap
ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \ ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \
" "
self.env['res.users'].search([['login', '=', 'admin']])[0].write({'password': '$admin_password'}) self.env['res.users'].search([['login', '=', 'admin']])[0].write({'password': '$admin_password'})
self.env.cr.commit() self.env.cr.commit()
" "
ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \ ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \
" "
self.write({'tz':'$tz','lang':'$lang'}) self.write({'tz':'$tz','lang':'$lang'})
self.env.cr.commit() self.env.cr.commit()
" "
ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \ ynh_exec_as $app $bin_file shell -c $conf_file -d $app <<< \
" "
template=env['res.users'].create({ template=env['res.users'].create({
'login':'template', 'login':'template',
@ -108,20 +110,20 @@ self.company_id.ldaps.create({
}) })
self.env.cr.commit() self.env.cr.commit()
" "
export preinstall=0 export preinstall=0
ynh_configure server.conf $conf_file ynh_configure server.conf $conf_file
chown $app:$app $conf_file chown $app:$app $conf_file
} }
ynh_configure () { ynh_configure () {
local TEMPLATE=$1 local TEMPLATE=$1
local DEST=$2 local DEST=$2
content="" content=""
content2="" content2=""
content3="" content3=""
if [[ $preinstall == '1' ]] if [[ $preinstall == '1' ]]
then then
content="dbfilter = $db_name" content="dbfilter = $db_name"
else else
content="db_name = $db_name" content="db_name = $db_name"
if [[ $app_version > 9 ]] if [[ $app_version > 9 ]]
@ -131,12 +133,12 @@ ynh_configure () {
content3="list_db = False" content3="list_db = False"
fi fi
mkdir -p "$(dirname $DEST)" mkdir -p "$(dirname $DEST)"
if [ -f '../manifest.json' ] ; then if [ -f '../manifest.json' ] ; then
ynh_add_config "${YNH_CWD}/../conf/$TEMPLATE" "$DEST" ynh_add_config "${YNH_CWD}/../conf/$TEMPLATE" "$DEST"
else else
ynh_add_config "${YNH_CWD}/../settings/conf/$TEMPLATE" "$DEST" ynh_add_config "${YNH_CWD}/../settings/conf/$TEMPLATE" "$DEST"
fi fi
} }
#================================================= #=================================================
@ -148,75 +150,75 @@ ynh_configure () {
# usage: ynh_add_swap --size=SWAP in Mb # usage: ynh_add_swap --size=SWAP in Mb
# | arg: -s, --size= - Amount of SWAP to add in Mb. # | arg: -s, --size= - Amount of SWAP to add in Mb.
ynh_add_swap () { ynh_add_swap () {
# Declare an array to define the options of this helper. # Declare an array to define the options of this helper.
declare -Ar args_array=( [s]=size= ) declare -Ar args_array=( [s]=size= )
local size local size
# Manage arguments with getopts # Manage arguments with getopts
ynh_handle_getopts_args "$@" ynh_handle_getopts_args "$@"
local swap_max_size=$(( $size * 1024 )) local swap_max_size=$(( $size * 1024 ))
local free_space=$(df --output=avail / | sed 1d) 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. # 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 )) local usable_space=$(( $free_space / 2 ))
SD_CARD_CAN_SWAP=${SD_CARD_CAN_SWAP:-0} SD_CARD_CAN_SWAP=${SD_CARD_CAN_SWAP:-0}
# Swap on SD card only if it's is specified # Swap on SD card only if it's is specified
if ynh_is_main_device_a_sd_card && [ "$SD_CARD_CAN_SWAP" == "0" ] if ynh_is_main_device_a_sd_card && [ "$SD_CARD_CAN_SWAP" == "0" ]
then 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'" 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 return
fi fi
# Compare the available space with the size of the swap. # Compare the available space with the size of the swap.
# And set a acceptable size from the request # And set a acceptable size from the request
if [ $usable_space -ge $swap_max_size ] if [ $usable_space -ge $swap_max_size ]
then then
local swap_size=$swap_max_size local swap_size=$swap_max_size
elif [ $usable_space -ge $(( $swap_max_size / 2 )) ] elif [ $usable_space -ge $(( $swap_max_size / 2 )) ]
then then
local swap_size=$(( $swap_max_size / 2 )) local swap_size=$(( $swap_max_size / 2 ))
elif [ $usable_space -ge $(( $swap_max_size / 3 )) ] elif [ $usable_space -ge $(( $swap_max_size / 3 )) ]
then then
local swap_size=$(( $swap_max_size / 3 )) local swap_size=$(( $swap_max_size / 3 ))
elif [ $usable_space -ge $(( $swap_max_size / 4 )) ] elif [ $usable_space -ge $(( $swap_max_size / 4 )) ]
then then
local swap_size=$(( $swap_max_size / 4 )) local swap_size=$(( $swap_max_size / 4 ))
else else
echo "Not enough space left for a swap file" >&2 echo "Not enough space left for a swap file" >&2
local swap_size=0 local swap_size=0
fi fi
# If there's enough space for a swap, and no existing swap here # If there's enough space for a swap, and no existing swap here
if [ $swap_size -ne 0 ] && [ ! -e /swap_$app ] if [ $swap_size -ne 0 ] && [ ! -e /swap_$app ]
then then
# Preallocate space for the swap file, fallocate may sometime not be used, use dd instead in this case # 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 if ! fallocate -l ${swap_size}K /swap_$app
then then
dd if=/dev/zero of=/swap_$app bs=1024 count=${swap_size} dd if=/dev/zero of=/swap_$app bs=1024 count=${swap_size}
fi fi
chmod 0600 /swap_$app chmod 0600 /swap_$app
# Create the swap # Create the swap
mkswap /swap_$app mkswap /swap_$app
# And activate it # And activate it
swapon /swap_$app swapon /swap_$app
# Then add an entry in fstab to load this swap at each boot. # 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 echo -e "/swap_$app swap swap defaults 0 0 #Swap added by $app" >> /etc/fstab
fi fi
} }
ynh_del_swap () { ynh_del_swap () {
# If there a swap at this place # If there a swap at this place
if [ -e /swap_$app ] if [ -e /swap_$app ]
then then
# Clean the fstab # Clean the fstab
sed -i "/#Swap added by $app/d" /etc/fstab sed -i "/#Swap added by $app/d" /etc/fstab
# Desactive the swap file # Desactive the swap file
swapoff /swap_$app swapoff /swap_$app
# And remove it # And remove it
rm /swap_$app rm /swap_$app
fi fi
} }
# Check if the device of the main mountpoint "/" is an SD card # Check if the device of the main mountpoint "/" is an SD card
@ -225,14 +227,14 @@ ynh_del_swap () {
# #
# return 0 if it's an SD card, else 1 # return 0 if it's an SD card, else 1
ynh_is_main_device_a_sd_card () { ynh_is_main_device_a_sd_card () {
local main_device=$(lsblk --output PKNAME --noheadings $(findmnt / --nofsroot --uniq --output source --noheadings --first-only)) 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" ] if echo $main_device | grep --quiet "mmc" && [ $(tail -n1 /sys/block/$main_device/queue/rotational) == "0" ]
then then
return 0 return 0
else else
return 1 return 1
fi fi
} }
#================================================= #=================================================

View file

@ -25,12 +25,12 @@ ynh_abort_if_errors
domain=$YNH_APP_ARG_DOMAIN domain=$YNH_APP_ARG_DOMAIN
path_url="/" path_url="/"
admin=$YNH_APP_ARG_ADMIN
export app_version=$YNH_APP_ARG_VERSION export app_version=$YNH_APP_ARG_VERSION
oca=$YNH_APP_ARG_OCA oca=$YNH_APP_ARG_OCA
admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
lang=$YNH_APP_ARG_LANG lang=$YNH_APP_ARG_LANG
tz=$YNH_APP_ARG_TZ tz=$YNH_APP_ARG_TZ
admin=$YNH_APP_ARG_ADMIN
admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
export app=$YNH_APP_INSTANCE_NAME export app=$YNH_APP_INSTANCE_NAME
@ -47,10 +47,10 @@ test ! -e "$final_path" || ynh_die --message="This path already contains a folde
export bin_file="$final_path/venv/bin/python3 $final_path/$appname/$FORKNAME-bin" export bin_file="$final_path/venv/bin/python3 $final_path/$appname/$FORKNAME-bin"
if [ "$app_version" = "9" ]; then if [ "$app_version" = "9" ]; then
bin_file="$final_path/venv/bin/python3 $final_path/$appname/$FORKNAME.py" bin_file="$final_path/venv/bin/python3 $final_path/$appname/$FORKNAME.py"
fi fi
if [ "$app_version" = "8" ]; then if [ "$app_version" = "8" ]; then
bin_file="$final_path/venv/bin/python3 $final_path/$appname/$FORKNAME.py" bin_file="$final_path/venv/bin/python3 $final_path/$appname/$FORKNAME.py"
fi fi
# Register (book) web path # Register (book) web path
@ -141,10 +141,10 @@ ynh_add_nginx_config
#================================================= #=================================================
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
: :
else else
ynh_script_progression --message="Adding swap..." ynh_script_progression --message="Adding swap..."
ynh_add_swap --size=$swap_needed ynh_add_swap --size=$swap_needed
fi fi
#================================================= #=================================================
@ -153,26 +153,32 @@ fi
ynh_script_progression --message="Building $app..." ynh_script_progression --message="Building $app..."
if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then
# The debian package has a bug so we deploy a more recent version # The debian package has a bug so we deploy a more recent version
if [ -f '../manifest.json' ] ; then if [ -f '../manifest.json' ] ; then
ynh_setup_source /usr/ ynh_setup_source /usr/
else else
OLD_YNH_CWD=$YNH_CWD OLD_YNH_CWD=$YNH_CWD
YNH_CWD=$YNH_CWD/../settings/conf YNH_CWD=$YNH_CWD/../settings/conf
ynh_setup_source /usr/ ynh_setup_source /usr/
YNH_CWD=$OLD_YNH_CWD YNH_CWD=$OLD_YNH_CWD
fi fi
fi fi
pushd $final_path pushd $final_path
if grep "python3" $final_path/$appname/$FORKNAME-bin ; then RUSTUP_HOME="$final_path/.rustup" CARGO_HOME="$final_path/.cargo" bash -c 'curl -sSf -L https://static.rust-lang.org/rustup.sh | sh -s -- -y --default-toolchain=stable --profile=minimal'
python3 -m venv venv PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin"
venv/bin/pip3 install wheel if grep "python3" $final_path/$appname/$FORKNAME-bin ; then
venv/bin/pip3 install -r $appname/requirements.txt python3 -m venv venv
else venv/bin/pip3 install --upgrade pip
virtualenv venv venv/bin/pip3 install wheel
venv/bin/pip install wheel venv/bin/pip3 install -r $appname/requirements.txt
venv/bin/pip install -r $appname/requirements.txt else
fi virtualenv venv
venv/bin/pip3 install --upgrade pip
venv/bin/pip install wheel
venv/bin/pip install -r $appname/requirements.txt
fi
ynh_secure_remove --file="$final_path/.cargo"
ynh_secure_remove --file="$final_path/.rustup"
popd popd
#================================================= #=================================================

View file

@ -40,10 +40,10 @@ export final_path=$(ynh_app_setting_get --app=$app --key=final_path)
export conf_file=$(ynh_app_setting_get --app=$app --key=conf_file) export conf_file=$(ynh_app_setting_get --app=$app --key=conf_file)
export bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME-bin" export bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME-bin"
if [ "$app_version" = "9" ]; then if [ "$app_version" = "9" ]; then
bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME.py" bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME.py"
fi fi
if [ "$app_version" = "8" ]; then if [ "$app_version" = "8" ]; then
bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME.py" bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME.py"
fi fi
export preinstall=0 export preinstall=0
@ -57,13 +57,6 @@ test ! -d $final_path \
#================================================= #=================================================
# STANDARD RESTORATION STEPS # STANDARD RESTORATION STEPS
#=================================================
# RESTORE THE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the NGINX web server configuration..."
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# RECREATE THE DEDICATED USER # RECREATE THE DEDICATED USER
#================================================= #=================================================
@ -95,15 +88,22 @@ ynh_script_progression --message="Reinstalling dependencies..."
# Define and install dependencies # Define and install dependencies
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
#=================================================
# RESTORE THE NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Restoring the NGINX web server configuration..."
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
# ADD SWAP # ADD SWAP
#================================================= #=================================================
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
: :
else else
ynh_script_progression --message="Adding swap..." ynh_script_progression --message="Adding swap..."
ynh_add_swap --size=$swap_needed ynh_add_swap --size=$swap_needed
fi fi
#================================================= #=================================================
@ -112,26 +112,32 @@ fi
ynh_script_progression --message="Building $app..." ynh_script_progression --message="Building $app..."
if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then
# The debian package has a bug so we deploy a more recent version # The debian package has a bug so we deploy a more recent version
if [ -f '../manifest.json' ] ; then if [ -f '../manifest.json' ] ; then
ynh_setup_source /usr/ ynh_setup_source /usr/
else else
OLD_YNH_CWD=$YNH_CWD OLD_YNH_CWD=$YNH_CWD
YNH_CWD=$YNH_CWD/../settings/conf YNH_CWD=$YNH_CWD/../settings/conf
ynh_setup_source /usr/ ynh_setup_source /usr/
YNH_CWD=$OLD_YNH_CWD YNH_CWD=$OLD_YNH_CWD
fi fi
fi fi
pushd $final_path pushd $final_path
if grep "python3" $final_path/$appname/$FORKNAME-bin ; then RUSTUP_HOME="$final_path/.rustup" CARGO_HOME="$final_path/.cargo" bash -c 'curl -sSf -L https://static.rust-lang.org/rustup.sh | sh -s -- -y --default-toolchain=stable --profile=minimal'
python3 -m venv venv PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin"
venv/bin/pip3 install wheel if grep "python3" $final_path/$appname/$FORKNAME-bin ; then
venv/bin/pip3 install -r $appname/requirements.txt python3 -m venv venv
else venv/bin/pip3 install --upgrade pip
virtualenv venv venv/bin/pip3 install wheel
venv/bin/pip install wheel venv/bin/pip3 install -r $appname/requirements.txt
venv/bin/pip install -r $appname/requirements.txt else
fi virtualenv venv
venv/bin/pip3 install --upgrade pip
venv/bin/pip install wheel
venv/bin/pip install -r $appname/requirements.txt
fi
ynh_secure_remove --file="$final_path/.cargo"
ynh_secure_remove --file="$final_path/.rustup"
popd popd
#================================================= #=================================================

View file

@ -100,6 +100,14 @@ ynh_script_progression --message="Upgrading dependencies..."
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Upgrading NGINX web server configuration..."
# Create a dedicated NGINX config
ynh_add_nginx_config
#================================================= #=================================================
# SPECIFIC UPGRADE # SPECIFIC UPGRADE
#================================================= #=================================================
@ -107,10 +115,10 @@ ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
#================================================= #=================================================
if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
: :
else else
ynh_script_progression --message="Adding swap..." ynh_script_progression --message="Adding swap..."
ynh_add_swap --size=$swap_needed ynh_add_swap --size=$swap_needed
fi fi
#================================================= #=================================================
@ -119,26 +127,32 @@ fi
ynh_script_progression --message="Building $app..." ynh_script_progression --message="Building $app..."
if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then if ! wkhtmltopdf --version | grep "wkhtmltopdf 0.12.4 (with patched qt)"; then
# The debian package has a bug so we deploy a more recent version # The debian package has a bug so we deploy a more recent version
if [ -f '../manifest.json' ] ; then if [ -f '../manifest.json' ] ; then
ynh_setup_source /usr/ ynh_setup_source /usr/
else else
OLD_YNH_CWD=$YNH_CWD OLD_YNH_CWD=$YNH_CWD
YNH_CWD=$YNH_CWD/../settings/conf YNH_CWD=$YNH_CWD/../settings/conf
ynh_setup_source /usr/ ynh_setup_source /usr/
YNH_CWD=$OLD_YNH_CWD YNH_CWD=$OLD_YNH_CWD
fi fi
fi fi
pushd $final_path pushd $final_path
if grep "python3" $final_path/$appname/$FORKNAME-bin ; then RUSTUP_HOME="$final_path/.rustup" CARGO_HOME="$final_path/.cargo" bash -c 'curl -sSf -L https://static.rust-lang.org/rustup.sh | sh -s -- -y --default-toolchain=stable --profile=minimal'
python3 -m venv venv PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin"
venv/bin/pip3 install wheel if grep "python3" $final_path/$appname/$FORKNAME-bin ; then
venv/bin/pip3 install -r $appname/requirements.txt python3 -m venv venv
else venv/bin/pip3 install --upgrade pip
virtualenv venv venv/bin/pip3 install wheel
venv/bin/pip install wheel venv/bin/pip3 install -r $appname/requirements.txt
venv/bin/pip install -r $appname/requirements.txt else
fi virtualenv venv
venv/bin/pip3 install --upgrade pip
venv/bin/pip install wheel
venv/bin/pip install -r $appname/requirements.txt
fi
ynh_secure_remove --file="$final_path/.cargo"
ynh_secure_remove --file="$final_path/.rustup"
popd popd
#================================================= #=================================================