]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - crypto/openssh/.github/setup_ci.sh
ssh: Update to OpenSSH 9.3p1
[FreeBSD/FreeBSD.git] / crypto / openssh / .github / setup_ci.sh
1 #!/bin/sh
2
3 PACKAGES=""
4
5  . .github/configs $@
6
7 case "`./config.guess`" in
8 *cygwin)
9         PACKAGER=setup
10         echo Setting CYGWIN system environment variable.
11         setx CYGWIN "binmode"
12         echo Removing extended ACLs so umask works as expected.
13         setfacl -b . regress
14         PACKAGES="$PACKAGES,autoconf,automake,cygwin-devel,gcc-core"
15         PACKAGES="$PACKAGES,make,openssl-devel,zlib-devel"
16         ;;
17 *-darwin*)
18         PACKAGER=brew
19         brew install automake
20         exit 0
21         ;;
22 *)
23         PACKAGER=apt
24 esac
25
26 TARGETS=$@
27
28 INSTALL_FIDO_PPA="no"
29 export DEBIAN_FRONTEND=noninteractive
30
31 #echo "Setting up for '$TARGETS'"
32
33 set -ex
34
35 if [ -x "`which lsb_release 2>&1`" ]; then
36         lsb_release -a
37 fi
38
39 # Ubuntu 22.04 defaults to private home dirs which prevent the
40 # agent-getpeerid test from running ssh-add as nobody.  See
41 # https://github.com/actions/runner-images/issues/6106
42 if [ ! -z "$SUDO" ] && ! "$SUDO" -u nobody test -x ~; then
43         echo ~ is not executable by nobody, adding perms.
44         chmod go+x ~
45 fi
46
47 if [ "${TARGETS}" = "kitchensink" ]; then
48         TARGETS="krb5 libedit pam sk selinux"
49 fi
50
51 for flag in $CONFIGFLAGS; do
52     case "$flag" in
53     --with-pam)         TARGETS="${TARGETS} pam" ;;
54     --with-libedit)     TARGETS="${TARGETS} libedit" ;;
55     esac
56 done
57
58 for TARGET in $TARGETS; do
59     case $TARGET in
60     default|without-openssl|without-zlib|c89)
61         # nothing to do
62         ;;
63     clang-sanitize*)
64         PACKAGES="$PACKAGES clang-12"
65         ;;
66     cygwin-release)
67         PACKAGES="$PACKAGES libcrypt-devel libfido2-devel libkrb5-devel"
68         ;;
69     gcc-sanitize*)
70         ;;
71     clang-*|gcc-*)
72         compiler=$(echo $TARGET | sed 's/-Werror//')
73         PACKAGES="$PACKAGES $compiler"
74         ;;
75     krb5)
76         PACKAGES="$PACKAGES libkrb5-dev"
77         ;;
78     heimdal)
79         PACKAGES="$PACKAGES heimdal-dev"
80         ;;
81     libedit)
82         case "$PACKAGER" in
83         setup)  PACKAGES="$PACKAGES libedit-devel" ;;
84         apt)    PACKAGES="$PACKAGES libedit-dev" ;;
85         esac
86         ;;
87     *pam)
88         PACKAGES="$PACKAGES libpam0g-dev"
89         ;;
90     sk)
91         INSTALL_FIDO_PPA="yes"
92         PACKAGES="$PACKAGES libfido2-dev libu2f-host-dev libcbor-dev"
93         ;;
94     selinux)
95         PACKAGES="$PACKAGES libselinux1-dev selinux-policy-dev"
96         ;;
97     hardenedmalloc)
98         INSTALL_HARDENED_MALLOC=yes
99         ;;
100     musl)
101         PACKAGES="$PACKAGES musl-tools"
102         ;;
103     tcmalloc)
104         PACKAGES="$PACKAGES libgoogle-perftools-dev"
105         ;;
106     openssl-noec)
107         INSTALL_OPENSSL=OpenSSL_1_1_1k
108         SSLCONFOPTS="no-ec"
109         ;;
110     openssl-*)
111         INSTALL_OPENSSL=$(echo ${TARGET} | cut -f2 -d-)
112         case ${INSTALL_OPENSSL} in
113           1.1.1_stable) INSTALL_OPENSSL="OpenSSL_1_1_1-stable" ;;
114           1.*)  INSTALL_OPENSSL="OpenSSL_$(echo ${INSTALL_OPENSSL} | tr . _)" ;;
115           3.*)  INSTALL_OPENSSL="openssl-${INSTALL_OPENSSL}" ;;
116         esac
117         PACKAGES="${PACKAGES} putty-tools"
118        ;;
119     libressl-*)
120         INSTALL_LIBRESSL=$(echo ${TARGET} | cut -f2 -d-)
121         case ${INSTALL_LIBRESSL} in
122           master) ;;
123           *) INSTALL_LIBRESSL="$(echo ${TARGET} | cut -f2 -d-)" ;;
124         esac
125         PACKAGES="${PACKAGES} putty-tools"
126        ;;
127     valgrind*)
128        PACKAGES="$PACKAGES valgrind"
129        ;;
130     *) echo "Invalid option '${TARGET}'"
131         exit 1
132         ;;
133     esac
134 done
135
136 if [ "yes" = "$INSTALL_FIDO_PPA" ]; then
137     sudo apt update -qq
138     sudo apt install -qy software-properties-common
139     sudo apt-add-repository -y ppa:yubico/stable
140 fi
141
142 tries=3
143 while [ ! -z "$PACKAGES" ] && [ "$tries" -gt "0" ]; do
144     case "$PACKAGER" in
145     apt)
146         sudo apt update -qq
147         if sudo apt install -qy $PACKAGES; then
148                 PACKAGES=""
149         fi
150         ;;
151     setup)
152         if /cygdrive/c/setup.exe -q -P `echo "$PACKAGES" | tr ' ' ,`; then
153                 PACKAGES=""
154         fi
155         ;;
156     esac
157     if [ ! -z "$PACKAGES" ]; then
158         sleep 90
159     fi
160     tries=$(($tries - 1))
161 done
162 if [ ! -z "$PACKAGES" ]; then
163         echo "Package installation failed."
164         exit 1
165 fi
166
167 if [ "${INSTALL_HARDENED_MALLOC}" = "yes" ]; then
168     (cd ${HOME} &&
169      git clone https://github.com/GrapheneOS/hardened_malloc.git &&
170      cd ${HOME}/hardened_malloc &&
171      make -j2 && sudo cp out/libhardened_malloc.so /usr/lib/)
172 fi
173
174 if [ ! -z "${INSTALL_OPENSSL}" ]; then
175     (cd ${HOME} &&
176      git clone https://github.com/openssl/openssl.git &&
177      cd ${HOME}/openssl &&
178      git checkout ${INSTALL_OPENSSL} &&
179      ./config no-threads shared ${SSLCONFOPTS} \
180          --prefix=/opt/openssl &&
181      make && sudo make install_sw)
182 fi
183
184 if [ ! -z "${INSTALL_LIBRESSL}" ]; then
185     if [ "${INSTALL_LIBRESSL}" = "master" ]; then
186         (mkdir -p ${HOME}/libressl && cd ${HOME}/libressl &&
187          git clone https://github.com/libressl-portable/portable.git &&
188          cd ${HOME}/libressl/portable &&
189          git checkout ${INSTALL_LIBRESSL} &&
190          sh update.sh && sh autogen.sh &&
191          ./configure --prefix=/opt/libressl &&
192          make -j2 && sudo make install)
193     else
194         LIBRESSL_URLBASE=https://cdn.openbsd.org/pub/OpenBSD/LibreSSL
195         (cd ${HOME} &&
196          wget ${LIBRESSL_URLBASE}/libressl-${INSTALL_LIBRESSL}.tar.gz &&
197          tar xfz libressl-${INSTALL_LIBRESSL}.tar.gz &&
198          cd libressl-${INSTALL_LIBRESSL} &&
199          ./configure --prefix=/opt/libressl && make -j2 && sudo make install)
200     fi
201 fi