Commit d804c4dc authored by Кирилл Уницаев's avatar Кирилл Уницаев

Merge branch 'apt-conf-gen' into 'main'

Apt conf gen See merge request !1
parents b954c382 391398dc
[submodule "mkimage-profiles"]
path = mkimage-profiles
url = https://gitlab.eterfund.ru/ximperlinux/mkimage-profiles
branch = next
\ No newline at end of file
......@@ -6,33 +6,46 @@ NVIDIA=false
VM=false
CLEAN=false
DESKTOP_ENVS=() # Список выбранных рабочих окружений (например, gnome, hyprland)
NETWORK=false
# базовые функции
. $(dirname $0)/common
if [ -z "$VMDIR" ]; then
VMDIR="/var/ftp/pvt/ISO/testing/template/iso"
fi
if [ -z "$APTCONF" ]; then
APTCONF="/etc/eterbuild/apt/apt.conf.sisyphus"
fi
if [ -z "$PROFILESDIR" ]; then
PROFILESDIR="/home/$USER/Projects/ximper-builder/mkimage-profiles"
fi
# базовые функции
. $(dirname $0)/common
create_tmp() {
echo $(mktemp -d -t ximper-builder.XXXXXXX)
}
remove_tmp() {
rm -rf "$1"
}
print_paths() {
print_build_info() {
echo "____________________"
print_blue "VMDIR: $VMDIR"
print_blue "PROFILESDIR: $PROFILESDIR"
print_blue "APTCONF: $APTCONF"
print_blue "APTCONF: $APTCONF"
echo "____________________"
if [ "$VER" == "devel" ]; then
print_yellow "VERSION: $VER"
else
print_green "VERSION: $VER"
fi
print_green "REPOSITORIES: $REPOS"
}
cleartmp() {
[ "$CLEAN" == true ] || return
echo "____________________"
/home/"$USER"/Projects/ximper-builder/bin/cleartmp -i
$HOME/Projects/ximper-builder/bin/cleartmp -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 -- {}
......@@ -74,6 +87,7 @@ ifexit() {
print_yellow "Скрипт принудительно завершен. Выполняю некоторые действия..."
revert_temp_commit
CLEAN=true cleartmp
remove_tmp $buildertmp
CLEAN=false
exit 1
}
......@@ -120,12 +134,9 @@ makebuild() {
# Отмена временного коммита после завершения сборки
revert_temp_commit
echo "____________________"
}
pushd "$PROFILESDIR" || exit
OPTS=$(getopt -o h --long help,nvidia,debug,clean,all,vm,gnome,hyprland -- "$@")
OPTS=$(getopt -o h --long help,nvidia,debug,clean,all,vm,gnome,hyprland,net,network,repos: -- "$@")
if [ $? != 0 ]; then
print_error "Ошибка обработки опций."
exit 1
......@@ -138,17 +149,32 @@ eval set -- "$OPTS"
while true; do
case "$1" in
-h|--help)
printf "\n"
printf "Использование: $0 [опции] [версия дистрибутива]\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
printf " -h | --help Вывод этой справки\n"
printf " Окружения:\n"
printf " --gnome Собрать дистрибутив с GNOME (по умолчанию)\n"
printf " --hyprland Собрать дистрибутив с Hyprland\n"
printf " --all Собрать все дистрибутивы\n"
printf "\n"
printf " Настройки образа:\n"
printf " --nvidia Собрать дистрибутив с драйверами NVIDIA\n"
printf " -r | --repos Установить используемые репозитории\n"
printf " (По умолчанию: sisyphus,ximper)\n"
printf " (репозитории используются тольок во время сборки)\n"
printf " --net | --network Использовать сетевые репозитории\n\n"
printf " Репозитории:\n"
printf " - sisyphus\n"
printf " - ximper\n"
printf " - hasher\n"
printf "\n"
printf " Прочее:\n"
printf " --debug Включить режим отладки\n"
printf " --clean Очистить TMP перед сборкой\n"
printf " --vm Собрать дистрибутив для виртуальной машины\n"
printf " Перемещает готовый образ в $VMDIR\n"
exit 0
;;
--nvidia)
NVIDIA=true
......@@ -179,17 +205,39 @@ while true; do
DESKTOP_ENVS+=("hyprland")
shift
;;
--net|--network)
NETWORK="--network"
shift
;;
--repos)
REPOS="$2"
shift
;;
--)
shift
break
;;
*)
if [ -n "$REPOS" ] && [ "$1" = "$REPOS" ]; then
shift
continue
fi
print_error "Неверная опция: $1"
exit 1
;;
esac
done
if [ -z "REPOS" ]; then
REPOS="sisyphus,ximper"
fi
if [ -z "$APTCONF" ]; then
buildertmp=$(create_tmp)
APTCONF=$($(dirname $0)/gen-apt-conf $NETWORK -d $buildertmp -r $REPOS)
APTTMP=$(dirname $APTCONF)
fi
# Установить GNOME по умолчанию, если ничего не выбрано
if [ ${#DESKTOP_ENVS[@]} -eq 0 ]; then
DESKTOP_ENVS+=("gnome")
......@@ -198,19 +246,13 @@ fi
# Обработка версии дистрибутива
if [ -n "$1" ]; then
VER=$1
echo "____________________"
if [ "$VER" == "devel" ]; then
print_yellow "VERSION: $VER"
else
print_green "VERSION: $VER"
fi
shift
else
print_error "Не указана версия дистрибутива."
exit 1
fi
print_paths
print_build_info
# Генерация списка задач на сборку
build_list=()
......@@ -228,6 +270,8 @@ for desktop_env in "${DESKTOP_ENVS[@]}"; do
fi
done
pushd "$PROFILESDIR" > /dev/null || exit
# Выполнение сборки для каждого элемента в списке
for build_item in "${build_list[@]}"; do
IFS=':' read -r desktop_env build_type <<< "$build_item"
......@@ -235,5 +279,8 @@ for build_item in "${build_list[@]}"; do
done
cleartmp
popd || exit
popd > /dev/null || exit
remove_tmp $buildertmp
print_green "ЗАВЕРШЕНО"
......@@ -3,24 +3,26 @@
# базовые функции
. $(dirname $0)/common
print_blue "Cleaning...."
print_blue "Очистка...."
[ -d "$PROFILESDIR/build" ] && \
pushd $PROFILESDIR \
&& make clean \
&& rm -rf $TMP/mkimage-profiles.build.* \
&& rm -rf ./build && popd \
&& print_green "cleaning mkimage-profiles is DONE"
[ -d $TMP/hasher-sisyphus-64 ] && rm -rf $TMP/hasher-sisyphus-64/ \
&& print_green "cleaning hasher-sisyphus is DONE"
if [ -d $PROFILESDIR/build ]; then
pushd PROFILESDIR
make clean
rm -rf $TMP/mkimage-profiles.build.*
rm -rf ./build
popd
print_green "mkimage-profiles очищен"
fi
rmiso() {
rm -rf /tmp/.private/"$USER"/out/*
if [ -d $TMP/out/ ]; then
rm -rf $TMP/out/*
print_green "iso файлы удалены"
fi
}
while [ -n "$1" ]; do
case "$1" in
for param in "$@"; do
case "$param" in
-h|--help)
printf "Использование: $0 [опции]\n\n"
printf "Опции:\n"
......@@ -29,11 +31,10 @@ while [ -n "$1" ]; do
;;
--iso|-i)
rmiso
print_green "iso файлы удалены"
shift
;;
esac
shift
done
print_green "DONE"
print_green "Очистка завершена"
#!/bin/bash
NETWORK=false
# базовые функции
. $(dirname $0)/common
OPTS=$(getopt -o h,d:,r: --long help,net,network,dir:,repos: -- "$@")
if [ $? != 0 ]; then
print_error "Ошибка обработки опций."
exit 1
fi
# Применение параметров
eval set -- "$OPTS"
while true; do
case "$1" in
-h|--help)
printf "\n"
printf "Использование: $0 [опции]\n\n"
printf "Опции:\n"
printf " -h | --help Вывод этой справки\n"
printf " -d | --dir Путь к tmp\n"
printf " -r | --repos Установить используемые репозитории\n"
printf " (По умолчанию: sisyphus,ximper)\n"
printf " (репозитории используются тольок во время сборки)\n"
printf " --net | --network Использовать сетевые репозитории\n\n"
printf " Репозитории:\n"
printf " - sisyphus\n"
printf " - ximper\n"
printf " - hasher\n"
exit 0
;;
-d|--dir)
buildertmp="$2"
shift
;;
-r|--repos)
REPOS="${2//,/ }"
shift
;;
--)
shift
break
;;
*)
shift
;;
esac
done
APTCONF="$buildertmp/apt.conf.ximper"
SOURCES="$buildertmp/sources.list.ximper"
gen_sources() {
for repo in $REPOS; do
case "$repo" in
*sisyphus*)
base_url="http://ftp.altlinux.org/pub/distributions/ALTLinux Sisyphus"
local_path="file:/var/ftp/ pub/ALTLinux/Sisyphus"
if [ "$NETWORK" == "true" ]; then
repo_path="$base_url"
else
repo_path="$local_path"
fi
cat <<EOF >> "$SOURCES"
rpm [alt] $repo_path/x86_64 classic
rpm [alt] $repo_path/x86_64-i586 classic
rpm [alt] $repo_path/noarch classic
EOF
;;
*ximper*)
base_url="https://download.etersoft.ru/pub/download/ximper"
local_path="file:/var/ftp/pub/download/ximper"
if [ "$NETWORK" == "true" ]; then
repo_path="$base_url"
else
repo_path="$local_path"
fi
cat <<EOF >> "$SOURCES"
rpm $repo_path/x86_64 addon
rpm $repo_path/noarch addon
EOF
;;
*hasher*)
cat <<EOF >> "$SOURCES"
rpm-dir file:/tmp/.private/$USER/hasher-sisyphus-64/ repo/x86_64 hasher
EOF
;;
esac
done
}
gen_config() {
cat <<EOF >> "$APTCONF"
/*
* 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 "$SOURCES";
EOF
}
gen_sources
gen_config
echo $APTCONF
Subproject commit 8bed8cd93af1c6b27c76c6fab23754b0cccd19a5
Subproject commit b941016b7984f18c6d3c90433b82c62a1afbc852
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