Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
ximper-builder
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ximper Linux
ximper-builder
Commits
2f4b8f47
Commit
2f4b8f47
authored
Oct 25, 2024
by
Roman Alifanov
Committed by
Roman Alifanov
Oct 25, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
initial commit
parents
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
286 additions
and
0 deletions
+286
-0
apt.conf.sisyphus
apt-extentions/apt.conf.sisyphus
+10
-0
sources.list.sisyphus
apt-extentions/sources.list.sisyphus
+12
-0
build-distro
bin/build-distro
+223
-0
cleartmp
bin/cleartmp
+41
-0
No files found.
apt-extentions/apt.conf.sisyphus
0 → 100644
View file @
2f4b8f47
/*
* 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";
apt-extentions/sources.list.sisyphus
0 → 100644
View file @
2f4b8f47
# 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/build-distro
0 → 100755
View file @
2f4b8f47
#!/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
"
\0
33[1;31m%s
\0
33[0m
\n
"
"
$1
"
}
print_yellow
()
{
printf
"
\0
33[1;33m%s
\0
33[0m
\n
"
"
$1
"
}
print_red
()
{
printf
"
\0
33[1;31m%s
\0
33[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/cleartmp
0 → 100755
View file @
2f4b8f47
#!/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"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment