67 lines
1.9 KiB
Plaintext
67 lines
1.9 KiB
Plaintext
# A makefile based framework for testing performance commits in retrospect,
|
|
# based on work done by pippin@gimp.org done for GEGL, original code placed in the public domain.
|
|
|
|
SELF = Makefile-retrospect
|
|
|
|
MAKE_FLAGS = -j3 -k
|
|
CC = "ccache gcc" # if you do not have ccache replace with just gcc
|
|
|
|
PROJECT_PATH = ../../
|
|
|
|
# mute makes echoing of commands
|
|
.SILENT:
|
|
|
|
# replace sequential with random to build a random subset
|
|
all: reset sequential
|
|
#all: reset random
|
|
|
|
retry:
|
|
rm -rf reports/`cat jobs | tail -n1`*
|
|
make -f $(SELF)
|
|
|
|
prepare:
|
|
# uncomment these to make sure cpu is in high performance mode
|
|
#sudo sh -c 'echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor || true'
|
|
#sudo sh -c 'echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor || true'
|
|
|
|
reset:
|
|
rm -rf jobs jobs
|
|
# remove checkout dir to have a full reset on each invokation
|
|
rm -rf checkout
|
|
# create clone
|
|
git clone -s $(PROJECT_PATH) checkout
|
|
mkdir reports > /dev/null 2>&1 || true
|
|
make -f $(SELF) jobs
|
|
make -f $(SELF) prepare
|
|
|
|
jobs: joblist
|
|
./makejobs.rb joblist > jobs
|
|
|
|
sequential:
|
|
for a in `cat jobs`;do make -f $(SELF) reports/$$a;done
|
|
|
|
random:
|
|
for a in `cat jobs|sort`;do make -f $(SELF) reports/$$a;done
|
|
|
|
reports/%:
|
|
# check out revision
|
|
(cd checkout; git checkout `echo $@|sed s:reports/::`)
|
|
# write header for report
|
|
git log -1 `echo $@|sed s:reports/::` > $@ || true
|
|
# clean previous build
|
|
rm -rf install; mkdir install
|
|
# build revision
|
|
(cd checkout; if [ ! -f Makefile ]; then CC=$(CC) ./autogen.sh --disable-introspection --prefix=`pwd`/../install; fi ; \
|
|
make $(MAKE_FLAGS) ; make -k install ) > $@.log 2>&1 || true
|
|
# testing
|
|
make -f Makefile-tests clean;\
|
|
make -f Makefile-tests; sync;\
|
|
make -f Makefile-tests check >> $@ || true
|
|
# update report.pdf / report.png
|
|
./create-report.rb
|
|
echo
|
|
|
|
clean:
|
|
rm -rf reports jobs report.pdf report.png checkout install
|
|
make -f Makefile-tests clean
|