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
d804c4dc
Commit
d804c4dc
authored
Nov 11, 2024
by
Кирилл Уницаев
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'apt-conf-gen' into 'main'
Apt conf gen See merge request
!1
parents
b954c382
391398dc
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
211 additions
and
47 deletions
+211
-47
.gitmodules
.gitmodules
+2
-0
build-distro
bin/build-distro
+77
-30
cleartmp
bin/cleartmp
+17
-16
gen-apt-conf
bin/gen-apt-conf
+114
-0
mkimage-profiles
mkimage-profiles
+1
-1
No files found.
.gitmodules
View file @
d804c4dc
[submodule "mkimage-profiles"]
path = mkimage-profiles
url = https://gitlab.eterfund.ru/ximperlinux/mkimage-profiles
branch = next
\ No newline at end of file
bin/build-distro
View file @
d804c4dc
...
...
@@ -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
"ЗАВЕРШЕНО"
bin/cleartmp
View file @
d804c4dc
...
...
@@ -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/gen-apt-conf
0 → 100755
View file @
d804c4dc
#!/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
mkimage-profiles
@
b941016b
Subproject commit
8bed8cd93af1c6b27c76c6fab23754b0cccd19a5
Subproject commit
b941016b7984f18c6d3c90433b82c62a1afbc852
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