|
|
|
@ -1738,7 +1738,21 @@ sub checksystem{
|
|
|
|
|
closedir STAGE;
|
|
|
|
|
if($stage){$data{stage} = $stage}else{$data{stage} = $data{stage}."-YYYYMMDD.tar.bz2"}
|
|
|
|
|
|
|
|
|
|
if(!-e "$data{stagepath}/$data{stage}" && !defined $data{arg}{'vars'}){
|
|
|
|
|
#определим наличие CLS
|
|
|
|
|
if($data{calculate} ne 'CLS' && $data{system} eq 'desktop'){
|
|
|
|
|
my $stage;
|
|
|
|
|
opendir(STAGE, $data{linuxdir});
|
|
|
|
|
foreach(readdir STAGE){
|
|
|
|
|
if($_ eq "." || $_ eq ".."){next;}
|
|
|
|
|
if($_=~m/^cls\-[0-9\.]+\-$data{march}\.iso$/ && $stage lt $_){$stage = $_;}
|
|
|
|
|
}
|
|
|
|
|
closedir STAGE;
|
|
|
|
|
if($stage){$data{stage} = $stage}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!-e "$data{stagepath}/$data{stage}" && !-e "$data{linuxdir}/$data{stage}" &&
|
|
|
|
|
!defined $data{arg}{'vars'}
|
|
|
|
|
){
|
|
|
|
|
if(!-e $data{stagepath}){
|
|
|
|
|
printmes(" ".gettext('Create directory')); printmes(" stages...");
|
|
|
|
|
system "$data{path} mkdir $data{stagepath}";
|
|
|
|
@ -3007,9 +3021,13 @@ sub extract{
|
|
|
|
|
printmes(gettext('done').".\n");
|
|
|
|
|
|
|
|
|
|
#примонтируем iso если мы устанавливаем систему из iso образа диска
|
|
|
|
|
if($data{linux} =~m/iso$/){
|
|
|
|
|
#либо если мы собираем систему из CLS
|
|
|
|
|
if($data{linux} =~m/iso$/ || ($data{builder} && $data{stage} =~m/iso$/)){
|
|
|
|
|
my $iso;
|
|
|
|
|
if(!$data{builder}){$iso = $data{linux};}
|
|
|
|
|
else{$iso = $data{stage};}
|
|
|
|
|
printmes(" ".gettext('Mounting ISO file')); printmes("... ");
|
|
|
|
|
if(system "$data{path} mkdir -p /mnt/cdrom && mount -o loop $data{linuxdir}/$data{linux} /mnt/cdrom"){
|
|
|
|
|
if(system "$data{path} mkdir -p /mnt/cdrom && mount -o loop $data{linuxdir}/$iso /mnt/cdrom"){
|
|
|
|
|
printmes("\n\n".gettext('Error')."! ");
|
|
|
|
|
beep();
|
|
|
|
|
system "$data{path} umount $data{mount}";
|
|
|
|
@ -3030,7 +3048,12 @@ sub extract{
|
|
|
|
|
else{$unpack = "$data{path} tar -xjpf $data{linuxdir}/$data{linux} -C $data{mount}";}
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('Unpack')); printmes(" $data{stage}... ");
|
|
|
|
|
$unpack = "$data{path} tar -xjpf $data{stagepath}/$data{stage} -C $data{mount}";
|
|
|
|
|
|
|
|
|
|
if($data{stage} !~m/iso$/){
|
|
|
|
|
$unpack = "$data{path} tar -xjpf $data{stagepath}/$data{stage} -C $data{mount}";
|
|
|
|
|
}else{
|
|
|
|
|
$unpack = "$data{path} unsquashfs -n -d $data{mount} -f /mnt/cdrom/livecd.squashfs &>/dev/null";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#путь к squashfs в случае установки из ISO файла или с CD-ROM
|
|
|
|
@ -3068,7 +3091,7 @@ sub extract{
|
|
|
|
|
}
|
|
|
|
|
sleep($_);
|
|
|
|
|
}
|
|
|
|
|
if($data{linux} =~m/iso$/){system "$data{path} umount /mnt/cdrom";}
|
|
|
|
|
if($data{linux} =~m/iso$/ || ($data{builder} && $data{stage} =~m/iso$/)){system "$data{path} umount /mnt/cdrom";}
|
|
|
|
|
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
return "";
|
|
|
|
@ -3079,7 +3102,9 @@ sub extract{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#отмонтируем /mnt/cdrom если мы устанавливали систему из файла ISO образа
|
|
|
|
|
if($data{linux} =~m/iso$/){system "$data{path} umount /mnt/cdrom";}
|
|
|
|
|
if($data{linux} =~m/iso$/ || ($data{builder} && $data{stage} =~m/iso$/)){
|
|
|
|
|
system "$data{path} umount /mnt/cdrom";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($data{builder}){
|
|
|
|
|
printmes(" ".gettext('Unpack')); printmes(" $data{portage}...");
|
|
|
|
@ -3799,14 +3824,15 @@ sub configure{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot emerge sys-kernel/calculate-sources
|
|
|
|
|
printmes(" ".gettext('Install the kernel')); printmes("...");
|
|
|
|
|
if(system "$data{emergerun1} sys-kernel/calculate-sources $data{emergerun2} &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#chroot emerge sys-kernel/calculate-sources если система собирается не из CLS
|
|
|
|
|
if($data{stage} !~m/iso$/){
|
|
|
|
|
printmes(" ".gettext('Install the kernel')); printmes("...");
|
|
|
|
|
if(system "$data{emergerun1} sys-kernel/calculate-sources $data{emergerun2} &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
} }
|
|
|
|
|
|
|
|
|
|
#скопируем настройки ядра
|
|
|
|
|
#имя файла настроек ядра
|
|
|
|
@ -3824,19 +3850,22 @@ sub configure{
|
|
|
|
|
#путь установок ядра в собираемой системе
|
|
|
|
|
$data{kernel_config_build} = "$data{chroot}/usr/src/linux/.config";
|
|
|
|
|
|
|
|
|
|
#скопируем настройки ядра
|
|
|
|
|
if(-e "$data{kernel_config_loadpath}/$data{kernel_config_name}"){
|
|
|
|
|
#скопируем настройки ядра если система собирается не из CLS
|
|
|
|
|
if(-e "$data{kernel_config_loadpath}/$data{kernel_config_name}"
|
|
|
|
|
&& $data{stage} !~m/iso$/
|
|
|
|
|
){
|
|
|
|
|
system "$data{path} cp '$data{kernel_config_loadpath}/$data{kernel_config_name}' '$data{kernel_config_build}'";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#выполним make oldconfig
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" make oldconfig...\n");
|
|
|
|
|
if(system qq|$data{path} chroot $data{chroot} /usr/calculate/install/calculate --chroot="cd /usr/src/linux && make oldconfig"|){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#выполним make oldconfig если система собирается не из CLS
|
|
|
|
|
if($data{stage} !~m/iso$/){
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" make oldconfig...\n");
|
|
|
|
|
if(system qq|$data{path} chroot $data{chroot} /usr/calculate/install/calculate --chroot="cd /usr/src/linux && make oldconfig"|){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
} }
|
|
|
|
|
|
|
|
|
|
#выполним make menuconfig
|
|
|
|
|
if($data{menuconfig} eq 'on'){
|
|
|
|
@ -3850,8 +3879,8 @@ sub configure{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
} }
|
|
|
|
|
|
|
|
|
|
#сохраним измененные настройки ядра
|
|
|
|
|
if(-e "$data{kernel_config_build}"){
|
|
|
|
|
#сохраним измененные настройки ядра если система собирается не из CLS
|
|
|
|
|
if(-e "$data{kernel_config_build}" && $data{stage} !~m/iso$/){
|
|
|
|
|
printmes(" ".gettext('Save kernel config')); printmes("...");
|
|
|
|
|
if(system "$data{path} mkdir -p $data{kernel_config_savepath} && cp -f '$data{kernel_config_build}' '$data{kernel_config_savepath}/$data{kernel_config_name}'"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
@ -3860,74 +3889,77 @@ sub configure{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
} }
|
|
|
|
|
|
|
|
|
|
#chroot emerge sys-apps/v86d
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" emerge sys-apps/v86d...");
|
|
|
|
|
if(system "$data{emergerun1} sys-apps/v86d $data{emergerun2} &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#если система собирается не из CLS
|
|
|
|
|
if($data{stage} !~m/iso$/){
|
|
|
|
|
#chroot emerge sys-apps/v86d
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" emerge sys-apps/v86d...");
|
|
|
|
|
if(system "$data{emergerun1} sys-apps/v86d $data{emergerun2} &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot emerge sys-apps/openrc
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" emerge sys-apps/openrc...");
|
|
|
|
|
system "$data{emergerun1} -C sys-apps/baselayout $data{emergerun2} &>/dev/null";
|
|
|
|
|
system "$data{path} rm $data{chroot}/etc/init.d/depscan.sh $data{chroot}/etc/init.d/functions.sh $data{chroot}/etc/init.d/runscript.sh";
|
|
|
|
|
#не удаляем ссылку если это сервер. При переходе stage на baselayout2, ссылку надо будет добавлять самостоятельно
|
|
|
|
|
if($data{calculate} ne "CDS"){system "$data{path} rm $data{chroot}/etc/init.d/net.eth0";}
|
|
|
|
|
#chroot emerge sys-apps/openrc
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" emerge sys-apps/openrc...");
|
|
|
|
|
system "$data{emergerun1} -C sys-apps/baselayout $data{emergerun2} &>/dev/null";
|
|
|
|
|
system "$data{path} rm $data{chroot}/etc/init.d/depscan.sh $data{chroot}/etc/init.d/functions.sh $data{chroot}/etc/init.d/runscript.sh";
|
|
|
|
|
#не удаляем ссылку если это сервер. При переходе stage на baselayout2, ссылку надо будет добавлять самостоятельно
|
|
|
|
|
if($data{calculate} ne "CDS"){system "$data{path} rm $data{chroot}/etc/init.d/net.eth0";}
|
|
|
|
|
|
|
|
|
|
if(system "$data{emergerun1} sys-apps/openrc sys-apps/sysvinit sys-fs/udev $data{emergerun2} &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
#umountbuild();
|
|
|
|
|
return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
if(system "$data{emergerun1} sys-apps/openrc sys-apps/sysvinit sys-fs/udev $data{emergerun2} &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
#umountbuild();
|
|
|
|
|
return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot make -jX && make modules_install
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" make $data{makeopts} && make modules_install...\n");
|
|
|
|
|
if(system qq|$data{path} chroot $data{chroot} /usr/calculate/install/calculate --chroot="cd /usr/src/linux && make $data{makeopts} && make modules_install"|){
|
|
|
|
|
#выходим но не прерываем сборку
|
|
|
|
|
printmes("\n".gettext('error')."! ");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#chroot make -jX && make modules_install
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" make $data{makeopts} && make modules_install...\n");
|
|
|
|
|
if(system qq|$data{path} chroot $data{chroot} /usr/calculate/install/calculate --chroot="cd /usr/src/linux && make $data{makeopts} && make modules_install"|){
|
|
|
|
|
#выходим но не прерываем сборку
|
|
|
|
|
printmes("\n".gettext('error')."! ");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot groupadd games
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 35 games...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 35 games &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#chroot groupadd games
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 35 games...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 35 games &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot groupadd plugdev
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 440 plugdev...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 440 plugdev &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#chroot groupadd plugdev
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 440 plugdev...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 440 plugdev &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot groupadd scanner
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 441 scanner...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 441 scanner &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
#chroot groupadd scanner
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 441 scanner...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 441 scanner &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#chroot groupadd vboxusers
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 442 vboxusers...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 442 vboxusers &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
#chroot groupadd vboxusers
|
|
|
|
|
printmes(" ".gettext('Execute')); printmes(" groupadd -g 442 vboxusers...");
|
|
|
|
|
if(system "$data{path} chroot $data{chroot} /usr/sbin/groupadd -g 442 vboxusers &>/dev/null"){
|
|
|
|
|
printmes(" ".gettext('error')."!\n");
|
|
|
|
|
umountbuild(); return '';
|
|
|
|
|
}else{
|
|
|
|
|
printmes(" ".gettext('done').".\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if($data{calculate} eq "CLD"){
|
|
|
|
|