Install or update OpenSSL from source (statically linked, no shared libs).

    Args:
        version (str): Git tag or branch to install from. Default: 'master'
        ignore_test_fail: Continue with installation if `make test` fails.
                          Default: False

    Example:
        > fab setup.openssl:version=OpenSSL_1_1_0-stable

    Created files and dirs:

        > tree ~/repos
        └── openssl          <--- checked out git repository with openssl source

        > tree ~/bin
        │
        ├── c_rehash -> openssl-inst/active/bin/c_rehash  \__ command links
        ├── openssl  -> openssl-inst/active/bin/openssl   /
        │
        └── openssl-inst
            ├── active -> OpenSSL_1_1_0-stable     <--- here 1.1.0 is "active"
            ├── master                             <--- installed via:
            │   ├── bin                                 `fab setup.openssl`
            │   ├── include
            │   ├── lib
            │   ├── openssldir   <--- openssl configs and default cert/key store
            │   └── share
            └── OpenSSL_1_1_0-stable              <---.
                ├── bin               installed via: -´
                ├── include     `fab setup.openssl:version=OpenSSL_1_1_0-stable`
                ├── lib
                ├── openssldir   <--- openssl configs and default cert/key store
                └── share

def openssl(version='master', ignore_test_fail=False):
    '''
    Install or update OpenSSL from source (statically linked, no shared libs).

    Args:
        version (str): Git tag or branch to install from. Default: 'master'
        ignore_test_fail: Continue with installation if `make test` fails.
                          Default: False

    Example:
        > fab setup.openssl:version=OpenSSL_1_1_0-stable

    Created files and dirs:

        > tree ~/repos
        └── openssl          <--- checked out git repository with openssl source

        > tree ~/bin
        │
        ├── c_rehash -> openssl-inst/active/bin/c_rehash  \__ command links
        ├── openssl  -> openssl-inst/active/bin/openssl   /
        │
        └── openssl-inst
            ├── active -> OpenSSL_1_1_0-stable     <--- here 1.1.0 is "active"
            ├── master                             <--- installed via:
            │   ├── bin                                 `fab setup.openssl`
            │   ├── include
            │   ├── lib
            │   ├── openssldir   <--- openssl configs and default cert/key store
            │   └── share
            └── OpenSSL_1_1_0-stable              <---.
                ├── bin               installed via: -´
                ├── include     `fab setup.openssl:version=OpenSSL_1_1_0-stable`
                ├── lib
                ├── openssldir   <--- openssl configs and default cert/key store
                └── share
    '''
    src_base = '~/repos'
    srcdir = flo('{src_base}/openssl')

    inst_base = '~/bin/openssl-inst'
    instdir = flo('{inst_base}/{version}')

    # dir for openssl config files, and default certificate and key store
    confdir = flo('{instdir}/openssldir')

    download(src_base, version, srcdir)
    compile(srcdir, instdir, confdir)
    test(srcdir, ignore_test_fail)
    install(srcdir, inst_base, version, instdir)