Compare commits

..

11 Commits

Author SHA1 Message Date
7f33d2fff7 去除unlink 2024-01-11 23:54:03 +08:00
b93199bb05 feat: 直接在包体提供bin的软链接而不是在postinst做 2024-01-11 23:52:11 +08:00
6b0942d2d5 test: NVIDIA support 2024-01-05 18:57:33 +08:00
de2d84e13a fix: Can not show icons in ACE container.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2023-12-31 13:12:39 +00:00
8fca595000 update tips-slimize-container.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2023-12-25 09:35:52 +00:00
ceb863717f update tips-slimize-container.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2023-12-25 09:27:44 +00:00
f489876185 fix: Can not start app in some desktops
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2023-12-20 06:13:52 +00:00
1e47004eef !2 chore: modify the category of shortcuts
Merge pull request !2 from pzm9012/master
2023-12-12 15:40:38 +00:00
pzm9012
4afbfab976 chore: modify the category of shortcuts
Signed-off-by: pzm9012 <pzm9012@outlook.com>
2023-12-12 15:33:43 +00:00
866a866d5b 无UOS包支持 2023-12-12 22:57:17 +08:00
2bdfe5c177 update src/DEBIAN/control.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2023-12-12 09:33:40 +00:00
18 changed files with 134 additions and 14 deletions

View File

@@ -1,8 +1,8 @@
Package: cn.flamescion.bookworm-compatibility-mode Package: cn.flamescion.bookworm-compatibility-mode
Version: 12.4.5 Version: 12.4.7
Section: misc Section: misc
Priority: optional Priority: optional
Depends: bubblewrap,xdg-desktop-portal | flatpak,zenity,policykit-1,gcc Depends: bubblewrap,flatpak,zenity,policykit-1,gcc
Maintainer: shenmo <shenmo@spark-app.store> Maintainer: shenmo <shenmo@spark-app.store>
Architecture: amd64 Architecture: amd64
Description: bwrap wrapper for install and running debs inside a bookworm container Description: bwrap wrapper for install and running debs inside a bookworm container

View File

@@ -1,8 +1,4 @@
#!/bin/bash #!/bin/bash
export PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE" export PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
/opt/apps/$PACKAGE_NAME/files/bin/bookworm-init /opt/apps/$PACKAGE_NAME/files/bin/bookworm-init
if [ "$PACKAGE_NAME" = "cn.flamescion.bookworm-compatibility-mode" ];then
ln -sf /opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/bookworm-run /usr/bin/bookworm-run
ln -sf /opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/ace-uninstall-helper /usr/bin/ace-uninstall-helper
ln -sf /opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/ace-uninstall-helper-gui /usr/bin/ace-uninstall-helper-gui
fi

View File

@@ -1,11 +1,7 @@
#!/bin/bash #!/bin/bash
PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE" PACKAGE_NAME="$DPKG_MAINTSCRIPT_PACKAGE"
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
if [ "$PACKAGE_NAME" = "cn.flamescion.bookworm-compatibility-mode" ];then
unlink /usr/bin/bookworm-run
unlink /usr/bin/ace-uninstall-helper
unlink /usr/bin/ace-uninstall-helper-gui
fi
echo "清理卸载残留" echo "清理卸载残留"
rm -rf /opt/apps/$PACKAGE_NAME rm -rf /opt/apps/$PACKAGE_NAME

View File

@@ -190,6 +190,126 @@ ln -sfv /flamescion-container-tools/bin-override/host-spawn-$(uname -m) /flamesc
apt install --reinstall /flamescion-container-tools/ace-host-integration.deb apt install --reinstall /flamescion-container-tools/ace-host-integration.deb
### Do NVIDIA Integration
echo "ACE: NVIDIA Integration"
ensureTargetDir() {
targetFile=$1
t=$(dirname "$targetFile")
mkdir -p "$t"
}
lib32_dir="/usr/lib/"
lib64_dir="/usr/lib/"
if [ -e "/usr/lib/x86_64-linux-gnu" ]; then
lib64_dir="/usr/lib/x86_64-linux-gnu/"
elif [ -e "/usr/lib64" ]; then
lib64_dir="/usr/lib64/"
fi
if [ -e "/usr/lib/i386-linux-gnu" ]; then
lib32_dir="/usr/lib/i386-linux-gnu/"
elif [ -e "/usr/lib32" ]; then
lib32_dir="/usr/lib32/"
fi
# First we find all non-lib files we need, this includes
# - binaries
# - confs
# - egl files
# - icd files
# Excluding here the libs, we will threat them later specifically
NVIDIA_FILES="$(find /host/etc/ /host/usr/ \
-path "/host/usr/lib/i386-linux-gnu/*" -prune -o \
-path "/host/usr/lib/x86_64-linux-gnu/*" -prune -o \
-path "/host/usr/lib32/*" -prune -o \
-path "/host/usr/lib64/*" -prune -o \
-iname "*nvidia*" -not -type d -print 2> /dev/null || :)"
for nvidia_file in ${NVIDIA_FILES}; do
dest_file="$(printf "%s" "${nvidia_file}" | sed 's|/host||g')"
ensureTargetDir ${dest_file}
cp -r "${nvidia_file}" "${dest_file}"
done
# Then we find all directories with nvidia in the name and just mount them
NVIDIA_DIRS="$(find /host/etc /host/usr -iname "*nvidia*" -type d 2> /dev/null || :)"
for nvidia_dir in ${NVIDIA_DIRS}; do
# /usr/lib64 is common in Arch or RPM based distros, while /usr/lib/x86_64-linux-gnu is
# common on Debian derivatives, so we need to adapt between the two nomenclatures.
if printf "%s" "${nvidia_dir}" | grep -Eq "lib32|lib64|x86_64-linux-gnu|i386-linux-gnu"; then
# Remove origin so we plug our own
dest_dir="$(printf "%s" "${nvidia_dir}" |
sed "s|/host/usr/lib/x86_64-linux-gnu/|${lib64_dir}|g" |
sed "s|/host/usr/lib/i386-linux-gnu/|${lib32_dir}|g" |
sed "s|/host/usr/lib64/|${lib64_dir}|g" |
sed "s|/host/usr/lib32/|${lib32_dir}|g")"
else
dest_dir="$(printf "%s" "${nvidia_dir}" | sed 's|/host||g')"
fi
ensureTargetDir ${dest_file}
cp -r "${nvidia_dir}" "${dest_file}"
done
# Then we find all the ".so" libraries, there are searched separately
# because we need to extract the relative path to mount them in the
# correct path based on the guest's setup
#
# /usr/lib64 is common in Arch or RPM based distros, while /usr/lib/x86_64-linux-gnu is
# common on Debian derivatives, so we need to adapt between the two nomenclatures.
NVIDIA_LIBS="$(find \
/host/usr/lib/i386-linux-gnu/ \
/host/usr/lib/x86_64-linux-gnu/ \
/host/usr/lib32/ \
/host/usr/lib64/ \
-iname "*nvidia*.so*" \
-o -iname "libcuda*.so*" \
-o -iname "libnvcuvid*.so*" \
-o -iname "libnvoptix*.so*" 2> /dev/null || :)"
for nvidia_lib in ${NVIDIA_LIBS}; do
dest_file="$(printf "%s" "${nvidia_lib}" |
sed "s|/host/usr/lib/x86_64-linux-gnu/|${lib64_dir}|g" |
sed "s|/host/usr/lib/i386-linux-gnu/|${lib32_dir}|g" |
sed "s|/host/usr/lib64/|${lib64_dir}|g" |
sed "s|/host/usr/lib32/|${lib32_dir}|g")"
# If file exists, just continue
# this may happen for directories like /usr/lib/nvidia/xorg/foo.so
# where the directory is already bind mounted (ro) and we don't need
# to mount further files in it.
if [ -e "${dest_file}" ]; then
continue
fi
type="file"
if [ -L "${nvidia_lib}" ]; then
type="link"
fi
if [ "${type}" = "link" ]; then
mkdir -p "$(dirname "${dest_file}")"
cp -d "${nvidia_lib}" "${dest_file}"
continue
fi
ensureTargetDir ${dest_file}
cp -r "${nvidia_lib}" "${dest_file}"
done
# Refresh ldconfig cache, also detect if there are empty files remaining
# and clean them.
# This could happen when upgrading drivers and changing versions.
empty_libs="$(ldconfig 2>&1 | grep -Eo "File.*is empty" | cut -d' ' -f2)"
if [ -n "${empty_libs}" ]; then
# shellcheck disable=SC2086
find ${empty_libs} -delete 2> /dev/null || :
find /usr/ /etc/ -empty -iname "*nvidia*" -delete 2> /dev/null || :
fi
EOFFFFFF EOFFFFFF
#####init #####init

View File

@@ -66,7 +66,7 @@ bwrap --dev-bind / / \
--dev-bind-try /run/user/$uid/pulse /run/user/$uid/pulse \ --dev-bind-try /run/user/$uid/pulse /run/user/$uid/pulse \
--dev-bind / /host \ --dev-bind / /host \
--ro-bind-try /usr/share/themes /usr/local/share/themes \ --ro-bind-try /usr/share/themes /usr/local/share/themes \
--ro-bind-try /usr/share/icons /usr/share/icons \ --ro-bind-try /usr/share/icons /usr/local/share/icons \
--ro-bind-try /usr/share/fonts /usr/local/share/fonts \ --ro-bind-try /usr/share/fonts /usr/local/share/fonts \
--hostname Amber-CE-Bookworm \ --hostname Amber-CE-Bookworm \
--unshare-uts \ --unshare-uts \

View File

@@ -0,0 +1 @@
../../opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/ace-uninstall-helper

View File

@@ -0,0 +1 @@
../../opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/ace-uninstall-helper-gui

1
src/usr/bin/bookworm-init Symbolic link
View File

@@ -0,0 +1 @@
../../opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/bookworm-init

1
src/usr/bin/bookworm-run Symbolic link
View File

@@ -0,0 +1 @@
../../opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/bookworm-run

View File

@@ -6,6 +6,6 @@ Comment=用于卸载ACE容器的应用
Type=Application Type=Application
Exec=/opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/ace-uninstall-helper-gui Exec=/opt/apps/cn.flamescion.bookworm-compatibility-mode/files/bin/ace-uninstall-helper-gui
Icon=ACE-uninstaller Icon=ACE-uninstaller
Categories=AudioVideo Categories=System
# Generated from the DesktopGenerater component of the z-Tools toolkit # Generated from the DesktopGenerater component of the z-Tools toolkit

View File

@@ -8,3 +8,4 @@ Keywords=BCM,ACE,ace,mode
StartupNotify=true StartupNotify=true
Type=Application Type=Application
Terminal=true Terminal=true
Categories=System

View File

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 196 KiB

View File

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -8,3 +8,5 @@ rm -rf /var/cache/apt/
rm -rf /var/lib/aptss/lists/* rm -rf /var/lib/aptss/lists/*
rm -rf /usr/share/doc rm -rf /usr/share/doc
#apt install ace-integration in init
#tools只保留gio hostspawn和xdg-open