diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 8aa29be..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,12 +0,0 @@ -# Changelog - -## [0.2.0](https://git.zhirov.kz/alexander/appimage-builder/compare/0.1.0...0.2.0) - 2024-05-22 -### Added -- Добавлен флаг `-l|--log-path` для указания директории сохранения вывода процесса сборки в журнал `appimage_build.log` -### Fixed -- Добавлены проверки на наличие инструментов сборки AppImage -- Добавлены проверки на наличие указанных путей, передаваемых через флаги - -## [0.1.0](https://git.zhirov.kz/alexander/appimage-builder/commit/8b0a2d5f9194e67d2eb805a4631261ca23cfa013) - 2024-03-12 -### Added -- Релиз diff --git a/README.md b/README.md index c16e075..4374add 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,3 @@ - `current_path` - текущая директория пакета - `app_path` - временная директория сборки пакета (иерархия будущего AppImage) - -## Необходимые инструменты для сборки пакета AppImage - -- [AppImageTool](https://github.com/AppImage/appimagetool) - инструмент низкого уровня для создания AppImage из существующего AppDir -- [type2-runtime](https://github.com/AppImage/type2-runtime) - среда выполнения - исполняемая часть каждого AppImage. Он монтирует полезную нагрузку через FUSE и выполняет точку входа -- [rpm2cpio](https://www.opennet.ru/man.shtml?topic=rpm2cpio&category=8&russian=0) - извлекает архив cpio из RPM пакета -- [cpio](https://www.opennet.ru/man.shtml?topic=cpio&category=8&russian=0) - инструмент копирования файлов в архив и из архива diff --git a/src/appimage-builder.sh b/src/appimage-builder.sh index e95a022..9d5cfa3 100755 --- a/src/appimage-builder.sh +++ b/src/appimage-builder.sh @@ -2,9 +2,9 @@ # title :appimage-builder.sh # description :Script for building AppImage # author :Alexander Zhirov -# date :20240522 -# version :0.2.0 -# usage :bash appimage-builder.sh --help +# date :20240312 +# version :0.1.0 +# usage :bash appimage-builder.sh #=============================================================================== # Пакеты AppImageTool @@ -14,32 +14,32 @@ set -e -version="0.2.0" +version="0.1.0" # Определения по умолчанию # Приложение для сборки AppImage -appimage_tool="" +appimage_tool=$(which appimagetool-x86_64.AppImage) # Среда выполнения -appimage_runtime="" +appimage_runtime=$(which runtime-x86_64) # Output -appimage_output="" +appimage_output="${HOME}" # Директория с рецептами -appimage_input="$(dirname $(realpath ${0}))/apps" +appimage_input="./apps" # Директория с кэшем -appimage_cache="" +appimage_cache="${HOME}/appimage_cache" # Список приложений для сборки appimage_apps=() # Дополнительные необходимые утилиты -rpm2cpio_tool=$(which rpm2cpio 2>/dev/null) -cpio_tool=$(which cpio 2>/dev/null) +rpm2cpio=$(which rpm2cpio) +cpio=$(which cpio) -if [ ! -x "${rpm2cpio_tool}" ]; then +if [ ! -x ${rpm2cpio} ]; then echo "Отсутствует утилита rpm2cpio" exit 1 fi -if [ ! -x "${cpio_tool}" ]; then +if [ ! -x ${cpio} ]; then echo "Отсутствует утилита cpio" exit 1 fi @@ -48,7 +48,7 @@ extrpm() { local rpm="${1}" local destination_path="${2}" - ${rpm2cpio_tool} ${rpm} | ${cpio_tool} -idmvD ${destination_path} + ${rpm2cpio} ${rpm} | ${cpio} -idmvD ${destination_path} } build_appimage() { @@ -66,22 +66,22 @@ build_appimage() { if [ ! -f ${sources} ]; then echo "${name}: не найдено исходных файлов для упаковки" - return 1 + return fi if [ ! -s ${sources} ]; then echo "${name}: не найдено ни одного источника" - return 1 + return fi if [ ! -d ${files} ]; then echo "${files}: не найдена директория с файлами" - return 1 + return fi if ! [ "$(ls -A ${files})" ]; then echo "${files}: отсутствуют файлы для сборки AppImage" - return 1 + return fi # Создание директорий для сборки AppImage @@ -125,20 +125,17 @@ build_appimage() { ${appimage_tool} -v --runtime-file ${appimage_runtime} ${app} ${appimage_output}/${name_appimage} rm -rvf ${tmp} - - return 0 } help_scritp() { echo -e "\n" \ - "Использование: $(basename ${0}) [ОПЦИИ]... [СПИСОК ПАКЕТОВ ДЛЯ СБОРКИ]\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" \ - "\t-l\t--log-path\t\tДиректория для сохранения журнала сборки\n" \ "Дополнительно:\n" \ "\t-h\t--help\t\t\tПоказать справку\n" \ "\t-v\t--version\t\tВерсия скрипта\n" @@ -169,10 +166,6 @@ main() { appimage_cache="${value}" shift ;; - -l|--log-path) - appimage_log="${value}" - shift - ;; -h|--help) help_scritp exit 0 @@ -188,76 +181,53 @@ main() { shift done - if [ -z "${appimage_tool}" ] ; then - appimage_tool=$(which appimagetool-x86_64.AppImage 2>/dev/null) - fi - - if [ ! -f "${appimage_tool}" ]; then - echo "Отсутствует инструмент сборки: https://github.com/AppImage/appimagetool" + if [ ! -f ${appimage_tool} ]; then + echo "Отсутствует инструмент сборки $(basename ${appimage_tool})" exit 1 fi - if [ ! -x "${appimage_tool}" ]; then + if [ ! -x ${appimage_tool} ]; then echo "Инструмент сборки $(basename ${appimage_tool}) должен быть исполняемым" exit 1 fi - if [ -z "${appimage_runtime}" ] ; then - appimage_runtime=$(which runtime-x86_64 2>/dev/null) - fi - - if [ ! -f "${appimage_runtime}" ]; then - echo "Отсутствует инструмент времени выполнения: https://github.com/AppImage/type2-runtime" + if [ ! -f ${appimage_runtime} ]; then + echo "Отсутствует инструмент времени выполнения $(basename ${appimage_runtime})" exit 1 fi - if [ ! -x "${appimage_runtime}" ]; then + if [ ! -x ${appimage_runtime} ]; then echo "Инструмент времени выполнения $(basename ${appimage_runtime}) должен быть исполняемым" exit 1 fi - if [ ! -d "${appimage_input}" ]; then + if [ ! -d ${appimage_input} ]; then echo "Не установлена директория исхоных файлов для сборки AppImage" exit 1 fi - if [ "$(find ${appimage_input} -maxdepth 1 -type d | wc -l)" -eq 1 ]; then - echo "Директория не содержит исхоных файлов для сборки AppImage: ${appimage_input}" + if [ ! -d ${appimage_output} ]; then + echo "Не установлена директория для сохранения AppImage" exit 1 fi - if [ ! -d "${appimage_output}" ]; then - appimage_output="${HOME}/AppImages" - mkdir -p "${appimage_output}" - echo "Не установлена директория для сохранения AppImage. Будет использована директория по умолчанию: ${appimage_output}" - fi - - if [ ! -d "${appimage_cache}" ]; then + if [ ! -d ${appimage_cache} ]; then + echo "Не определена директория для кеша. Будет использована директория по умолчанию" appimage_cache="/tmp/appimage_cache" mkdir -p "${appimage_cache}" - echo "Не определена директория для кеша. Будет использована директория по умолчанию: ${appimage_cache}" - fi - - if [ ! -d "${appimage_log}" ]; then - appimage_log="${appimage_output}" - echo "Не определена директория для журнала. Будет использована директория по умолчанию: ${appimage_output}" fi echo "Инструмент сборки: ${appimage_tool}" echo "Инструмент времени выполнения: ${appimage_runtime}" echo "Директория исходных файлов: ${appimage_input}" - echo "Директория для сохранения AppImage: ${appimage_output}" + 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 - if build_appimage ${pkg} > "${appimage_log}/appimage_build.log" 2>&1 ; then - echo "AppImage $(basename ${pkg}) был собран" - else - echo "AppImage $(basename ${pkg}) не был собран" - fi + build_appimage ${pkg} done }