diff --git a/ci-scripts/test.sh b/ci-scripts/test.sh index a22ce28..6b15b49 100755 --- a/ci-scripts/test.sh +++ b/ci-scripts/test.sh @@ -19,11 +19,20 @@ export AWS_DEFAULT_REGION=us-east-1 # Install tools for testing apk add \ - aws-cli \ curl \ jq \ openssh-client +AWS_CLI_IMAGE=public.ecr.aws/aws-cli/aws-cli:2.34.33 + +aws() { + docker run --rm \ + -e AWS_ACCESS_KEY_ID \ + -e AWS_SECRET_ACCESS_KEY \ + -e AWS_DEFAULT_REGION \ + "${AWS_CLI_IMAGE}" "$@" +} + ## Functions ## # Ami locater getami () { @@ -88,7 +97,7 @@ aws ec2 run-instances \ --security-group-ids sg-029d5bc88b001fbe5 \ --subnet-id subnet-0ee70521f1f979f5f \ --associate-public-ip-address \ - --user-data file:///root/user-data \ + --user-data "$(cat /root/user-data)" \ --block-device-mapping '[ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": 120 } } ]' \ --instance-initiated-shutdown-behavior terminate > /tmp/instance.json INSTANCE=$(cat /tmp/instance.json | jq -r " .Instances[0].InstanceId") diff --git a/dockerfile-kasm-core-fedora b/dockerfile-kasm-core-fedora index 871f517..9e1e4b5 100644 --- a/dockerfile-kasm-core-fedora +++ b/dockerfile-kasm-core-fedora @@ -134,6 +134,10 @@ RUN bash $STARTUPDIR/set_user_permission.sh $STARTUPDIR $HOME && \ COPY ./src/ubuntu/install/extra $INST_SCRIPTS/extra/ RUN bash $INST_SCRIPTS/extra/$EXTRA_SH && rm -rf $INST_SCRIPTS/extra/ +### VirtualGL +COPY ./src/ubuntu/install/virtualgl $INST_SCRIPTS/virtualgl/ +RUN bash $INST_SCRIPTS/virtualgl/install_virtualgl.sh && rm -rf $INST_SCRIPTS/virtualgl/ + ### Custom Folder Emblems COPY ./src/ubuntu/install/emblems $INST_SCRIPTS/emblems/ RUN bash $INST_SCRIPTS/emblems/install_emblems.sh && rm -rf $INST_SCRIPTS/emblems/ @@ -144,6 +148,8 @@ ADD /src/common/resources/images/egress_info.svg /usr/share/extra/icons/egress_i ADD /src/common/resources/images/egress_error.svg /usr/share/extra/icons/egress_error.svg ADD /src/common/resources/images/egress_offline.svg /usr/share/extra/icons/egress_offline.svg +RUN rm -f "$HOME/.local/share/wget/.wget-hsts" + ### Create user and home directory for base images that don't already define it RUN (groupadd -g 1000 kasm-user \ && useradd -M -u 1000 -g 1000 kasm-user \ diff --git a/dockerfile-kasm-core-kasmos b/dockerfile-kasm-core-kasmos index 6914f75..9a94212 100644 --- a/dockerfile-kasm-core-kasmos +++ b/dockerfile-kasm-core-kasmos @@ -112,10 +112,6 @@ ADD ./src/common/startup_scripts $STARTUPDIR RUN bash $STARTUPDIR/set_user_permission.sh $STARTUPDIR $HOME && \ echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc -### VirtualGL -COPY ./src/ubuntu/install/virtualgl $INST_SCRIPTS/virtualgl/ -RUN bash $INST_SCRIPTS/virtualgl/install_virtualgl.sh && rm -rf $INST_SCRIPTS/virtualgl/ - ### Sysbox support COPY ./src/ubuntu/install/sysbox $INST_SCRIPTS/sysbox/ RUN bash $INST_SCRIPTS/sysbox/install_systemd.sh && rm -rf $INST_SCRIPTS/sysbox/ diff --git a/dockerfile-kasm-core-oracle b/dockerfile-kasm-core-oracle index 7773dcf..9bc7d97 100644 --- a/dockerfile-kasm-core-oracle +++ b/dockerfile-kasm-core-oracle @@ -139,6 +139,10 @@ COPY ./src/common/startup_scripts $STARTUPDIR RUN bash $STARTUPDIR/set_user_permission.sh $STARTUPDIR $HOME && \ echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc +### VirtualGL +COPY ./src/ubuntu/install/virtualgl $INST_SCRIPTS/virtualgl/ +RUN bash $INST_SCRIPTS/virtualgl/install_virtualgl.sh && rm -rf $INST_SCRIPTS/virtualgl/ + ### extra configurations needed per distro variant COPY ./src/ubuntu/install/extra $INST_SCRIPTS/extra/ RUN bash $INST_SCRIPTS/extra/$EXTRA_SH && rm -rf $INST_SCRIPTS/extra/ diff --git a/dockerfile-kasm-core-suse b/dockerfile-kasm-core-suse index cd2f05b..aa587e2 100644 --- a/dockerfile-kasm-core-suse +++ b/dockerfile-kasm-core-suse @@ -115,6 +115,10 @@ COPY ./src/common/startup_scripts $STARTUPDIR RUN bash $STARTUPDIR/set_user_permission.sh $STARTUPDIR $HOME && \ echo 'source $STARTUPDIR/generate_container_user' >> $HOME/.bashrc +### VirtualGL +COPY ./src/ubuntu/install/virtualgl $INST_SCRIPTS/virtualgl/ +RUN bash $INST_SCRIPTS/virtualgl/install_virtualgl.sh && rm -rf $INST_SCRIPTS/virtualgl/ + ### extra configurations needed per distro variant COPY ./src/ubuntu/install/extra $INST_SCRIPTS/extra/ RUN bash $INST_SCRIPTS/extra/$EXTRA_SH && rm -rf $INST_SCRIPTS/extra/ diff --git a/src/common/install/kasm_vnc/kasmvnc.yaml b/src/common/install/kasm_vnc/kasmvnc.yaml index 4b72bde..6a4670a 100644 --- a/src/common/install/kasm_vnc/kasmvnc.yaml +++ b/src/common/install/kasm_vnc/kasmvnc.yaml @@ -7,4 +7,6 @@ network: runtime_configuration: allow_override_standard_vnc_server_settings: true allow_override_list: - - pointer.enabled \ No newline at end of file + - pointer.enabled +server: + allow_environment_variables_to_override_config_settings: true \ No newline at end of file diff --git a/src/common/startup_scripts/vnc_startup.sh b/src/common/startup_scripts/vnc_startup.sh index 410942b..add4f6f 100755 --- a/src/common/startup_scripts/vnc_startup.sh +++ b/src/common/startup_scripts/vnc_startup.sh @@ -47,13 +47,7 @@ BUILD_ARCH=$(uname -p) if [ -z ${KASM_PROFILE_CHUNK_SIZE} ]; then KASM_PROFILE_CHUNK_SIZE=100000 fi -if [ -z ${DRINODE+x} ]; then - DRINODE="/dev/dri/renderD128" -fi -KASMNVC_HW3D='' -if [ ! -z ${HW3D+x} ]; then - KASMVNC_HW3D="-hw3d" -fi + STARTUP_COMPLETE=0 ######## FUNCTION DECLARATIONS ########## @@ -218,9 +212,9 @@ function start_kasmvnc (){ fi if [[ "${BUILD_ARCH}" =~ ^aarch64$ ]] && [[ -f /lib/aarch64-linux-gnu/libgcc_s.so.1 ]] ; then - LD_PRELOAD=/lib/aarch64-linux-gnu/libgcc_s.so.1 vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT + LD_PRELOAD=/lib/aarch64-linux-gnu/libgcc_s.so.1 vncserver $DISPLAY -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT else - vncserver $DISPLAY $KASMVNC_HW3D -drinode $DRINODE -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT + vncserver $DISPLAY -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION -websocketPort $NO_VNC_PORT -httpd ${KASM_VNC_PATH}/www -sslOnly -FrameRate=$MAX_FRAME_RATE -interface 0.0.0.0 -BlacklistThreshold=0 -FreeKeyMappings $VNCOPTIONS $KASM_SVC_SEND_CUT_TEXT $KASM_SVC_ACCEPT_CUT_TEXT fi KASM_PROCS['kasmvnc']=$(cat $HOME/.vnc/*${DISPLAY_NUM}.pid) @@ -247,7 +241,7 @@ function start_window_manager (){ if [ -n "$KASM_ENABLE_ZINK" ] && [ -n "$KASM_EGL_CARD" ] && [ -n "$KASM_RENDERD" ]; then echo "Starting XFCE with Zink" LIBGL_KOPPER_DRI2=1 MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink DISPLAY=:1 /usr/bin/startxfce4 --replace & - elif [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -O "${KASM_RENDERD}" ] && [ -O "${KASM_EGL_CARD}" ] ; then + elif [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -w "${KASM_RENDERD}" ] && [ -w "${KASM_EGL_CARD}" ] ; then echo "Starting XFCE with VirtualGL using EGL device ${KASM_EGL_CARD}" DISPLAY=:1 /opt/VirtualGL/bin/vglrun -d "${KASM_EGL_CARD}" /usr/bin/startxfce4 --replace & else @@ -267,7 +261,7 @@ function start_window_manager (){ fi echo -e "\n------------------ KDE window manager startup------------------" if [ "${START_DE}" == "kde5" ] ; then - if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -O "${KASM_RENDERD}" ] && [ -O "${KASM_EGL_CARD}" ] ; then + if [ -f /opt/VirtualGL/bin/vglrun ] && [ ! -z "${KASM_EGL_CARD}" ] && [ ! -z "${KASM_RENDERD}" ] && [ -w "${KASM_RENDERD}" ] && [ -w "${KASM_EGL_CARD}" ] ; then echo "Starting KDE with VirtualGL using EGL device ${KASM_EGL_CARD}" DISPLAY=:1 /opt/VirtualGL/bin/vglrun -d "${KASM_EGL_CARD}" /usr/bin/startplasma-x11 & else diff --git a/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh b/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh index 2db6842..5ddb3d8 100644 --- a/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh +++ b/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh @@ -15,7 +15,7 @@ echo "Install KasmVNC server" cd /tmp BUILD_ARCH=$(uname -m) UBUNTU_CODENAME="" -COMMIT_ID="d9b4772680641bd7b122519bdfdcdc4b3b264d8f" +COMMIT_ID="0a64d3381cf2ebfb53685c9c9c804e8a327bf0a3" BRANCH="master" # just use 'release' for a release branch KASMVNC_VER="1.4.1" COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6) diff --git a/src/ubuntu/install/package_rules/package_rules.sh b/src/ubuntu/install/package_rules/package_rules.sh index 5167a9e..d773f97 100644 --- a/src/ubuntu/install/package_rules/package_rules.sh +++ b/src/ubuntu/install/package_rules/package_rules.sh @@ -27,6 +27,16 @@ elif [[ "${DISTRO}" == "parrotos7" ]]; then apt-get update DEBIAN_FRONTEND=noninteractive apt-get upgrade -y else + if [ "${DISTRO}" == "parrotos6" ]; then + if ! getent group kasm-default-profile >/dev/null; then + groupadd --system kasm-default-profile + fi + if ! id kasm-default-profile >/dev/null 2>&1; then + useradd --system --gid kasm-default-profile --home-dir /home/kasm-default-profile --shell /usr/sbin/nologin kasm-default-profile + fi + fi apt-get update - DEBIAN_FRONTEND=noninteractive apt-get upgrade -y + DEBIAN_FRONTEND=noninteractive apt-get upgrade -y \ + -o Dpkg::Options::="--force-confdef" \ + -o Dpkg::Options::="--force-confold" fi diff --git a/src/ubuntu/install/squid/install/install_squid.sh b/src/ubuntu/install/squid/install/install_squid.sh index de77f6f..8b8b4e5 100644 --- a/src/ubuntu/install/squid/install/install_squid.sh +++ b/src/ubuntu/install/squid/install/install_squid.sh @@ -29,9 +29,12 @@ fi if [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|fedora42|fedora43|almalinux8|almalinux9|rockylinux8|rockylinux9|alpine) ]]; then useradd --system --shell /usr/sbin/nologin --home-dir /bin proxy elif [ "${DISTRO}" == "opensuse" ]; then - useradd --system --shell /usr/sbin/nologin --home-dir /bin proxy - groupadd -f -g 65511 proxy - usermod -a -G proxy proxy + if ! getent group proxy >/dev/null; then + groupadd -g 65511 proxy + fi + if ! id proxy >/dev/null 2>&1; then + useradd --system --shell /usr/sbin/nologin --home-dir /bin -g proxy proxy + fi fi # File and perms diff --git a/src/ubuntu/install/tools/install_tools.sh b/src/ubuntu/install/tools/install_tools.sh index 1b0fe99..873572c 100644 --- a/src/ubuntu/install/tools/install_tools.sh +++ b/src/ubuntu/install/tools/install_tools.sh @@ -1,13 +1,100 @@ #!/usr/bin/env bash set -e +if [ "${DISTRO}" == "parrotos7" ]; then + PARROTEXTRA="-t echo-backports" +fi + +ARCH="$(uname -m)" +INSTALL_INTEL_VA_DRIVERS="false" +if [[ "${ARCH}" == "x86_64" || "${ARCH}" == "amd64" ]]; then + INSTALL_INTEL_VA_DRIVERS="true" +fi + +install_optional_pkg() { + local pkg_mgr="$1" + local pkg="$2" + local install_cmd="$3" + if ! eval "${install_cmd}"; then + echo "WARN: Package '${pkg}' is not available for ${DISTRO} (${pkg_mgr}); continuing" + fi +} + +install_first_available_pkg() { + local pkg_mgr="$1" + local install_prefix="$2" + shift 2 + local pkg + for pkg in "$@"; do + if eval "${install_prefix} ${pkg}"; then + return 0 + fi + done + echo "WARN: None of the equivalent packages are available for ${DISTRO} (${pkg_mgr}): $*; continuing" + return 0 +} + echo "Install some common tools for further installation" if [[ "${DISTRO}" == @(fedora42|fedora43|oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then dnf install -y wget net-tools bzip2 tar vim hostname procps-ng bc vulkan-tools + yum install -y vim wget net-tools bzip2 ca-certificates bc + install_first_available_pkg "yum" "yum install -y" mesa-demos mesa-utils + install_first_available_pkg "yum" "yum install -y" libva-utils vainfo + install_first_available_pkg "yum" "yum install -y" mesa-va-drivers mesa-dri-drivers + install_optional_pkg "yum" "vulkan-tools" "yum install -y vulkan-tools" + install_optional_pkg "yum" "mesa-vulkan-drivers" "yum install -y mesa-vulkan-drivers" + install_optional_pkg "yum" "xorg-x11-drv-amdgpu" "yum install -y xorg-x11-drv-amdgpu" + install_optional_pkg "yum" "xorg-x11-drv-ati" "yum install -y xorg-x11-drv-ati" + install_first_available_pkg "yum" "yum install -y" libdrm-amdgpu libdrm_amdgpu1 + install_first_available_pkg "yum" "yum install -y" libdrm-radeon libdrm_radeon1 + if [ "${INSTALL_INTEL_VA_DRIVERS}" == "true" ]; then + install_first_available_pkg "yum" "yum install -y" intel-media-driver intel-media-va-driver + install_first_available_pkg "yum" "yum install -y" libva-intel-driver i965-va-driver + fi +elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then + dnf install -y wget net-tools bzip2 tar vim hostname procps-ng bc + install_first_available_pkg "dnf" "dnf install -y" mesa-demos mesa-utils + install_first_available_pkg "dnf" "dnf install -y" libva-utils vainfo + install_first_available_pkg "dnf" "dnf install -y" mesa-va-drivers mesa-dri-drivers + install_optional_pkg "dnf" "vulkan-tools" "dnf install -y vulkan-tools" + install_optional_pkg "dnf" "mesa-vulkan-drivers" "dnf install -y mesa-vulkan-drivers" + install_optional_pkg "dnf" "xorg-x11-drv-amdgpu" "dnf install -y xorg-x11-drv-amdgpu" + install_optional_pkg "dnf" "xorg-x11-drv-ati" "dnf install -y xorg-x11-drv-ati" + install_first_available_pkg "dnf" "dnf install -y" libdrm-amdgpu libdrm_amdgpu1 + install_first_available_pkg "dnf" "dnf install -y" libdrm-radeon libdrm_radeon1 + if [ "${INSTALL_INTEL_VA_DRIVERS}" == "true" ]; then + install_first_available_pkg "dnf" "dnf install -y" intel-media-driver intel-media-va-driver + install_first_available_pkg "dnf" "dnf install -y" libva-intel-driver i965-va-driver + fi elif [[ "${DISTRO}" == @(rhel9) ]]; then dnf install -y wget net-tools bzip2 tar vim hostname procps-ng bc + install_first_available_pkg "dnf" "dnf install -y" mesa-demos mesa-utils + install_first_available_pkg "dnf" "dnf install -y" libva-utils vainfo + install_first_available_pkg "dnf" "dnf install -y" mesa-va-drivers mesa-dri-drivers + install_optional_pkg "dnf" "vulkan-tools" "dnf install -y vulkan-tools" + install_optional_pkg "dnf" "mesa-vulkan-drivers" "dnf install -y mesa-vulkan-drivers" + install_optional_pkg "dnf" "xorg-x11-drv-amdgpu" "dnf install -y xorg-x11-drv-amdgpu" + install_optional_pkg "dnf" "xorg-x11-drv-ati" "dnf install -y xorg-x11-drv-ati" + install_first_available_pkg "dnf" "dnf install -y" libdrm-amdgpu libdrm_amdgpu1 + install_first_available_pkg "dnf" "dnf install -y" libdrm-radeon libdrm_radeon1 + if [ "${INSTALL_INTEL_VA_DRIVERS}" == "true" ]; then + install_first_available_pkg "dnf" "dnf install -y" intel-media-driver intel-media-va-driver + install_first_available_pkg "dnf" "dnf install -y" libva-intel-driver i965-va-driver + fi elif [ "${DISTRO}" == "opensuse" ]; then - zypper install -yn wget net-tools bzip2 tar vim gzip iputils bc vulkan-tools + zypper install -yn wget net-tools bzip2 tar vim gzip iputils bc + install_first_available_pkg "zypper" "zypper install -yn" Mesa-demos mesa-utils Mesa-demo-x + install_first_available_pkg "zypper" "zypper install -yn" libva-utils vainfo + install_first_available_pkg "zypper" "zypper install -yn" Mesa-libva mesa-va-drivers + install_optional_pkg "zypper" "vulkan-tools" "zypper install -yn vulkan-tools" + install_first_available_pkg "zypper" "zypper install -yn" libdrm_amdgpu1 libdrm-amdgpu1 + install_first_available_pkg "zypper" "zypper install -yn" libdrm_radeon1 libdrm-radeon1 + install_optional_pkg "zypper" "xf86-video-amdgpu" "zypper install -yn xf86-video-amdgpu" + install_optional_pkg "zypper" "xf86-video-ati" "zypper install -yn xf86-video-ati" + if [ "${INSTALL_INTEL_VA_DRIVERS}" == "true" ]; then + install_first_available_pkg "zypper" "zypper install -yn" intel-media-driver intel-media-va-driver + install_first_available_pkg "zypper" "zypper install -yn" libva-intel-driver i965-va-driver + fi elif [ "${DISTRO}" == "alpine" ]; then apk add --no-cache \ ca-certificates \ @@ -24,8 +111,20 @@ elif [ "${DISTRO}" == "alpine" ]; then sudo \ tar \ wget \ - bc \ - vulkan-tools + bc + install_first_available_pkg "apk" "apk add --no-cache" mesa-demos mesa-utils + install_first_available_pkg "apk" "apk add --no-cache" libva-utils vainfo + install_first_available_pkg "apk" "apk add --no-cache" mesa-va-gallium mesa-va-drivers + install_optional_pkg "apk" "vulkan-tools" "apk add --no-cache vulkan-tools" + install_optional_pkg "apk" "mesa-vulkan-radeon" "apk add --no-cache mesa-vulkan-radeon" + install_optional_pkg "apk" "xf86-video-amdgpu" "apk add --no-cache xf86-video-amdgpu" + install_optional_pkg "apk" "xf86-video-ati" "apk add --no-cache xf86-video-ati" + install_first_available_pkg "apk" "apk add --no-cache" libdrm-amdgpu libdrm_amdgpu1 + install_first_available_pkg "apk" "apk add --no-cache" libdrm-radeon libdrm_radeon1 + if [ "${INSTALL_INTEL_VA_DRIVERS}" == "true" ]; then + install_first_available_pkg "apk" "apk add --no-cache" intel-media-driver intel-media-va-driver + install_first_available_pkg "apk" "apk add --no-cache" libva-intel-driver i965-va-driver + fi else apt-get update # Update tzdata noninteractive (otherwise our script is hung on user input later). @@ -38,8 +137,26 @@ else # software-properties is removed from kali-rolling and debian trixie if grep -q "kali-rolling" /etc/os-release || grep -q "trixie" /etc/os-release || grep -qi "parrot" /etc/os-release; then apt-get install ${PARROTEXTRA} -y vim wget net-tools locales bzip2 wmctrl mesa-utils bc vulkan-tools + fi + if grep -q "kali-rolling" /etc/os-release || grep -q "trixie" /etc/os-release || grep -qi "parrot" /etc/os-release; then + apt-get install ${PARROTEXTRA} -y vim wget net-tools locales bzip2 wmctrl bc else - apt-get install ${PARROTEXTRA} -y vim wget net-tools locales bzip2 wmctrl software-properties-common mesa-utils bc vulkan-tools + apt-get install ${PARROTEXTRA} -y vim wget net-tools locales bzip2 wmctrl software-properties-common bc + fi + + install_optional_pkg "apt" "mesa-utils" "apt-get install ${PARROTEXTRA} -y mesa-utils" + install_first_available_pkg "apt" "apt-get install ${PARROTEXTRA} -y" mesa-utils-extra mesa-demos + install_optional_pkg "apt" "vainfo" "apt-get install ${PARROTEXTRA} -y vainfo" + install_optional_pkg "apt" "vulkan-tools" "apt-get install ${PARROTEXTRA} -y vulkan-tools" + install_optional_pkg "apt" "mesa-va-drivers" "apt-get install ${PARROTEXTRA} -y mesa-va-drivers" + install_optional_pkg "apt" "mesa-vulkan-drivers" "apt-get install ${PARROTEXTRA} -y mesa-vulkan-drivers" + install_optional_pkg "apt" "xserver-xorg-video-amdgpu" "apt-get install ${PARROTEXTRA} -y xserver-xorg-video-amdgpu" + install_optional_pkg "apt" "xserver-xorg-video-ati" "apt-get install ${PARROTEXTRA} -y xserver-xorg-video-ati" + install_optional_pkg "apt" "libdrm-amdgpu1" "apt-get install ${PARROTEXTRA} -y libdrm-amdgpu1" + install_optional_pkg "apt" "libdrm-radeon1" "apt-get install ${PARROTEXTRA} -y libdrm-radeon1" + if [ "${INSTALL_INTEL_VA_DRIVERS}" == "true" ]; then + install_optional_pkg "apt" "intel-media-va-driver" "apt-get install ${PARROTEXTRA} -y intel-media-va-driver" + install_optional_pkg "apt" "i965-va-driver" "apt-get install ${PARROTEXTRA} -y i965-va-driver" fi # Install openssh-client on Ubuntu diff --git a/src/ubuntu/install/virtualgl/install_virtualgl.sh b/src/ubuntu/install/virtualgl/install_virtualgl.sh index 6a6c0f4..e18aa95 100644 --- a/src/ubuntu/install/virtualgl/install_virtualgl.sh +++ b/src/ubuntu/install/virtualgl/install_virtualgl.sh @@ -1,16 +1,40 @@ -BUILD_ARCH=$(uname -p) +download_rpm() { + if [[ "${BUILD_ARCH}" =~ ^aarch64$ ]] ; then + url=https://github.com/VirtualGL/virtualgl/releases/download/3.1.3/VirtualGL-3.1.3.aarch64.rpm + else + url=https://github.com/VirtualGL/virtualgl/releases/download/3.1.3/VirtualGL-3.1.3.x86_64.rpm + fi -if [ "$DISTRO" = "ubuntu" ]; then - #install virtualgl - #wget https://sourceforge.net/projects/virtualgl/files/2.6.95%20%283.0rc1%29/virtualgl_2.6.95_amd64.deb -P /tmp + wget -O "$virtualgl_rpm" "$url" +} +cleanup_rpm() { + rm "$virtualgl_rpm" +} + +skip_parrotos_due_to_i386_dependencies_lacking() { + if [[ "$DISTRO" == @(parrotos6|parrotos7) ]]; then + exit + fi +} + +set -e + +virtualgl_deb=/tmp/virtualgl.deb +virtualgl_rpm=/tmp/virtualgl.rpm + +BUILD_ARCH=$(arch) + +skip_parrotos_due_to_i386_dependencies_lacking + +if command -v apt-get &>/dev/null; then if [[ "${BUILD_ARCH}" =~ ^aarch64$ ]] ; then apt-get update && apt-get install -y --no-install-recommends \ libxau6 libxdmcp6 libxcb1 libxext6 libx11-6 apt-get update && apt-get install -y --no-install-recommends \ libglvnd0 libgl1 libglx0 libegl1 libgles2 - dpkg -i $INST_SCRIPTS/virtualgl/virtualgl_*arm64.deb + wget -O "$virtualgl_deb" https://github.com/VirtualGL/virtualgl/releases/download/3.1.3/virtualgl_3.1.3_arm64.deb else dpkg --add-architecture i386 apt-get update && apt-get install -y --no-install-recommends \ @@ -26,13 +50,25 @@ if [ "$DISTRO" = "ubuntu" ]; then libegl1 libegl1:i386 \ libgles2 libgles2:i386 - if ! grep -q "24.04" /etc/os-release; then + if [[ "$DISTRO" = "ubuntu" ]] && ! grep -q "24.04" /etc/os-release; then add-apt-repository ppa:kisak/turtle apt full-upgrade -y fi - dpkg -i $INST_SCRIPTS/virtualgl/virtualgl_*amd64.deb + wget -O "$virtualgl_deb" https://github.com/VirtualGL/virtualgl/releases/download/3.1.3/virtualgl_3.1.3_amd64.deb fi - apt install -f -y - rm -rf $INST_SCRIPTS/virtualgl/ + apt-get install -y "$virtualgl_deb" + rm "$virtualgl_deb" fi + +if [[ "$DISTRO" =~ ^opensuse ]]; then + download_rpm + zypper --no-gpg-checks install -y "$virtualgl_rpm" + cleanup_rpm +elif command -v dnf &>/dev/null; then + download_rpm + dnf install -y "$virtualgl_rpm" + cleanup_rpm +fi + +rm -rf $INST_SCRIPTS/virtualgl/ diff --git a/src/ubuntu/install/virtualgl/virtualgl_3.1.2_amd64.deb b/src/ubuntu/install/virtualgl/virtualgl_3.1.2_amd64.deb deleted file mode 100644 index 572c4f5..0000000 Binary files a/src/ubuntu/install/virtualgl/virtualgl_3.1.2_amd64.deb and /dev/null differ diff --git a/src/ubuntu/install/virtualgl/virtualgl_3.1.2_arm64.deb b/src/ubuntu/install/virtualgl/virtualgl_3.1.2_arm64.deb deleted file mode 100644 index 815276a..0000000 Binary files a/src/ubuntu/install/virtualgl/virtualgl_3.1.2_arm64.deb and /dev/null differ