#!/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_rpm 3 2007-03-28 15:27:45Z reaper $ #******************************************************************************* RPM=$1 if [[ -z "$RPM" ]]; then echo "Error: require a filename as an argument" exit 1 fi if [[ ! -e "${RPM}" ]]; then echo "Error: file ${RPM} does not exist" exit 1 fi if [[ -z $( type -p rpmrebuild ) ]]; then echo "Error: rpmrebuild not found in PATH" exit 1 fi # They all have roughly the same file names, version 7.1 to 9.1. MAJOR=$( echo ${RPMFILE} | sed '{s/.*\(icc\|ifort\|idb\|ifc\|iidb\|isubh\|eidb\)\(e\?\)\([0-9]\{1,2\}\)[0-9]*-\([0-9.]*\).*/\3/}' ) if [[ "${RPMFILE}" == "${MAJOR}" ]]; then echo "Regular expression match on .rpm filename failed." exit 2 fi function dump7() { cat >> $1 <<'EOF' %post for FILE in $(find $RPM_INSTALL_PREFIX/compiler70/ia??/bin/ -regex '.*[ei][cf]p?c$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh$' 2> /dev/null) ; do sed -e s@\@$RPM_INSTALL_PREFIX@g -e s@man\ -w@manpath@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } function dump8() { cat >> $1 <<'EOF' %post for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]\(cc\|fort\|fc\|cpc\)$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh$' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$RPM_INSTALL_PREFIX/bin"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find "$RPM_INSTALL_PREFIX/eclipse" -iname EPProductConfiguration.sh 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } function dump9() { cat >> $1 <<'EOF' for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei](cc|fort|fc|cpc)$\|.*cfg$\|.*pcl$\|.*vars[^/]*.c?sh $' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]cc' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]cpc' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]fort' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]fc' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$RPM_INSTALL_PREFIX/bin"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find "$RPM_INSTALL_PREFIX/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 $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei](cc|fort|fc|cpc)$\|.*pcl$\' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*cfg$\|.*vars[^/]*.c?sh$' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 644 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]cc' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]cpc' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]fort' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -regex '.*[ei]fc' 2> /dev/null) ; do sed s@\@$RPM_INSTALL_PREFIX@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done for FILE in $(find $RPM_INSTALL_PREFIX/bin/ -type f -iname 'iccec' 2> /dev/null) ; do sed s@\@"$RPM_INSTALL_PREFIX/bin"@g $FILE > ${FILE}.abs mv ${FILE}.abs $FILE chmod 755 $FILE done EOF } case ${MAJOR} in ("7") dump7 "tmp_post" ;; ("8") dump8 "tmp_post" ;; ("9") dump9 "tmp_post" ;; ("91") dump91 "tmp_post" ;; (*) echo "Unknown MAJOR number ${MAJOR}" exit 1 ;; esac rpmrebuild -p -b --change-spec-post="cat tmp_post" ${RPMFILE} rm -f tmp_post