Commit 2f4b8f47 authored by Roman Alifanov's avatar Roman Alifanov Committed by Roman Alifanov

initial commit

parents
/*
* This is the main configuration file for the APT suite of tools,
* see apt.conf(5) for details.
*/
Dir::Etc::main "/dev/null";
Dir::Etc::parts "/var/empty";
Dir::Etc::SourceParts "/var/empty";
Dir::Etc::sourcelist "/home/ximper/Projects/000_distro/apt-extentions/sources.list.sisyphus";
# Package repository URLs
#
# You can add [alt] after rpm for digital signature check
#rpm [alt] http://mirror.yandex.ru altlinux/Sisyphus/x86_64 classic
#rpm [alt] http://mirror.yandex.ru altlinux/Sisyphus/noarch classic
rpm [alt] file:/var/ftp/ pub/ALTLinux/Sisyphus/x86_64 classic
rpm [alt] file:/var/ftp/ pub/ALTLinux/Sisyphus/noarch classic
rpm [alt] file:/var/ftp/ pub/ALTLinux/Sisyphus/x86_64-i586 classic
rpm file:/var/ftp/pub/download/ximper/ XimperLinuxRepository/x86_64 addon
rpm file:/var/ftp/pub/download/ximper/ XimperLinuxRepository/noarch addon
#!/bin/bash
DEBUG=false
ALLDISTROS=false
NVIDIA=false
VM=false
CLEAN=false
DESKTOP_ENVS=() # Список выбранных рабочих окружений (например, gnome, hyprland)
APTCONF=/home/ximper/Projects/000_distro/apt-extentions/apt.conf.sisyphus
print_error() {
printf "\033[1;31m%s\033[0m\n" "$1"
}
print_yellow() {
printf "\033[1;33m%s\033[0m\n" "$1"
}
print_red() {
printf "\033[1;31m%s\033[0m\n" "$1"
}
cleartmp() {
[ "$CLEAN" == true ] || return
echo "____________________"
/home/"$USER"/Projects/000_distro/cleartmp.sh -i
# shellcheck disable=SC2012
# Удаляем все, кроме самого нового
[ "$VER" == "devel" ] && ls -t "$VMDIR"/ximper-"$desktop_env""$iso_suffix"-devel-*-x86_64.iso | tail -n +2 | xargs -I {} rm -v -- {}
}
vm() {
find "$TMP"/out/ -type l -exec rm {} +
[ "$VM" == true ] || return
mv -vf "$TMP"/out/ximper-*.iso "$VMDIR"/"$DFILENAME"
}
handle_uncommitted_changes() {
# Проверка наличия незакоммиченных изменений
if git diff-index --quiet HEAD --; then
# Нет незакоммиченных изменений
TEMP_COMMIT=false
return
fi
# Обнаружены незакоммиченные изменения
local temp_commit_msg="TEMP: Commit before building $(date +'%Y-%m-%d %H:%M:%S')"
# Создание временного коммита
git add -A
git commit -m "$temp_commit_msg"
print_red "Сделан временный коммит: $temp_commit_msg"
TEMP_COMMIT=true
}
revert_temp_commit() {
if [ "$TEMP_COMMIT" == true ]; then
# Откат
git reset "HEAD^"
fi
}
ifexit() {
print_yellow "Скрипт принудительно завершен. Выполняю некоторые действия..."
revert_temp_commit
CLEAN=true cleartmp
CLEAN=false
exit 1
}
# Устанавливаем ловушку на выход из скрипта (сигнал EXIT)
trap ifexit SIGINT SIGTERM
makebuild() {
cleartmp
echo "____________________"
local build_type=$1
desktop_env=$2
iso_suffix=""
if [ "$build_type" == "nvidia" ]; then
print_yellow "Сборка с NVIDIA и $desktop_env"
iso_suffix="-nvidia"
else
print_yellow "Сборка по умолчанию с $desktop_env"
fi
# Обработка незакоммиченных изменений перед началом сборки
handle_uncommitted_changes
# Выполнение команды make в зависимости от рабочего окружения и типа сборки
make DISTRO_VERSION="$VER" APTCONF="$APTCONF" "ximper-${desktop_env}${iso_suffix}.iso"
# Генерация имени файла
DFILENAME="ximper-${desktop_env}${iso_suffix}-${VER}-$(date +"%Y_%m_%d_%H%M")"
# Добавление хэша коммита или примечания о временном коммите
if [ "$VER" == "devel" ]; then
if [ "$TEMP_COMMIT" == true ]; then
DFILENAME+="-temp_commit"
else
DFILENAME+="-commithash|$(git rev-parse --short=7 HEAD)"
fi
fi
DFILENAME+="-x86_64.iso"
vm
# Отмена временного коммита после завершения сборки
revert_temp_commit
}
pushd "$PROFILESDIR" || exit
OPTS=$(getopt -o h --long help,nvidia,debug,clean,all,vm,gnome,hyprland -- "$@")
if [ $? != 0 ]; then
print_error "Ошибка обработки опций."
exit 1
fi
# Применение параметров
eval set -- "$OPTS"
# Обработка аргументов
while true; do
case "$1" in
-h|--help)
printf "Использование: ./distrobuild.sh [опции] [версия дистрибутива]\n\n"
printf "Опции:\n"
printf " --nvidia Собирает дистрибутив с драйверами nvidia\n"
printf " --debug Включает режим отладки\n"
printf " --clean Очистка перед сборкой\n"
printf " --all Собрать все дистрибутивы\n"
printf " --vm Собрать дистрибутив для виртуальной машины\n"
printf " --gnome Собрать дистрибутив с GNOME (по умолчанию)\n"
printf " --hyprland Собрать дистрибутив с Hyprland\n"
printf " -h, --help Вывод этой справки\n"
shift
;;
--nvidia)
NVIDIA=true
shift
;;
--debug)
echo "ДЕБАГ ВКЛЮЧЕН"
DEBUG=true
shift
;;
--clean)
CLEAN=true
shift
;;
--all)
ALLDISTROS=true
shift
;;
--vm)
VM=true
shift
;;
--gnome)
DESKTOP_ENVS+=("gnome")
shift
;;
--hyprland)
DESKTOP_ENVS+=("hyprland")
shift
;;
--)
shift
break
;;
*)
print_error "Неверная опция: $1"
exit 1
;;
esac
done
# Установить GNOME по умолчанию, если ничего не выбрано
if [ ${#DESKTOP_ENVS[@]} -eq 0 ]; then
DESKTOP_ENVS+=("gnome")
fi
# Обработка версии дистрибутива
if [ -n "$1" ]; then
VER=$1
print_yellow "VERSION: $VER"
shift
else
print_error "Не указана версия дистрибутива."
exit 1
fi
# Генерация списка задач на сборку
build_list=()
for desktop_env in "${DESKTOP_ENVS[@]}"; do
if [ "$ALLDISTROS" == true ]; then
build_list+=("$desktop_env:nvidia")
build_list+=("$desktop_env:default")
else
if [ "$NVIDIA" == true ]; then
build_list+=("$desktop_env:nvidia")
else
build_list+=("$desktop_env:default")
fi
fi
done
# Выполнение сборки для каждого элемента в списке
for build_item in "${build_list[@]}"; do
IFS=':' read -r desktop_env build_type <<< "$build_item"
makebuild "$build_type" "$desktop_env"
done
cleartmp
popd || exit
echo "ЗАВЕРШЕНО"
#!/bin/bash
echo "Cleaning...."
[ -d /home/"$USER"/Projects/000_distro/mkimage-profiles/build ] && \
pushd /home/"$USER"/Projects/000_distro/mkimage-profiles \
&& make clean \
&& rm -rf /tmp/.private/"$USER"/mkimage-profiles.build.* \
&& rm -rf ./build && popd \
&& echo "cleaning mkimage-profiles is DONE"
[ -d /tmp/.private/"$USER"/hasher-sisyphus-64 ] && rm -rf /tmp/.private/"$USER"/hasher-sisyphus-64/ \
&& echo "cleaning hasher-sisyphus is DONE"
rmiso() {
rm -rf /tmp/.private/"$USER"/out/*
}
while [ -n "$1" ]; do
case "$1" in
-h|--help)
printf \
"Использование:
./cleartmp.sh [опции]"
printf \
"Опции:
--iso -i - Удаляет iso файлы в /tmp/.private/USER/out"
exit 0
;;
--iso|-i)
rmiso
echo "iso файлы удалены"
shift
;;
esac
shift
done
echo "DONE"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment