#!/bin/sh export MACOSX_DEPLOYMENT_TARGET=10.1 export LOGFILE="/tmp/seg_addr_table.log" echo > $LOGFILE if [ -z "$1" ]; then echo "===== REGENERATING FILE LIST =====" >> $LOGFILE echo -e "- regenerating file list... \c" sudo find /sw /usr/X11R6 -type f 2>>$LOGFILE | sudo xargs -s 48000 file | grep 'Mach-O' | awk -F: '{ print $1 }' | grep -v '.class$' | grep -v '.jar$' > /tmp/seg_addr_table.raw echo "done" echo "===== REMOVING NON-PREBOUND FILES =====" >> $LOGFILE echo -e "- removing non-prebound files... \c" echo > /tmp/seg_addr_table.unsorted for file in `cat /tmp/seg_addr_table.raw`; do if sudo file $file 2>&1 | grep -q 'Mach-O executable'; then if sudo otool -hv $file 2>&1 | grep -q PREBOUND; then echo $file >> /tmp/seg_addr_table.unsorted fi else if sudo otool -hv $file 2>&1 | grep -q PREBOUND; then sudo otool -L $file 2>&1 | grep 'compatibility version' | head -1 | awk '{ print $1 }' >> /tmp/seg_addr_table.unsorted fi fi done echo "done" fi echo "===== SORTING TABLE =====" >> $LOGFILE echo -e "- sorting table... \c" sort /tmp/seg_addr_table.unsorted | uniq > /tmp/seg_addr_table echo "done" echo "===== GENERATING SEG_ADDR_TABLE =====" >> $LOGFILE echo -e "- generating correct seg_addr_table... \c" sudo seg_addr_table -seg_addr_table /tmp/seg_addr_table -seg1addr 0x20000000 -segs_read_only_addr 0x90000000 -segs_read_write_addr 0xa0000000 -allocate_flat increasing -relayout -o /sw/fink/dists/seg_addr_table >>$LOGFILE sudo chmod 666 /sw/fink/dists/seg_addr_table echo "done" echo "===== REDOING PREBINDING =====" >> $LOGFILE echo -e "- redoing prebinding based on the new seg_addr_table... \c" cat /tmp/seg_addr_table | while read file; do if [ -f "$file" ]; then sudo redo_prebinding -seg_addr_table /sw/fink/dists/seg_addr_table "$file" >>$LOGFILE 2>&1 fi done echo "done" echo "===== UPDATING PREBINDING =====" >> $LOGFILE echo -e "- updating prebinding... \c" sudo update_prebinding -root / -verbose >>$LOGFILE 2>&1 echo "done"