source: common/create-sbu_du-report.sh@ 7933ed7

ablfs-more legacy trunk
Last change on this file since 7933ed7 was 3b14992, checked in by Pierre Labastie <pierre@…>, 5 years ago

Fix "installed files size" for the last package:
In create-sbu_du.sh, we use "du -s" for getting the size of the installed
files at the end of the build, and we compare to the "KB" from the previous
package to get the Installed size of the last package. But the du command
excludes an absolute dir, while it should be relative. This lead to bogus
stats.

  • Property mode set to 100755
File size: 5.3 KB
RevLine 
[9ea3d54]1#!/bin/bash
2#$Id$
3
4set -e
5
6LOGSDIR=$1
7VERSION=$2
[c57747d]8DATE=$3
[9ea3d54]9
[0210014]10LINE="================================================================================"
11
[9ea3d54]12# Make sure that we have a directory as first argument
13[[ ! -d "$LOGSDIR" ]] && \
[c57747d]14 echo -e "\nUSAGE: create-sbu_du-report.sh logs_directory [book_version] [date]\n" && exit
[9ea3d54]15
16# Make sure that the first argument is a jhalfs logs directory
17[[ ! -f "$LOGSDIR"/000-masterscript.log ]] && \
18 echo -e "\nLooks like $LOGSDIR isn't a jhalfs logs directory.\n" && exit
19
[26d25e8]20# If this script is run manually, the book version may be unknown
[9ea3d54]21[[ -z "$VERSION" ]] && VERSION=unknown
[c57747d]22[[ -z "$DATE" ]] && DATE=$(date --iso-8601)
[9ea3d54]23
24# If there is iteration logs directories, copy the logs inside iteration-1
25# to the top level dir
[10c8b78]26[[ -d "$LOGSDIR"/build_1 ]] && \
27 cp $LOGSDIR/build_1/* $LOGSDIR
[9ea3d54]28
29# Set the report file
[c57747d]30REPORT="$VERSION"-SBU_DU-"$DATE".report
[9ea3d54]31
[0210014]32[ -f $REPORT ] && : >$REPORT
33
[a9429d5]34# Dump generation time stamp and book version
[9ea3d54]35echo -e "\n`date`\n" > "$REPORT"
36echo -e "Book version is:\t$VERSION\n" >> "$REPORT"
[a9429d5]37
38# If found, dump jhalfs.config file in a readable format
39if [[ -f jhalfs.config ]] ; then
40 echo -e "\n\tjhalfs configuration settings:\n" >> "$REPORT"
41 cat jhalfs.config | sed -e '/parameters/d;s/.\[[013;]*m//g;s/</\t</;s/^\w\{1,6\}:/&\t/' >> "$REPORT"
42else
43 echo -e "\nNOTE: the jhalfs configuration settings are unknown" >> "$REPORT"
44fi
[9ea3d54]45
46# Dump CPU and memory info
[a9429d5]47echo -e "\n\n\t\tCPU type:\n" >> "$REPORT"
[9ea3d54]48cat /proc/cpuinfo >> "$REPORT"
49echo -e "\n\t\tMemory info:\n" >> "$REPORT"
50free >> "$REPORT"
51
[d9a53e0]52# Parse only that logs that have time data
[0210014]53BUILDLOGS="`grep -l "^Totalseconds:" ${LOGSDIR}/*`"
[9ea3d54]54
55# Match the first timed log to extract the SBU unit value from it
[125e05e]56FIRSTLOG=`grep -l "^Totalseconds:" $LOGSDIR/* | head -n1`
57BASELOG=`grep -l "^Totalseconds:" $LOGSDIR/???-binutils* | head -n1`
[0210014]58echo -e "\nUsing ${BASELOG#*[[:digit:]]-} to obtain the SBU unit value."
[68713c9]59SBU_UNIT=`sed -n 's/^Totalseconds:\s\([[:digit:]]*\)$/\1/p' $BASELOG`
[0210014]60echo -e "\nThe SBU unit value is equal to $SBU_UNIT seconds.\n"
61echo -e "\n\n$LINE\n\nThe SBU unit value is equal to $SBU_UNIT seconds.\n" >> "$REPORT"
[9ea3d54]62
63# Set the first value to 0 for grand totals calculation
64SBU2=0
65INSTALL2=0
66INSTALLMB2=0
67
[0210014]68# Start the loop
[9ea3d54]69for log in $BUILDLOGS ; do
70
[0210014]71# Strip the filename
72 PACKAGE="${log#*[[:digit:]]*-}"
73
74# Start SBU calculation
75# Build time
[68713c9]76 TIME=`sed -n 's/^Totalseconds:\s\([[:digit:]]*\)$/\1/p' $log`
[0210014]77 SECS=`perl -e 'print ('$TIME' % '60')';`
78 MINUTES=`perl -e 'printf "%.0f" , (('$TIME' - '$SECS') / '60')';`
[68713c9]79 SBU=`perl -e 'printf "%.1f" , ('$TIME' / '$SBU_UNIT')';`
[0210014]80
81# Append SBU value to SBU2 for grand total
[68713c9]82 SBU2=`perl -e 'printf "%.1f" , ('$SBU2' + '$SBU')';`
[0210014]83
84# Start disk usage calculation
85# Disk usage before unpacking the package
[9ea3d54]86 DU1=`grep "^KB: " $log | head -n1 | cut -f1 | sed -e 's/KB: //'`
[0210014]87 DU1MB=`perl -e 'printf "%.3f" , ('$DU1' / '1024')';`
88# Disk usage before deleting the source and build dirs
[9ea3d54]89 DU2=`grep "^KB: " $log | tail -n1 | cut -f1 | sed -e 's/KB: //'`
[0210014]90 DU2MB=`perl -e 'printf "%.3f" , ('$DU2' / '1024')';`
91# Calculate disk space required to do the build
92 REQUIRED1=`perl -e 'print ('$DU2' - '$DU1')';`
93 REQUIRED2=`perl -e 'printf "%.3f" , ('$DU2MB' - '$DU1MB')';`
[9ea3d54]94
[0210014]95# Append installed files disk usage to the previous entry,
96# except for the first parsed log
[125e05e]97 if [ "$log" != "$FIRSTLOG" ] ; then
[0210014]98 INSTALL=`perl -e 'print ('$DU1' - '$DU1PREV')';`
99 INSTALLMB=`perl -e 'printf "%.3f" , ('$DU1MB' - '$DU1MBPREV')';`
100 echo -e "Installed files disk usage:\t\t\t\t$INSTALL KB or $INSTALLMB MB\n" >> $REPORT
[9ea3d54]101 # Append install values for grand total
[0210014]102 INSTALL2=`perl -e 'printf "%.3f" , ('$INSTALL2' + '$INSTALL')';`
103 INSTALLMB2=`perl -e 'printf "%.3f" , ('$INSTALLMB2' + '$INSTALLMB')';`
[9ea3d54]104 fi
105
[0210014]106# Set variables to calculate installed files disk usage
[9ea3d54]107 DU1PREV=$DU1
108 DU1MBPREV=$DU1MB
109
[0210014]110# Dump time and disk usage values
111 echo -e "$LINE\n\t\t\t\t[$PACKAGE]\n" >> $REPORT
112 echo -e "Build time is:\t\t\t\t\t\t$MINUTES minutes and $SECS seconds" >> $REPORT
113 echo -e "Build time in seconds is:\t\t\t\t$TIME" >> $REPORT
114 echo -e "Approximate SBU time is:\t\t\t\t$SBU" >> $REPORT
115 echo -e "Disk usage before unpacking the package:\t\t$DU1 KB or $DU1MB MB" >> $REPORT
116 echo -e "Disk usage before deleting the source and build dirs:\t$DU2 KB or $DU2MB MB" >> $REPORT
117 echo -e "Required space to build the package:\t\t\t$REQUIRED1 KB or $REQUIRED2 MB" >> $REPORT
[9ea3d54]118
119done
120
[125e05e]121# For printing the last 'Installed files disk usage', we need to 'du' the
122# root dir, excluding the jhalfs directory (and lost+found). We assume
123# that the rootdir is $LOGSDIR/../..
[3b14992]124DU1=`du -skx --exclude=jhalfs --exclude=lost+found --exclude var/lib $LOGSDIR/../.. | cut -f1`
[125e05e]125DU1MB=`perl -e 'printf "%.3f" , ('$DU1' / '1024')';`
126INSTALL=`perl -e 'print ('$DU1' - '$DU1PREV')';`
127INSTALLMB=`perl -e 'printf "%.3f" , ('$DU1MB' - '$DU1MBPREV')';`
128echo -e "Installed files disk usage:\t\t\t\t$INSTALL KB or $INSTALLMB MB\n" >> $REPORT
129# Append install values for grand total
130INSTALL2=`perl -e 'printf "%.3f" , ('$INSTALL2' + '$INSTALL')';`
131INSTALLMB2=`perl -e 'printf "%.3f" , ('$INSTALLMB2' + '$INSTALLMB')';`
132
[9ea3d54]133# Dump grand totals
[7d109d4]134echo -e "\n$LINE\n\nTotal time required to build the system:\t\t$SBU2 SBU" >> $REPORT
[0210014]135# Total disk usage: including /tools but not /sources.
136echo -e "Total Installed files disk usage:\t\t\t$INSTALL2 KB or $INSTALLMB2 MB" >> $REPORT
Note: See TracBrowser for help on using the repository browser.