sys-apps/calculate-toolkit: стабильная версия с исправлениями

akrasnyh 3062
parent 888633716b
commit 8bfc6420e6

@ -1,3 +1,2 @@
DIST calculate-toolkit-0.2.7-r1.tar.bz2 18448 BLAKE2B cafbfefc9cfc3912b4cba9c140dfd24331b6f0f1d40721b395a6b04a64c3d5b6104e25bfeecc6c76e6f14a2541b295666ec20d355dfc92bd272f6da0bc8db64f SHA512 032d313bbfaff7174d1f57c158338b594a049b0f5a6c69c68910c36157ef73eb3f260b097aa0c484a96df9dbcf88235b78d5a36a79dd508efde8702c46c63b7a
DIST calculate-toolkit-0.3.0.tar.gz 26523 BLAKE2B 51213957e9d0b10ac8700e9ebd8843f1ad62b46159b5b8c6616907c2b5a2b0d04b6d518f9cfb9e48b657518849d3cbb18650e4b1775ece29a2fac9e54ebb0a05 SHA512 f272723d38e759fc81da89a200e2abdc2543b2a31ecdfc58e398e11313569e8432c9edb465573a0f753df487a6d2ec7eff687eea3a84a5d94c4ae2419ea280d2
DIST calculate-toolkit-0.3.1.tar.gz 27382 BLAKE2B 8b2a274ca140ade8f4d21294c53f24d1ba3d391fc5f0269ae4410d69d56356573c0fb23941913055398432902b8a87ccfd70720aaf9d74c7d0efd096f4baad0d SHA512 92e5ff11580e9ff334717a8dd41e20436a2bba40be9f04e27e5b72f6e8e91e217b43b83427cc32465616c5368634acaf7bb95e71b99cd7edb42c4158864c0c75

@ -1,47 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="7"
PYTHON_COMPAT=( python3_{9..10} )
SRC_URI="https://git.calculate-linux.org/calculate/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
DESCRIPTION="Collection of administration scripts for Calculate"
HOMEPAGE="https://www.calculate-linux.org"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
S=${WORKDIR}/${PN}
RDEPEND=">=sys-apps/calculate-utils-3.6
app-arch/zstd
app-arch/xz-utils"
PATCHES=(
"${FILESDIR}"/${P}-check-lxc.patch
"${FILESDIR}"/${P}-workdir.patch
"${FILESDIR}"/${P}-no-validate.patch
"${FILESDIR}"/${P}-root.patch
"${FILESDIR}"/${P}-var.patch
"${FILESDIR}"/${P}-clear.patch
"${FILESDIR}"/${P}-restore-init.patch
"${FILESDIR}"/${P}-skipcom.patch
"${FILESDIR}"/${P}-fix-ccg.patch
"${FILESDIR}"/${P}-check_mkdir.patch
"${FILESDIR}"/${P}-ssh_keys.patch
"${FILESDIR}"/${P}-check_files.patch
"${FILESDIR}"/${P}-cdc.patch
"${FILESDIR}"/${P}-cdc_support.patch
"${FILESDIR}"/${P}-gentoo.patch
"${FILESDIR}"/${P}-pruning.patch
"${FILESDIR}"/${P}-clear_cache.patch
"${FILESDIR}"/${P}-mac.patch
"${FILESDIR}"/${P}-unique_veth_pair.patch
"${FILESDIR}"/${P}-noop_net.patch
"${FILESDIR}"/${P}-bash.patch
"${FILESDIR}"/${P}-encoding.patch
"${FILESDIR}"/${P}-container-overlay.patch
)

@ -12,7 +12,7 @@ HOMEPAGE="https://www.calculate-linux.org"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
KEYWORDS="amd64"
S=${WORKDIR}/${PN}

@ -1,152 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 2cee054..ad4ab1a 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# Copyright 2022 Mir Calculate. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -269,25 +269,25 @@ set_vars(){
debug_vars(){
local log=/var/log/calculate/cl-lxc.log
- cat > /var/log/calculate/cl-lxc.log <<EOF
-lxc_release = $lxc_release
-net_domain = $net_domain
-path_def = $path_def
-name_lxc = $name_lxc
-name_upgrading = $name_upgrading
-name_rootfs = $name_rootfs
-status_lxc = $status_lxc
-path_work = $path_work
-path_lxc = $path_lxc
-path_cache = $path_cache
-path_lxc_prepare = $path_lxc_prepare
-path_change = $path_change
-type_fs = $type_fs
-num_cur = $num_cur
-num_next = $num_next
-lxc_distro = $lxc_distro
-
-EOF
+ cat > /var/log/calculate/cl-lxc.log <<-EOF
+ lxc_release = $lxc_release
+ net_domain = $net_domain
+ path_def = $path_def
+ name_lxc = $name_lxc
+ name_upgrading = $name_upgrading
+ name_rootfs = $name_rootfs
+ status_lxc = $status_lxc
+ path_work = $path_work
+ path_lxc = $path_lxc
+ path_cache = $path_cache
+ path_lxc_prepare = $path_lxc_prepare
+ path_change = $path_change
+ type_fs = $type_fs
+ num_cur = $num_cur
+ num_next = $num_next
+ lxc_distro = $lxc_distro
+
+ EOF
}
check_vars(){
@@ -502,48 +502,47 @@ ${veth_pair}"
sed -i -r 's/(lxc.mount.auto)/#\1/g' ${path_lxc}/config
sed -i "s/${lxc_distro}/${name_lxc}/g" ${path_lxc}/config
- cat << EOL >> ${path_lxc}/config
-${network_conf}
-
-${calculate_mount}${portage_mount}
-lxc.mount.entry = /var/db/repos/calculate var/db/repos/calculate none ro,bind 0 0
-${container_mount}lxc.mount.entry = /var/cache/edb/binhost var/cache/edb/binhost none ro,bind 0 0
-lxc.mount.entry = /var/calculate/packages var/calculate/packages none rw,bind 0 0
-lxc.mount.entry = /var/calculate/distfiles var/calculate/distfiles none rw,bind 0 0
-EOL
+ cat <<- EOF >> ${path_lxc}/config
+ ${network_conf}
+ ${calculate_mount}${portage_mount}
+ lxc.mount.entry = /var/db/repos/calculate var/db/repos/calculate none ro,bind 0 0
+ ${container_mount}lxc.mount.entry = /var/cache/edb/binhost var/cache/edb/binhost none ro,bind 0 0
+ lxc.mount.entry = /var/calculate/packages var/calculate/packages none rw,bind 0 0
+ lxc.mount.entry = /var/calculate/distfiles var/calculate/distfiles none rw,bind 0 0
+ EOF
eend
ebegin $"Configuring utility variables"
- cat << EOL > ${calculate_dir}/calculate.env
-[install]
-os_install_net_hostname = ${name_lxc}
-os_install_net_domain = ${net_domain}
-os_install_locale_lang = ${LANG/.utf8/}
-os_install_clock_timezone = $(cat /etc/timezone)
-
-[update]
-cl_update_rep_name =
-cl_update_rep_url =
-cl_update_eixupdate_force = force
-cl_update_force_fix_set = on
-EOL
+ cat <<- EOF > ${calculate_dir}/calculate.env
+ [install]
+ os_install_net_hostname = ${name_lxc}
+ os_install_net_domain = ${net_domain}
+ os_install_locale_lang = ${LANG/.utf8/}
+ os_install_clock_timezone = $(cat /etc/timezone)
+
+ [update]
+ cl_update_rep_name =
+ cl_update_rep_url =
+ cl_update_eixupdate_force = force
+ cl_update_force_fix_set = on
+ EOF
eend
ebegin $"Creating templates"
mkdir -p ${calculate_dir}/templates/default
- cat << EOL > ${calculate_dir}/templates/default/.calculate_directory
-# Calculate env=install ac_install_live==on append=skip
-EOL
+ cat <<- EOF > ${calculate_dir}/templates/default/.calculate_directory
+ # Calculate env=install ac_install_live==on append=skip
+ EOF
if [ $net_conf == veth ]
then
- cat << EOL > ${calculate_dir}/templates/default/runlevel.eth0
-# Calculate mergepkg(sys-apps/openrc)!= path=/etc/runlevels/default name=net.eth0 protected link=/etc/init.d/net.lo symbolic
-EOL
+ cat <<- EOF > ${calculate_dir}/templates/default/runlevel.eth0
+ # Calculate mergepkg(sys-apps/openrc)!= path=/etc/runlevels/default name=net.eth0 protected link=/etc/init.d/net.lo symbolic
+ EOF
fi
- cat << EOL > ${calculate_dir}/templates/default/portage.binhost
-# Calculate mergepkg(sys-apps/portage)!= path=/etc/portage/make.conf name=binhost protected comment=#
-$(emerge --info | grep PORTAGE_BINHOST)
-EOL
+ cat <<- EOF > ${calculate_dir}/templates/default/portage.binhost
+ # Calculate mergepkg(sys-apps/portage)!= path=/etc/portage/make.conf name=binhost protected comment=#
+ $(emerge --info | grep PORTAGE_BINHOST)
+ EOF
eend
[ -z "$name_upgrading" ] && printf $"Your container is ready. To start it, please run 'lxc-start %s'.\n" $name_lxc
true
@@ -652,11 +651,11 @@ upgrade_lxc() {
eend
ebegin $"Preparing first boot setup script"
-cat << EOL > $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
-cl-core --method setup_system --no-progress --usenew-conf --network on
-openrc
-rm /etc/local.d/firststart.start
-EOL
+ cat <<- EOF > $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
+ cl-core --method setup_system --no-progress --usenew-conf --network on
+ openrc
+ rm /etc/local.d/firststart.start
+ EOF
chmod 755 $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
eend

@ -1,31 +0,0 @@
diff --git a/usr/sbin/cl-lxc b/cl-lxc
index 4fc3ac1..0a32014 100755
--- a/usr/sbin/cl-lxc
+++ b/cl-lxc
@@ -128,7 +128,7 @@ get_args(){
elif (( $# == 1 ))
then
lxc_=$1
- if [[ $lxc_ =~ [^A-Za-z0-9_\.] ]]
+ if [[ $lxc_ =~ [^A-Za-z0-9_\._\-] ]]
then
echo $"Container name contains wrong characters." >&2
exit 1
@@ -146,6 +146,7 @@ print_distro(){
then
echo $"Distributive:
[CCS] Calculate Container Scratch (by default)
+ [CDC] Calculate Directory Container
[CCG] Calculate Container Games"
return
fi
@@ -154,6 +155,9 @@ print_distro(){
CCS)
echo "Calculate Container Scratch"
;;
+ CDC)
+ echo "Calculate Directory Container"
+ ;;
CCG)
echo "Calculate Container Games"
;;

@ -1,14 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 0a32014..8096f72 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -243,6 +243,9 @@ set_vars(){
CCS|ccs)
lxc_distro=CCS
;;
+ CDC|cdc)
+ lxc_distro=CDC
+ ;;
CCG|ccg)
lxc_distro=CCG
;;

@ -1,16 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 2a13436..9aaa10f 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -163,7 +163,10 @@ print_distro(){
set_vars(){
lxc_release=22.0.1
net_domain=$(hostname -f)
- path_def=$(lxc-config lxc.lxcpath)
+ path_def=$(lxc-config lxc.lxcpath 2>/dev/null) || (
+ printf $"To run the script, install the '%s' package.\n" app-containers/lxc >&2
+ exit 1
+ )
if ! [[ $prepare_ == 1 || $upgrade_ == 1 ]]
then

@ -1,13 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 8c29bde..4fc3ac1 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -616,7 +616,7 @@ upgrade_lxc() {
ebegin $"Copying ssh keys"
cp $path_work/$name_upgrading/rootfs$num_cur/etc/ssh/*_key* \
- $path_work/$name_upgrading/rootfs$num_next/etc/ssh
+ $path_work/$name_upgrading/rootfs$num_next/etc/ssh 2>/dev/null | true
eend
ebegin $"Preparing first boot setup script"

@ -1,54 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index bc19594..2cdcc11 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -323,17 +323,17 @@ check_vars(){
if [ ! -e $path_lxc ]
then
printf $"No operation specified. Call %s to create a container.\n" \
- "'$program_name -c $name_lxc'" >&2
+ "'$program_name --create $name_lxc'" >&2
exit 1
elif [ ! -d $path_lxc_prepare ]
then
printf $"No operation specified. Call %s to prepare an update image for the container.\n" \
- "'$program_name -p $name_lxc'" >&2
+ "'$program_name --prepare $name_lxc'" >&2
exit 1
elif [ -d $path_lxc_prepare ]
then
printf $"No operation specified. Call %s to update the container.\n" \
- "'$program_name -u $name_lxc'" >&2
+ "'$program_name --upgrade $name_lxc'" >&2
exit 1
else
print_help "usage" >&2
@@ -534,7 +534,10 @@ update_prepare() {
ebegin $"Creating mount points"
for mount_point in $(grep '^lxc.mount.entry' $path_work/$name_upgrading/config | awk {'print $4'})
do
- mkdir -p "$path_lxc/rootfs/$mount_point"
+ if [ ! -e "$path_lxc/rootfs/$mount_point" ]
+ then
+ mkdir -p "$path_lxc/rootfs/$mount_point"
+ fi
done
eend
@@ -551,6 +554,7 @@ update_prepare() {
einfo $"Launching package update"
lxc-attach $name_lxc -- cl-update -f
rm -rf "$path_lxc/rootfs/var/calculate/{tmp/*,templates/*}"
+ find $path_lxc/rootfs/etc/init.d -type l -name net.* -exec unlink {} \;
cd $path_lxc/rootfs/etc/runlevels/boot
ln -s /etc/init.d/calculate .
cd - &>/dev/null
@@ -582,7 +586,7 @@ update_prepare() {
[ $diff_ == 1 ] && diff_pkg
- einfo $"Image for update ready. Now you can run '$program_name -u $name_upgrading' to update."
+ einfo $"Image for update ready. Now you can run '$program_name --upgrade $name_upgrading' to update."
return
}

@ -1,29 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 714a44d..2914fe9 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -549,6 +549,7 @@ update_prepare() {
cl-update -s
einfo $"Launching package update"
lxc-attach $name_lxc -- cl-update -f
+ rm -rf "$path_lxc/rootfs/var/calculate/{tmp/*,templates/*}"
ebegin $"Stopping container"
lxc-stop $name_lxc
@@ -592,6 +593,7 @@ upgrade_lxc() {
reflink='--reflink'
fi
cp -a $reflink $path_lxc_prepare $path_work/$name_upgrading/rootfs$num_next
+ rm -rf $path_work/$name_upgrading/rootfs$num_next/var/calculate/*
eend
ebegin $"Copying network settings from main container"
@@ -608,7 +610,7 @@ upgrade_lxc() {
cat << EOL > $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
cl-core --method setup_system --no-progress --usenew-conf --network on
openrc
-#rm /etc/local.d/firststart.start
+rm /etc/local.d/firststart.start
EOL
chmod 755 $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
eend

@ -1,133 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 9a53c2d..70a965e 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -330,17 +330,17 @@ check_vars(){
if [ ! -e $path_lxc ]
then
printf $"No operation specified. Call %s to create a container.\n" \
- "'$program_name --create $name_lxc'" >&2
+ "'$program_name -c $name_lxc'" >&2
exit 1
elif [ ! -d $path_lxc_prepare ]
then
printf $"No operation specified. Call %s to prepare an update image for the container.\n" \
- "'$program_name --prepare $name_lxc'" >&2
+ "'$program_name -p $name_lxc'" >&2
exit 1
elif [ -d $path_lxc_prepare ]
then
printf $"No operation specified. Call %s to update the container.\n" \
- "'$program_name --upgrade $name_lxc'" >&2
+ "'$program_name -u $name_lxc'" >&2
exit 1
else
print_help "usage" >&2
@@ -368,13 +368,6 @@ create_base() {
mkdir $path_cache
fi
fi
-
- # Удалим кэш LXC
- if [ $clear_ == 1 ]
- then
- rm -rf /var/cache/lxc/download/$lxc_distro
- fi
-
lxc-create -n $lxc_distro -t download -- --server $mirror_ \
--arch x86_64 --dist $lxc_distro --release $lxc_release &>/dev/null || {
eend $? || true
@@ -617,7 +610,7 @@ update_prepare() {
[ $diff_ == 1 ] && diff_pkg
- einfo $"Image for update ready. Now you can run '$program_name --upgrade $name_upgrading' to update."
+ einfo $"Image for update ready. Now you can run '$program_name -u $name_upgrading' to update."
return
}
@@ -723,6 +716,45 @@ diff_pkg() {
true
}
+clear_cache(){
+ ebegin $"Clearing cache"
+ rm -rf /var/cache/lxc/download/*
+
+ if [[ -e /var/calculate/lxc/.cache ]]
+ then
+ if [[ $(df -Th /var/calculate/lxc | awk 'NR==2 {print $2}') == btrfs ]]
+ then
+ btrfs subvolume delete /var/calculate/lxc/.cache > /dev/null
+ else
+ rm -rf /var/calculate/lxc/.cache
+ fi
+ fi
+
+ for i in /var/calculate/lxc/*
+ do
+ if [[ $i == /var/calulate/lxc/* ]]
+ then
+ break
+ fi
+ # разыменуем символические ссылки чтобы почистить кэши на других разделах
+ if [[ -L $i ]]
+ then
+ cache_dir=$(realpath $i)
+ cache_dir=${cache_dir%/*}
+ if [[ -e $cache_dir/.cache ]]
+ then
+ if [[ $(df -Th $cache_dir | awk 'NR==2 {print $2}') == btrfs ]]
+ then
+ btrfs subvolume delete $cache_dir/.cache > /dev/null
+ else
+ rm -rf $cache_dir/.cache
+ fi
+ fi
+ fi
+ done
+ eend
+}
+
# Проверка одновременного запуска
check_simultaneous_run
@@ -742,18 +774,15 @@ debug_vars
# Проверка параметров запуска
check_vars
-# Чистка кэша базового контейнера
+# Чистка кэша
# пустой файл partial когда lxc-create был прерван
-if [[ $clear_ == 1 && -d "$path_cache/$lxc_distro" ]]
+if [[ $clear_ == 1 ]]
then
- ebegin $"Clearing Calculate Container cache"
- rm -rf "$path_cache/$lxc_distro"
- eend
+ clear_cache
fi
# Создание базового контейнера
-if [[ $create_ == 1 || $prepare_ == 1 || $clear_ == 1 ]] &&
- [ ! -d "$path_cache/$lxc_distro" ]
+if [[ $create_ == 1 || $prepare_ == 1 ]] && [ ! -d "$path_cache/$lxc_distro" ]
then
create_base
fi
@@ -761,15 +790,6 @@ fi
# Создание контейнера
if [[ $create_ == 1 || $prepare_ == 1 ]]
then
- if [ -d "$path_lxc_prepare" ]
- then
- if [ $clear_ == 1 ]
- then
- ebegin $"Clearing container cache"
- rm -r "$path_lxc_prepare"
- eend
- fi
- fi
create_lxc
fi

@ -1,78 +0,0 @@
--- /tmp/cl-lxc 2022-11-08 13:40:00.612782840 +0300
+++ /usr/sbin/cl-lxc 2022-11-08 17:16:25.381542190 +0300
@@ -457,17 +457,25 @@
fi
portage_mount="lxc.mount.entry = ${gentoo_from} ${gentoo_to} none ro,bind 0 0"
- local container_mount=
- if [ -d /var/db/repos/container ]
+ if [ ! -e /var/db/repos/container ]
then
- rm -rf $path_lxc/rootfs/var/db/repos/container
+ mv $path_lxc/rootfs/var/db/repos/container /var/db/repos
mkdir $path_lxc/rootfs/var/db/repos/container
- container_mount="lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
-"
- else
- ewarn $"Skipping mounting Container overlay"
- container_mount="#lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
-"
+
+ if grep -q github.com $path_lxc/rootfs/etc/portage/repos.conf/zz-calculate.conf
+ then
+ local repo_container='https://github.com/calculatelinux/container'
+ else
+ local repo_container='https://git.calculate-linux.org/calculate/container-overlay'
+ fi
+ cat <<- EOF > /etc/portage/repos.conf/cl-lxc.conf
+ [container]
+ priority = 50
+ sync-uri = $repo_container
+ location = /var/db/repos/container
+ auto-sync = Yes
+ sync-type = git
+ EOF
fi
ebegin $"Running container setup"
@@ -488,12 +496,15 @@
# исключим настройку сетевого имени, если такое уже используется
veth_pair="#${veth_pair}"
fi
- network_conf="lxc.net.0.type = veth
-lxc.net.0.flags = up
-lxc.net.0.name = eth0
-lxc.net.0.link = br0
-lxc.net.0.hwaddr = ${random_mac}
-${veth_pair}"
+ network_conf=$(cat <<- EOF
+ lxc.net.0.type = veth
+ lxc.net.0.flags = up
+ lxc.net.0.name = eth0
+ lxc.net.0.link = br0
+ lxc.net.0.hwaddr = ${random_mac}
+ ${veth_pair}
+ EOF
+ )
fi
# перенесем базовый config удалив настройку сети
@@ -506,7 +517,8 @@
${network_conf}
${calculate_mount}${portage_mount}
lxc.mount.entry = /var/db/repos/calculate var/db/repos/calculate none ro,bind 0 0
- ${container_mount}lxc.mount.entry = /var/cache/edb/binhost var/cache/edb/binhost none ro,bind 0 0
+ lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
+ lxc.mount.entry = /var/cache/edb/binhost var/cache/edb/binhost none ro,bind 0 0
lxc.mount.entry = /var/calculate/packages var/calculate/packages none rw,bind 0 0
lxc.mount.entry = /var/calculate/distfiles var/calculate/distfiles none rw,bind 0 0
EOF
@@ -541,7 +553,7 @@
fi
cat <<- EOF > ${calculate_dir}/templates/default/portage.binhost
# Calculate mergepkg(sys-apps/portage)!= path=/etc/portage/make.conf name=binhost protected comment=#
- $(emerge --info | grep PORTAGE_BINHOST)
+ $(emerge --info 2>/dev/null | grep PORTAGE_BINHOST)
EOF
eend
[ -z "$name_upgrading" ] && printf $"Your container is ready. To start it, please run 'lxc-start %s'.\n" $name_lxc

@ -1,13 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index ad4ab1a..91e641b 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -517,7 +517,7 @@ ${veth_pair}"
[install]
os_install_net_hostname = ${name_lxc}
os_install_net_domain = ${net_domain}
- os_install_locale_lang = ${LANG/.utf8/}
+ os_install_locale_lang = ${LANG/.UTF-8/}
os_install_clock_timezone = $(cat /etc/timezone)
[update]

@ -1,12 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 96135d9..bc19594 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -466,6 +466,7 @@ lxc.net.0.veth.pair = lxc-${name_lxc}"
# перенесем базовый config удалив настройку сети
cp $path_cache/$lxc_distro/config ${path_lxc}/config
sed -i '/lxc.net.0.type = empty/d' ${path_lxc}/config
+ sed -i -r 's/(lxc.mount.auto)/#\1/g' ${path_lxc}/config
sed -i "s/${lxc_distro}/${name_lxc}/g" ${path_lxc}/config
cat << EOL >> ${path_lxc}/config

@ -1,62 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 8096f72..8103d2b 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -426,6 +426,7 @@ create_lxc() {
rm -rf $path_lxc/rootfs/var/calculate/distfiles;mkdir $path_lxc/rootfs/var/calculate/distfiles
eend
+ local calculate_mount= calculate_dir=
if [ $prepare_ == 0 ]
then
ebegin $"Moving /var/calculate to a separate mount point"
@@ -436,19 +437,34 @@ create_lxc() {
calculate_dir="${path_lxc}/calculate"
eend
else
- calculate_mount=""
calculate_dir="${path_lxc}/rootfs/var/calculate"
fi
- local container_mount=""
- if ! [ -d /var/db/repos/container ]
+ local portage_mount= gentoo_from= gentoo_to=
+ if [ -d /var/db/repos/gentoo ]
then
- ewarn $"Skipping mounting Container overlay"
- container_mount="#lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
-"
+ gentoo_from='/var/db/repos/gentoo'
else
+ gentoo_from='/usr/portage'
+ fi
+ if [ -d $path_lxc/rootfs/var/db/repos/gentoo ]
+ then
+ gentoo_to='var/db/repos/gentoo'
+ else
+ gentoo_to='usr/portage'
+ fi
+ rm -rf ${path_lxc}/rootfs/${gentoo_to}; mkdir ${path_lxc}/rootfs/${gentoo_to}
+ portage_mount="lxc.mount.entry = ${gentoo_from} ${gentoo_to} none ro,bind 0 0"
+
+ local container_mount=
+ if [ -d /var/db/repos/container ]
+ then
rm -rf $path_lxc/rootfs/var/db/repos/container; mkdir $path_lxc/rootfs/var/db/repos/container
container_mount="lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
+"
+ else
+ ewarn $"Skipping mounting Container overlay"
+ container_mount="#lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
"
fi
@@ -479,7 +495,7 @@ lxc.net.0.veth.pair = lxc-${name_lxc}"
cat << EOL >> ${path_lxc}/config
${network_conf}
-${calculate_mount}lxc.mount.entry = /usr/portage usr/portage none ro,bind 0 0
+${calculate_mount}${portage_mount}
lxc.mount.entry = /var/db/repos/calculate var/db/repos/calculate none ro,bind 0 0
${container_mount}lxc.mount.entry = /var/cache/edb/binhost var/cache/edb/binhost none ro,bind 0 0
lxc.mount.entry = /var/calculate/packages var/calculate/packages none rw,bind 0 0

@ -1,13 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 70a965e..9072aed 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -479,7 +479,7 @@ create_lxc() {
cp /etc/resolv.conf $path_lxc/rootfs/etc
else
net_conf=veth
- local random_mac=$(echo -n '02:'; hexdump -n5 -e '/1 ":%02X"' /dev/random | sed s/^://g)
+ local random_mac=$(printf '06:%02X:%02X:%02X:%02X:%02X\n' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256])
network_conf="lxc.net.0.type = veth
lxc.net.0.flags = up
lxc.net.0.name = eth0

@ -1,13 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index db548eb..0b7ee7f 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -369,7 +369,7 @@ create_base() {
fi
lxc-create -n $lxc_distro -t download -- --server $mirror_ \
- --no-validate --arch x86_64 --dist $lxc_distro --release $lxc_release &>/dev/null || {
+ --arch x86_64 --dist $lxc_distro --release $lxc_release &>/dev/null || {
eend $? || true
eerror $"Failed to run lxc-create" >&2
rm -rf $path_cache

@ -1,19 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 099a0ce..2cee054 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -477,12 +477,13 @@ create_lxc() {
net_conf=none
network_conf="lxc.net.0.type = none"
cp /etc/resolv.conf $path_lxc/rootfs/etc
+ echo -e "\nconfig_eth0=\"noop\"" >> $path_lxc/rootfs/etc/conf.d/net
else
net_conf=veth
local random_mac=$(printf '06:%02X:%02X:%02X:%02X:%02X\n' \
$[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256])
local veth_pair="lxc.net.0.veth.pair = lxc-${name_lxc::11}"
- if grep -q "$veth_pair" -r ${path_def}/*/config
+ if grep -q "$veth_pair" -r ${path_def}/*/config &>/dev/null
then
# исключим настройку сетевого имени, если такое уже используется
veth_pair="#${veth_pair}"

@ -1,70 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 8103d2b..9a53c2d 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -419,11 +419,20 @@ create_lxc() {
fi
ebegin $"Preparing base mount paths"
- rm -rf $path_lxc/rootfs/usr/portage; mkdir $path_lxc/rootfs/usr/portage
- rm -rf $path_lxc/rootfs/var/db/repos/calculate; mkdir $path_lxc/rootfs/var/db/repos/calculate
- rm -rf $path_lxc/rootfs/var/cache/edb/binhost; mkdir $path_lxc/rootfs/var/cache/edb/binhost
- rm -rf $path_lxc/rootfs/var/calculate/packages; mkdir $path_lxc/rootfs/var/calculate/packages
- rm -rf $path_lxc/rootfs/var/calculate/distfiles;mkdir $path_lxc/rootfs/var/calculate/distfiles
+ for path_res in usr/portage \
+ var/cache/edb/binhost \
+ var/calculate/distfiles \
+ var/calculate/packages \
+ var/db/repos/calculate \
+ var/db/repos/gentoo
+ do
+ path_res=${path_lxc}/rootfs/${path_res}
+ if [ -e $path_res ]
+ then
+ rm -rf $path_res
+ mkdir $path_res
+ fi
+ done
eend
local calculate_mount= calculate_dir=
@@ -453,13 +462,13 @@ create_lxc() {
else
gentoo_to='usr/portage'
fi
- rm -rf ${path_lxc}/rootfs/${gentoo_to}; mkdir ${path_lxc}/rootfs/${gentoo_to}
portage_mount="lxc.mount.entry = ${gentoo_from} ${gentoo_to} none ro,bind 0 0"
local container_mount=
if [ -d /var/db/repos/container ]
then
- rm -rf $path_lxc/rootfs/var/db/repos/container; mkdir $path_lxc/rootfs/var/db/repos/container
+ rm -rf $path_lxc/rootfs/var/db/repos/container
+ mkdir $path_lxc/rootfs/var/db/repos/container
container_mount="lxc.mount.entry = /var/db/repos/container var/db/repos/container none ro,bind 0 0
"
else
@@ -543,15 +552,14 @@ update_prepare() {
printf $"Package update for container %s\n" $name_lxc
ebegin $"Moving installed packages, flags and masks from main container"
- cp $path_work/$name_upgrading/rootfs$num_cur/etc/portage/sets/custom $path_lxc/rootfs/etc/portage/sets/custom &>/dev/null || true
- cp $path_work/$name_upgrading/rootfs$num_cur/etc/portage/package.accept_keywords/custom \
- $path_lxc/rootfs/etc/portage/package.accept_keywords/custom &>/dev/null || true
- cp $path_work/$name_upgrading/rootfs$num_cur/etc/portage/package.use/custom \
- $path_lxc/rootfs/etc/portage/package.use/custom &>/dev/null || true
- cp $path_work/$name_upgrading/rootfs$num_cur/etc/portage/package.mask/custom \
- $path_lxc/rootfs/etc/portage/package.mask/custom &>/dev/null || true
- cp $path_work/$name_upgrading/rootfs$num_cur/etc/portage/package.unmask/custom \
- $path_lxc/rootfs/etc/portage/package.unmask/custom &>/dev/null || true
+ for migrate_file in /etc/portage/package.accept_keywords/custom \
+ /etc/portage/package.mask/custom \
+ /etc/portage/package.unmask/custom \
+ /etc/portage/package.use/custom \
+ /etc/portage/sets/custom
+ do
+ cp ${path_work}/${name_upgrading}/rootfs${num_cur}${migrate_file} ${path_lxc}/rootfs${migrate_file} &>/dev/null || true
+ done
eend
ebegin $"Creating mount points"

@ -1,23 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 2914fe9..3f69f91 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -550,6 +550,9 @@ update_prepare() {
einfo $"Launching package update"
lxc-attach $name_lxc -- cl-update -f
rm -rf "$path_lxc/rootfs/var/calculate/{tmp/*,templates/*}"
+ cd $path_lxc/rootfs/etc/runlevels/boot
+ ln -s /etc/init.d/calculate .
+ cd - &>/dev/null
ebegin $"Stopping container"
lxc-stop $name_lxc
@@ -566,7 +569,7 @@ update_prepare() {
ebegin $"Removing temporary container directory $name_lxc"
if [ $type_fs = 'btrfs' ]
then
- btrfs subvolume delete $path_lxc >&/dev/null
+ btrfs subvolume delete $path_lxc &>/dev/null
if [ -n "$path_change" ]
then
rm $path_def/$name_lxc # удалим символическую ссылку

@ -1,16 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 98b73a9..0ab9dd5 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -600,6 +600,11 @@ upgrade_lxc() {
$path_work/$name_upgrading/rootfs$num_next/etc/conf.d/net
eend
+ ebegin $"Copying hash of root password"
+ root=$(grep '^root:' $path_work/$name_upgrading/rootfs$num_cur/etc/shadow | sed 's/:/\\:/g')
+ sed -i "s:^root\:.*$:$root:" $path_work/$name_upgrading/rootfs$num_next/etc/shadow
+ eend
+
ebegin $"Preparing first boot setup script"
cat << EOL > $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
cl-core --method setup_system --no-progress --usenew-conf --network on

@ -1,13 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 3f69f91..96135d9 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -531,7 +531,7 @@ update_prepare() {
eend
ebegin $"Creating mount points"
- for mount_point in $(grep lxc.mount.entry $path_work/$name_upgrading/config | awk {'print $4'})
+ for mount_point in $(grep '^lxc.mount.entry' $path_work/$name_upgrading/config | awk {'print $4'})
do
mkdir -p "$path_lxc/rootfs/$mount_point"
done

@ -1,16 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 2cdcc11..8c29bde 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -614,6 +614,11 @@ upgrade_lxc() {
sed -i "s:^root\:.*$:$root:" $path_work/$name_upgrading/rootfs$num_next/etc/shadow
eend
+ ebegin $"Copying ssh keys"
+ cp $path_work/$name_upgrading/rootfs$num_cur/etc/ssh/*_key* \
+ $path_work/$name_upgrading/rootfs$num_next/etc/ssh
+ eend
+
ebegin $"Preparing first boot setup script"
cat << EOL > $path_work/$name_upgrading/rootfs$num_next/etc/local.d/firststart.start
cl-core --method setup_system --no-progress --usenew-conf --network on

@ -1,27 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 9072aed..099a0ce 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -479,13 +479,20 @@ create_lxc() {
cp /etc/resolv.conf $path_lxc/rootfs/etc
else
net_conf=veth
- local random_mac=$(printf '06:%02X:%02X:%02X:%02X:%02X\n' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256])
+ local random_mac=$(printf '06:%02X:%02X:%02X:%02X:%02X\n' \
+ $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256])
+ local veth_pair="lxc.net.0.veth.pair = lxc-${name_lxc::11}"
+ if grep -q "$veth_pair" -r ${path_def}/*/config
+ then
+ # исключим настройку сетевого имени, если такое уже используется
+ veth_pair="#${veth_pair}"
+ fi
network_conf="lxc.net.0.type = veth
lxc.net.0.flags = up
lxc.net.0.name = eth0
lxc.net.0.link = br0
lxc.net.0.hwaddr = ${random_mac}
-lxc.net.0.veth.pair = lxc-${name_lxc}"
+${veth_pair}"
fi
# перенесем базовый config удалив настройку сети

@ -1,12 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 0ab9dd5..714a44d 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -490,7 +490,6 @@ os_install_clock_timezone = $(cat /etc/timezone)
[update]
cl_update_rep_name =
cl_update_rep_url =
-cl_update_rep_sync =
cl_update_eixupdate_force = force
cl_update_force_fix_set = on
EOL

@ -1,22 +0,0 @@
diff --git a/cl-lxc b/cl-lxc
index 9aaa10f..db548eb 100755
--- a/cl-lxc
+++ b/cl-lxc
@@ -209,8 +209,17 @@ set_vars(){
if [ $path_def = "$path_work" ]
then
path_change=
+ if [ ! -d $path_work ]
+ then
+ mkdir -p $path_work
+ fi
else
path_change=$path_work
+ if [ ! -d $path_work ]
+ then
+ printf $"Directory '%s' is not found.\n" $path_work >&2
+ exit 1
+ fi
fi
type_fs=$(df -Th $path_work | awk 'NR==2 {print $2}')
Loading…
Cancel
Save