diff --git a/README.md b/README.md index ec9deb9..7d6894a 100644 --- a/README.md +++ b/README.md @@ -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. -**Shipped version:** 12.0~ynh6 +**Shipped version:** 15.0~ynh1 **Demo:** https://www.odoo.com/trial ## Disclaimers / important information diff --git a/README_fr.md b/README_fr.md index 4fd3338..8cdb225 100644 --- a/README_fr.md +++ b/README_fr.md @@ -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. -**Version incluse :** 12.0~ynh6 +**Version incluse :** 15.0~ynh1 **Démo :** https://www.odoo.com/trial ## Avertissements / informations importantes diff --git a/check_process b/check_process index c66d406..9ecb67c 100644 --- a/check_process +++ b/check_process @@ -1,12 +1,37 @@ -;; Test complet sans multisite +;; Test complet sans multisite v14 auto_remove=1 ; Manifest domain="domain.tld" - version="14" - oca=0 - admin_password="testpassw0rD" + version="14" + oca=0 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 pkg_linter=1 setup_sub_dir=0 @@ -15,8 +40,6 @@ setup_private=0 setup_public=1 upgrade=1 - # 12.0-6 - # upgrade=1 from_commit=2cfdbc229faa8700873e681a01f823c32475cca8 backup_restore=1 multi_instance=1 port_already_use=0 diff --git a/conf/10.src b/conf/10.src index 295d69e..512c90b 100644 --- a/conf/10.src +++ b/conf/10.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/odoo/odoo/archive/f69c004795e0a7f32d5c6243cc3d4915cf010bbe.tar.gz -SOURCE_SUM=79bfb272bc48509390386de357413e34bbb10fceee0662ca89e9e18383ed522f +SOURCE_URL=https://github.com/odoo/odoo/archive/28c3f51c4878fbcd79b2e819948465fcf2160ebc.tar.gz +SOURCE_SUM=880be8b9e5a57e67d6645a527efd83224319d8fc645cbd72f24e7e50a75ff31d SOURCE_FILENAME=odoo-10.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/11.src b/conf/11.src index 1414a9d..1653db3 100644 --- a/conf/11.src +++ b/conf/11.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/odoo/odoo/archive/d129b0220eb0c76c8677c6ee0f60306f57cf2c8f.tar.gz -SOURCE_SUM=2e209236c56b78bb410639f3f0c102479c37fdb293cb51d3f6fdd6ad20fa610f +SOURCE_URL=https://github.com/odoo/odoo/archive/43200e9dcc1d91cfd5c1e5e939b27e713d20cc7c.tar.gz +SOURCE_SUM=71418fc5536242de72baa2d17b38a439252956fbbb1ebc3e2294c858674c4659 SOURCE_FILENAME=odoo-11.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/12.src b/conf/12.src index 295c3d4..59e2fc0 100644 --- a/conf/12.src +++ b/conf/12.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/odoo/odoo/archive/336c9aab3619abb5bfbeb07f87ae014facdefb0b.tar.gz -SOURCE_SUM=3d37bc31383bfad827c3fdbab4daa3914ad036fd70fe1f20925ed18d2b9e1f87 +SOURCE_URL=https://github.com/odoo/odoo/archive/04e37773d1bf9b885be674d85bdf0ec069926958.tar.gz +SOURCE_SUM=023afbaada2182cd6e54c0717915f7585e6899e2c23ad54d9f2372e88bcf35ec SOURCE_FILENAME=odoo-12.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/14.src b/conf/14.src index 8da0284..0524257 100644 --- a/conf/14.src +++ b/conf/14.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/odoo/odoo/archive/d8322e64c6d999ffc72093b2ef2db91532138c89.tar.gz -SOURCE_SUM=40cbbc93ab594f614499ccdd04922590c420bfadeaf2f889853a5d58073e5fef +SOURCE_URL=https://github.com/odoo/odoo/archive/5a8690b35a2fa9c5ed81d858ac0d170beaabaaf9.tar.gz +SOURCE_SUM=b52829b5f01f39d8e9bd6977eb1b9c23053e92c7574ec26e5b3d218522fccf3a SOURCE_FILENAME=odoo-14.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/15.src b/conf/15.src new file mode 100644 index 0000000..bbc2922 --- /dev/null +++ b/conf/15.src @@ -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 diff --git a/conf/9.src b/conf/9.src index d8d3ddc..5983b00 100644 --- a/conf/9.src +++ b/conf/9.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/odoo/odoo/archive/a25432cd357124242cc6e8ead19b09d58ba530ae.tar.gz -SOURCE_SUM=2e85eaaeb2609223ddda38877715aca5afb7fb8f794bef85e147e7e18e285e05 +SOURCE_URL=https://github.com/odoo/odoo/archive/7132a15c38a3b5e5ec232404d21aacfa2ac5874e.tar.gz +SOURCE_SUM=f4c522da29201835435b01c651032d07c2d0c0e8a14b30f9a784cb531c5ba250 SOURCE_FILENAME=odoo-9.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/nginx.conf b/conf/nginx.conf index 7a361c9..6ffff73 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,51 +1,51 @@ location / { - if ($scheme = http) { - rewrite ^ https://$server_name$request_uri? permanent; - } - try_files $uri @__APP__; + 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; - proxy_buffers 16 64k; - proxy_buffer_size 128k; - proxy_redirect off; - 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 @__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; + proxy_buffers 16 64k; + proxy_buffer_size 128k; + proxy_redirect off; + 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 { - proxy_pass http://127.0.0.1:__PORT_CHAT__; - 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; + proxy_pass http://127.0.0.1:__PORT_CHAT__; + 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 ~* /web/static/ { - proxy_cache_valid 200 90m; - proxy_buffering on; - expires 864000; - proxy_pass http://127.0.0.1:__PORT__; - 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; + proxy_cache_valid 200 90m; + proxy_buffering on; + expires 864000; + proxy_pass http://127.0.0.1:__PORT__; + 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; } diff --git a/conf/oca-12.src b/conf/oca-12.src index 5e7f51d..22a053a 100644 --- a/conf/oca-12.src +++ b/conf/oca-12.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/OCA/OCB/archive/4df6b0b164c6f384fdb7df40e51e80780572273a.tar.gz -SOURCE_SUM=e064dcd121ca207cbfa18c5f5f63c394ee6a1ca03f9ebbd6b88e6a62dda6bca0 +SOURCE_URL=https://github.com/OCA/OCB/archive/f38c99acbea6e1ab42deddb468b9710cabccfbdf.tar.gz +SOURCE_SUM=55cb5e87022a87cf13c9d74bf094da2c098cf64fb8fdacbf42fadeea2479daa0 SOURCE_FILENAME=odoo-12.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/oca-14.src b/conf/oca-14.src index 4f5e8f4..5c55562 100644 --- a/conf/oca-14.src +++ b/conf/oca-14.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/OCA/OCB/archive/b7dc86b530718c090ba26b8eea0154d1c50c05f2.tar.gz -SOURCE_SUM=d2ca8bbe913e90f1623c6f2375d4cd2c40d4ed4abb650e66f7691669cbab90fa +SOURCE_URL=https://github.com/OCA/OCB/archive/e1e9e7420a5b5b32d5359ffed19e718080764ddd.tar.gz +SOURCE_SUM=acfbf7a2428a51962d1d1a084c5a959a392c522b8aad7b98d7abac75c84259d9 SOURCE_FILENAME=odoo-14.tar.gz SOURCE_FORMAT=tar.gz SOURCE_SUM_PRG=sha256sum diff --git a/conf/oca-15.src b/conf/oca-15.src new file mode 100644 index 0000000..8a4c90f --- /dev/null +++ b/conf/oca-15.src @@ -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 diff --git a/manifest.json b/manifest.json index 38d53c0..61847cd 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "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, ...)." }, - "version": "12.0~ynh6", + "version": "15.0~ynh1", "url": "https://odoo.com", "upstream": { "license": "LGPL-3.0-only", @@ -37,10 +37,6 @@ "name": "domain", "type": "domain" }, - { - "name": "admin", - "type": "user" - }, { "name": "version", "type": "string", @@ -48,8 +44,8 @@ "en": "Choose the version you want", "fr": "Choisissez la version désirée" }, - "choices": ["11", "12", "14"], - "default": "14" + "choices": ["11", "12", "14", "15"], + "default": "15" }, { "name": "oca", @@ -60,14 +56,6 @@ "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", "type": "string", @@ -86,6 +74,18 @@ "fr": "Choisissez un fuseau horaire" }, "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" + } } ] } diff --git a/scripts/_common.sh b/scripts/_common.sh index 3497fe9..50162bf 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -17,76 +17,78 @@ pkg_dependencies="curl postgresql xfonts-75dpi xfonts-base wkhtmltopdf node-less #================================================= function debranding() { - # 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 ]*>Odoo<\/a>//g' {} \; - find $final_path/$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/]*>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[^>]*><\/a>//g' {} \; - sed -i 's/]*>My Odoo.com account<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml - sed -i 's/]*>Documentation<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml - sed -i 's/]*>Support<\/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 - cp ../conf/favicon.ico $final_path/$appname/addons/web/static/src/img/favicon.ico + # 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 ]*>Odoo<\/a>//g' {} \; + find $final_path/$appname -type f \( -iname '*.xml' -o -iname '*.po' \) -exec sed -i 's/]*>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[^>]*><\/a>//g' {} \; + if test -f "$final_path/$appname/addons/web/static/src/xml/base.xml"; then + sed -i 's/]*>My Odoo.com account<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml + sed -i 's/]*>Documentation<\/a>//g' $final_path/$appname/addons/web/static/src/xml/base.xml + sed -i 's/]*>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 + cp ../conf/favicon.ico $final_path/$appname/addons/web/static/src/img/favicon.ico } function setup_files() { - 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" + 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" chown $app:$app "$conf_file" - # 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 + # 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 } function setup_database() { - 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 <<< \ + 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 <<< \ " self.env['res.users'].search([['login', '=', 'admin']])[0].write({'password': '$admin_password'}) 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.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({ 'login':'template', @@ -108,20 +110,20 @@ self.company_id.ldaps.create({ }) self.env.cr.commit() " - export preinstall=0 - ynh_configure server.conf $conf_file - chown $app:$app $conf_file + export preinstall=0 + ynh_configure server.conf $conf_file + chown $app:$app $conf_file } ynh_configure () { - local TEMPLATE=$1 - local DEST=$2 - content="" - content2="" - content3="" - if [[ $preinstall == '1' ]] - then - content="dbfilter = $db_name" + local TEMPLATE=$1 + local DEST=$2 + content="" + content2="" + content3="" + if [[ $preinstall == '1' ]] + then + content="dbfilter = $db_name" else content="db_name = $db_name" if [[ $app_version > 9 ]] @@ -131,12 +133,12 @@ ynh_configure () { content3="list_db = False" fi - 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 + 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 } #================================================= @@ -148,75 +150,75 @@ ynh_configure () { # usage: ynh_add_swap --size=SWAP in Mb # | arg: -s, --size= - Amount of SWAP to add in Mb. ynh_add_swap () { - # 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 "$@" + # 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 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 )) + 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} + 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 + # 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 + # 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 + # 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 } ynh_del_swap () { - # 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 + # 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 } # 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 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" ] - then - return 0 - else - return 1 - fi + if echo $main_device | grep --quiet "mmc" && [ $(tail -n1 /sys/block/$main_device/queue/rotational) == "0" ] + then + return 0 + else + return 1 + fi } #================================================= diff --git a/scripts/install b/scripts/install index e37aba6..eb5f1fc 100644 --- a/scripts/install +++ b/scripts/install @@ -25,12 +25,12 @@ ynh_abort_if_errors domain=$YNH_APP_ARG_DOMAIN path_url="/" -admin=$YNH_APP_ARG_ADMIN export app_version=$YNH_APP_ARG_VERSION oca=$YNH_APP_ARG_OCA -admin_password=$YNH_APP_ARG_ADMIN_PASSWORD lang=$YNH_APP_ARG_LANG tz=$YNH_APP_ARG_TZ +admin=$YNH_APP_ARG_ADMIN +admin_password=$YNH_APP_ARG_ADMIN_PASSWORD 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" 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 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 # Register (book) web path @@ -141,10 +141,10 @@ ynh_add_nginx_config #================================================= if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then - : + : else - ynh_script_progression --message="Adding swap..." - ynh_add_swap --size=$swap_needed + ynh_script_progression --message="Adding swap..." + ynh_add_swap --size=$swap_needed fi #================================================= @@ -153,26 +153,32 @@ fi ynh_script_progression --message="Building $app..." 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 - if [ -f '../manifest.json' ] ; then - ynh_setup_source /usr/ - else - OLD_YNH_CWD=$YNH_CWD - YNH_CWD=$YNH_CWD/../settings/conf - ynh_setup_source /usr/ - YNH_CWD=$OLD_YNH_CWD - fi + # The debian package has a bug so we deploy a more recent version + if [ -f '../manifest.json' ] ; then + ynh_setup_source /usr/ + else + OLD_YNH_CWD=$YNH_CWD + YNH_CWD=$YNH_CWD/../settings/conf + ynh_setup_source /usr/ + YNH_CWD=$OLD_YNH_CWD + fi fi pushd $final_path - if grep "python3" $final_path/$appname/$FORKNAME-bin ; then - python3 -m venv venv - venv/bin/pip3 install wheel - venv/bin/pip3 install -r $appname/requirements.txt - else - virtualenv venv - venv/bin/pip install wheel - venv/bin/pip install -r $appname/requirements.txt - fi + 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' + PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin" + if grep "python3" $final_path/$appname/$FORKNAME-bin ; then + python3 -m venv venv + venv/bin/pip3 install --upgrade pip + venv/bin/pip3 install wheel + venv/bin/pip3 install -r $appname/requirements.txt + else + 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 #================================================= diff --git a/scripts/restore b/scripts/restore index 2effee2..ed0ac2a 100644 --- a/scripts/restore +++ b/scripts/restore @@ -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 bin_file="$final_path/venv/bin/python $final_path/$appname/$FORKNAME-bin" 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 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 export preinstall=0 @@ -57,13 +57,6 @@ test ! -d $final_path \ #================================================= # 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 #================================================= @@ -95,15 +88,22 @@ ynh_script_progression --message="Reinstalling dependencies..." # Define and install 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 #================================================= if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then - : + : else - ynh_script_progression --message="Adding swap..." - ynh_add_swap --size=$swap_needed + ynh_script_progression --message="Adding swap..." + ynh_add_swap --size=$swap_needed fi #================================================= @@ -112,26 +112,32 @@ fi ynh_script_progression --message="Building $app..." 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 - if [ -f '../manifest.json' ] ; then - ynh_setup_source /usr/ - else - OLD_YNH_CWD=$YNH_CWD - YNH_CWD=$YNH_CWD/../settings/conf - ynh_setup_source /usr/ - YNH_CWD=$OLD_YNH_CWD - fi + # The debian package has a bug so we deploy a more recent version + if [ -f '../manifest.json' ] ; then + ynh_setup_source /usr/ + else + OLD_YNH_CWD=$YNH_CWD + YNH_CWD=$YNH_CWD/../settings/conf + ynh_setup_source /usr/ + YNH_CWD=$OLD_YNH_CWD + fi fi pushd $final_path - if grep "python3" $final_path/$appname/$FORKNAME-bin ; then - python3 -m venv venv - venv/bin/pip3 install wheel - venv/bin/pip3 install -r $appname/requirements.txt - else - virtualenv venv - venv/bin/pip install wheel - venv/bin/pip install -r $appname/requirements.txt - fi + 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' + PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin" + if grep "python3" $final_path/$appname/$FORKNAME-bin ; then + python3 -m venv venv + venv/bin/pip3 install --upgrade pip + venv/bin/pip3 install wheel + venv/bin/pip3 install -r $appname/requirements.txt + else + 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 #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index bd9ae58..5eb8b24 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -100,6 +100,14 @@ ynh_script_progression --message="Upgrading 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 #================================================= @@ -107,10 +115,10 @@ ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies #================================================= if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then - : + : else - ynh_script_progression --message="Adding swap..." - ynh_add_swap --size=$swap_needed + ynh_script_progression --message="Adding swap..." + ynh_add_swap --size=$swap_needed fi #================================================= @@ -119,26 +127,32 @@ fi ynh_script_progression --message="Building $app..." 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 - if [ -f '../manifest.json' ] ; then - ynh_setup_source /usr/ - else - OLD_YNH_CWD=$YNH_CWD - YNH_CWD=$YNH_CWD/../settings/conf - ynh_setup_source /usr/ - YNH_CWD=$OLD_YNH_CWD - fi + # The debian package has a bug so we deploy a more recent version + if [ -f '../manifest.json' ] ; then + ynh_setup_source /usr/ + else + OLD_YNH_CWD=$YNH_CWD + YNH_CWD=$YNH_CWD/../settings/conf + ynh_setup_source /usr/ + YNH_CWD=$OLD_YNH_CWD + fi fi pushd $final_path - if grep "python3" $final_path/$appname/$FORKNAME-bin ; then - python3 -m venv venv - venv/bin/pip3 install wheel - venv/bin/pip3 install -r $appname/requirements.txt - else - virtualenv venv - venv/bin/pip install wheel - venv/bin/pip install -r $appname/requirements.txt - fi + 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' + PATH="$PATH:$final_path/.cargo/bin:$final_path/.local/bin:/usr/local/sbin" + if grep "python3" $final_path/$appname/$FORKNAME-bin ; then + python3 -m venv venv + venv/bin/pip3 install --upgrade pip + venv/bin/pip3 install wheel + venv/bin/pip3 install -r $appname/requirements.txt + else + 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 #=================================================