This commit is contained in:
yalh76 2022-06-17 13:32:01 +02:00
parent 81984fa0c4
commit d740a9e440
4 changed files with 222 additions and 202 deletions

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

@ -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
@ -100,10 +100,10 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
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

@ -115,10 +115,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
#================================================= #=================================================
@ -127,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
#================================================= #=================================================