1*c43cad87SWarner Losh<<<<<<< HEAD 2*c43cad87SWarner Losh#!/usr/bin/env python3 3*c43cad87SWarner Losh 4*c43cad87SWarner Loshimport sys 5*c43cad87SWarner Loshfrom itertools import combinations 6*c43cad87SWarner Loshfrom os import uname 7*c43cad87SWarner Loshfrom multiprocessing import cpu_count 8*c43cad87SWarner Loshfrom subprocess import call 9*c43cad87SWarner Losh 10*c43cad87SWarner Losh# Later, we want to test extended vaddr support. Apparently, the "real" way of 11*c43cad87SWarner Losh# checking this is flaky on OS X. 12*c43cad87SWarner Loshbits_64 = sys.maxsize > 2**32 13*c43cad87SWarner Losh 14*c43cad87SWarner Loshnparallel = cpu_count() * 2 15*c43cad87SWarner Losh 16*c43cad87SWarner Loshuname = uname()[0] 17*c43cad87SWarner Losh 18*c43cad87SWarner Loshif call("command -v gmake", shell=True) == 0: 19*c43cad87SWarner Losh make_cmd = 'gmake' 20*c43cad87SWarner Loshelse: 21*c43cad87SWarner Losh make_cmd = 'make' 22*c43cad87SWarner Losh 23*c43cad87SWarner Loshdef powerset(items): 24*c43cad87SWarner Losh result = [] 25*c43cad87SWarner Losh for i in range(len(items) + 1): 26*c43cad87SWarner Losh result += combinations(items, i) 27*c43cad87SWarner Losh return result 28*c43cad87SWarner Losh 29*c43cad87SWarner Loshpossible_compilers = [] 30*c43cad87SWarner Loshfor cc, cxx in (['gcc', 'g++'], ['clang', 'clang++']): 31*c43cad87SWarner Losh try: 32*c43cad87SWarner Losh cmd_ret = call([cc, "-v"]) 33*c43cad87SWarner Losh if cmd_ret == 0: 34*c43cad87SWarner Losh possible_compilers.append((cc, cxx)) 35*c43cad87SWarner Losh except: 36*c43cad87SWarner Losh pass 37*c43cad87SWarner Loshpossible_compiler_opts = [ 38*c43cad87SWarner Losh '-m32', 39*c43cad87SWarner Losh] 40*c43cad87SWarner Loshpossible_config_opts = [ 41*c43cad87SWarner Losh '--enable-debug', 42*c43cad87SWarner Losh '--enable-prof', 43*c43cad87SWarner Losh '--disable-stats', 44*c43cad87SWarner Losh '--enable-opt-safety-checks', 45*c43cad87SWarner Losh '--with-lg-page=16', 46*c43cad87SWarner Losh] 47*c43cad87SWarner Loshif bits_64: 48*c43cad87SWarner Losh possible_config_opts.append('--with-lg-vaddr=56') 49*c43cad87SWarner Losh 50*c43cad87SWarner Loshpossible_malloc_conf_opts = [ 51*c43cad87SWarner Losh 'tcache:false', 52*c43cad87SWarner Losh 'dss:primary', 53*c43cad87SWarner Losh 'percpu_arena:percpu', 54*c43cad87SWarner Losh 'background_thread:true', 55*c43cad87SWarner Losh] 56*c43cad87SWarner Losh 57*c43cad87SWarner Loshprint('set -e') 58*c43cad87SWarner Loshprint('if [ -f Makefile ] ; then %(make_cmd)s relclean ; fi' % {'make_cmd': 59*c43cad87SWarner Losh make_cmd}) 60*c43cad87SWarner Loshprint('autoconf') 61*c43cad87SWarner Loshprint('rm -rf run_tests.out') 62*c43cad87SWarner Loshprint('mkdir run_tests.out') 63*c43cad87SWarner Loshprint('cd run_tests.out') 64*c43cad87SWarner Losh 65*c43cad87SWarner Loshind = 0 66*c43cad87SWarner Loshfor cc, cxx in possible_compilers: 67*c43cad87SWarner Losh for compiler_opts in powerset(possible_compiler_opts): 68*c43cad87SWarner Losh for config_opts in powerset(possible_config_opts): 69*c43cad87SWarner Losh for malloc_conf_opts in powerset(possible_malloc_conf_opts): 70*c43cad87SWarner Losh if cc == 'clang' \ 71*c43cad87SWarner Losh and '-m32' in possible_compiler_opts \ 72*c43cad87SWarner Losh and '--enable-prof' in config_opts: 73*c43cad87SWarner Losh continue 74*c43cad87SWarner Losh config_line = ( 75*c43cad87SWarner Losh 'EXTRA_CFLAGS=-Werror EXTRA_CXXFLAGS=-Werror ' 76*c43cad87SWarner Losh + 'CC="{} {}" '.format(cc, " ".join(compiler_opts)) 77*c43cad87SWarner Losh + 'CXX="{} {}" '.format(cxx, " ".join(compiler_opts)) 78*c43cad87SWarner Losh + '../../configure ' 79*c43cad87SWarner Losh + " ".join(config_opts) + (' --with-malloc-conf=' + 80*c43cad87SWarner Losh ",".join(malloc_conf_opts) if len(malloc_conf_opts) > 0 81*c43cad87SWarner Losh else '') 82*c43cad87SWarner Losh ) 83*c43cad87SWarner Losh 84*c43cad87SWarner Losh # We don't want to test large vaddr spaces in 32-bit mode. 85*c43cad87SWarner Losh if ('-m32' in compiler_opts and '--with-lg-vaddr=56' in 86*c43cad87SWarner Losh config_opts): 87*c43cad87SWarner Losh continue 88*c43cad87SWarner Losh 89*c43cad87SWarner Losh # Per CPU arenas are only supported on Linux. 90*c43cad87SWarner Losh linux_supported = ('percpu_arena:percpu' in malloc_conf_opts \ 91*c43cad87SWarner Losh or 'background_thread:true' in malloc_conf_opts) 92*c43cad87SWarner Losh # Heap profiling and dss are not supported on OS X. 93*c43cad87SWarner Losh darwin_unsupported = ('--enable-prof' in config_opts or \ 94*c43cad87SWarner Losh 'dss:primary' in malloc_conf_opts) 95*c43cad87SWarner Losh if (uname == 'Linux' and linux_supported) \ 96*c43cad87SWarner Losh or (not linux_supported and (uname != 'Darwin' or \ 97*c43cad87SWarner Losh not darwin_unsupported)): 98*c43cad87SWarner Losh print("""cat <<EOF > run_test_%(ind)d.sh 99*c43cad87SWarner Losh#!/bin/sh 100*c43cad87SWarner Losh 101*c43cad87SWarner Loshset -e 102*c43cad87SWarner Losh 103*c43cad87SWarner Loshabort() { 104*c43cad87SWarner Losh echo "==> Error" >> run_test.log 105*c43cad87SWarner Losh echo "Error; see run_tests.out/run_test_%(ind)d.out/run_test.log" 106*c43cad87SWarner Losh exit 255 # Special exit code tells xargs to terminate. 107*c43cad87SWarner Losh} 108*c43cad87SWarner Losh 109*c43cad87SWarner Losh# Environment variables are not supported. 110*c43cad87SWarner Loshrun_cmd() { 111*c43cad87SWarner Losh echo "==> \$@" >> run_test.log 112*c43cad87SWarner Losh \$@ >> run_test.log 2>&1 || abort 113*c43cad87SWarner Losh} 114*c43cad87SWarner Losh 115*c43cad87SWarner Loshecho "=> run_test_%(ind)d: %(config_line)s" 116*c43cad87SWarner Loshmkdir run_test_%(ind)d.out 117*c43cad87SWarner Loshcd run_test_%(ind)d.out 118*c43cad87SWarner Losh 119*c43cad87SWarner Loshecho "==> %(config_line)s" >> run_test.log 120*c43cad87SWarner Losh%(config_line)s >> run_test.log 2>&1 || abort 121*c43cad87SWarner Losh 122*c43cad87SWarner Loshrun_cmd %(make_cmd)s all tests 123*c43cad87SWarner Loshrun_cmd %(make_cmd)s check 124*c43cad87SWarner Loshrun_cmd %(make_cmd)s distclean 125*c43cad87SWarner LoshEOF 126*c43cad87SWarner Loshchmod 755 run_test_%(ind)d.sh""" % {'ind': ind, 'config_line': config_line, 127*c43cad87SWarner Losh 'make_cmd': make_cmd}) 128*c43cad87SWarner Losh ind += 1 129*c43cad87SWarner Losh 130*c43cad87SWarner Loshprint('for i in `seq 0 %(last_ind)d` ; do echo run_test_${i}.sh ; done | xargs' 131*c43cad87SWarner Losh ' -P %(nparallel)d -n 1 sh' % {'last_ind': ind-1, 'nparallel': nparallel}) 132*c43cad87SWarner Losh||||||| dec341af7695 133*c43cad87SWarner Losh======= 134bf6039f0SWarner Losh#!/usr/bin/env python 135bf6039f0SWarner Losh 136bf6039f0SWarner Loshimport sys 137bf6039f0SWarner Loshfrom itertools import combinations 138bf6039f0SWarner Loshfrom os import uname 139bf6039f0SWarner Loshfrom multiprocessing import cpu_count 140bf6039f0SWarner Loshfrom subprocess import call 141bf6039f0SWarner Losh 142bf6039f0SWarner Losh# Later, we want to test extended vaddr support. Apparently, the "real" way of 143bf6039f0SWarner Losh# checking this is flaky on OS X. 144bf6039f0SWarner Loshbits_64 = sys.maxsize > 2**32 145bf6039f0SWarner Losh 146bf6039f0SWarner Loshnparallel = cpu_count() * 2 147bf6039f0SWarner Losh 148bf6039f0SWarner Loshuname = uname()[0] 149bf6039f0SWarner Losh 150bf6039f0SWarner Loshif "BSD" in uname: 151bf6039f0SWarner Losh make_cmd = 'gmake' 152bf6039f0SWarner Loshelse: 153bf6039f0SWarner Losh make_cmd = 'make' 154bf6039f0SWarner Losh 155bf6039f0SWarner Loshdef powerset(items): 156bf6039f0SWarner Losh result = [] 157bf6039f0SWarner Losh for i in xrange(len(items) + 1): 158bf6039f0SWarner Losh result += combinations(items, i) 159bf6039f0SWarner Losh return result 160bf6039f0SWarner Losh 161bf6039f0SWarner Loshpossible_compilers = [] 162bf6039f0SWarner Loshfor cc, cxx in (['gcc', 'g++'], ['clang', 'clang++']): 163bf6039f0SWarner Losh try: 164bf6039f0SWarner Losh cmd_ret = call([cc, "-v"]) 165bf6039f0SWarner Losh if cmd_ret == 0: 166bf6039f0SWarner Losh possible_compilers.append((cc, cxx)) 167bf6039f0SWarner Losh except: 168bf6039f0SWarner Losh pass 169bf6039f0SWarner Loshpossible_compiler_opts = [ 170bf6039f0SWarner Losh '-m32', 171bf6039f0SWarner Losh] 172bf6039f0SWarner Loshpossible_config_opts = [ 173bf6039f0SWarner Losh '--enable-debug', 174bf6039f0SWarner Losh '--enable-prof', 175bf6039f0SWarner Losh '--disable-stats', 176bf6039f0SWarner Losh '--enable-opt-safety-checks', 177bf6039f0SWarner Losh] 178bf6039f0SWarner Loshif bits_64: 179bf6039f0SWarner Losh possible_config_opts.append('--with-lg-vaddr=56') 180bf6039f0SWarner Losh 181bf6039f0SWarner Loshpossible_malloc_conf_opts = [ 182bf6039f0SWarner Losh 'tcache:false', 183bf6039f0SWarner Losh 'dss:primary', 184bf6039f0SWarner Losh 'percpu_arena:percpu', 185bf6039f0SWarner Losh 'background_thread:true', 186bf6039f0SWarner Losh] 187bf6039f0SWarner Losh 188bf6039f0SWarner Loshprint 'set -e' 189bf6039f0SWarner Loshprint 'if [ -f Makefile ] ; then %(make_cmd)s relclean ; fi' % {'make_cmd': make_cmd} 190bf6039f0SWarner Loshprint 'autoconf' 191bf6039f0SWarner Loshprint 'rm -rf run_tests.out' 192bf6039f0SWarner Loshprint 'mkdir run_tests.out' 193bf6039f0SWarner Loshprint 'cd run_tests.out' 194bf6039f0SWarner Losh 195bf6039f0SWarner Loshind = 0 196bf6039f0SWarner Loshfor cc, cxx in possible_compilers: 197bf6039f0SWarner Losh for compiler_opts in powerset(possible_compiler_opts): 198bf6039f0SWarner Losh for config_opts in powerset(possible_config_opts): 199bf6039f0SWarner Losh for malloc_conf_opts in powerset(possible_malloc_conf_opts): 200bf6039f0SWarner Losh if cc is 'clang' \ 201bf6039f0SWarner Losh and '-m32' in possible_compiler_opts \ 202bf6039f0SWarner Losh and '--enable-prof' in config_opts: 203bf6039f0SWarner Losh continue 204bf6039f0SWarner Losh config_line = ( 205bf6039f0SWarner Losh 'EXTRA_CFLAGS=-Werror EXTRA_CXXFLAGS=-Werror ' 206bf6039f0SWarner Losh + 'CC="{} {}" '.format(cc, " ".join(compiler_opts)) 207bf6039f0SWarner Losh + 'CXX="{} {}" '.format(cxx, " ".join(compiler_opts)) 208bf6039f0SWarner Losh + '../../configure ' 209bf6039f0SWarner Losh + " ".join(config_opts) + (' --with-malloc-conf=' + 210bf6039f0SWarner Losh ",".join(malloc_conf_opts) if len(malloc_conf_opts) > 0 211bf6039f0SWarner Losh else '') 212bf6039f0SWarner Losh ) 213bf6039f0SWarner Losh 214bf6039f0SWarner Losh # We don't want to test large vaddr spaces in 32-bit mode. 215bf6039f0SWarner Losh if ('-m32' in compiler_opts and '--with-lg-vaddr=56' in 216bf6039f0SWarner Losh config_opts): 217bf6039f0SWarner Losh continue 218bf6039f0SWarner Losh 219bf6039f0SWarner Losh # Per CPU arenas are only supported on Linux. 220bf6039f0SWarner Losh linux_supported = ('percpu_arena:percpu' in malloc_conf_opts \ 221bf6039f0SWarner Losh or 'background_thread:true' in malloc_conf_opts) 222bf6039f0SWarner Losh # Heap profiling and dss are not supported on OS X. 223bf6039f0SWarner Losh darwin_unsupported = ('--enable-prof' in config_opts or \ 224bf6039f0SWarner Losh 'dss:primary' in malloc_conf_opts) 225bf6039f0SWarner Losh if (uname == 'Linux' and linux_supported) \ 226bf6039f0SWarner Losh or (not linux_supported and (uname != 'Darwin' or \ 227bf6039f0SWarner Losh not darwin_unsupported)): 228bf6039f0SWarner Losh print """cat <<EOF > run_test_%(ind)d.sh 229bf6039f0SWarner Losh#!/bin/sh 230bf6039f0SWarner Losh 231bf6039f0SWarner Loshset -e 232bf6039f0SWarner Losh 233bf6039f0SWarner Loshabort() { 234bf6039f0SWarner Losh echo "==> Error" >> run_test.log 235bf6039f0SWarner Losh echo "Error; see run_tests.out/run_test_%(ind)d.out/run_test.log" 236bf6039f0SWarner Losh exit 255 # Special exit code tells xargs to terminate. 237bf6039f0SWarner Losh} 238bf6039f0SWarner Losh 239bf6039f0SWarner Losh# Environment variables are not supported. 240bf6039f0SWarner Loshrun_cmd() { 241bf6039f0SWarner Losh echo "==> \$@" >> run_test.log 242bf6039f0SWarner Losh \$@ >> run_test.log 2>&1 || abort 243bf6039f0SWarner Losh} 244bf6039f0SWarner Losh 245bf6039f0SWarner Loshecho "=> run_test_%(ind)d: %(config_line)s" 246bf6039f0SWarner Loshmkdir run_test_%(ind)d.out 247bf6039f0SWarner Loshcd run_test_%(ind)d.out 248bf6039f0SWarner Losh 249bf6039f0SWarner Loshecho "==> %(config_line)s" >> run_test.log 250bf6039f0SWarner Losh%(config_line)s >> run_test.log 2>&1 || abort 251bf6039f0SWarner Losh 252bf6039f0SWarner Loshrun_cmd %(make_cmd)s all tests 253bf6039f0SWarner Loshrun_cmd %(make_cmd)s check 254bf6039f0SWarner Loshrun_cmd %(make_cmd)s distclean 255bf6039f0SWarner LoshEOF 256bf6039f0SWarner Loshchmod 755 run_test_%(ind)d.sh""" % {'ind': ind, 'config_line': config_line, 'make_cmd': make_cmd} 257bf6039f0SWarner Losh ind += 1 258bf6039f0SWarner Losh 259bf6039f0SWarner Loshprint 'for i in `seq 0 %(last_ind)d` ; do echo run_test_${i}.sh ; done | xargs -P %(nparallel)d -n 1 sh' % {'last_ind': ind-1, 'nparallel': nparallel} 260*c43cad87SWarner Losh>>>>>>> main 261