File: lib.sh

package info (click to toggle)
python-gssapi 1.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 880 kB
  • sloc: python: 3,709; sh: 198; makefile: 154; ansic: 60
file content (156 lines) | stat: -rwxr-xr-x 4,517 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/bin/bash

lib::setup::debian_install() {
    export DEBIAN_FRONTEND=noninteractive
    apt-get update

    if [ x"$KRB5_VER" = "xheimdal" ]; then
        apt-get -y install heimdal-{clients,dev,kdc}

        export GSSAPI_KRB5_MAIN_LIB="/usr/lib/x86_64-linux-gnu/libkrb5.so.26"
        export PATH="/usr/lib/heimdal-servers:${PATH}"
    else
        apt-get -y install krb5-{user,kdc,admin-server,multidev} libkrb5-dev \
                gss-ntlmssp

        export GSSAPI_KRB5_MAIN_LIB="/usr/lib/x86_64-linux-gnu/libkrb5.so"
    fi

    apt-get -y install gcc python3-{venv,dev}

    python3 -m venv .venv
    source ./.venv/bin/activate
}

lib::setup::rh_dnfinst() {
    # dnf has no update-only verb.
    dnf -y --nogpgcheck install $@
}

lib::setup::centos_install() {
    lib::setup::rh_dnfinst python3-devel
    python3 -m venv .venv
    source ./.venv/bin/activate
}

lib::setup::fedora_install() {
    # path to binary here in case Rawhide changes it
    lib::setup::rh_dnfinst redhat-rpm-config \
        python3-devel
    python3 -m venv .venv
    source ./.venv/bin/activate
}

lib::setup::gssntlmssp_install() {
    lib::setup::rh_dnfinst dnf-plugins-core
    dnf config-manager --set-enabled crb

    lib::setup::rh_dnfinst autoconf automake gettext libtool \
                    libunistring-devel openssl-devel zlib-devel

    curl -L -s https://github.com/gssapi/gss-ntlmssp/releases/download/v1.1.0/gssntlmssp-1.1.0.tar.gz --output /tmp/gssntlmssp.tar.gz
    tar xf /tmp/gssntlmssp.tar.gz -C /tmp

    pushd /tmp/gssntlmssp-1.1.0

    autoreconf -f -i
    ./configure --with-wbclient=no --with-manpages=no
    make
    make install

    popd

    echo "gssntlmssp_v1    1.3.6.1.4.1.311.2.2.10    /usr/local/lib/gssntlmssp/gssntlmssp.so" > /etc/gss/mech.d/gssntlmssp.conf
}

lib::setup::rh_install() {
    lib::setup::rh_dnfinst krb5-{devel,libs,server,workstation} \
                    which gcc findutils

    if grep -q 'release 9' /etc/redhat-release; then
        # CentOS 9 Stream doesn't have a dnf package for gssntlmssp
        lib::setup::gssntlmssp_install
    else
        lib::setup::rh_dnfinst gssntlmssp
    fi

    export GSSAPI_KRB5_MAIN_LIB="/usr/lib64/libkrb5.so"

    if [ -f /etc/fedora-release ]; then
        lib::setup::fedora_install
    else
        lib::setup::centos_install
    fi
}

lib::setup::macos_install() {
    python3 -m venv .venv
    source .venv/bin/activate

    export GSSAPI_KRB5_MAIN_LIB="/System/Library/PrivateFrameworks/Heimdal.framework/Heimdal"

    # macOS's Heimdal version is buggy, it will only use KRB5_KTNAME if the
    # env var was set when GSSAPI creates the context. Setting it here to any
    # value solves that problem for CI.
    export KRB5_KTNAME=initial
}

lib::setup::windows_install() {
    CHINST="choco install --no-progress --yes --ignore-detected-reboot --allow-downgrade"

    # Install the 32bit version if Python is 32bit
    if python -c "assert __import__('sys').maxsize <= 2**32"; then
        CHINST="$CHINST --x86"
        PF="Program Files (x86)"
    else
        PF="Program Files"
    fi

    # Install MIT Kerberos.  choco will fail despite the installation working.
    $CHINST mitkerberos --install-arguments "'ADDLOCAL=ALL'" || true

    # Update path to include it
    export PATH="/c/$PF/MIT/Kerberos/bin:$PATH"
}

lib::setup::install() {
    if [ -f /etc/debian_version ]; then
        lib::setup::debian_install
    elif [ -f /etc/redhat-release ]; then
        lib::setup::rh_install
    elif [ "$(uname)" == "Darwin" ]; then
        lib::setup::macos_install
    elif [ "$OS_NAME" == "windows" ]; then
        lib::setup::windows_install
    else
        echo "Distro not found!"
        false
    fi

    # Get the explicit version to force pip to install from our local dir in
    # case this is a pre-release and/or PyPi has a later version
    echo "Installing gssapi"
    GSSAPI_VER="$( grep 'version=' setup.py | cut -d "'" -f2 )"

    python -m pip install gssapi=="${GSSAPI_VER}" \
        --find-links dist \
        --verbose

    echo "Installing dev dependencies"
    python -m pip install -r test-requirements.txt
}

lib::deploy::build_docs() {
    # the first run is for the docs build, so don't clean up
    pip install -r docs-requirements.txt

    # Don't run in root to make sure the local copies aren't imported
    pushd docs

    # place in a non-standard location so that they don't get cleaned up
    sphinx-build source ../ci_docs_build -a -W -n

    popd

    echo "docs_build"
}