1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/retroarch_ynh.git synced 2024-09-03 20:16:12 +02:00

Merge pull request #56 from YunoHost-Apps/convert-v2

Convert v2
This commit is contained in:
Krakinou 2023-08-20 18:35:42 +02:00 committed by GitHub
commit df063b9cb6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 137 additions and 3036 deletions

View file

@ -22,31 +22,14 @@ In addition to this, you are able to run original game discs (CDs) from RetroArc
RetroArch has advanced features like shaders, netplay, rewinding, next-frame response times, runahead, machine translation, blind accessibility features, and more!
**Shipped version:** 1.15.0~ynh2
**Shipped version:** 1.15.0~ynh3
**Demo:** https://web.libretro.com/
## Screenshots
![Screenshot of Retroarch Web Player](./doc/screenshots/XMB-main-menu.jpg)
![Screenshot of Retroarch Web Player](./doc/screenshots/rgui-main-menu.jpg)
![Screenshot of Retroarch Web Player](./doc/screenshots/ozone-main-menu.jpg)
## Disclaimers / important information
### Use Shared ROMs library
Although you can upload a ROM at runtime, retroarch may have access to the ROMs you already have on your server:
* Games are located in `/opt/yunohost/retroarch/assets/cores`. A symbolic link is created to this folder in `/home/yunohost.multimedia/share/Games`, so that you can place your games from here
* cores have to be indexed to work : script `/opt/yunohost/retroarch/indexer.sh` run every 5 minutes to index all games in `opt/yunohost/retroarch/assets/cores`
### Limitations
* Cannot save game, in fact, cannot write at all... so configuration is lost each time you start again
* No user management
* Some core are listed but not implemented : they do not work, the issue is from the upstream app.
## Documentation and resources
* Official app website: <http://www.retroarch.com/>

View file

@ -22,30 +22,14 @@ In addition to this, you are able to run original game discs (CDs) from RetroArc
RetroArch has advanced features like shaders, netplay, rewinding, next-frame response times, runahead, machine translation, blind accessibility features, and more!
**Version incluse :** 1.15.0~ynh2
**Version incluse :** 1.15.0~ynh3
**Démo :** https://web.libretro.com/
## Captures décran
![Capture décran de Retroarch Web Player](./doc/screenshots/XMB-main-menu.jpg)
![Capture décran de Retroarch Web Player](./doc/screenshots/rgui-main-menu.jpg)
![Capture décran de Retroarch Web Player](./doc/screenshots/ozone-main-menu.jpg)
## Avertissements / informations importantes
### Bibliothèque partagée
Même si vous pouvez uploader une ROM depuis l'application, RetroArch peut accéder à celle déjà sur votre serveur:
* Les jeux sont situés dans `/opt/yunohost/retroarch/assets/cores`. Un lien symbolique est créé vers `/home/yunohost.multimedia/share/Games` de façon à ce que vous puissiez les y mettre facilement.
* Les cores doivent être indexés pour fonctionner : le script `/opt/yunohost/retroarch/indexer.sh` tourne toutes les 5 minutes pour indexer tous les jeux dans `opt/yunohost/retroarch/assets/cores`
### Limitations
* On ne peut pas sauvegarder. En fait, on ne peut pas écrire dans les fichiers du tout, donc la configuration est perdue à chaque fois...
* Pas de gestion d'utilisateurs
* Certains cores sont listés mais ne sont pas implémentés : ils ne fonctionnent donc pas, le problème vient de l'application elle même.
## Documentations et ressources
* Site officiel de lapp : <http://www.retroarch.com/>

View file

@ -1,25 +0,0 @@
;; Test complet
; Manifest
domain="domain.tld"
# path="/retroarch"
# admin="john"
is_public=1
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=1
setup_public=1
upgrade=1
upgrade=1 from_commit=626e71c417ceb1b2481751fd5e2b0373c2b1b927
backup_restore=1
multi_instance=0
change_url=1
;;; Options
Email=misterl56@hotmail.com
Notification=none
;;; Upgrade options
; commit=CommitHash
name=Name and date of the commit.
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&

View file

@ -1,6 +0,0 @@
SOURCE_URL=https://buildbot.libretro.com/stable/1.15.0/emscripten/RetroArch.7z
SOURCE_SUM=ce4f8319850545478d9b18cb103de0234fc36a1b50788c82cfb0ca308e793914
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=7z
SOURCE_FILENAME=retroarch.7z
SOURCE_EXTRACT=false

View file

@ -15,15 +15,15 @@ source _common.sh
#=================================================
app=__APP__
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
install_dir=$(ynh_app_setting_get --app=$app --key=install_dir)
#=================================================
# Update the index
#=================================================
ynh_use_nodejs
cd $final_path/assets/frontend/bundle/
cd $install_dir/assets/frontend/bundle/
../../../indexer > .index-xhr
cd $final_path/assets/cores
cd $install_dir/assets/cores
../../indexer > .index-xhr

View file

@ -2,7 +2,7 @@
location __PATH__/ {
# Path to source
alias __FINALPATH__/ ;
alias __INSTALL_DIR__/ ;
# Include SSOWAT user panel.

View file

@ -1,2 +1,2 @@
#This script will update the core index every 5 minutes so that they are available in retroarch
*/5 * * * * root __FINAL_PATH__/indexer.sh > /dev/null 2>&1
*/5 * * * * root __INSTALL_DIR__/indexer.sh > /dev/null 2>&1

View file

@ -9,4 +9,4 @@ Although you can upload a ROM at runtime, retroarch may have access to the ROMs
* Cannot save game, in fact, cannot write at all... so configuration is lost each time you start again
* No user management
* Some core are listed but not implemented : they do not work, the issue is from the upstream app.
* Some core are listed but not implemented : they do not work, the issue is from the upstream app.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,54 +0,0 @@
{
"name": "Retroarch Web Player",
"id": "retroarch",
"packaging_format": 1,
"description": {
"en": "Emulate videogames system and play videogames through your web browser",
"fr": "Emulez des consoles de jeux et jouer à ces jeux vidéos dans votre explorateur web"
},
"version": "1.15.0~ynh2",
"url": "http://www.retroarch.com/",
"upstream": {
"license": "GPL-3.0-or-later",
"website": "http://www.retroarch.com/",
"demo": "https://web.libretro.com/",
"admindoc": "https://docs.libretro.com/",
"userdoc": "https://docs.libretro.com/",
"code": "https://github.com/libretro/RetroArch"
},
"license": "GPL-3.0-or-later",
"maintainer": {
"name": "Krakinou",
"email": "misterl56@hotmail.com"
},
"requirements": {
"yunohost": ">= 11.1.15"
},
"multi_instance": false,
"services": [
"nginx"
],
"arguments": {
"install": [
{
"name": "domain",
"type": "domain"
},
{
"name": "path",
"type": "path",
"example": "/retroarch",
"default": "/retroarch"
},
{
"name": "is_public",
"type": "boolean",
"default": true,
"help": {
"en": "Yes will allow everyone to access the app without login to yunohost instance first",
"fr": "Oui autorisera n'importe qui à accéder à l'application sans s'identifier dans Yunohost"
}
}
]
}
}

64
manifest.toml Normal file
View file

@ -0,0 +1,64 @@
packaging_format = 2
id = "retroarch"
name = "Retroarch Web Player"
description.en = "Emulate videogames system and play videogames through your web browser"
description.fr = "Emulez des consoles de jeux et jouer à ces jeux vidéos dans votre explorateur web"
version = "1.15.0~ynh3"
maintainers = ["Krakinou"]
[upstream]
license = "GPL-3.0-or-later"
website = "http://www.retroarch.com/"
demo = "https://web.libretro.com/"
admindoc = "https://docs.libretro.com/"
userdoc = "https://docs.libretro.com/"
code = "https://github.com/libretro/RetroArch"
[integration]
yunohost = ">= 11.1.18"
architectures = "all"
multi_instance = false
ldap = "not_relevant"
sso = "not_relevant"
disk = "1G"
ram.build = "150M"
ram.runtime = "50M"
[install]
[install.domain]
# this is a generic question - ask strings are automatically handled by Yunohost's core
type = "domain"
[install.path]
# this is a generic question - ask strings are automatically handled by Yunohost's core
type = "path"
default = "/retroarch"
[install.init_main_permission]
help.en = "Yes will allow everyone to access the app without login to yunohost instance first"
help.fr = "Oui autorisera n'importe qui à accéder à l'application sans s'identifier dans Yunohost"
type = "group"
default = "visitors"
[resources]
[resources.sources]
[resources.sources.main]
url = "https://buildbot.libretro.com/stable/1.15.0/emscripten/RetroArch.7z"
sha256 = "ce4f8319850545478d9b18cb103de0234fc36a1b50788c82cfb0ca308e793914"
format = "whatever"
in_subdir = true
extract = false
[resources.system_user]
[resources.install_dir]
[resources.permissions]
main.url = "/"
[resources.apt]
packages = "p7zip"

View file

@ -5,7 +5,7 @@
#=================================================
# dependencies used by the app
pkg_dependencies="p7zip"
#REMOVEME? pkg_dependencies="p7zip"
nodejs_version=10

View file

@ -6,27 +6,9 @@
# IMPORT GENERIC HELPERS
#=================================================
# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
#=================================================
# DECLARE DATA AND CONF FILES TO BACKUP
#=================================================
@ -36,7 +18,7 @@ ynh_print_info --message="Declaring files to be backed up..."
# BACKUP THE APP MAIN DIR
#=================================================
ynh_backup --src_path="$final_path"
ynh_backup --src_path="$install_dir"
#=================================================
# BACKUP THE NGINX CONFIGURATION

View file

@ -9,58 +9,6 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
old_domain=$YNH_APP_OLD_DOMAIN
old_path=$YNH_APP_OLD_PATH
new_domain=$YNH_APP_NEW_DOMAIN
new_path=$YNH_APP_NEW_PATH
app=$YNH_APP_INSTANCE_NAME
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
# Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=10
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# CHECK WHICH PARTS SHOULD BE CHANGED
#=================================================
change_domain=0
if [ "$old_domain" != "$new_domain" ]
then
change_domain=1
fi
change_path=0
if [ "$old_path" != "$new_path" ]
then
change_path=1
fi
#=================================================
# STANDARD MODIFICATIONS
@ -69,41 +17,7 @@ fi
#=================================================
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
ynh_change_url_nginx_config
# Change the path in the NGINX config file
if [ $change_path -eq 1 ]
then
# Make a backup of the original NGINX config file if modified
ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
# Set global variables for NGINX helper
domain="$old_domain"
path_url="$new_path"
# Create a dedicated NGINX config
ynh_add_nginx_config
fi
# Change the domain for NGINX
if [ $change_domain -eq 1 ]
then
# Delete file checksum for the old conf file location
ynh_delete_file_checksum --file="$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
# Store file checksum for the new config file location
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
fi
#=================================================
# GENERIC FINALISATION
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================
ynh_script_progression --message="Change of URL completed for $app" --last

View file

@ -9,41 +9,6 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
is_public=$YNH_APP_ARG_IS_PUBLIC
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..." --weight=1
final_path=/opt/yunohost/$app
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Register (book) web path
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_script_progression --message="Storing installation settings..." --weight=1
ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
#=================================================
# INSTALL DEPENDENCIES
#=================================================
@ -53,27 +18,23 @@ ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
ynh_npm install -g coffeescript
ynh_install_app_dependencies $pkg_dependencies
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_script_progression --message="Setting up source files..." --weight=60
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src
# uncompress and patch done manually as 7z format is not supported
ynh_setup_source --dest_dir="$final_path"
ynh_setup_source --dest_dir="$install_dir"
#7z archive not handled by ynh and no way to strip component, have to move it manually
7zr x $final_path/retroarch.7z -o$final_path
mv $final_path/retroarch/* $final_path/
ynh_secure_remove --file="$final_path/retroarch.7z"
ynh_secure_remove --file="$final_path/retroarch"
7zr x $install_dir/main -o$install_dir
mv $install_dir/retroarch/* $install_dir/
ynh_secure_remove --file="$install_dir/main"
ynh_secure_remove --file="$install_dir/retroarch"
touch $final_path/analytics.js #https://github.com/libretro/RetroArch/issues/4539#issuecomment-473345195
touch $install_dir/analytics.js #https://github.com/libretro/RetroArch/issues/4539#issuecomment-473345195
#Get the indexer as exe so that folder w/ ROMs can be indexed
chmod +x $final_path/indexer
chmod +x $install_dir/indexer
#=================================================
#SETTING MULTIMEDIA DIRECTORY
@ -81,17 +42,17 @@ chmod +x $final_path/indexer
ynh_script_progression --message="Setting up Multimedia directory..." --weight=9
ynh_multimedia_build_main_dir
mkdir -p $final_path/assets/cores/Game
ynh_multimedia_addfolder --source_dir="$final_path/assets/cores/Game" --dest_dir="/share/Game"
ynh_add_config --template="../conf/README.GAME" --destination="$final_path/assets/cores/Game/README"
chmod 666 $final_path/assets/cores/Game/README
mkdir -p $install_dir/assets/cores/Game
ynh_multimedia_addfolder --source_dir="$install_dir/assets/cores/Game" --dest_dir="/share/Game"
ynh_add_config --template="../conf/README.GAME" --destination="$install_dir/assets/cores/Game/README"
chmod 666 $install_dir/assets/cores/Game/README
# SETUP CRON FILE FOR INDEXER
#setup indexer bash script
ynh_add_config --template="../conf/indexer.sh" --destination="$final_path/indexer.sh"
chown www-data: $final_path/indexer.sh
chmod 744 $final_path/indexer.sh
ynh_add_config --template="../conf/indexer.sh" --destination="$install_dir/indexer.sh"
chown www-data: $install_dir/indexer.sh
chmod 744 $install_dir/indexer.sh
#setup cron file
cron_path="/etc/cron.d/$app"
@ -104,7 +65,6 @@ chmod 644 "$cron_path"
ynh_script_progression --message="Configuring NGINX web server..." --weight=3
#backup & Update nginx MIME type so wasm mime type is recognized
if [ !$(grep wasm /etc/nginx/mime.types) ]; then
ynh_print_info "/etc/nginx/mime.types saved as /etc/nginx/mime.types.$app"
cp /etc/nginx/mime.types /etc/nginx/mime.types.$app
@ -115,25 +75,10 @@ fi
# Create a dedicated nginx config
ynh_add_nginx_config
### For security reason, any app should set the permissions to www-data: before anything else.
### Then, if write authorization is needed, any access should be given only to directories
### that really need such authorization.
# Set permissions to app files
chown -R www-data: $final_path
chown -R www-data:multimedia $install_dir
# Requested so that multimedia group can see the Game folder : all parent folder should be readable by others
chmod 751 $final_path
#=================================================
# SETUP SSOWAT
#=================================================
ynh_script_progression --message="Configuring permissions..." --weight=1
# Make app public if necessary
if [ $is_public -eq 1 ]
then
ynh_permission_update --permission "main" --add visitors
fi
chmod 750 $install_dir
#=================================================
# SETUP INDEX
@ -143,19 +88,11 @@ fi
#Indexer will list the available ROM and cores for Retroarch
ynh_script_progression --message="Setup Indexer for content..." --weight=3
cd $final_path/assets/frontend/bundle/
cd $install_dir/assets/frontend/bundle/
../../../indexer > .index-xhr
cd $final_path/assets/cores
cd $install_dir/assets/cores
../../indexer > .index-xhr
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#=================================================
# END OF SCRIPT
#=================================================

View file

@ -9,16 +9,6 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# REMOVE DEPENDENCIES
#=================================================
@ -28,13 +18,6 @@ ynh_script_progression --message="Removing dependencies..." --weight=7
ynh_use_nodejs
ynh_npm uninstall -g coffeescript
ynh_remove_nodejs
ynh_remove_app_dependencies
#=================================================
# REMOVE CRONJOB
#=================================================
ynh_secure_remove --file="/etc/cron.d/$app"
#=================================================
# REMOVE MULTIMEDIA SYMBOLIC LINK
@ -43,14 +26,8 @@ ynh_script_progression --message="Removing Game folder..." --weight=1
# Remove the app directory securely
ynh_secure_remove --file="/home/yunohost.multimedia/share/Game"
ynh_secure_remove --file="/etc/cron.d/$app"
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_script_progression --message="Removing app main directory..." --weight=1
# Remove the app directory securely
ynh_secure_remove --file="$final_path"
#=================================================
# REMOVE NGINX CONFIGURATION

View file

@ -10,31 +10,6 @@
source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_script_progression --message="Validating restoration parameters..." --weight=1
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#=================================================
# STANDARD RESTORATION STEPS
@ -58,16 +33,7 @@ fi
#=================================================
ynh_script_progression --message="Restoring the app main directory..." --weight=1
ynh_restore_file --origin_path="$final_path"
#=================================================
# RESTORE USER RIGHTS
#=================================================
# Restore permissions on app files
chown -R www-data: $final_path
# Requested so that multimedia group can see the Game folder : all parent folder should be readable by others
chmod 751 $final_path
ynh_restore_file --origin_path="$install_dir"
#=================================================
# SPECIFIC RESTORATION
@ -78,9 +44,8 @@ ynh_script_progression --message="Reinstalling dependencies..." --weight=5
# Define and install dependencies
#Dependencies are not really required as this is just to unzip the 7z file
ynh_install_app_dependencies $pkg_dependencies
#However, npm IS required to run the coffeescript
ynh_install_nodejs --nodejs_version=10
ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
ynh_npm install -g coffeescript
@ -90,10 +55,19 @@ ynh_npm install -g coffeescript
ynh_script_progression --message="Setting up Multimedia directory..." --weight=5
ynh_multimedia_build_main_dir
mkdir -p $final_path/assets/cores/Game
ynh_multimedia_addfolder --source_dir="$final_path/assets/cores/Game" --dest_dir="/share/Game"
ynh_add_config --template="../conf/README.GAME" --destination="$final_path/assets/cores/Game/README"
chmod 666 $final_path/assets/cores/Game/README
mkdir -p $install_dir/assets/cores/Game
ynh_multimedia_addfolder --source_dir="$install_dir/assets/cores/Game" --dest_dir="/share/Game"
ynh_add_config --template="../conf/README.GAME" --destination="$install_dir/assets/cores/Game/README"
chmod 666 $install_dir/assets/cores/Game/README
#=================================================
# RESTORE USER RIGHTS
#=================================================
# Restore permissions on app files
chown -R www-data:multimedia $install_dir
# Requested so that multimedia group can see the Game folder : all parent folder should be readable by others
chmod 750 $install_dir
#=================================================
# RESTORE THE CRON FILE

View file

@ -9,17 +9,6 @@
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#=================================================
# CHECK VERSION
#=================================================
@ -27,19 +16,17 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path)
upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=10
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
ynh_script_progression --message="Downward Compatibility checks..." --weight=1
#move from /opt/yunohost to /var/www : symbolic link will be remade by multimedia dir
if ynh_compare_current_package_version --comparison lt --version 1.15.0~ynh3; then
if [ -L /home/yunohost.multimedia/share/Game ]; then
#ynh_secure_remove --file="/home/yunohost.multimedia/share/Game"
rm /home/yunohost.multimedia/share/Game #ynh_secure_remove does not remove link
fi
fi
#=================================================
# STANDARD UPGRADE STEPS
#=================================================
@ -51,24 +38,23 @@ then
ynh_script_progression --message="Upgrading source files..." --weight=5
# Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path"
ynh_setup_source --dest_dir="$install_dir"
#7z archive not handled by ynh and no way to strip component, have to move it manually
7zr x $final_path/retroarch.7z -o$final_path
7zr x $install_dir/main -o$install_dir
#mv not working as target directory is not empty
cp -R $final_path/retroarch/* $final_path/
ynh_secure_remove --file="$final_path/retroarch.7z"
ynh_secure_remove --file="$final_path/retroarch"
touch $final_path/analytics.js #https://github.com/libretro/RetroArch/issues/4539#issuecomment-473345195
cp -R $install_dir/retroarch/* $install_dir/
ynh_secure_remove --file="$install_dir/main"
touch $install_dir/analytics.js #https://github.com/libretro/RetroArch/issues/4539#issuecomment-473345195
#Get the indexer as exe so that folder w/ ROMs can be indexed
chmod +x $final_path/indexer
chmod +x $install_dir/indexer
fi
# SETUP CRON FILE FOR INDEXER
#setup indexer bash script
ynh_add_config --template="../conf/indexer.sh" --destination="$final_path/indexer.sh"
chown www-data: $final_path/indexer.sh
chmod 744 $final_path/indexer.sh
ynh_add_config --template="../conf/indexer.sh" --destination="$install_dir/indexer.sh"
chown www-data: $install_dir/indexer.sh
chmod 744 $install_dir/indexer.sh
#setup cron file
cron_path="/etc/cron.d/$app"
ynh_add_config --template="../conf/retroarch.cron" --destination="$cron_path"
@ -81,10 +67,10 @@ chmod 644 "$cron_path"
ynh_script_progression --message="Setting up Multimedia directory..." --weight=4
ynh_multimedia_build_main_dir
mkdir -p $final_path/assets/cores/Game
ynh_multimedia_addfolder --source_dir="$final_path/assets/cores/Game" --dest_dir="/share/Game"
ynh_add_config --template="../conf/README.GAME" --destination="$final_path/assets/cores/Game/README"
chmod 666 $final_path/assets/cores/Game/README
mkdir -p $install_dir/assets/cores/Game
ynh_multimedia_addfolder --source_dir="$install_dir/assets/cores/Game" --dest_dir="/share/Game"
ynh_add_config --template="../conf/README.GAME" --destination="$install_dir/assets/cores/Game/README"
chmod 666 $install_dir/assets/cores/Game/README
#=================================================
# NGINX CONFIGURATION
@ -101,7 +87,6 @@ ynh_script_progression --message="Upgrading dependencies..." --weight=20
# Define and install dependencies
#Dependencies are not really required as this is just to unzip the 7z file
ynh_install_app_dependencies $pkg_dependencies
#However, npm IS required to run the coffeescript
ynh_install_nodejs --nodejs_version=$nodejs_version
ynh_use_nodejs
@ -113,16 +98,9 @@ ynh_npm install -g coffeescript
# Set permissions on app files
#=================================================
chown -R www-data: $final_path
chown -R www-data:multimedia $install_dir
# Requested so that multimedia group can see the Game folder : all parent folder should be readable by others
chmod 751 $final_path
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
chmod 750 $install_dir
#=================================================
# END OF SCRIPT

4
tests.toml Normal file
View file

@ -0,0 +1,4 @@
test_format = 1.0
[default]
test_upgrade_from.b7eb8ba.name = "1.15.0~ynh2"