@@ -68,9 +68,9 @@ _bypass_signature_check_level() {
6868
6969_install_junest () {
7070 echo " -----------------------------------------------------------------------------"
71- echo " ◆ Clone JuNest from https://github.com/fsquillace /junest"
71+ echo " ◆ Clone JuNest from https://github.com/ivan-hc /junest"
7272 echo " -----------------------------------------------------------------------------"
73- git clone https://github.com/fsquillace /junest.git ./.local/share/junest
73+ git clone https://github.com/ivan-hc /junest.git ./.local/share/junest
7474 echo " -----------------------------------------------------------------------------"
7575 echo " ◆ Downloading JuNest archive from https://github.com/ivan-hc/junest"
7676 echo " -----------------------------------------------------------------------------"
181181if [ ! -d " $APP " .AppDir/.local ]; then
182182 mkdir -p " $APP " .AppDir/.local
183183 rsync -av archlinux/.local/ " $APP " .AppDir/.local/ | echo " ◆ Rsync .local directory to the AppDir"
184- # Made JuNest a portable app and remove "read-only file system" errors
185- sed -i ' s#${JUNEST_HOME}/usr/bin/junest_wrapper#${HOME}/.cache/junest_wrapper.old#g' " $APP " .AppDir/.local/share/junest/lib/core/wrappers.sh
186- sed -i ' s/rm -f "${JUNEST_HOME}${bin_path}_wrappers/#rm -f "${JUNEST_HOME}${bin_path}_wrappers/g' " $APP " .AppDir/.local/share/junest/lib/core/wrappers.sh
187- sed -i ' s/ln/#ln/g' " $APP " .AppDir/.local/share/junest/lib/core/wrappers.sh
188- sed -i ' s/rm -f "$file"/test -f "$file"/g' " $APP " .AppDir/.local/share/junest/lib/core/wrappers.sh
189- sed -i ' s#--bind "$HOME" "$HOME"#--bind-try /home /home --bind-try /run/user /run/user#g' " $APP " .AppDir/.local/share/junest/lib/core/namespace.sh
184+ cat " $APP " .AppDir/.local/share/junest/lib/core/wrappers.patch > " $APP " .AppDir/.local/share/junest/lib/core/wrappers.sh
185+ cat " $APP " .AppDir/.local/share/junest/lib/core/namespace.patch > " $APP " .AppDir/.local/share/junest/lib/core/namespace.sh
190186fi
191187
192188echo " ◆ Rsync .junest directories structure to the AppDir"
@@ -211,63 +207,56 @@ rm -f "$APP".AppDir/AppRun
211207cat << -'HEREDOC ' >> "$APP".AppDir/AppRun
212208#!/bin/sh
213209HERE="$(dirname "$(readlink -f "$0")")"
214- export UNION_PRELOAD="$HERE"
215210export JUNEST_HOME="$HERE"/.junest
216211
212+ CACHEDIR="${XDG_CACHE_HOME:-$HOME/.cache}"
213+ mkdir -p "$CACHEDIR" || exit 1
214+
217215if command -v unshare >/dev/null 2>&1 && ! unshare --user -p /bin/true >/dev/null 2>&1; then
218- PROOT_ON=1
219- export PATH="$HERE"/.local/share/junest/bin/:"$PATH"
220- mkdir -p "$HOME"/.cache
216+ PROOT_ON=1 && export PATH="$HERE"/.local/share/junest/bin/:"$PATH"
221217else
222218 export PATH="$PATH":"$HERE"/.local/share/junest/bin
223219fi
224220
225221[ -z "$NVIDIA_ON" ] && NVIDIA_ON=0
226- if [ "$NVIDIA_ON" = 1 ]; then
227- DATADIR="${XDG_DATA_HOME:-$HOME/.local/share}"
228- CONTY_DIR="${DATADIR}/Conty/overlayfs_shared"
229- [ -f /sys/module/nvidia/version ] && nvidia_driver_version="$(cat /sys/module/nvidia/version)"
230- if [ -n "$nvidia_driver_version" ]; then
231- mkdir -p "${CONTY_DIR}"/nvidia "${CONTY_DIR}"/up/usr/lib "${CONTY_DIR}"/up/usr/share
232- nvidia_data_dirs="egl glvnd nvidia vulkan"
233- for d in $nvidia_data_dirs; do [ ! -d "${CONTY_DIR}"/up/usr/share/"$d" ] && ln -s /usr/share/"$d" "${CONTY_DIR}"/up/usr/share/ 2>/dev/null; done
234- [ ! -f "${CONTY_DIR}"/nvidia/current-nvidia-version ] && echo "${nvidia_driver_version}" > "${CONTY_DIR}"/nvidia/current-nvidia-version
235- [ -f "${CONTY_DIR}"/nvidia/current-nvidia-version ] && nvidia_driver_conty=$(cat "${CONTY_DIR}"/nvidia/current-nvidia-version)
236- if [ "${nvidia_driver_version}" != "${nvidia_driver_conty}" ]; then
237- rm -f "${CONTY_DIR}"/up/usr/lib/*; echo "${nvidia_driver_version}" > "${CONTY_DIR}"/nvidia/current-nvidia-version
238- fi
239- /sbin/ldconfig -p > "${CONTY_DIR}"/nvidia/host_libs
240- grep -i "nvidia\|libcuda" "${CONTY_DIR}"/nvidia/host_libs | cut -d ">" -f 2 > "${CONTY_DIR}"/nvidia/host_nvidia_libs
241- libnv_paths=$(grep "libnv" "${CONTY_DIR}"/nvidia/host_libs | cut -d ">" -f 2)
242- for f in $libnv_paths; do strings "${f}" | grep -qi -m 1 "nvidia" && echo "${f}" >> "${CONTY_DIR}"/nvidia/host_nvidia_libs; done
243- nvidia_libs=$(cat "${CONTY_DIR}"/nvidia/host_nvidia_libs)
244- for n in $nvidia_libs; do libname=$(echo "$n" | sed 's:.*/::') && [ ! -f "${CONTY_DIR}"/up/usr/lib/"$libname" ] && cp "$n" "${CONTY_DIR}"/up/usr/lib/; done
245- libvdpau_nvidia="${CONTY_DIR}/up/usr/lib/libvdpau_nvidia.so"
246- if ! test -f "${libvdpau_nvidia}*"; then cp "$(find /usr/lib -type f -name 'libvdpau_nvidia.so*' -print -quit 2>/dev/null | head -1)" "${CONTY_DIR}"/up/usr/lib/; fi
247- [ -f "${libvdpau_nvidia}"."${nvidia_driver_version}" ] && [ ! -f "${libvdpau_nvidia}" ] && ln -s "${libvdpau_nvidia}"."${nvidia_driver_version}" "${libvdpau_nvidia}"
248- [ -d "${CONTY_DIR}"/up/usr/lib ] && export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":"${CONTY_DIR}"/up/usr/lib:"${LD_LIBRARY_PATH}"
249- [ -d "${CONTY_DIR}"/up/usr/share ] && export XDG_DATA_DIRS="${XDG_DATA_DIRS}":"${CONTY_DIR}"/up/usr/share:"${XDG_DATA_DIRS}"
222+ if [ -f /sys/module/nvidia/version ] && [ "$NVIDIA_ON" = 1 ]; then
223+ nvidia_driver_version="$(cat /sys/module/nvidia/version)"
224+ JUNEST_DIRS="${CACHEDIR}/junest_shared/usr" JUNEST_LIBS="${JUNEST_DIRS}/lib" JUNEST_NVIDIA_DATA="${JUNEST_DIRS}/share/nvidia"
225+ mkdir -p "${JUNEST_LIBS}" "${JUNEST_NVIDIA_DATA}" || exit 1
226+ [ ! -f "${JUNEST_NVIDIA_DATA}"/current-nvidia-version ] && echo "${nvidia_driver_version}" > "${JUNEST_NVIDIA_DATA}"/current-nvidia-version
227+ [ -f "${JUNEST_NVIDIA_DATA}"/current-nvidia-version ] && nvidia_driver_conty=$(cat "${JUNEST_NVIDIA_DATA}"/current-nvidia-version)
228+ if [ "${nvidia_driver_version}" != "${nvidia_driver_conty}" ]; then
229+ rm -f "${JUNEST_LIBS}"/*; echo "${nvidia_driver_version}" > "${JUNEST_NVIDIA_DATA}"/current-nvidia-version
250230 fi
231+ HOST_LIBS=$(/sbin/ldconfig -p)
232+ libnvidia_libs=$(echo "$HOST_LIBS" | grep -i "nvidia\|libcuda" | cut -d ">" -f 2)
233+ libvdpau_nvidia=$(find /usr/lib -type f -name 'libvdpau_nvidia.so*' -print -quit 2>/dev/null | head -1)
234+ libnv_paths=$(echo "$HOST_LIBS" | grep "libnv" | cut -d ">" -f 2)
235+ for f in $libnv_paths; do strings "${f}" | grep -qi -m 1 "nvidia" && libnv_libs="$libnv_libs ${f}"; done
236+ host_nvidia_libs=$(echo "$libnv_libs $libnvidia_libs $libvdpau_nvidia" | sed 's/ /\n/g' | sort | grep .)
237+ for n in $host_nvidia_libs; do libname=$(echo "$n" | sed 's:.*/::') && [ ! -f "${JUNEST_LIBS}"/"$libname" ] && cp "$n" "${JUNEST_LIBS}"/; done
238+ libvdpau="${JUNEST_LIBS}/libvdpau_nvidia.so"
239+ [ -f "${libvdpau}"."${nvidia_driver_version}" ] && [ ! -f "${libvdpau}" ] && ln -s "${libvdpau}"."${nvidia_driver_version}" "${libvdpau}"
240+ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":"${JUNEST_LIBS}":"${LD_LIBRARY_PATH}"
251241fi
252242
253- PROOT_BINDINGS=""
254- BWRAP_BINDINGS=""
255-
256243bind_files="/etc/resolv.conf /etc/hosts /etc/nsswitch.conf /etc/passwd /etc/group /etc/machine-id /etc/asound.conf /etc/localtime "
257- for f in $bind_files; do [ -f "$f" ] && PROOT_BINDINGS=" $PROOT_BINDINGS --bind=$f" && BWRAP_BINDINGS=" $BWRAP_BINDINGS --ro-bind-try $f $f"; done
258-
259- bind_dirs=" /media /mnt /opt /run/media /usr/lib/locale /usr/share/fonts /usr/share/themes /var"
260- for d in $bind_dirs; do [ -d "$d" ] && PROOT_BINDINGS=" $PROOT_BINDINGS --bind=$d" && BWRAP_BINDINGS=" $BWRAP_BINDINGS --bind-try $d $d"; done
261-
262- PROOT_BINDS=" --bind=/dev --bind=/sys --bind=/tmp --bind=/proc $PROOT_BINDINGS --bind=/home --bind=/home/$USER "
263- BWRAP_BINDS=" --dev-bind /dev /dev --ro-bind /sys /sys --bind-try /tmp /tmp --proc /proc $BWRAP_BINDINGS --cap-add CAP_SYS_ADMIN "
244+ bind_nvidia_data_dirs="/usr/share/egl /usr/share/glvnd /usr/share/nvidia /usr/share/vulkan"
245+ bind_dirs=" /media /mnt /opt /run/media /usr/lib/locale /usr/share/fonts /usr/share/themes /var $bind_nvidia_data_dirs"
246+ if [ "$PROOT_ON" = 1 ]; then
247+ for f in $bind_files; do [ -f "$f" ] && BINDINGS=" $BINDINGS --bind=$f"; done
248+ for d in $bind_dirs; do [ -d "$d" ] && BINDINGS=" $BINDINGS --bind=$d"; done
249+ junest_options="proot -n -b"
250+ junest_bindings=" --bind=/dev --bind=/sys --bind=/tmp --bind=/proc $BINDINGS --bind=/home --bind=/home/$USER "
251+ else
252+ for f in $bind_files; do [ -f "$f" ] && BINDINGS=" $BINDINGS --ro-bind-try $f $f"; done
253+ for d in $bind_dirs; do [ -d "$d" ] && BINDINGS=" $BINDINGS --bind-try $d $d"; done
254+ junest_options="-n -b"
255+ junest_bindings=" --dev-bind /dev /dev --ro-bind /sys /sys --bind-try /tmp /tmp --proc /proc $BINDINGS --cap-add CAP_SYS_ADMIN "
256+ fi
264257
265258_JUNEST_CMD() {
266- if [ "$PROOT_ON" = 1 ]; then
267- "$HERE"/.local/share/junest/bin/junest proot -n -b "$PROOT_BINDS" "$@"
268- else
269- "$HERE"/.local/share/junest/bin/junest -n -b "$BWRAP_BINDS" "$@"
270- fi
259+ "$HERE"/.local/share/junest/bin/junest $junest_options "$junest_bindings" "$@"
271260}
272261
273262EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2- | sed -e 's|%.||g')
@@ -538,11 +527,8 @@ _remove_more_bloatwares() {
538527
539528_enable_mountpoints_for_the_inbuilt_bubblewrap () {
540529 mkdir -p ./" $APP " .AppDir/.junest/home
541- mkdir -p ./" $APP " .AppDir/.junest/media
542- mkdir -p ./" $APP " .AppDir/.junest/usr/lib/locale
543- mkdir -p ./" $APP " .AppDir/.junest/usr/share/fonts
544- mkdir -p ./" $APP " .AppDir/.junest/usr/share/themes
545- mkdir -p ./" $APP " .AppDir/.junest/run/media
530+ bind_dirs=$( grep " _dirs=" ./" $APP " .AppDir/AppRun | tr ' " ' ' \n' | grep " /" | sort | xargs)
531+ for d in $bind_dirs ; do mkdir -p ./" $APP " .AppDir/.junest" $d " ; done
546532 mkdir -p ./" $APP " .AppDir/.junest/run/user
547533 rm -f ./" $APP " .AppDir/.junest/etc/localtime && touch ./" $APP " .AppDir/.junest/etc/localtime
548534 [ ! -f ./" $APP " .AppDir/.junest/etc/asound.conf ] && touch ./" $APP " .AppDir/.junest/etc/asound.conf
@@ -573,4 +559,4 @@ UPINFO="gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|$REPO|$TAG|*x86_64.AppImage.z
573559
574560ARCH=x86_64 ./appimagetool --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 20 \
575561 -u " $UPINFO " \
576- ./" $APP " .AppDir " $APPNAME " _" $VERSION " -archimage4.3 -x86_64.AppImage
562+ ./" $APP " .AppDir " $APPNAME " _" $VERSION " -archimage4.9 -x86_64.AppImage
0 commit comments