From 8b0a2d5f9194e67d2eb805a4631261ca23cfa013 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Tue, 12 Mar 2024 02:55:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20=D1=80?= =?UTF-8?q?=D0=B5=D0=BB=D0=B8=D0=B7=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82?= =?UTF-8?q?=D0=B0=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20AppImage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .vscode/launch.json | 15 ++ README.md | 27 +++ src/appimage-builder.sh | 234 +++++++++++++++++++ src/apps/horizon/build.sh | 5 + src/apps/horizon/files/AppRun | 21 ++ src/apps/horizon/files/vmware-view.desktop | 7 + src/apps/horizon/files/vmware-view.png | Bin 0 -> 29249 bytes src/apps/horizon/patches/vmware-view.patch | 44 ++++ src/apps/horizon/sources | 2 + src/apps/icaclient/build.sh | 15 ++ src/apps/icaclient/files/AppRun | 21 ++ src/apps/icaclient/files/receiver.png | Bin 0 -> 15506 bytes src/apps/icaclient/files/selfservice.desktop | 7 + src/apps/icaclient/sources | 24 ++ 15 files changed, 424 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 README.md create mode 100755 src/appimage-builder.sh create mode 100755 src/apps/horizon/build.sh create mode 100755 src/apps/horizon/files/AppRun create mode 100644 src/apps/horizon/files/vmware-view.desktop create mode 100644 src/apps/horizon/files/vmware-view.png create mode 100644 src/apps/horizon/patches/vmware-view.patch create mode 100644 src/apps/horizon/sources create mode 100755 src/apps/icaclient/build.sh create mode 100755 src/apps/icaclient/files/AppRun create mode 100644 src/apps/icaclient/files/receiver.png create mode 100644 src/apps/icaclient/files/selfservice.desktop create mode 100644 src/apps/icaclient/sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d8a1d07 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +cache/ +out/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..926dc04 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Используйте IntelliSense, чтобы узнать о возможных атрибутах. + // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. + // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "bashdb", + "request": "launch", + "name": "Bash-Debug (simplest configuration)", + "program": "${file}", + "args": ["horizon"] + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4374add --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# AppImage Builder + +### Иерархия исходного пакета + +``` +/my_package +├── build.sh +├── files +│ ├── AppRun +│ ├── my_program.desktop +│ └── my_program.png +└── sources +``` + +### Обязательные файлы для сборки: + +- `sources` - файл с ссылками на пакеты + зависимости для сборки AppImage +- `files/*` - файлы для запуска AppImage (`AppRun`, `*.desktop`, `*.png`) + +### Необязательный файл + +- `build.sh` - скрипт постобработки после распаковки `sources` файлов + +Для внутреннего `build.sh` доступны 2 глобальгые переменные для работы: + +- `current_path` - текущая директория пакета +- `app_path` - временная директория сборки пакета (иерархия будущего AppImage) diff --git a/src/appimage-builder.sh b/src/appimage-builder.sh new file mode 100755 index 0000000..9d5cfa3 --- /dev/null +++ b/src/appimage-builder.sh @@ -0,0 +1,234 @@ +#!/bin/bash +# title :appimage-builder.sh +# description :Script for building AppImage +# author :Alexander Zhirov +# date :20240312 +# version :0.1.0 +# usage :bash appimage-builder.sh +#=============================================================================== + +# Пакеты AppImageTool +# https://github.com/AppImage/appimagetool/releases +# Среда выполнения +# https://github.com/AppImage/type2-runtime/releases + +set -e + +version="0.1.0" + +# Определения по умолчанию +# Приложение для сборки AppImage +appimage_tool=$(which appimagetool-x86_64.AppImage) +# Среда выполнения +appimage_runtime=$(which runtime-x86_64) +# Output +appimage_output="${HOME}" +# Директория с рецептами +appimage_input="./apps" +# Директория с кэшем +appimage_cache="${HOME}/appimage_cache" +# Список приложений для сборки +appimage_apps=() + +# Дополнительные необходимые утилиты +rpm2cpio=$(which rpm2cpio) +cpio=$(which cpio) + +if [ ! -x ${rpm2cpio} ]; then + echo "Отсутствует утилита rpm2cpio" + exit 1 +fi + +if [ ! -x ${cpio} ]; then + echo "Отсутствует утилита cpio" + exit 1 +fi + +extrpm() { + local rpm="${1}" + local destination_path="${2}" + + ${rpm2cpio} ${rpm} | ${cpio} -idmvD ${destination_path} +} + +build_appimage() { + local pkg="${1}" + local name=$(basename ${pkg}) + local build="${pkg}/build.sh" + local sources="${pkg}/sources" + local files="${pkg}/files" + local cache="${appimage_cache}/${name}" + + # Временные директории для сборки + local tmp="/tmp/appimage_${name}_$(date "+%Y%m%d%H%M%S")" + local src="${tmp}/src" + local app="${tmp}/app" + + if [ ! -f ${sources} ]; then + echo "${name}: не найдено исходных файлов для упаковки" + return + fi + + if [ ! -s ${sources} ]; then + echo "${name}: не найдено ни одного источника" + return + fi + + if [ ! -d ${files} ]; then + echo "${files}: не найдена директория с файлами" + return + fi + + if ! [ "$(ls -A ${files})" ]; then + echo "${files}: отсутствуют файлы для сборки AppImage" + return + fi + + # Создание директорий для сборки AppImage + mkdir -pv ${src} ${app} ${cache} + + # Список файлов для скачивания + local source_files="$(cat ${sources} | grep -v "^#")" + + for source_file in ${source_files}; do + wget -N -P ${cache} ${source_file} + done + + # Извлечение из rpm пакетов внутренностей + for rpm in $(find ${cache} -name "*.rpm"); do + extrpm ${rpm} ${app} + done + + # Извлечение из deb пакетов внутренности data.tar.* архивов + for deb in $(find ${cache} -name "*.deb"); do + local tar_name=$(ar t ${deb} | grep data) + local tar_archive="${src}/${tar_name}" + ar xv ${deb} ${tar_name} --output ${src} + tar xvf ${tar_archive} -C ${app} + rm -v ${tar_archive} + done + + # Перенос необходмых файлов для сборки AppImage в директорию сборки + cp -rv ${files}/* ${app} + + # Запуск внутреннего скрипта сборки (если имеется) + if [ -f ${build} ]; then + export current_path=$(dirname ${build}) + export app_path=${app} + ${build} + unset ${current_path} + unset ${app_path} + fi + + local name_appimage=$(grep "Name" ${files}/*.desktop | sed 's/Name=//' | tr ' ' '_')-x86_64.AppImage + + ${appimage_tool} -v --runtime-file ${appimage_runtime} ${app} ${appimage_output}/${name_appimage} + + rm -rvf ${tmp} +} + +help_scritp() { + echo -e "\n" \ + "Использование: ${0} [ОПЦИИ]... [СПИСОК ПАКЕТОВ ДЛЯ СБОРКИ]\n" \ + "Основные опции:\n" \ + "\t-t\t--appimage-tool\t\tИнструмент сборки AppImage\n" \ + "\t-r\t--appimage-runtime\tИнструмент времени выполнения\n" \ + "\t-i\t--input-path\t\tДиректория с пакетами исходных файлов\n" \ + "\t-o\t--output-path\t\tДиректория сохранения собранных AppImage\n" \ + "\t-c\t--cache-path\t\tДиректория кеша для пакетов sources\n" \ + "Дополнительно:\n" \ + "\t-h\t--help\t\t\tПоказать справку\n" \ + "\t-v\t--version\t\tВерсия скрипта\n" +} + +main() { + while [[ $# -gt 0 ]]; do + key="${1}" + value="${2}" + case "${key}" in + -t|--appimage-tool) + appimage_tool="${value}" + shift + ;; + -r|--appimage-runtime) + appimage_runtime="${value}" + shift + ;; + -i|--input-path) + appimage_input="${value}" + shift + ;; + -o|--output-path) + appimage_output="${value}" + shift + ;; + -c|--cache-path) + appimage_cache="${value}" + shift + ;; + -h|--help) + help_scritp + exit 0 + ;; + -v|--version) + echo "Версия скрипта: ${version}" + exit 0 + ;; + *) + appimage_apps+=("${key}") + ;; + esac + shift + done + + if [ ! -f ${appimage_tool} ]; then + echo "Отсутствует инструмент сборки $(basename ${appimage_tool})" + exit 1 + fi + + if [ ! -x ${appimage_tool} ]; then + echo "Инструмент сборки $(basename ${appimage_tool}) должен быть исполняемым" + exit 1 + fi + + if [ ! -f ${appimage_runtime} ]; then + echo "Отсутствует инструмент времени выполнения $(basename ${appimage_runtime})" + exit 1 + fi + + if [ ! -x ${appimage_runtime} ]; then + echo "Инструмент времени выполнения $(basename ${appimage_runtime}) должен быть исполняемым" + exit 1 + fi + + if [ ! -d ${appimage_input} ]; then + echo "Не установлена директория исхоных файлов для сборки AppImage" + exit 1 + fi + + if [ ! -d ${appimage_output} ]; then + echo "Не установлена директория для сохранения AppImage" + exit 1 + fi + + if [ ! -d ${appimage_cache} ]; then + echo "Не определена директория для кеша. Будет использована директория по умолчанию" + appimage_cache="/tmp/appimage_cache" + mkdir -p "${appimage_cache}" + fi + + echo "Инструмент сборки: ${appimage_tool}" + echo "Инструмент времени выполнения: ${appimage_runtime}" + echo "Директория исходных файлов: ${appimage_input}" + echo "Директория для сохранения AppImage: ${appimage_input}" + echo "Директория для кеша: ${appimage_cache}" + echo "Список собираемых пакетов: ${appimage_apps[@]}" + + local pkgs=$(printf "%s\n" "${appimage_apps[@]}" | xargs -I {} find ${appimage_input} -name {} -mindepth 1 -maxdepth 1 -type d) + + for pkg in ${pkgs}; do + build_appimage ${pkg} + done +} + +main "${@}" diff --git a/src/apps/horizon/build.sh b/src/apps/horizon/build.sh new file mode 100755 index 0000000..5669318 --- /dev/null +++ b/src/apps/horizon/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +patches="${current_path}/patches" + +patch -d ${app_path} -p0 < ${patches}/vmware-view.patch diff --git a/src/apps/horizon/files/AppRun b/src/apps/horizon/files/AppRun new file mode 100755 index 0000000..67ff0a0 --- /dev/null +++ b/src/apps/horizon/files/AppRun @@ -0,0 +1,21 @@ +#!/bin/sh + +export LD_LIBRARY_PATH="usr/lib;usr/lib/x86_64-linux-gnu;" + +readlink_file() { + next_path=$1 + i=0 + while [ "$i" != 10 ] && [ "x$next_path" != "x$path" ]; do + path=$next_path + next_path=$(readlink "$path" || echo $path) + ((++i)) + done + echo "$path" +} + +basedir() { + file=$(readlink -f "$1") || $(readlink_file "$1") + echo $(cd "$(dirname "$file")" && pwd -P) +} + +cd "$(basedir "$0")" && usr/bin/vmware-view diff --git a/src/apps/horizon/files/vmware-view.desktop b/src/apps/horizon/files/vmware-view.desktop new file mode 100644 index 0000000..c259b47 --- /dev/null +++ b/src/apps/horizon/files/vmware-view.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Icon=vmware-view +Exec=vmware-view %u +MimeType=x-scheme-handler/vmware-view +Categories=Network; +Name=VMware Horizon Client diff --git a/src/apps/horizon/files/vmware-view.png b/src/apps/horizon/files/vmware-view.png new file mode 100644 index 0000000000000000000000000000000000000000..0860f5da365c7a0bc41e4e8cec8775ff77fb8697 GIT binary patch literal 29249 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 WhI=XAC*%z`0Z^7#m#dXA4f!AaKH`7? literal 0 HcmV?d00001 diff --git a/src/apps/horizon/patches/vmware-view.patch b/src/apps/horizon/patches/vmware-view.patch new file mode 100644 index 0000000..4fc7eb8 --- /dev/null +++ b/src/apps/horizon/patches/vmware-view.patch @@ -0,0 +1,44 @@ +--- usr/bin/vmware-view 2024-01-19 03:02:08.000000000 -0500 ++++ usr/bin/vmware-view 2024-02-26 02:41:04.027931625 -0500 +@@ -5,18 +5,18 @@ + # This script manages the VMware Horizon Client + # + +-libpath="/usr/lib/vmware" +-binPath="/usr/lib/vmware/view" ++libpath="usr/lib/vmware" ++binPath="usr/lib/vmware/view" + html5mmrlibPath="$libpath/view/html5mmr" + usbdlibPath="$libpath/view/usb" +-vdp_servicePath="/usr/lib/pcoip/vchan_plugins" ++vdp_servicePath="usr/lib/pcoip/vchan_plugins" + libtsdrClient="$libpath/view/vdpService/libtsdrClient.so" +-snapPath="/snap/gnome-system-monitor/current/usr/lib/x86_64-linux-gnu" ++snapPath="snap/gnome-system-monitor/current/usr/lib/x86_64-linux-gnu" + pid_self=$$ + + # Set media provider install path base on $VMWARE_HORIZON_MEDIA_PROVIDER_PATH + if [[ "$VMWARE_HORIZON_MEDIA_PROVIDER_PATH" = "" ]]; then +- mediaproviderPath="/usr/lib/vmware/mediaprovider" ++ mediaproviderPath="usr/lib/vmware/mediaprovider" + else + mediaproviderPath="$VMWARE_HORIZON_MEDIA_PROVIDER_PATH" + fi +@@ -36,7 +36,7 @@ + # Get the home path + homePath= + if [[ $HOME = "" ]]; then +- homePath="/home/$user" ++ homePath="home/$user" + else + homePath=$HOME + fi +@@ -104,7 +104,7 @@ + echo $stdin_arg | "$binPath/bin/$binFile" "$@" + fi + else +- echo "File not exists:/usr/lib/vmware/view/bin/$binFile" ++ echo "File not exists:usr/lib/vmware/view/bin/$binFile" + exit 1 + fi + diff --git a/src/apps/horizon/sources b/src/apps/horizon/sources new file mode 100644 index 0000000..add0560 --- /dev/null +++ b/src/apps/horizon/sources @@ -0,0 +1,2 @@ +https://download3.vmware.com/software/CART24FQ4_LIN64_DebPkg_2312/VMware-Horizon-Client-2312-8.12.0-23149323.x64.deb +http://ftp.debian.org/debian/pool/main/libu/libudev0-shim/libudev0_200-1_amd64.deb diff --git a/src/apps/icaclient/build.sh b/src/apps/icaclient/build.sh new file mode 100755 index 0000000..e99e017 --- /dev/null +++ b/src/apps/icaclient/build.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +lang="ru" + +# Удаление ссылок +find ${app_path}/opt/Citrix/ICAClient/config -type l -exec unlink {} \; + +# Перенос конфигурации в стандартную директорию +cp -vf ${app_path}/opt/Citrix/ICAClient/nls/${lang}.UTF-8/eula.txt ${app_path}/opt/Citrix/ICAClient +mv -vf ${app_path}/etc/icaclient/config/* ${app_path}/opt/Citrix/ICAClient/config +cp -rv ${app_path}/opt/Citrix/ICAClient/nls/${lang}/* ${app_path}/opt/Citrix/ICAClient/config +mv -vf ${app_path}/etc/icaclient/nls/${lang}/module.ini ${app_path}/opt/Citrix/ICAClient/config + +# Удаление ненужных директорий +rm -rvf ${app_path}/etc ${app_path}/usr/share ${app_path}/lib/systemd diff --git a/src/apps/icaclient/files/AppRun b/src/apps/icaclient/files/AppRun new file mode 100755 index 0000000..456fe00 --- /dev/null +++ b/src/apps/icaclient/files/AppRun @@ -0,0 +1,21 @@ +#!/bin/sh + +export LD_LIBRARY_PATH="lib/x86_64-linux-gnu;lib;lib64;usr/lib;usr/lib/x86_64-linux-gnu;" + +readlink_file() { + next_path=$1 + i=0 + while [ "$i" != 10 ] && [ "x$next_path" != "x$path" ]; do + path=$next_path + next_path=$(readlink "$path" || echo $path) + ((++i)) + done + echo "$path" +} + +basedir() { + file=$(readlink -f "$1") || $(readlink_file "$1") + echo $(cd "$(dirname "$file")" && pwd -P) +} + +cd "$(basedir "$0")" && LD_PRELOAD=usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 opt/Citrix/ICAClient/selfservice --icaroot opt/Citrix/ICAClient diff --git a/src/apps/icaclient/files/receiver.png b/src/apps/icaclient/files/receiver.png new file mode 100644 index 0000000000000000000000000000000000000000..705130d5076c80f11dec7e39ce0e4ba63a2784be GIT binary patch literal 15506 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