Bug 9026

Summary: Separator, mismatch "main.packages" filesize.
Product: Branch 3.0 Reporter: Vadym Kononenko <konan>
Component: separatorAssignee: Anton Farygin <rider>
Status: CLOSED WONTFIX QA Contact: at <at>
Severity: major    
Priority: P2 CC: mike
Version: 3.0   
Hardware: all   
OS: Linux   

Description Vadym Kononenko 2006-02-06 12:58:36 MSK
При генерации инсталяционного образа, список RPM файлов , которые копируются в    
каталог "out/ALTLinux/RPMS.main" при последовательных сборках и постоянной     
конфигурации разное... Изучив немного скрипты сепаратора, нашел, что список     
этих файлов читается из tmp/main.packages, но во время чтения списка данный     
файл меньше, его окончательного размера.    
Пример:    
Непосредственно перед чтением списка:    
-rw-r--r-- 1 root root 4096 Jan 31     
17:54 /home/hasher/_hasher/tmp/main.packages    
    
Реальный размер, измеренный после окончания процеса сборки:    
-rw-r--r-- 1 root root 16506 Jan 31     
17:54 /home/hasher/_hasher/tmp/main.packages    
    
Вот... :)    
Иногда этот файл вообще нулевой длины...    
Иногда такое творится с /home/hasher/_hasher/tmp/base.packages"    
   
Для исправления ситуации как вариант можно добавить вызов "sync" перед чтением   
списка пакетов из файла "$TMPDIR/$IDENT.packages".  
 
/usr/share/separator/functions 
... 
[skip] 
 
copypackages() 
{ 
    local WORKDIR APTBOX IDENT INSTALLDIR APTBOX TMPDIR INSTALLDIRS i OUTDIR 
    WORKDIR=$1 
    IDENT=$2 
    INSTALLDIR=$3 
    INSTALLDIRS=$4 
    OUTDIR=$5 
    APTBOX="$WORKDIR/aptbox" 
    TMPDIR="$WORKDIR/tmp" 
    [ -z "$IDENT" ] && IDENT="packages" 
    [ -d "$APTBOX" ] || Fatal "Please, create $APTBOX first" 
    [ -d "$INSTALLDIR" ] || mkdir -p "$INSTALLDIR" 
    Info "removing old packages ($IDENT) ..." 
    rm -f $INSTALLDIR/*0 
    Info "copying new packages ($IDENT) ..." 
 
    sync; 
#   ^^^^ 
    while read i 
    do 
        packagestatus "$INSTALLDIRS" `basename $i` $OUTDIR || continue 
        if ! curl $i -qs -o $INSTALLDIR/`basename $i`; then 
            echo "Copy package $i to  $INSTALLDIR/`basename $i` failed !!!" 
            exit 1 
        fi 
        echo -n "." 
    done < $TMPDIR/$IDENT.packages 
    echo "" 
} 
Steps to Reproduce:
1.Add line $(ls -l $TMPDIR/$IDENT.packages >> /tmp/separator.bug)  
after part of code in the file /usr/share/separator/functions  
...  
[skip]  
  
copypackages()  
{  
    local WORKDIR APTBOX IDENT INSTALLDIR APTBOX TMPDIR INSTALLDIRS i OUTDIR  
    WORKDIR=$1  
    IDENT=$2  
    INSTALLDIR=$3  
    INSTALLDIRS=$4  
    OUTDIR=$5  
    APTBOX="$WORKDIR/aptbox"  
    TMPDIR="$WORKDIR/tmp"  
    [ -z "$IDENT" ] && IDENT="packages"  
    [ -d "$APTBOX" ] || Fatal "Please, create $APTBOX first"  
    [ -d "$INSTALLDIR" ] || mkdir -p "$INSTALLDIR"  
    Info "removing old packages ($IDENT) ..."  
    rm -f $INSTALLDIR/*0  
    Info "copying new packages ($IDENT) ..."  
-> Here <-  
2. Build installer image  
3. Look to the file /tmp/separator.bug and compare included data with a data  
about the same file ("$TMPDIR/$IDENT.packages" or "tmp/main.packages") in a 
current time.  
Actual Results:  
Data in the file /tmp/separator.bug and a data   
about the same file ("$TMPDIR/$IDENT.packages" or "tmp/main.packages") in a  
current time is different. 

Expected Results:  
Data in the file /tmp/separator.bug and a data   
about the same file ("$TMPDIR/$IDENT.packages" or "tmp/main.packages") in a  
current time is a same.
Comment 1 Michael Shigorin 2008-02-15 19:33:37 MSK
apparently wontfix; use spt/mkimage