summaryrefslogtreecommitdiff
path: root/examples/redis-unstable/deps/jemalloc/scripts/gen_travis.py
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:52:54 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 22:52:54 +0100
commitdcacc00e3750300617ba6e16eb346713f91a783a (patch)
tree38e2d4fb5ed9d119711d4295c6eda4b014af73fd /examples/redis-unstable/deps/jemalloc/scripts/gen_travis.py
parent58dac10aeb8f5a041c46bddbeaf4c7966a99b998 (diff)
downloadcrep-dcacc00e3750300617ba6e16eb346713f91a783a.tar.gz
Remove testing data
Diffstat (limited to 'examples/redis-unstable/deps/jemalloc/scripts/gen_travis.py')
-rwxr-xr-xexamples/redis-unstable/deps/jemalloc/scripts/gen_travis.py327
1 files changed, 0 insertions, 327 deletions
diff --git a/examples/redis-unstable/deps/jemalloc/scripts/gen_travis.py b/examples/redis-unstable/deps/jemalloc/scripts/gen_travis.py
deleted file mode 100755
index 4366a06..0000000
--- a/examples/redis-unstable/deps/jemalloc/scripts/gen_travis.py
+++ /dev/null
@@ -1,327 +0,0 @@
-#!/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()