From e8c3c5b12d75dc13f873e563e68ce2e7961eb2b2 Mon Sep 17 00:00:00 2001 From: atratsevskiy Date: Thu, 6 Aug 2009 13:11:53 +0000 Subject: [PATCH] git-svn-id: http://svn.calculate.ru/calculate/trunk@2342 c91db197-33c1-4113-bf15-f8a5c547ca64 --- install/calculate | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/install/calculate b/install/calculate index 26d7993..330ec0a 100755 --- a/install/calculate +++ b/install/calculate @@ -3750,8 +3750,15 @@ sub profile{ #уберем ссылки на несуществующие файлы `$data{path} file "$_"`=~m/\`([^']+)'/; my $dest = $1; - #проверяем на существование только абсолютный путь! - if($dest=~m/^[\/]/ && !-e "$data{'chroot'}$data{scratch_ws}$dest"){next;} + #проверяем на существование только абсолютный путь + if($dest=~m/^[\/]/){ + if($data{pass} eq 'install' && $data{scratch_ws}){ + #проверим существование в squash образе + if(!checksquash($dest)){next;} + }else{ + #проверим в системе + if(!-e "$data{'chroot'}$data{scratch_ws}$dest"){next;} + } } #выделим путь из профиля my $allocation = $data{'chroot'}.$data{scratch_ws}.substr($_, length($profile)); #проверим имя файла фрофиля перед переносом в систему @@ -6768,6 +6775,15 @@ sub unsquash{ system("$data{path} unsquashfs -n -d $data{mount}$data{scratch_ws} -f $squash @_ &>/dev/null"); } +#------------------------------------------------------------------------------ +# Проверим наличие файла в образе +#------------------------------------------------------------------------------ +sub checksquash{ + my $file = $_[0]; + my $squash = "$data{mount}/livecd.squashfs"; + return !system("$data{path} unsquashfs -ls $squash $file | grep -P '^squashfs-root$file' &>/dev/null"); +} + #------------------------------------------------------------------------------ # удалим временные файлы #------------------------------------------------------------------------------