diff options
Diffstat (limited to 'contrib/jemalloc/scripts')
| -rwxr-xr-x | contrib/jemalloc/scripts/check-formatting.sh | 28 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/freebsd/before_install.sh | 3 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/freebsd/before_script.sh | 10 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/freebsd/script.sh | 3 | ||||
| -rwxr-xr-x | contrib/jemalloc/scripts/gen_run_tests.py | 130 | ||||
| -rwxr-xr-x | contrib/jemalloc/scripts/gen_travis.py | 327 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/linux/before_install.sh | 13 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/windows/before_install.sh | 83 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/windows/before_script.sh | 20 | ||||
| -rw-r--r-- | contrib/jemalloc/scripts/windows/script.sh | 10 | 
10 files changed, 627 insertions, 0 deletions
| diff --git a/contrib/jemalloc/scripts/check-formatting.sh b/contrib/jemalloc/scripts/check-formatting.sh new file mode 100755 index 000000000000..68cafd8e546e --- /dev/null +++ b/contrib/jemalloc/scripts/check-formatting.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# The files that need to be properly formatted.  We'll grow this incrementally +# until it includes all the jemalloc source files (as we convert things over), +# and then just replace it with +#    find -name '*.c' -o -name '*.h' -o -name '*.cpp +FILES=( +) + +if command -v clang-format &> /dev/null; then +  CLANG_FORMAT="clang-format" +elif command -v clang-format-8 &> /dev/null; then +  CLANG_FORMAT="clang-format-8" +else +  echo "Couldn't find clang-format." +fi + +if ! $CLANG_FORMAT -version | grep "version 8\." &> /dev/null; then +  echo "clang-format is the wrong version." +  exit 1 +fi + +for file in ${FILES[@]}; do +  if ! cmp --silent $file <($CLANG_FORMAT $file) &> /dev/null; then +    echo "Error: $file is not clang-formatted" +    exit 1 +  fi +done diff --git a/contrib/jemalloc/scripts/freebsd/before_install.sh b/contrib/jemalloc/scripts/freebsd/before_install.sh new file mode 100644 index 000000000000..f2bee321f73f --- /dev/null +++ b/contrib/jemalloc/scripts/freebsd/before_install.sh @@ -0,0 +1,3 @@ +#!/bin/tcsh + +su -m root -c 'pkg install -y git' diff --git a/contrib/jemalloc/scripts/freebsd/before_script.sh b/contrib/jemalloc/scripts/freebsd/before_script.sh new file mode 100644 index 000000000000..29406f6fbbdf --- /dev/null +++ b/contrib/jemalloc/scripts/freebsd/before_script.sh @@ -0,0 +1,10 @@ +#!/bin/tcsh + +autoconf +# We don't perfectly track freebsd stdlib.h definitions.  This is fine when +# we count as a system header, but breaks otherwise, like during these +# tests. +./configure --with-jemalloc-prefix=ci_ ${COMPILER_FLAGS:+ CC="$CC $COMPILER_FLAGS" CXX="$CXX $COMPILER_FLAGS"} $CONFIGURE_FLAGS +JE_NCPUS=`sysctl -n kern.smp.cpus` +gmake -j${JE_NCPUS} +gmake -j${JE_NCPUS} tests diff --git a/contrib/jemalloc/scripts/freebsd/script.sh b/contrib/jemalloc/scripts/freebsd/script.sh new file mode 100644 index 000000000000..d9c53a201f5e --- /dev/null +++ b/contrib/jemalloc/scripts/freebsd/script.sh @@ -0,0 +1,3 @@ +#!/bin/tcsh + +gmake check diff --git a/contrib/jemalloc/scripts/gen_run_tests.py b/contrib/jemalloc/scripts/gen_run_tests.py new file mode 100755 index 000000000000..7c3075f9f6a6 --- /dev/null +++ b/contrib/jemalloc/scripts/gen_run_tests.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 + +import sys +from itertools import combinations +from os import uname +from multiprocessing import cpu_count +from subprocess import call + +# Later, we want to test extended vaddr support.  Apparently, the "real" way of +# checking this is flaky on OS X. +bits_64 = sys.maxsize > 2**32 + +nparallel = cpu_count() * 2 + +uname = uname()[0] + +if call("command -v gmake", shell=True) == 0: +    make_cmd = 'gmake' +else: +    make_cmd = 'make' + +def powerset(items): +    result = [] +    for i in range(len(items) + 1): +        result += combinations(items, i) +    return result + +possible_compilers = [] +for cc, cxx in (['gcc', 'g++'], ['clang', 'clang++']): +    try: +        cmd_ret = call([cc, "-v"]) +        if cmd_ret == 0: +            possible_compilers.append((cc, cxx)) +    except: +        pass +possible_compiler_opts = [ +    '-m32', +] +possible_config_opts = [ +    '--enable-debug', +    '--enable-prof', +    '--disable-stats', +    '--enable-opt-safety-checks', +    '--with-lg-page=16', +] +if bits_64: +    possible_config_opts.append('--with-lg-vaddr=56') + +possible_malloc_conf_opts = [ +    'tcache:false', +    'dss:primary', +    'percpu_arena:percpu', +    'background_thread:true', +] + +print('set -e') +print('if [ -f Makefile ] ; then %(make_cmd)s relclean ; fi' % {'make_cmd': +    make_cmd}) +print('autoconf') +print('rm -rf run_tests.out') +print('mkdir run_tests.out') +print('cd run_tests.out') + +ind = 0 +for cc, cxx in possible_compilers: +    for compiler_opts in powerset(possible_compiler_opts): +        for config_opts in powerset(possible_config_opts): +            for malloc_conf_opts in powerset(possible_malloc_conf_opts): +                if cc == 'clang' \ +                  and '-m32' in possible_compiler_opts \ +                  and '--enable-prof' in config_opts: +                    continue +                config_line = ( +                    'EXTRA_CFLAGS=-Werror EXTRA_CXXFLAGS=-Werror ' +                    + 'CC="{} {}" '.format(cc, " ".join(compiler_opts)) +                    + 'CXX="{} {}" '.format(cxx, " ".join(compiler_opts)) +                    + '../../configure ' +                    + " ".join(config_opts) + (' --with-malloc-conf=' + +                    ",".join(malloc_conf_opts) if len(malloc_conf_opts) > 0 +                    else '') +                ) + +                # We don't want to test large vaddr spaces in 32-bit mode. +                if ('-m32' in compiler_opts and '--with-lg-vaddr=56' in +                    config_opts): +                    continue + +                # Per CPU arenas are only supported on Linux. +                linux_supported = ('percpu_arena:percpu' in malloc_conf_opts \ +                  or 'background_thread:true' in malloc_conf_opts) +                # Heap profiling and dss are not supported on OS X. +                darwin_unsupported = ('--enable-prof' in config_opts or \ +                  'dss:primary' in malloc_conf_opts) +                if (uname == 'Linux' and linux_supported) \ +                  or (not linux_supported and (uname != 'Darwin' or \ +                  not darwin_unsupported)): +                    print("""cat <<EOF > run_test_%(ind)d.sh +#!/bin/sh + +set -e + +abort() { +    echo "==> Error" >> run_test.log +    echo "Error; see run_tests.out/run_test_%(ind)d.out/run_test.log" +    exit 255 # Special exit code tells xargs to terminate. +} + +# Environment variables are not supported. +run_cmd() { +    echo "==> \$@" >> run_test.log +    \$@ >> run_test.log 2>&1 || abort +} + +echo "=> run_test_%(ind)d: %(config_line)s" +mkdir run_test_%(ind)d.out +cd run_test_%(ind)d.out + +echo "==> %(config_line)s" >> run_test.log +%(config_line)s >> run_test.log 2>&1 || abort + +run_cmd %(make_cmd)s all tests +run_cmd %(make_cmd)s check +run_cmd %(make_cmd)s distclean +EOF +chmod 755 run_test_%(ind)d.sh""" % {'ind': ind, 'config_line': config_line, +      'make_cmd': make_cmd}) +                    ind += 1 + +print('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}) diff --git a/contrib/jemalloc/scripts/gen_travis.py b/contrib/jemalloc/scripts/gen_travis.py new file mode 100755 index 000000000000..4366a066eeab --- /dev/null +++ b/contrib/jemalloc/scripts/gen_travis.py @@ -0,0 +1,327 @@ +#!/usr/bin/env python3 + +from itertools import combinations, chain +from enum import Enum, auto + + +LINUX = 'linux' +OSX = 'osx' +WINDOWS = 'windows' +FREEBSD = 'freebsd' + + +AMD64 = 'amd64' +ARM64 = 'arm64' +PPC64LE = 'ppc64le' + + +TRAVIS_TEMPLATE = """\ +# This config file is generated by ./scripts/gen_travis.py. +# Do not edit by hand. + +# We use 'minimal', because 'generic' makes Windows VMs hang at startup. Also +# the software provided by 'generic' is simply not needed for our tests. +# Differences are explained here: +# https://docs.travis-ci.com/user/languages/minimal-and-generic/ +language: minimal +dist: focal + +jobs: +  include: +{jobs} + +before_install: +  - |- +    if test -f "./scripts/$TRAVIS_OS_NAME/before_install.sh"; then +      source ./scripts/$TRAVIS_OS_NAME/before_install.sh +    fi + +before_script: +  - |- +    if test -f "./scripts/$TRAVIS_OS_NAME/before_script.sh"; then +      source ./scripts/$TRAVIS_OS_NAME/before_script.sh +    else +      scripts/gen_travis.py > travis_script && diff .travis.yml travis_script +      autoconf +      # If COMPILER_FLAGS are not empty, add them to CC and CXX +      ./configure ${{COMPILER_FLAGS:+ CC="$CC $COMPILER_FLAGS" \ +CXX="$CXX $COMPILER_FLAGS"}} $CONFIGURE_FLAGS +      make -j3 +      make -j3 tests +    fi + +script: +  - |- +    if test -f "./scripts/$TRAVIS_OS_NAME/script.sh"; then +      source ./scripts/$TRAVIS_OS_NAME/script.sh +    else +      make check +    fi +""" + + +class Option(object): +    class Type: +        COMPILER = auto() +        COMPILER_FLAG = auto() +        CONFIGURE_FLAG = auto() +        MALLOC_CONF = auto() +        FEATURE = auto() + +    def __init__(self, type, value): +        self.type = type +        self.value = value + +    @staticmethod +    def as_compiler(value): +        return Option(Option.Type.COMPILER, value) + +    @staticmethod +    def as_compiler_flag(value): +        return Option(Option.Type.COMPILER_FLAG, value) + +    @staticmethod +    def as_configure_flag(value): +        return Option(Option.Type.CONFIGURE_FLAG, value) + +    @staticmethod +    def as_malloc_conf(value): +        return Option(Option.Type.MALLOC_CONF, value) + +    @staticmethod +    def as_feature(value): +        return Option(Option.Type.FEATURE, value) + +    def __eq__(self, obj): +        return (isinstance(obj, Option) and obj.type == self.type +                and obj.value == self.value) + + +# The 'default' configuration is gcc, on linux, with no compiler or configure +# flags.  We also test with clang, -m32, --enable-debug, --enable-prof, +# --disable-stats, and --with-malloc-conf=tcache:false.  To avoid abusing +# travis though, we don't test all 2**7 = 128 possible combinations of these; +# instead, we only test combinations of up to 2 'unusual' settings, under the +# hope that bugs involving interactions of such settings are rare. +MAX_UNUSUAL_OPTIONS = 2 + + +GCC = Option.as_compiler('CC=gcc CXX=g++') +CLANG = Option.as_compiler('CC=clang CXX=clang++') +CL = Option.as_compiler('CC=cl.exe CXX=cl.exe') + + +compilers_unusual = [CLANG,] + + +CROSS_COMPILE_32BIT = Option.as_feature('CROSS_COMPILE_32BIT') +feature_unusuals = [CROSS_COMPILE_32BIT] + + +configure_flag_unusuals = [Option.as_configure_flag(opt) for opt in ( +    '--enable-debug', +    '--enable-prof', +    '--disable-stats', +    '--disable-libdl', +    '--enable-opt-safety-checks', +    '--with-lg-page=16', +)] + + +malloc_conf_unusuals = [Option.as_malloc_conf(opt) for opt in ( +    'tcache:false', +    'dss:primary', +    'percpu_arena:percpu', +    'background_thread:true', +)] + + +all_unusuals = (compilers_unusual + feature_unusuals +    + configure_flag_unusuals + malloc_conf_unusuals) + + +def get_extra_cflags(os, compiler): +    if os == FREEBSD: +        return [] + +    if os == WINDOWS: +        # For non-CL compilers under Windows (for now it's only MinGW-GCC), +        # -fcommon needs to be specified to correctly handle multiple +        # 'malloc_conf' symbols and such, which are declared weak under Linux. +        # Weak symbols don't work with MinGW-GCC. +        if compiler != CL.value: +            return ['-fcommon'] +        else: +            return [] + +    # We get some spurious errors when -Warray-bounds is enabled. +    extra_cflags = ['-Werror', '-Wno-array-bounds'] +    if compiler == CLANG.value or os == OSX: +        extra_cflags += [ +            '-Wno-unknown-warning-option', +            '-Wno-ignored-attributes' +        ] +    if os == OSX: +        extra_cflags += [ +            '-Wno-deprecated-declarations', +        ] +    return extra_cflags + + +# Formats a job from a combination of flags +def format_job(os, arch, combination): +    compilers = [x.value for x in combination if x.type == Option.Type.COMPILER] +    assert(len(compilers) <= 1) +    compiler_flags = [x.value for x in combination if x.type == Option.Type.COMPILER_FLAG] +    configure_flags = [x.value for x in combination if x.type == Option.Type.CONFIGURE_FLAG] +    malloc_conf = [x.value for x in combination if x.type == Option.Type.MALLOC_CONF] +    features = [x.value for x in combination if x.type == Option.Type.FEATURE] + +    if len(malloc_conf) > 0: +        configure_flags.append('--with-malloc-conf=' + ','.join(malloc_conf)) + +    if not compilers: +        compiler = GCC.value +    else: +        compiler = compilers[0] + +    extra_environment_vars = '' +    cross_compile = CROSS_COMPILE_32BIT.value in features +    if os == LINUX and cross_compile: +        compiler_flags.append('-m32') + +    features_str = ' '.join([' {}=yes'.format(feature) for feature in features]) + +    stringify = lambda arr, name: ' {}="{}"'.format(name, ' '.join(arr)) if arr else '' +    env_string = '{}{}{}{}{}{}'.format( +            compiler, +            features_str, +            stringify(compiler_flags, 'COMPILER_FLAGS'), +            stringify(configure_flags, 'CONFIGURE_FLAGS'), +            stringify(get_extra_cflags(os, compiler), 'EXTRA_CFLAGS'), +            extra_environment_vars) + +    job = '    - os: {}\n'.format(os) +    job += '      arch: {}\n'.format(arch) +    job += '      env: {}'.format(env_string) +    return job + + +def generate_unusual_combinations(unusuals, max_unusual_opts): +    """ +    Generates different combinations of non-standard compilers, compiler flags, +    configure flags and malloc_conf settings. + +    @param max_unusual_opts: Limit of unusual options per combination. +    """ +    return chain.from_iterable( +            [combinations(unusuals, i) for i in range(max_unusual_opts + 1)]) + + +def included(combination, exclude): +    """ +    Checks if the combination of options should be included in the Travis +    testing matrix. + +    @param exclude: A list of options to be avoided. +    """ +    return not any(excluded in combination for excluded in exclude) + + +def generate_jobs(os, arch, exclude, max_unusual_opts, unusuals=all_unusuals): +    jobs = [] +    for combination in generate_unusual_combinations(unusuals, max_unusual_opts): +        if included(combination, exclude): +            jobs.append(format_job(os, arch, combination)) +    return '\n'.join(jobs) + + +def generate_linux(arch): +    os = LINUX + +    # Only generate 2 unusual options for AMD64 to reduce matrix size +    max_unusual_opts = MAX_UNUSUAL_OPTIONS if arch == AMD64 else 1 + +    exclude = [] +    if arch == PPC64LE: +        # Avoid 32 bit builds and clang on PowerPC +        exclude = (CROSS_COMPILE_32BIT, CLANG,) + +    return generate_jobs(os, arch, exclude, max_unusual_opts) + + +def generate_macos(arch): +    os = OSX + +    max_unusual_opts = 1 + +    exclude = ([Option.as_malloc_conf(opt) for opt in ( +            'dss:primary', +            'percpu_arena:percpu', +            'background_thread:true')] + +        [Option.as_configure_flag('--enable-prof')] + +        [CLANG,]) + +    return generate_jobs(os, arch, exclude, max_unusual_opts) + + +def generate_windows(arch): +    os = WINDOWS + +    max_unusual_opts = 3 +    unusuals = ( +        Option.as_configure_flag('--enable-debug'), +        CL, +        CROSS_COMPILE_32BIT, +    ) +    return generate_jobs(os, arch, (), max_unusual_opts, unusuals) + + +def generate_freebsd(arch): +    os = FREEBSD + +    max_unusual_opts = 4 +    unusuals = ( +        Option.as_configure_flag('--enable-debug'), +        Option.as_configure_flag('--enable-prof --enable-prof-libunwind'), +        Option.as_configure_flag('--with-lg-page=16 --with-malloc-conf=tcache:false'), +        CROSS_COMPILE_32BIT, +    ) +    return generate_jobs(os, arch, (), max_unusual_opts, unusuals) + + + +def get_manual_jobs(): +    return """\ +    # Development build +    - os: linux +      env: CC=gcc CXX=g++ CONFIGURE_FLAGS="--enable-debug \ +--disable-cache-oblivious --enable-stats --enable-log --enable-prof" \ +EXTRA_CFLAGS="-Werror -Wno-array-bounds" +    # --enable-expermental-smallocx: +    - os: linux +      env: CC=gcc CXX=g++ CONFIGURE_FLAGS="--enable-debug \ +--enable-experimental-smallocx --enable-stats --enable-prof" \ +EXTRA_CFLAGS="-Werror -Wno-array-bounds" +""" + + +def main(): +    jobs = '\n'.join(( +        generate_windows(AMD64), + +        generate_freebsd(AMD64), + +        generate_linux(AMD64), +        generate_linux(PPC64LE), + +        generate_macos(AMD64), + +        get_manual_jobs(), +    )) + +    print(TRAVIS_TEMPLATE.format(jobs=jobs)) + + +if __name__ == '__main__': +    main() diff --git a/contrib/jemalloc/scripts/linux/before_install.sh b/contrib/jemalloc/scripts/linux/before_install.sh new file mode 100644 index 000000000000..674174639ea9 --- /dev/null +++ b/contrib/jemalloc/scripts/linux/before_install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -ev + +if [[ "$TRAVIS_OS_NAME" != "linux" ]]; then +    echo "Incorrect \$TRAVIS_OS_NAME: expected linux, got $TRAVIS_OS_NAME" +    exit 1 +fi + +if [[ "$CROSS_COMPILE_32BIT" == "yes" ]]; then +    sudo apt-get update +    sudo apt-get -y install gcc-multilib g++-multilib +fi diff --git a/contrib/jemalloc/scripts/windows/before_install.sh b/contrib/jemalloc/scripts/windows/before_install.sh new file mode 100644 index 000000000000..2740c4588d61 --- /dev/null +++ b/contrib/jemalloc/scripts/windows/before_install.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +set -e + +# The purpose of this script is to install build dependencies and set +# $build_env to a function that sets appropriate environment variables, +# to enable (mingw32|mingw64) environment if we want to compile with gcc, or +# (mingw32|mingw64) + vcvarsall.bat if we want to compile with cl.exe + +if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then +    echo "Incorrect \$TRAVIS_OS_NAME: expected windows, got $TRAVIS_OS_NAME" +    exit 1 +fi + +[[ ! -f C:/tools/msys64/msys2_shell.cmd ]] && rm -rf C:/tools/msys64 +choco uninstall -y mingw +choco upgrade --no-progress -y msys2 + +msys_shell_cmd="cmd //C RefreshEnv.cmd && set MSYS=winsymlinks:nativestrict && C:\\tools\\msys64\\msys2_shell.cmd" + +msys2() { $msys_shell_cmd -defterm -no-start -msys2 -c "$*"; } +mingw32() { $msys_shell_cmd -defterm -no-start -mingw32 -c "$*"; } +mingw64() { $msys_shell_cmd -defterm -no-start -mingw64 -c "$*"; } + +if [[ "$CROSS_COMPILE_32BIT" == "yes" ]]; then +    mingw=mingw32 +    mingw_gcc_package_arch=i686 +else +    mingw=mingw64 +    mingw_gcc_package_arch=x86_64 +fi + +if [[ "$CC" == *"gcc"* ]]; then +    $mingw pacman -S --noconfirm --needed \ +        autotools \ +        git \ +        mingw-w64-${mingw_gcc_package_arch}-make \ +	    mingw-w64-${mingw_gcc_package_arch}-gcc \ +	    mingw-w64-${mingw_gcc_package_arch}-binutils +    build_env=$mingw +elif [[ "$CC" == *"cl"* ]]; then +    $mingw pacman -S --noconfirm --needed \ +        autotools \ +	    git \ +	    mingw-w64-${mingw_gcc_package_arch}-make \ +	    mingw-w64-${mingw_gcc_package_arch}-binutils + +    # In order to use MSVC compiler (cl.exe), we need to correctly set some environment +    # variables, namely PATH, INCLUDE, LIB and LIBPATH. The correct values of these +    # variables are set by a batch script "vcvarsall.bat". The code below generates +    # a batch script that calls "vcvarsall.bat" and prints the environment variables. +    # +    # Then, those environment variables are transformed from cmd to bash format and put +    # into a script $apply_vsenv. If cl.exe needs to be used from bash, one can +    # 'source $apply_vsenv' and it will apply the environment variables needed for cl.exe +    # to be located and function correctly. +    # +    # At last, a function "mingw_with_msvc_vars" is generated which forwards user input +    # into a correct mingw (32 or 64) subshell that automatically performs 'source $apply_vsenv', +    # making it possible for autotools to discover and use cl.exe. +    vcvarsall="vcvarsall.tmp.bat" +    echo "@echo off" > $vcvarsall +    echo "call \"c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\\\vcvarsall.bat\" $USE_MSVC" >> $vcvarsall +    echo "set" >> $vcvarsall + +    apply_vsenv="./apply_vsenv.sh" +    cmd //C $vcvarsall | grep -E "^PATH=" | sed -n -e 's/\(.*\)=\(.*\)/export \1=$PATH:"\2"/g' \ +        -e 's/\([a-zA-Z]\):[\\\/]/\/\1\//g' \ +        -e 's/\\/\//g' \ +        -e 's/;\//:\//gp' > $apply_vsenv +    cmd //C $vcvarsall | grep -E "^(INCLUDE|LIB|LIBPATH)=" | sed -n -e 's/\(.*\)=\(.*\)/export \1="\2"/gp' >> $apply_vsenv + +    cat $apply_vsenv +    mingw_with_msvc_vars() { $msys_shell_cmd -defterm -no-start -$mingw -c "source $apply_vsenv && ""$*"; } +    build_env=mingw_with_msvc_vars + +    rm -f $vcvarsall +else +    echo "Unknown C compiler: $CC" +    exit 1 +fi + +echo "Build environment function: $build_env" diff --git a/contrib/jemalloc/scripts/windows/before_script.sh b/contrib/jemalloc/scripts/windows/before_script.sh new file mode 100644 index 000000000000..9d30ababd933 --- /dev/null +++ b/contrib/jemalloc/scripts/windows/before_script.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then +    echo "Incorrect \$TRAVIS_OS_NAME: expected windows, got $TRAVIS_OS_NAME" +    exit 1 +fi + +$build_env autoconf +$build_env ./configure $CONFIGURE_FLAGS +# mingw32-make simply means "make", unrelated to mingw32 vs mingw64. +# Simply disregard the prefix and treat is as "make". +$build_env mingw32-make -j3 +# At the moment, it's impossible to make tests in parallel, +# seemingly due to concurrent writes to '.pdb' file. I don't know why +# that happens, because we explicitly supply '/Fs' to the compiler. +# Until we figure out how to fix it, we should build tests sequentially +# on Windows. +$build_env mingw32-make tests diff --git a/contrib/jemalloc/scripts/windows/script.sh b/contrib/jemalloc/scripts/windows/script.sh new file mode 100644 index 000000000000..3a27f70aa517 --- /dev/null +++ b/contrib/jemalloc/scripts/windows/script.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +if [[ "$TRAVIS_OS_NAME" != "windows" ]]; then +    echo "Incorrect \$TRAVIS_OS_NAME: expected windows, got $TRAVIS_OS_NAME" +    exit 1 +fi + +$build_env mingw32-make -k check | 
