diff --git a/CHANGELOG.md b/CHANGELOG.md index ea2d4b1..20b1ed0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # v0.78.3.8 +* Update [lwrun](https://huggingface.co/lux-wine/lwrun/tree/main/releases/v0.39.1) packages +* Remove possibility of updating from the old version (`LutrisWine`) from `lwrap` +* Replace `chromium` with `firefox` in `lwrun` container * Remove DB script for `Assassin's Creed Odyssey` +* Add the `Wine` prefix name to the shortcut name if a shortcut with the same name already exists and the app used custom `Wine` prefix +* Add `Yandex Cloud` mirrors +* Update `lwrap` +* Minor fixes # v0.78.3.7 diff --git a/README.md b/README.md index bf0db05..3025ff4 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,10 @@ This project allows you to easily run your favorite applications and games for W ``` curl -sL lwrap.github.io|bash ``` +* YC mirror: +``` +curl -sL lwrap.website.yandexcloud.net|bash +``` * HF mirror: ``` curl -sL lux-wine-git.static.hf.space|sed 1d|bash @@ -22,6 +26,10 @@ curl -sL lux-wine-git.static.hf.space|sed 1d|bash ``` wget -qO - lwrap.github.io|bash ``` +* YC mirror: +``` +wget -qO - lwrap.website.yandexcloud.net|bash +``` * HF mirror: ``` wget -qO - lux-wine-git.static.hf.space|sed 1d|bash diff --git a/lutris-wine b/lutris-wine deleted file mode 100755 index eb77f71..0000000 --- a/lutris-wine +++ /dev/null @@ -1 +0,0 @@ -LW_VERSION="0.78.3.7" diff --git a/lux-wine b/lux-wine index d864a19..f5cea95 100755 --- a/lux-wine +++ b/lux-wine @@ -1,6 +1,6 @@ #!/usr/bin/env bash -export LW_VERSION="0.78.3.7" +export LW_VERSION="0.78.3.8" export LW_DEVELOPERS="VHSgunzo" export RED='\033[1;91m' @@ -219,6 +219,8 @@ check_def_config() { export DEFPFX_HF_URL="https://huggingface.co/lux-wine/wine-prefix/resolve/main/releases/$DEFPFX_VERSION/defprefix.xz.lwpfx" export DEFPFXDOTNET_HF_URL="https://huggingface.co/lux-wine/wine-prefix/resolve/main/releases/$DEFPFX_VERSION/defprefix_dotnet.xz.lwpfx" export DEFPFXDOTNETDESKTOP_HF_URL="https://huggingface.co/lux-wine/wine-prefix/resolve/main/releases/$DEFPFX_VERSION/defprefix_dotnetdesktop.xz.lwpfx" + export DEFPFX_YC_URL="https://storage.yandexcloud.net/lux-wine/wine-prefix/$DEFPFX_VERSION/defprefix.xz.lwpfx" + export DEFPFXDOTNET_YC_URL="https://storage.yandexcloud.net/lux-wine/wine-prefix/$DEFPFX_VERSION/defprefix_dotnet.xz.lwpfx" } print_var() { @@ -1456,7 +1458,7 @@ exe2png() { then chksum_shrt_png_new=($(md5sum "${SHRT_NAME}.png" 2>/dev/null)) chksum_shrt_png=($(md5sum "$SHRT_PNG" 2>/dev/null)) - if [ "$chksum_shrt_png_new" != "$chksum_shrt_png" ] + if [[ "$chksum_shrt_png_new" != "$chksum_shrt_png" ]] then shrt_num=$(( $shrt_num + 1 )) continue @@ -1548,6 +1550,9 @@ create_shortcut() { SHRT_NAME="${ADD_APP_NAME//[^[:alnum:] ._-]/}" SHRT_NAME="$(sed 's|^Запустить ||gi;s|^Играть ||gi;s|^Launch ||gi;s|^Play ||gi'<<<"$SHRT_NAME")" try_mkdir "$LW_DEF_TMP" + [[ -f "${LW_APPS_DIR}/${SHRT_NAME}.desktop" && \ + "$WINEPREFIX" != "$LW_DEF_WINEPFX" ]] && \ + SHRT_NAME="$SHRT_NAME ($(basename "$WINEPREFIX"))" DESKF="${LW_DEF_TMP}/${SHRT_NAME}.desktop" echo "[Desktop Entry]" > "$DESKF" (LW_SOURCE="$LWRAP" @@ -1664,10 +1669,10 @@ create_shortcut() { if [ -f "$LU_EXE" ] && [[ -f "$EXE_CFG" || -f "$EXE_CENV" ]] then local SHRTEXEPFX="$(dirname "$LU_EXE")/$(basename "$LU_EXE"|sed 's|\.exe$||gi')" - [ -f "$EXE_CFG" ] && \ - try_cp "$EXE_CFG" "$SHRTEXEPFX.wcfg" - [ -f "$EXE_CENV" ] && \ - try_cp "$EXE_CENV" "$SHRTEXEPFX.cenv" + [[ -f "$EXE_CFG" && "$SHRTEXEPFX.wcfg" != "$EXE_CFG" ]] && \ + try_cp "$EXE_CFG" "$SHRTEXEPFX.wcfg" + [[ -f "$EXE_CENV" && "$SHRTEXEPFX.cenv" != "$EXE_CENV" ]] && \ + try_cp "$EXE_CENV" "$SHRTEXEPFX.cenv" fi [ -f "${LW_APPS_DIR}/${SHRT_NAME}.desktop" ] && \ print_info notify "Shortcut for '$SHRT_NAME' successfully created!" @@ -1984,6 +1989,7 @@ check_def_wine() { def_wine_selector() { set -o pipefail unset SETWINE + LOCWINELST="$(ls -1 -t "$LW_WINE_DIR" 2>/dev/null)" export SETWINE="$(echo -e "\n$(echo "${LOCWINELST}$([ -n "$SYS_WINE" ] && echo -e '\nSystem')$([[ -n "$LU_EXE" \ && ! -n "$FIRST_RUN" ]] && echo -e '\nDefault')"|sed ':a;N;$!ba;s/\n/\n\n/g')"|\ yad --window-icon="$LW_DEF_ICO" --title "Wine Manager" --column="" --column="Select default Wine:" \ @@ -2000,7 +2006,6 @@ check_def_wine() { check_proton_d3dlib print_info notify "Wine $SETWINE selected as default!" } - LOCWINELST="$(ls -1 -t "$LW_WINE_DIR" 2>/dev/null)" IGNWINE=( 'Default' 'SETWINE' 'System' 'Proton 7.0' 'Proton 8.0' 'Proton 9.0' 'Proton 9.0 (Beta)' @@ -2057,6 +2062,7 @@ check_def_wine() { fi fi done) + LOCWINELST="$(ls -1 -t "$LW_WINE_DIR" 2>/dev/null)" if [[ ! -f "$WINE" && "$(echo "$LOCWINELST"|sedspaces|wc -l)" == 0 && -n "$SYS_WINE" ]] then print_info "System Wine found" @@ -2504,7 +2510,8 @@ check_db_script() { elif [ -f "$LWRAP_DEFPFXDOTNET" ] then PFXRESTORE="$LWRAP_DEFPFXDOTNET" else - if (try_download "$DEFPFXDOTNET_HF_URL" "$LW_DEF_WINEPFXBKP_DIR/"||\ + if (try_download "$DEFPFXDOTNET_YC_URL" "$LW_DEF_WINEPFXBKP_DIR/"||\ + try_download "$DEFPFXDOTNET_HF_URL" "$LW_DEF_WINEPFXBKP_DIR/"||\ try_download "$DEFPFXDOTNET_URL" "$LW_DEF_WINEPFXBKP_DIR/") then PFXRESTORE="$LWDIR_DEFPFXDOTNET" else exit 1 @@ -2533,7 +2540,8 @@ check_db_script() { elif [ -f "$LWRAP_DEFPFX" ] then PFXRESTORE="$LWRAP_DEFPFX" else - if (try_download "$DEFPFX_HF_URL" "$LW_DEF_WINEPFXBKP_DIR/"||\ + if (try_download "$DEFPFX_YC_URL" "$LW_DEF_WINEPFXBKP_DIR/"||\ + try_download "$DEFPFX_HF_URL" "$LW_DEF_WINEPFXBKP_DIR/"||\ try_download "$DEFPFX_URL" "$LW_DEF_WINEPFXBKP_DIR/") then PFXRESTORE="$LWDIR_DEFPFX" else exit 1 diff --git a/lwrap/PKGBUILD b/lwrap/PKGBUILD index 76375e6..b18fbd8 100644 --- a/lwrap/PKGBUILD +++ b/lwrap/PKGBUILD @@ -2,7 +2,7 @@ pkgname='lwrap' pkgver='0.78.3' -pkgrel='7' +pkgrel='8' pkgdesc='Lux Wine wrapper for RunImage container' arch=('x86_64') url='https://github.com/VHSgunzo/lux-wine' @@ -33,7 +33,7 @@ depends=( 'dos2unix' 'lw-runtime' 'wine-gecko' 'wine-mono' 'libdvdread' 'a52dec' 'wavpack' 'lib32-wavpack' 'libmpeg2' 'twolame' 'lib32-twolame' 'gst-plugin-msdk' 'lib32-libdv' 'libdv' 'GE-Proton' 'xxd-standalone' 'obs-vkcapture-lw' 'lib32-obs-vkcapture-lw' 'egl-wayland' 'gstreamer-vaapi' - 'moninfo' 'perl-image-exiftool' 'xorg-xlsfonts' 'chromium' + 'moninfo' 'perl-image-exiftool' 'xorg-xlsfonts' 'firefox' ) optdepends=( 'xf86-video-amdgpu' 'xf86-video-intel' 'llvm' diff --git a/lwrap/lwrap b/lwrap/lwrap index bf876f5..c93880c 100755 --- a/lwrap/lwrap +++ b/lwrap/lwrap @@ -11,28 +11,30 @@ GREEN='\033[1;92m' YELLOW='\033[1;33m' RESETCOLOR='\033[1;00m' +YC_S3="https://storage.yandexcloud.net" GIT_REPO='https://github.com/VHSgunzo' GIT_HF_REPO='https://huggingface.co/spaces/lux-wine' +GIT_YC_REPO="$YC_S3/lux-wine" LW_DIR="$HOME/.local/share/LuxWine" -OLD_LW_DIR="$HOME/.local/share/LutrisWine" MENU_APPS_DIR="$HOME/.local/share/applications" LW_APPS_DIR="$MENU_APPS_DIR/LuxWineApps" -OLD_LW_APPS_DIR="$MENU_APPS_DIR/LutrisWineApp" LW_CFG="$LW_DIR/luwine.wcfg" TMP_LW_CFG="$LW_DIR/tmp/luwine.wcfg" LWBIN_DIR="$LW_DIR/bin" -OLD_LWBIN_DIR="$OLD_LW_DIR/bin" LWSRC="$LWBIN_DIR/lux-wine" -OLD_LWSRC="$OLD_LWBIN_DIR/lutris-wine" GIT_RAW='https://raw.githubusercontent.com/VHSgunzo/lux-wine/main' GIT_LWSRC="$GIT_RAW/lux-wine" GIT_HF_LWSRC="$GIT_HF_REPO/git/resolve/main/lux-wine" +GIT_YC_LWSRC="$GIT_YC_REPO/git/lux-wine" GIT_LWZIP="$GIT_REPO/lux-wine/archive/refs/heads/main.zip" GIT_HF_LWZIP="$GIT_HF_REPO/git/resolve/main/main.zip" +GIT_YC_LWZIP="$GIT_YC_REPO/main.zip" GIT_LWRAP="$GIT_RAW/lwrap/lwrap" GIT_HF_LWRAP="$GIT_HF_REPO/git/resolve/main/lwrap/lwrap" +GIT_YC_LWRAP="$GIT_YC_REPO/git/lwrap/lwrap" GIT_LWRUN="$GIT_REPO/lwrun/releases" GIT_HF_LWRUN="${GIT_HF_REPO//\/spaces/}/lwrun/resolve/main/releases" +YC_LWRUN="$YC_S3/lwrun" HOME_ICONS="$HOME/.local/share/icons" HOME_DESK_DIRS="$HOME/.local/share/desktop-directories" HSTEAM_DESKF="$MENU_APPS_DIR/steam-lw.desktop" @@ -46,12 +48,10 @@ LWRAP_LN="$HBIN_DIR/lwrap" LWRAP="$LWBIN_DIR/lwrap" LWBASH="$LWBIN_DIR/bash" LWRUN="$LWBIN_DIR/lwrun" -OLD_LWRUN="$OLD_LWBIN_DIR/lwrun" RUNIMAGE_LW="$LWBIN_DIR/runimage-lw" LWRAP_DIR='/opt/lwrap' LWRUNTIME="$LWRAP_DIR/runtime.tar.zst" HLWDIRLN="$HOME/LuxWine" -OLD_HLWDIRLN="$HOME/LutrisWine" LW_DEF_TMP="$LW_DIR/tmp" LWRPIDFL="$LW_DEF_TMP/lwrpid" LWEXEC="$LWBIN_DIR/lwexec" @@ -243,12 +243,12 @@ try_install_lwrun() { finalize_install() { chmod u+x "$LWRUN" ln_lwrun + export LWRUN_INSTALLED=1 info_msg "lwrun installed!" if [ ! -n "$TMP_LWRUN" ] && \ is_net_conn then update_lwrap - LWRUN_INSTALLED=1 \ "$LWRAP" --install fi try_shutdown_lw && \ @@ -259,7 +259,7 @@ try_install_lwrun() { REALP_LWRUN="$(readrealpath "$LWRUN")" if [[ "$RUNSRC" =~ "lwrun" && -f "$RUNSRCRPTH" && \ "$RUNSRCRPTH" != "$LWRUN" && ! "$RUNSRCRPTH" =~ "Run" && \ - "$RUNSRCRPTH" != "$OLD_LWRUN" && "$LWRUN_INSTALLED" != 1 ]] + "$LWRUN_INSTALLED" != 1 ]] then info_msg "Installing lwrun..." mkdir -p "$LWBIN_DIR" @@ -321,17 +321,11 @@ uninstall_lw() { rm -rf "$HOME/.config/menus/applications-merged/LuxWine.menu" rm -rf "$HOME/.local/share/kservices5/ServiceMenus/LuxWine"* rm -rf "$HOME/.local/share/kio/servicemenus/LuxWine"* - rm -rf "$MENU_APPS_DIR/LutrisWine" - rm -rf "$HOME_DESK_DIRS/LutrisWine"* - rm -rf "$HOME/.config/menus/applications-merged/LutrisWine.menu" - rm -rf "$HOME/.local/share/kservices5/ServiceMenus/LutrisWine"* - rm -rf "$HOME/Desktop/LutrisWine.desktop" if [ "$1" == "update" ] then rm -rf "$LWSRC" rm -rf "$LWRAP" rm -rf "$LWBASH" - rm -rf "$OLD_LWSRC" rm -rf "$LW_DIR/db" rm -rf "$LW_DIR/gif" rm -rf "$LW_DIR/icons" @@ -344,11 +338,8 @@ uninstall_lw() { rm -rf "$HLWDIRLN" rm -rf "$LWRUN_LN" rm -rf "$LWRAP_LN" - rm -rf "$OLD_LW_DIR" - rm -rf "$OLD_HLWDIRLN" rm -rf "$HBIN_DIR/runimage-lw" rm -rf "$MENU_APPS_DIR/LuxWine"* - rm -rf "$MENU_APPS_DIR/LutrisWine"* rm -rf "$HOME/Desktop/LuxWine.desktop" rm_broken_link "$HBIN_DIR" rm_broken_link "$HOME_ICONS" @@ -391,20 +382,37 @@ is_lw() { (is_not_pts_home && [[ -x "$LWSRC" && -x "$LWRAP" ]])||[ -x "$LWSRC" ] is_lwrun() { [ -x "$LWRUN" ] ; } +try_dl_lwzip() { + local lwzipurl=( + "$GIT_YC_LWZIP" + "$GIT_HF_LWZIP" + "$GIT_LWZIP" + ) + for url in "${lwzipurl[@]}" + do + try_dl "$url" "$TMP_LW.zip" && \ + return 0 + done + return 1 +} + install_lw() { rm_tmplw() { [[ -d "$TMP_LW" || -f "$TMP_LW.zip" ]] && rm -rf "$TMP_LW"* ; } TMP_LW="/tmp/lux-wine.$RANDOM" - info_msg "Installing Lux Wine..." if [ "$1" != "local" ] && \ - (try_dl "$GIT_HF_LWZIP" "$TMP_LW.zip"||\ - try_dl "$GIT_LWZIP" "$TMP_LW.zip") + is_net_conn then - (exzip "$TMP_LW.zip" "$TMP_LW" && \ - cd "$TMP_LW/lux-wine-main" && \ - make_install "$1" - rm_tmplw) + info_msg "Installing Lux Wine..." + if try_dl_lwzip + then + (exzip "$TMP_LW.zip" "$TMP_LW" && \ + cd "$TMP_LW/lux-wine-main" && \ + make_install "$1" + rm_tmplw) + fi elif [ -d "/opt/lwrap" ] then + info_msg "Installing Lux Wine from container..." (mkdir -p "$TMP_LW" && \ cp -rf "/opt/lwrap"/!(runtime.tar.zst|prefix_backups) "$TMP_LW" && \ cd "$TMP_LW" && \ @@ -421,6 +429,22 @@ install_lw() { vers_parser() { grep -Po '\d+'|sed ':a;/$/N;s/\n//;ta' ; } +set_git_lw_version() { + unset GIT_LW_VERSION + local lwsrcusrls=( + "$GIT_YC_LWSRC" + "$GIT_HF_LWSRC" + "$GIT_LWSRC" + ) + for url in "${lwsrcusrls[@]}" + do + GIT_LW_VERSION="$(NO_ARIA2C=1 NO_DL_GUI=1 NO_DL_REPEAT=1 \ + try_dl "$url" /dev/stdout 2>/dev/null|get_lw_version)" && \ + return 0 + done + return 1 +} + get_lw_version() { if [ -n "$1" ] then grep -m1 'LW_VERSION' "$1" 2>/dev/null|vers_parser @@ -428,11 +452,24 @@ get_lw_version() { fi } +try_dllwrap_mirror() { + local lwrapurl=( + "$GIT_YC_LWRAP" + "$GIT_HF_LWRAP" + "$GIT_LWRAP" + ) + for url in "${lwrapurl[@]}" + do + try_dl "$url" "$TMP_LWRAP" && \ + return 0 + done + return 1 +} + update_lwrap() { info_msg "Update lwrap..." TMP_LWRAP="${LWRAP}.new$BASHPID" - if (try_dl "$GIT_HF_LWRAP" "$TMP_LWRAP"||\ - try_dl "$GIT_LWRAP" "$TMP_LWRAP") + if try_dllwrap_mirror then mv -f "$TMP_LWRAP" "$LWRAP" chmod +x "$LWRAP" @@ -447,11 +484,7 @@ update_lw() { if is_lw then info_msg "Checking the Lux Wine update..." - GIT_LW_VERSION="$(NO_ARIA2C=1 NO_DL_GUI=1 NO_DL_REPEAT=1 \ - try_dl "$GIT_HF_LWSRC" /dev/stdout 2>/dev/null|get_lw_version)" - [ ! -n "$GIT_LW_VERSION" ] && \ - GIT_LW_VERSION="$(NO_ARIA2C=1 NO_DL_GUI=1 NO_DL_REPEAT=1 \ - try_dl "$GIT_LWSRC" /dev/stdout 2>/dev/null|get_lw_version)" + set_git_lw_version LW_VERSION="$(get_lw_version "$LWSRC")" if [[ -n "$GIT_LW_VERSION" && -n "$LW_VERSION" ]] then @@ -491,16 +524,42 @@ get_lwrun_hf_ver() { 2>/dev/null|grep -Po "v\d+\.\d+\.\d+"|tail -1 } +get_lwrun_yc_ver() { + NO_ARIA2C=1 NO_DL_GUI=1 NO_DL_REPEAT=1 try_dl \ + "$YC_LWRUN" /dev/stdout 2>/dev/null|tr '<' '\n'|\ + grep '^Key>'|sed 's|^Key>||g'|grep '^releases'|\ + awk -F/ 'END {print$2}' +} + +set_git_lwrun_ver() { + for src in yc git hf + do + GIT_LWRUN_VERSION="$(get_lwrun_${src}_ver)" && \ + return 0 + done + return 1 +} + +try_dllwrun_mirror() { + local lwrunurl=( + "$YC_LWRUN/releases/$GIT_LWRUN_VERSION/lwrun" + "$GIT_HF_LWRUN/$GIT_LWRUN_VERSION/lwrun" + "$GIT_LWRUN/download/$GIT_LWRUN_VERSION/lwrun" + ) + for url in "${lwrunurl[@]}" + do + try_dl "$url" "$TMP_LWRUN" && \ + return 0 + done + return 1 +} + try_dl_lwrun() { TMP_LWRUN="$LWRUN.new$BASHPID" info_msg "Downloading lwrun..." - [ ! -n "$GIT_LWRUN_VERSION" ] && \ - GIT_LWRUN_VERSION="$(get_lwrun_hf_ver)" - [ ! -n "$GIT_LWRUN_VERSION" ] && \ - GIT_LWRUN_VERSION="$(get_lwrun_git_ver)" + set_git_lwrun_ver if [ -n "$GIT_LWRUN_VERSION" ] && \ - (try_dl "$GIT_HF_LWRUN/$GIT_LWRUN_VERSION/lwrun" "$TMP_LWRUN"||\ - try_dl "$GIT_LWRUN/download/$GIT_LWRUN_VERSION/lwrun" "$TMP_LWRUN") + try_dllwrun_mirror then info_msg "lwrun downloaded!" RUNSRCRPTH="$TMP_LWRUN" \ @@ -567,8 +626,7 @@ is_update() { } try_shutdown_lw() { - if [[ -n "$((pgrep -fa lutris-wine||pgrep -fa lux-wine)|\ - grep -Eom1 "LutrisWine/bin|LuxWine/bin")" ]] + if [ -n "$(pgrep -fa lux-wine|grep -om1 'LuxWine/bin')" ] then if [ "$FORCE_UPDATE" != 1 ] then @@ -583,9 +641,7 @@ try_shutdown_lw() { info_msg "Shutdown Lux Wine..." if [ -x "$LWSRC" ] then "$LWSRC" -exit - elif [ -x "$OLD_LWSRC" ] - then "$OLD_LWSRC" -exit - else return 1 + else return 1 fi else return 1 fi @@ -602,57 +658,32 @@ update_runimage() { then return 0 else return 1 fi - else return 1 + else + touch "$LWRUN" + return 1 + fi +} + +lwrap_init() { + if [ "$ENABLE_HOSTEXEC" == 1 ] + then hostexec ptyspawn importenv '$RUNPID' "$LWRAP" -init + else "$LWRAP" -init fi } update_lwrun() { if is_lwrun then + local ret=1 info_msg "Checking the lwrun update..." - GIT_LWRUN_VERSION="$(get_lwrun_hf_ver)" - [ ! -n "$GIT_LWRUN_VERSION" ] && \ - GIT_LWRUN_VERSION="$(get_lwrun_git_ver)" - GIT_LWRUN_VERSION_PARS="$(echo "$GIT_LWRUN_VERSION"|vers_parser)" - [ -n "$RUNIMAGE_VERSION" ] && \ - LWRUN_VERSION="$(echo "$RUNIMAGE_VERSION"|vers_parser)"||\ - LWRUN_VERSION="$(runimage_lw --rV|no_color|\ - grep 'RunImage version:'|awk '{print$7}'|vers_parser)" - if [[ -n "$GIT_LWRUN_VERSION_PARS" && -n "$LWRUN_VERSION" ]] + if [ "$NO_RUNPKG_UPDATE" != 1 ] then - local ret=1 - unset dlret pkgret - if [ "$LWRUN_VERSION" != "$GIT_LWRUN_VERSION_PARS" ] - then - if is_update "lwrun" - then - info_msg "lwrun update..." - try_dl_lwrun && \ - local dlret=0 - fi - else - info_msg "The latest version is already installed!" - touch "$LWRUN" - fi - if [ "$NO_RUNPKG_UPDATE" != 1 ] - then - update_runimage - local pkgret=$? - if [ "$pkgret" == 0 ] - then - if [ "$ENABLE_HOSTEXEC" == 1 ] - then hostexec ptyspawn importenv '$RUNPID' "$LWRAP" -init - else "$LWRAP" -init - fi - fi - fi - [[ "$dlret" == 0 || "$pkgret" == 0 ]] && \ - local ret=0 - return $ret - else - error_msg "Failed to check for updates!" - return 1 + update_runimage + ret=$? + [ "$ret" == 0 ] && \ + lwrap_init fi + return $ret else error_msg "lwrun is not installed!" exit 1 @@ -844,42 +875,6 @@ print_help() { " } -if [[ -f "$OLD_LWSRC" && ! -f "$LWSRC" ]] - then - LW_MIGRATION=1 - NO_RUNPKG_UPDATE=1 - grep "$OLD_LW_DIR" -lr "$OLD_LW_DIR"/*.*|\ - xargs -d'\n' sed -i "s|$OLD_LW_DIR|$LW_DIR|g" 2>/dev/null - if [ -d "$OLD_LW_DIR/appcfg" ] - then - for wcfg in "$OLD_LW_DIR/appcfg"/* - do [ -f "$wcfg" ] && \ - sed -i "s|$OLD_LW_DIR|$LW_DIR|g" "$(readrealpath "$wcfg")" - done - fi - mv -f "$OLD_LW_DIR" "$LW_DIR" - ln -sfr "$LW_DIR" "$OLD_LW_DIR" - rm -f "$LWRUN_LN" - rm -f "$RUNIMAGE_LW" - rm -f "$LWBIN_DIR/lw-tray" - rm -f "$HBIN_DIR/runimage-lw" - rm -f "$LW_DIR/wprefixes/defprefix/.lwtheme" - ln_lwrun -fi -if [ -L "$OLD_HLWDIRLN" ] - then - rm -f "$OLD_HLWDIRLN" - ln -sfr "$LW_DIR" "$HLWDIRLN" -fi -if [ -d "$OLD_LW_APPS_DIR" ] - then - mv -f "$OLD_LW_APPS_DIR" "$LW_APPS_DIR" - grep '^Categories=Lutris Wine App' -lr "$MENU_APPS_DIR"|\ - xargs -d'\n' sed -i "s|^Categories=.*|Categories=Lux Wine Apps|g;s|$OLD_LW_DIR|$LW_DIR|g" 2>/dev/null - ln -sfr "$LW_APPS_DIR" "$LW_DIR/LuxWineApps" - rm -f "$LW_DIR/LutrisWineApp" -fi - RUNSRCRPTH="$(readrealpath "$RUNSRC")" case "$1" in @@ -890,12 +885,6 @@ case "$1" in --install) try_install_lwrun is_lwrun||try_dl_lwrun install_lw "$2" - if [ "$LW_MIGRATION" == 1 ] - then - NO_RUNPKG_UPDATE=1 \ - FORCE_UPDATE=1 \ - update_lwrun - fi exit $? ;; --update) FORCE_UPDATE=1 update_lw @@ -920,62 +909,56 @@ if [[ -n "$RUNSRC" && -d "$RUNROOTFS" ]] then update_lwrun && exit $? fi fi - try_set_lwrpid - if ! [[ -n "$lwrpid" && -f "/tmp/.bwinf.$lwrpid" && -d "/proc/$lwrpid" ]] - then - LWEXECFLDIR="/tmp/.lwexec.$RUNPID" - mkdir -p "$LW_DEF_TMP" - echo "$RUNPID" > "$LWRPIDFL" 2>/dev/null - (JOBNUMFL="$LWEXECFLDIR/job" - mkdir -p "$LWEXECFLDIR" 2>/dev/null - mkfifo "$JOBNUMFL" 2>/dev/null - unset jobnum - while [[ -d "/proc/$RUNPID" && -d "$LWEXECFLDIR" ]] - do - jobnum=$(( $jobnum + 1 )) - execjobdir="$LWEXECFLDIR/$jobnum" - execenvfl="$execjobdir/env" - execjobfl="$execjobdir/exec" - execjoboutfl="$execjobdir/out" - execjobstatfl="$execjobdir/stat" - mkdir "$execjobdir" 2>/dev/null - mkfifo "$execenvfl" 2>/dev/null - mkfifo "$execjobfl" 2>/dev/null - mkfifo "$execjoboutfl" 2>/dev/null - mkfifo "$execjobstatfl" 2>/dev/null - tee <<<"$jobnum" "$JOBNUMFL" &>/dev/null - if [ -e "$execjobfl" ] - then - (OLD_PATH="$PATH" - OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH" - source "$execenvfl" && cd "$PWD" - export PATH="$PATH:$OLD_PATH" - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$OLD_LD_LIBRARY_PATH" - cat "$execjobfl" 2>/dev/null|"$RUNSTATIC/bash" &>"$execjoboutfl" & - execjobpid=$! - tee <<<"$execjobpid" "$execjobstatfl" &>/dev/null - wait $execjobpid 2>/dev/null - execstat=$? - tee <<<"$execstat" "$execjobstatfl" &>/dev/null) & - fi - done) & - fi - "$LWSRC" "$@" - [ -d "$LWEXECFLDIR" ] && \ - rm -rf "$LWEXECFLDIR" - [ -f "$LWRPIDFL" ] && \ - rm -f "$LWRPIDFL" - else - if [ "$LW_MIGRATION" == 1 ] - then - if is_net_conn + if [ "$LWRUN_INSTALLED" == 1 ] + then "$LWSRC" -init + else + try_set_lwrpid + if ! [[ -n "$lwrpid" && -f "/tmp/.bwinf.$lwrpid" && -d "/proc/$lwrpid" ]] then - update_lwrap - FORCE_UPDATE=1 \ - update_lwrun - else error_msg "No internet connection!" + LWEXECFLDIR="/tmp/.lwexec.$RUNPID" + mkdir -p "$LW_DEF_TMP" + echo "$RUNPID" > "$LWRPIDFL" 2>/dev/null + (JOBNUMFL="$LWEXECFLDIR/job" + mkdir -p "$LWEXECFLDIR" 2>/dev/null + mkfifo "$JOBNUMFL" 2>/dev/null + unset jobnum + while [[ -d "/proc/$RUNPID" && -d "$LWEXECFLDIR" ]] + do + jobnum=$(( $jobnum + 1 )) + execjobdir="$LWEXECFLDIR/$jobnum" + execenvfl="$execjobdir/env" + execjobfl="$execjobdir/exec" + execjoboutfl="$execjobdir/out" + execjobstatfl="$execjobdir/stat" + mkdir "$execjobdir" 2>/dev/null + mkfifo "$execenvfl" 2>/dev/null + mkfifo "$execjobfl" 2>/dev/null + mkfifo "$execjoboutfl" 2>/dev/null + mkfifo "$execjobstatfl" 2>/dev/null + tee <<<"$jobnum" "$JOBNUMFL" &>/dev/null + if [ -e "$execjobfl" ] + then + (OLD_PATH="$PATH" + OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH" + source "$execenvfl" && cd "$PWD" + export PATH="$PATH:$OLD_PATH" + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$OLD_LD_LIBRARY_PATH" + cat "$execjobfl" 2>/dev/null|"$RUNSTATIC/bash" &>"$execjoboutfl" & + execjobpid=$! + tee <<<"$execjobpid" "$execjobstatfl" &>/dev/null + wait $execjobpid 2>/dev/null + execstat=$? + tee <<<"$execstat" "$execjobstatfl" &>/dev/null) & + fi + done) & fi + "$LWSRC" "$@" + [ -d "$LWEXECFLDIR" ] && \ + rm -rf "$LWEXECFLDIR" + [ -f "$LWRPIDFL" ] && \ + rm -f "$LWRPIDFL" fi + else try_set_lwrpid if [[ "$FORCE_UPDATE" != 1 && -x "$LWEXEC" && -x "$LWSRC" ]] && \ [[ -n "$lwrpid" && -f "/tmp/.bwinf.$lwrpid" && -d "/proc/$lwrpid" ]] @@ -992,8 +975,8 @@ if [[ -n "$RUNSRC" && -d "$RUNROOTFS" ]] if is_net_conn then update_lwrap - try_dl_lwrun - "$LWRUN" "$@" + try_dl_lwrun && \ + "$LWRUN" else error_msg "lwrun not found, download and install it first!" exit 1 diff --git a/lwrap/lwrap.install b/lwrap/lwrap.install index 36ccd38..74eeb48 100644 --- a/lwrap/lwrap.install +++ b/lwrap/lwrap.install @@ -31,25 +31,11 @@ export -f pkg_tool ## arg 1: the new package version ## arg 2: the old package version post_upgrade() { - pac -Q python-xlib &>/dev/null && \ - pkg_tool 'yes|pac -Rsn python-xlib' - pac -Q zenity 2>/dev/null|grep -q '4.0.0' && \ pkg_tool 'yes|sudo downgrade zenity=3.44.2' - if pac -Q lib32-mesa-tkg-git &>/dev/null - then - pkg_tool 'yes|pac -Rsndd mesa-tkg-git lib32-mesa-tkg-git' - pkg_tool 'yes|pac -S mesa vulkan-swrast libva-mesa-driver mesa-vdpau vulkan-mesa-layers \ - vulkan-intel vulkan-radeon lib32-mesa lib32-vulkan-swrast lib32-libva-mesa-driver \ - lib32-mesa-vdpau lib32-vulkan-mesa-layers lib32-vulkan-intel lib32-vulkan-radeon' - fi - - pac -Q vulkan-virtio &>/dev/null && \ - pkg_tool 'yes|pac -Rdd vulkan-virtio lib32-vulkan-virtio' - - pac -Q firefox &>/dev/null && \ - pkg_tool 'yes|pac -Rdd firefox' + pac -Q chromium &>/dev/null && \ + pkg_tool 'yes|pac -Rsndd chromium' return 0 }