1#!/usr/bin/env python2
2
3import sys
4import os
5import argparse
6
7ROOT = HERE = os.path.abspath(os.path.dirname(__file__))
8READIES = os.path.join(ROOT, "deps/readies")
9sys.path.insert(0, READIES)
10import paella
11
12#----------------------------------------------------------------------------------------------
13
14class RediSearchSetup(paella.Setup):
15    def __init__(self, nop=False):
16        paella.Setup.__init__(self, nop)
17
18    def common_first(self):
19        self.install_downloaders()
20        self.pip_install("wheel")
21        self.pip_install("setuptools --upgrade")
22
23        self.run("%s/bin/enable-utf8" % READIES)
24        self.install("git rsync")
25
26    def debian_compat(self):
27        self.install("libatomic1")
28        self.run("%s/bin/getgcc" % READIES)
29
30    def redhat_compat(self):
31        self.install("redhat-lsb-core")
32        self.install("libatomic")
33
34        self.run("%s/bin/getgcc --modern" % READIES)
35
36        # fix setuptools
37        self.pip_install("-IU --force-reinstall setuptools")
38
39    def archlinux(self):
40        self.install("gcc-libs")
41
42    def fedora(self):
43        self.install("libatomic")
44        self.run("%s/bin/getgcc" % READIES)
45
46    def macos(self):
47        self.install_gnu_utils()
48        self.install("pkg-config")
49
50        # for now depending on redis from brew, it's version6 with TLS.
51        self.run("{PYTHON} {READIES}/bin/getredis -v 6 --force".format(PYTHON=self.python, READIES=READIES))
52
53    def common_last(self):
54        self.run("{PYTHON} {READIES}/bin/getcmake --usr".format(PYTHON=self.python, READIES=READIES))
55        self.run("{PYTHON} {READIES}/bin/getrmpytools --reinstall".format(PYTHON=self.python, READIES=READIES))
56        if self.dist != "arch":
57            self.install("lcov")
58        else:
59            self.install("lcov-git", aur=True)
60        self.pip_install("pudb awscli")
61
62        self.pip_install("-r %s/tests/pytests/requirements.txt" % ROOT)
63
64#----------------------------------------------------------------------------------------------
65
66parser = argparse.ArgumentParser(description='Set up system for build.')
67parser.add_argument('-n', '--nop', action="store_true", help='no operation')
68args = parser.parse_args()
69
70RediSearchSetup(nop = args.nop).setup()
71