Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-25 08:29:08

0001 #!/usr/bin/env bash
0002 
0003 if [ "$#" -ne 1 ] && [ "$#" -ne 4 ] ; then
0004     echo "Unsupported call:"
0005     echo $0 $@
0006     echo Abort.
0007     exit 0
0008 fi
0009 
0010 distfilename=${1}
0011 echo "Staging in file ${distfilename}"
0012 
0013 md5=-1
0014 size=-1
0015 filesystem=""
0016 if [ "$#" -eq 4 ] ; then
0017     md5=${2}
0018     size=${3}
0019     filesystem=${4}
0020     # [ "${filesystem}" != "sphenix" ] && [ "${filesystem}" != "gpfs" ] && 
0021     if [ "${filesystem}" != "lustre" ] ; then
0022         echo "Unsupported filesystem ${filesystem} (expect lustre). Abort."
0023         exit 10
0024     fi
0025 fi
0026 
0027 if [ ! -f ${distfilename} ]; then
0028     echo "${distfilename} not found!"
0029     exit 11
0030 fi
0031 
0032 filename=`basename ${distfilename}` # Strips the path
0033 
0034 maxtries=3
0035 for i in `seq 1 $maxtries`; do
0036     action="dd status=none if=${distfilename} of=./${filename} bs=12MB"
0037     if [ $i -gt 1 ] ; then
0038         echo "Attempt $i: ${action}"
0039     fi
0040     eval ${action}
0041 
0042     # Check size
0043     if [ "${size}" != "-1" ] ; then
0044         actual_size=`stat -c '%s' ${filename}`
0045         if [ "${actual_size}" == "${size}" ] ; then
0046             echo "Size check passed."
0047             break # Exit loop
0048         else
0049             echo "Calculated size: ${actual_size}"
0050             echo "Expected size: ${size}"
0051             echo "Size mismatch on attempt $i."
0052             if [ $i -eq $maxtries ]; then
0053                 rm ${filename} # clean up incomplete file
0054                 echo "Size mismatch after $maxtries attempts. Abort."
0055                 exit 12
0056             fi
0057             # Try again
0058         fi
0059     else
0060         # No size check requested, assume success
0061         echo "No size check requested, assume success"
0062         break
0063     fi
0064 done
0065 # Once the size is okay, md5sum has to be too, otherwise the problem is more profound than transfer issues.
0066 
0067 # Check md5sum:
0068 actual_md5=`/usr/bin/env md5sum ${filename} | cut -d ' ' -f 1`
0069 
0070 if [ "${md5}" != "-1" ] ; then
0071     if [ "${actual_md5}" != "${md5}" ] ; then
0072         echo "Calculated md5: ${actual_md5}"
0073         echo "Expected md5  : ${md5}"
0074         echo "md5sum mismatch! Abort."
0075         exit 1
0076     fi
0077     echo "Md5sum check passed."
0078 else 
0079     echo "No md5sum check requested, assume success"
0080 fi
0081 
0082 exit 0