Use venv instead of user for pip for bookworm compat

This commit is contained in:
Josué Tille 2023-10-04 20:56:57 +02:00
parent 5608d53bce
commit f8db1e5f91
No known key found for this signature in database
GPG key ID: 716A6C99B04194EF
3 changed files with 33 additions and 10 deletions

View file

@ -112,7 +112,7 @@ ram.runtime = "500M"
[resources.apt] [resources.apt]
packages = ["expect", "ffmpeg", "pkgconf", "mariadb-server", packages = ["expect", "ffmpeg", "pkgconf", "mariadb-server",
"python3", "python3-setuptools", "python3-pip", "python3-requests", "python3-dev", "libmariadb-dev-compat", "libmariadb-dev", "python3", "python3-venv", "python3-setuptools", "python3-pip", "python3-requests", "python3-dev", "libmariadb-dev-compat", "libmariadb-dev",
"memcached", "libmemcached-dev", "memcached", "libmemcached-dev",
"python3-scipy", "python3-matplotlib", "python3-scipy", "python3-matplotlib",
"libjpeg62-turbo-dev", "zlib1g-dev", "libffi-dev"] "libjpeg62-turbo-dev", "zlib1g-dev", "libffi-dev"]

View file

@ -3,6 +3,7 @@
#================================================= #=================================================
time_zone=$(cat /etc/timezone) time_zone=$(cat /etc/timezone)
python_version="$(python3 -V | cut -d' ' -f2 | cut -d. -f1-2)"
#================================================= #=================================================
# DEFINE ALL COMMON FONCTIONS # DEFINE ALL COMMON FONCTIONS
@ -10,13 +11,39 @@ time_zone=$(cat /etc/timezone)
install_dependance() { install_dependance() {
ynh_add_swap --size=2000 ynh_add_swap --size=2000
# We need to do that because we can have some issue about the permission access to the pip cache without this
chown -R $YNH_APP_ID $install_dir # Clean venv is it was on python3 with old version in case major upgrade of debian
chmod u+rwX -R $install_dir if [ ! -e $install_dir/venv/bin/python3 ] || [ ! -e $install_dir/venv/lib/python$python_version ]; then
ynh_secure_remove --file=$install_dir/venv/bin
ynh_secure_remove --file=$install_dir/venv/lib
ynh_secure_remove --file=$install_dir/venv/lib64
ynh_secure_remove --file=$install_dir/venv/include
ynh_secure_remove --file=$install_dir/venv/share
ynh_secure_remove --file=$install_dir/venv/pyvenv.cfg
fi
# Create venv if it don't exist
test -e $install_dir/venv/bin/python3 || python3 -m venv $install_dir/venv
u_arg='u'
set +$u_arg;
source $install_dir/venv/bin/activate
set -$u_arg;
# Note that we install imageio to force the dependance, without this imageio 2.8 is installed and it need python3.5 # Note that we install imageio to force the dependance, without this imageio 2.8 is installed and it need python3.5
sudo -u $YNH_APP_ID pip3 install --user --no-warn-script-location --upgrade future mysqlclient PyMySQL 'Pillow<10.0.0' pylibmc captcha Jinja2 'SQLAlchemy<2' psd-tools django-pylibmc django-simple-captcha python3-ldap pycryptodome==3.12.0 cffi==1.14.0 lxml pip3 install --upgrade future mysqlclient PyMySQL 'Pillow<10.0.0' pylibmc captcha Jinja2 'SQLAlchemy<2' psd-tools django-pylibmc django-simple-captcha python3-ldap pycryptodome==3.12.0 cffi==1.14.0 lxml
set +$u_arg;
deactivate
set -$u_arg;
ynh_del_swap ynh_del_swap
# Create symbolic link to venv package on seahub
ls $install_dir/venv/lib/python$python_version/site-packages | while read f; do
if [ ! -e "$install_dir/seafile-server-$seafile_version/seahub/thirdpart/$f" ]; then
ln -s ../../../venv/lib/python$python_version/site-packages/$f $install_dir/seafile-server-$seafile_version/seahub/thirdpart/$f
fi
done
} }
mv_expect_scripts() { mv_expect_scripts() {
@ -28,7 +55,7 @@ mv_expect_scripts() {
set_permission() { set_permission() {
chown -R $YNH_APP_ID:$YNH_APP_ID $install_dir chown -R $YNH_APP_ID:$YNH_APP_ID $install_dir
chmod -R u+rw,g-wx,o= $install_dir chmod -R u+rwX,g-wx,o= $install_dir
setfacl -m user:www-data:rX $install_dir setfacl -m user:www-data:rX $install_dir
setfacl -m user:www-data:rX $install_dir/seafile-server-$seafile_version setfacl -m user:www-data:rX $install_dir/seafile-server-$seafile_version
# At install time theses directory are not available # At install time theses directory are not available
@ -36,7 +63,6 @@ set_permission() {
test -e $install_dir/seafile-server-latest/seahub/media && setfacl -R -m user:www-data:rX $install_dir/seafile-server-latest/seahub/media test -e $install_dir/seafile-server-latest/seahub/media && setfacl -R -m user:www-data:rX $install_dir/seafile-server-latest/seahub/media
test -e $install_dir/seahub-data && setfacl -R -m user:www-data:rX $install_dir/seahub-data test -e $install_dir/seahub-data && setfacl -R -m user:www-data:rX $install_dir/seahub-data
# check that this directory exist because in some really old install the data could still be in the main seafile directory
# We also check at the install time when data directory is not already initialised # We also check at the install time when data directory is not already initialised
if [ -e /home/yunohost.app/seafile-data ]; then if [ -e /home/yunohost.app/seafile-data ]; then
chown -R $YNH_APP_ID /home/yunohost.app/seafile-data chown -R $YNH_APP_ID /home/yunohost.app/seafile-data

View file

@ -24,9 +24,6 @@ seafile_version=$(ynh_app_upstream_version)
ynh_script_progression --message="Restoring files..." --weight=10 ynh_script_progression --message="Restoring files..." --weight=10
ynh_restore ynh_restore
# Restore dependencies
install_dependance
# Restore mysql dump # Restore mysql dump
ynh_script_progression --message="Restoring database..." --weight=3 ynh_script_progression --message="Restoring database..." --weight=3
db_helper=ynh_"mysql"_setup_db db_helper=ynh_"mysql"_setup_db