#!/bin/bash #******************************************************************************* # Copyright Daniel Grimwood, 2004-7 # The sed scripts in the dump() functions are Copyright Intel Corporation, 1999-2007. # Feel free to distribute and hack up my parts. # $Id: fix_deb 9 2007-06-06 08:28:28Z reaper $ #******************************************************************************* DEBFILE=$1 if [[ -z "$DEBFILE" ]]; then echo "Error: require a filename as an argument" exit 1 fi if [[ ! -e "${DEBFILE}" ]]; then echo "Error: file ${DEBFILE} does not exist" exit 1 fi if [[ -z $( type -p dpkg-deb ) ]]; then echo "Error: dpkg-deb not found in PATH" exit 1 fi # They all have roughly the same file names, version 7.1 to 9.1. COMP=$( echo ${DEBFILE} | sed '{s/.*\(icc\|ifort\|idb\|ifc\|iidb\|isubh\|eidb\)\(e\?\)\([0-9]\{1,2\}\)[0-9]*_\([0-9.]*\).*/\1/}' ) E=$( echo ${DEBFILE} | sed '{s/.*\(icc\|ifort\|idb\|ifc\|iidb\|isubh\|eidb\)\(e\?\)\([0-9]\{1,2\}\)[0-9]*_\([0-9.]*\).*/\2/}' ) MAJOR=$( echo ${DEBFILE} | sed '{s/.*\(icc\|ifort\|idb\|ifc\|iidb\|isubh\|eidb\)\(e\?\)\([0-9]\{1,2\}\)[0-9]*_\([0-9.]*\).*/\3/}' ) FULL=$( echo ${DEBFILE} | sed '{s/.*\(icc\|ifort\|idb\|ifc\|iidb\|isubh\|eidb\)\(e\?\)\([0-9]\{1,2\}\)[0-9]*_\([0-9.]*\).*/\4/}' ) if [[ "${DEBFILE}" == "${COMP}" ]]; then echo "Regular expression match on .deb filename failed." exit 2 fi case ${MAJOR} in ("7") DESTINATION="/opt/intel/compiler70" ;; ("8") case ${COMP} in ("icc"|"isubh") DESTINATION="/opt/intel_cc_80" ;; ("ifort") DESTINATION="/opt/intel_fc_80" ;; ("idb") DESTINATION="/opt/intel_idb_80" ;; (*) echo "Unknown component ${COMP}" exit 1 ;; esac ;; ("9") case ${COMP} in ("icc"|"isubh") DESTINATION="/opt/intel/cc${E}/9.0" ;; ("ifort") DESTINATION="/opt/intel/fc${E}/9.0" ;; ("idb") DESTINATION="/opt/intel/idb${E}/9.0" ;; (*) echo "Unknown component ${COMP}" exit 1 ;; esac ;; ("91") case ${COMP} in ("icc"|"isubh") DESTINATION="/opt/intel/cc${E}/${FULL}" ;; ("ifort") DESTINATION="/opt/intel/fc${E}/${FULL}" ;; ("idb"|"eidb") DESTINATION="/opt/intel/idb${E}/${FULL}" ;; (*) echo "Unknown component ${COMP}" exit 1 ;; esac ;; ("10") case ${COMP} in ("icc"|"isubh") DESTINATION="/opt/intel/cc${E}/${FULL}" ;; ("ifort") DESTINATION="/opt/intel/fc${E}/${FULL}" ;; ("idb"|"eidb") DESTINATION="/opt/intel/idb${E}/${FULL}" ;; (*) echo "Unknown component ${COMP}" exit 1 ;; esac ;; (*) echo "Unknown MAJOR number ${MAJOR}" exit 1 ;; esac # Got the DESTINATION, now get into it. rm -rf tmp mkdir tmp dpkg-deb -e ${DEBFILE} tmp/DEBIAN dpkg-deb -x ${DEBFILE} tmp if [ ! -e tmp/DEBIAN/postinst ]; then echo '#!/bin/bash' > tmp/DEBIAN/postinst chmod 0755 tmp/DEBIAN/postinst fi echo DESTINATION=\"${DESTINATION}\" >> tmp/DEBIAN/postinst function dump7() { cat >> $1 <<'EOF' for FILE in $(find $DESTINATION/compiler70/ia??/bin/ -regex '.*[ei][cf]p?c$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh$' 2> /dev/null) ; do sed -e s@\@$DESTINATION@g -e s@man\ -w@manpath@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } function dump8() { cat >> $1 <<'EOF' for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]\(cc\|fort\|fc\|cpc\)$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh$' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$DESTINATION/bin"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find "$DESTINATION/eclipse" -iname EPProductConfiguration.sh 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } function dump9() { cat >> $1 <<'EOF' for FILE in $(find $DESTINATION/bin/ -regex '.*[ei](cc|fort|fc|cpc)$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh $' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]cc' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]cpc' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]fort' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]fc' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$DESTINATION/bin"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find "$DESTINATION/bin" -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$DEFAULT_INSTALL_DIR_PREFIX"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE sed s@NON_ROOT_INSTALLATION=\"\"@NON_ROOT_INSTALLATION=\"1\"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } function dump91() { cat >> $1 <<'EOF' for FILE in $(find $DESTINATION/bin/ -regex '.*[ei](cc|fort|fc|cpc)$\|.*pcl$\' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*cfg$\|.*vars[^/]*.c?sh$' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 644 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]cc' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]cpc' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]fort' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -regex '.*[ei]fc' 2> /dev/null) ; do sed s@\@$DESTINATION@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $DESTINATION/bin/ -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$DESTINATION/bin"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } case ${MAJOR} in ("7") dump7 "tmp/DEBIAN/postinst" ;; ("8") dump8 "tmp/DEBIAN/postinst" ;; ("9") dump9 "tmp/DEBIAN/postinst" ;; ("91") dump91 "tmp/DEBIAN/postinst" ;; ("10") dump91 "tmp/DEBIAN/postinst" ;; (*) echo "Unknown MAJOR number ${MAJOR}" exit 1 ;; esac dpkg-deb -b tmp $DEBFILE rm -rf tmp