From e2e2ade7d1ff14749cfd50693e3a78d952822d46 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Mar 2017 01:01:36 -0400 Subject: [PATCH 01/16] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..e3ce32e48 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Build-Scripts +Collection of build scripts useful when testing on downlevel and unique clients From 175658e5eb083e9231d86e31b0720f6da7a3bc6f Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Mar 2017 01:05:40 -0400 Subject: [PATCH 02/16] Initial commit --- README.md | 2 +- build-git.sh | 711 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 712 insertions(+), 1 deletion(-) create mode 100644 build-git.sh diff --git a/README.md b/README.md index e3ce32e48..21df0343f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # Build-Scripts -Collection of build scripts useful when testing on downlevel and unique clients +This GitHub is a collection of build scripts useful when testing on downlevel and unique clients. It should result in working SSH, cURL and Git clients on systems like Fedora 10, CentOS 5 and Solaris 11. diff --git a/build-git.sh b/build-git.sh new file mode 100644 index 000000000..68609556a --- /dev/null +++ b/build-git.sh @@ -0,0 +1,711 @@ +#!/usr/bin/env bash + +# See fixup for INSTALL_LIBDIR below +INSTALL_PREFIX=/usr/local +INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + +#OPENSSL_TAR=openssl-1.0.2k.tar.gz +#OPENSSL_DIR=openssl-1.0.2k +OPENSSL_TAR=openssl-1.1.0e.tar.gz +OPENSSL_DIR=openssl-1.1.0e + +ZLIB_TAR=zlib-1.2.11.tar.gz +ZLIB_DIR=zlib-1.2.11 + +BZ2_TAR=bzip2-1.0.6.tar.gz +BZ2_DIR=bzip2-1.0.6 + +READLN_TAR=readline-7.0.tar.gz +READLN_DIR=readline-7.0 + +UNISTR_TAR=libunistring-0.9.7.tar.gz +UNISTR_DIR=libunistring-0.9.7 + +ICONV_TAR=libiconv-1.15.tar.gz +ICONV_DIR=libiconv-1.15 + +IDN2_TAR=libidn2-0.16.tar.gz +IDN2_DIR=libidn2-0.16 + +PCRE_TAR=pcre-8.40.tar.gz +PCRE_DIR=pcre-8.40 + +PCRE2_TAR=pcre2-10.23.tar.gz +PCRE2_DIR=pcre2-10.23 + +CURL_TAR=curl-7.53.1.tar.gz +CURL_DIR=curl-7.53.1 + +GIT_TAR=v2.12.2.tar.gz +GIT_DIR=git-2.12.2 + +############################################################################### + +# Autotools on Solaris has an implied requirement for GNU gear +# Things fall apart without it. +if [[ -d "/usr/gnu/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo "Adding /usr/gnu/bin to PATH for Solaris" + PATH="/usr/gnu/bin:$PATH" + fi +fi + +# I don't like doing this, but... +read -s -p "Please enter password for sudo: " SUDO_PASSWWORD +echo + +############################################################################### + +THIS_SYSTEM=$(uname -s 2>&1) +IS_DARWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c darwin) +IS_LINUX=$(echo -n "$THIS_SYSTEM" | grep -i -c linux) +IS_CYGWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c cygwin) +IS_MINGW=$(echo -n "$THIS_SYSTEM" | grep -i -c mingw) +IS_OPENBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c openbsd) +IS_DRAGONFLY=$(echo -n "$THIS_SYSTEM" | grep -i -c dragonfly) +IS_FREEBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c freebsd) +IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) +IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) + +if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1") ]]; then + MAKE=gmake +elif [[ ("$IS_SOLARIS" -eq "1") ]]; then + MAKE=$(which gmake 2>/dev/null | grep -v "no gmake" | head -1) + if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then + MAKE=/usr/sfw/bin/gmake + fi +else + MAKE=make +fi + +# Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64 +# The Autoconf programs misdetect Solaris as x86 even though its x64 +IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64) +if [[ "$IS_SOLARIS" -eq "1" ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" +elif [[ "$IS_64BIT" -eq "1" ]]; then + if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" + else + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + fi +else + SH_KBITS=32 + SH_MARCH=-m32 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" +fi + +echo +echo "********** libdir **********" +echo +echo "Using libdir $INSTALL_LIBDIR" + +############################################################################### + +echo +echo "********** zLib **********" +echo + +wget "http://www.zlib.net/$ZLIB_TAR" -O "$ZLIB_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$ZLIB_DIR" &>/dev/null +tar -xzf "$ZLIB_TAR" +cd "$ZLIB_DIR" + +SH_LDLIBS=("-ldl -lpthread") +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** Bzip **********" +echo + +wget "http://www.bzip.org/1.0.6/$BZ2_TAR" -O "$BZ2_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download Bzip" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$BZ2_DIR" &>/dev/null +tar -xzf "$BZ2_TAR" +cd "$BZ2_DIR" + +# Fix Bzip install paths +cp Makefile Makefile.orig +sed 's|$(PREFIX)/lib|$(LIBDIR)|g' Makefile.orig > Makefile +rm Makefile.orig +cp Makefile-libbz2_so Makefile-libbz2_so.orig +sed 's|$(PREFIX)/lib|$(LIBDIR)|g' Makefile-libbz2_so.orig > Makefile-libbz2_so +rm Makefile-libbz2_so.orig + +# Fix Bzip cpu architecture +cp Makefile Makefile.orig +sed "s|CFLAGS=|CFLAGS=$SH_MARCH |g" Makefile.orig > Makefile +cp Makefile Makefile.orig +sed "s|CXXFLAGS=|CXXFLAGS=$SH_MARCH |g" Makefile.orig > Makefile +rm Makefile.orig +cp Makefile-libbz2_so Makefile-libbz2_so.orig +sed "s|CFLAGS=|CFLAGS=$SH_MARCH |g" Makefile-libbz2_so.orig > Makefile-libbz2_so +cp Makefile-libbz2_so Makefile-libbz2_so.orig +sed "s|CXXFLAGS=|CXXFLAGS=$SH_MARCH |g" Makefile-libbz2_so.orig > Makefile-libbz2_so +rm Makefile-libbz2_so.orig + +# Add RPATH +cp Makefile Makefile.orig +sed "s|LDFLAGS=|LDFLAGS=$SH_MARCH -Wl,-rpath,$INSTALL_LIBDIR -L$INSTALL_LIBDIR|g" Makefile.orig > Makefile +rm Makefile.orig +cp Makefile-libbz2_so Makefile-libbz2_so.orig +sed "s|LDFLAGS=|LDFLAGS=$SH_MARCH -Wl,-rpath,$INSTALL_LIBDIR -L$INSTALL_LIBDIR|g" Makefile-libbz2_so.orig > Makefile-libbz2_so +rm Makefile-libbz2_so.orig + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build Bzip" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install PREFIX="$INSTALL_PREFIX" LIBDIR="$INSTALL_LIBDIR" + +cd .. + +############################################################################### + +echo +echo "********** Unistring **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://ftp.gnu.org/gnu/libunistring/$UNISTR_TAR" --no-check-certificate -O "$UNISTR_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$UNISTR_DIR" &>/dev/null +tar -xzf "$UNISTR_TAR" +cd "$UNISTR_DIR" + +SH_LDLIBS=("-ldl -lpthread") +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** Readline **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://ftp.gnu.org/gnu/readline/$READLN_TAR" --no-check-certificate -O "$READLN_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download Readline" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$READLN_DIR" &>/dev/null +tar -xzf "$READLN_TAR" +cd "$READLN_DIR" + +SH_LDLIBS=("-ldl" "-lpthread") +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure Readline" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build Readline" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** iConvert **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://ftp.gnu.org/pub/gnu/libiconv/$ICONV_TAR" --no-check-certificate -O "$ICONV_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download iConvert" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$ICONV_DIR" &>/dev/null +tar -xzf "$ICONV_TAR" +cd "$ICONV_DIR" + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure iConvert" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build iConvert" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** IDN2 **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://alpha.gnu.org/gnu/libidn/$IDN2_TAR" --no-check-certificate -O "$IDN2_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$IDN2_DIR" &>/dev/null +tar -xzf "$IDN2_TAR" +cd "$IDN2_DIR" + +if [[ "$IS_SOLARIS" -eq "1" ]]; then + cp src/idn2.c src/idn2.c.orig + sed '/^#include "error.h"/d' src/idn2.c.orig > src/idn2.c + cp src/idn2.c src/idn2.c.orig + sed '43istatic void error (int status, int errnum, const char *format, ...);' src/idn2.c.orig > src/idn2.c + rm src/idn2.c.orig + + echo "" >> src/idn2.c + echo "static void" >> src/idn2.c + echo "error (int status, int errnum, const char *format, ...)" >> src/idn2.c + echo "{" >> src/idn2.c + echo " va_list args;" >> src/idn2.c + echo " va_start(args, format);" >> src/idn2.c + echo " vfprintf(stderr, format, args);" >> src/idn2.c + echo " va_end(args);" >> src/idn2.c + echo " exit(status);" >> src/idn2.c + echo "}" >> src/idn2.c + echo "" >> src/idn2.c +fi + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** OpenSSL **********" +echo + +# wget on Ubuntu 16 cannot validate against Let's Encrypt certificate +wget "https://www.openssl.org/source/$OPENSSL_TAR" --no-check-certificate -O "$OPENSSL_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$OPENSSL_DIR" &>/dev/null +tar -xzf "$OPENSSL_TAR" +cd "$OPENSSL_DIR" + +# OpenSSL and enable-ec_nistp_64_gcc_128 option +IS_X86_64=$(uname -m 2>&1 | egrep -i -c "(amd64|x86_64)") +if [[ "$SH_KBITS" -eq "32" ]]; then IS_X86_64=0; fi + +CONFIG=./config +CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-Wl,-rpath,$INSTALL_LIBDIR" "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") +if [[ "$IS_X86_64" -eq "1" ]]; then + CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") +fi + +KERNEL_BITS="$SH_KBITS" "$CONFIG" "${CONFIG_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4 depend) +"$MAKE" "${MAKE_FLAGS[@]}" + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install_sw + +cd .. + +############################################################################### + +echo +echo "********** PCRE **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://ftp.pcre.org/pub/pcre/$PCRE_TAR" --no-check-certificate -O "$PCRE_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download PCRE" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$PCRE_DIR" &>/dev/null +tar -xzf "$PCRE_TAR" +cd "$PCRE_DIR" + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-lz" "-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --enable-pcregrep-libz --enable-pcregrep-libbz2 \ + --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure PCRE" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4 all) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build PCRE" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** PCRE2 **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://ftp.pcre.org/pub/pcre/$PCRE2_TAR" --no-check-certificate -O "$PCRE2_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download PCRE2" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$PCRE2_DIR" &>/dev/null +tar -xzf "$PCRE2_TAR" +cd "$PCRE2_DIR" + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-lz" "-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 \ + --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure PCRE2" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4 all) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build PCRE2" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** cURL **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "https://curl.haxx.se/download/$CURL_TAR" --no-check-certificate -O "$CURL_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download cURL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$CURL_DIR" &>/dev/null +tar -xzf "$CURL_TAR" +cd "$CURL_DIR" + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-lidn2" "-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ + --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure cURL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build cURL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** Git **********" +echo + +# wget on Ubuntu 16 cannot validate against DigiCert certificate +wget "https://github.com/git/git/archive/$GIT_TAR" --no-check-certificate -O "$GIT_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$GIT_DIR" &>/dev/null +tar -xzf "$GIT_TAR" +cd "$GIT_DIR" + +make configure + +if [[ "$?" -ne "0" ]]; then + echo "Failed to make configure Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +# "Instruct Git to use pthread library?", http://stackoverflow.com/q/43080417/ +for file in $(find `pwd` -iname 'Makefile*') +do + cp "$file" "$file.orig" + sed 's|-lrt|-lrt -lpthread|g' "$file.orig" > "$file" + rm "$file.orig" +done + +# Various Solaris 11 workarounds +if [[ "$IS_SOLARIS" -eq "1" ]]; then + for file in $(find `pwd` -iname 'Makefile*') + do + cp "$file" "$file.orig" + sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" + rm "$file.orig" + done + for file in $(find `pwd` -iname 'config*') + do + cp "$file" "$file.orig" + sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" + cp "$file" "$file.orig" + sed 's|/usr/ucb/install|/usr/gnu/bin/install|g' "$file.orig" > "$file" + rm "$file.orig" + done +fi + +if [[ -e /usr/local/bin/perl ]]; then + SH_PERL=/usr/local/bin/perl +elif [[ -e /usr/bin/perl ]]; then + SH_PERL=/usr/bin/perl +else + SH_PERL=perl +fi + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-pthreads --with-lib="$INSTALL_LIBDIR" --with-openssl="$INSTALL_PREFIX" \ + --with-curl="$INSTALL_PREFIX" --with-libpcre="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" \ + --with-iconv="$INSTALL_PREFIX" --with-perl="$SH_PERL" --prefix="$INSTALL_PREFIX" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +# See INSTALL for the formats and the requirements +MAKE_FLAGS=(-j 4 all) +if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then + if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then + MAKE_FLAGS+=("man") + fi + if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then + MAKE_FLAGS+=("info" "html") + fi +fi + +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -eq "1" ]]; then + echo "Failed to build Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +# See INSTALL for the formats and the requirements +MAKE_FLAGS=(install) +if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then + if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then + MAKE_FLAGS+=("install-man") + fi + if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then + MAKE_FLAGS+=("install-info" "install-html") + fi +fi + +echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + +cd .. + +############################################################################### + +echo +echo "********** Cleanup **********" +echo + +if true; then + + ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR" + "$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR" + "$IDN2_TAR" "$IDN2_DIR" "$ICONV_TAR" "$ICONV_DIR" "$CURL_TAR" "$CURL_DIR" "$GIT_TAR" "$GIT_DIR") + + for artifact in "${ARTIFACTS[@]}"; do + rm -rf "$artifact" + done + + # ./build-git.sh 2>&1 | tee build-git.log + if [[ -e build-git.log ]]; then + rm build-git.log + fi +fi + +[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0 From 1188d5f4cbf7b2feb462b9464dc40b84bfa9b3f1 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Mar 2017 06:11:52 -0400 Subject: [PATCH 03/16] Add NDEBUG preprocessor macro to avoid runtime asserts Some operating systems dump the process, and then ship everything to a clloection point. "Everthing" includes sensitive information, like private and shared keys --- build-git.sh | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/build-git.sh b/build-git.sh index 68609556a..355a1acbe 100644 --- a/build-git.sh +++ b/build-git.sh @@ -4,10 +4,12 @@ INSTALL_PREFIX=/usr/local INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" -#OPENSSL_TAR=openssl-1.0.2k.tar.gz -#OPENSSL_DIR=openssl-1.0.2k -OPENSSL_TAR=openssl-1.1.0e.tar.gz -OPENSSL_DIR=openssl-1.1.0e +# OpenSSH can only use OpenSSL 1.0.2 +# https://groups.google.com/forum/#!topic/opensshunixdev/AlgfQvPIlQE +OPENSSL_TAR=openssl-1.0.2k.tar.gz +OPENSSL_DIR=openssl-1.0.2k +#OPENSSL_TAR=openssl-1.1.0e.tar.gz +#OPENSSL_DIR=openssl-1.1.0e ZLIB_TAR=zlib-1.2.11.tar.gz ZLIB_DIR=zlib-1.2.11 @@ -79,8 +81,13 @@ else fi # Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64 -# The Autoconf programs misdetect Solaris as x86 even though its x64 +# The Autoconf programs misdetect Solaris as x86 even though its x64. OpenBSD has +# getconf, but it does not have LONG_BIT. IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64) +if [[ "$IS_64BIT" -eq "0" ]]; then + IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') +fi + if [[ "$IS_SOLARIS" -eq "1" ]]; then SH_KBITS=64 SH_MARCH=-m64 @@ -135,7 +142,7 @@ cd "$ZLIB_DIR" SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -234,7 +241,7 @@ cd "$UNISTR_DIR" SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -276,7 +283,7 @@ cd "$READLN_DIR" SH_LDLIBS=("-ldl" "-lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -318,7 +325,7 @@ cd "$ICONV_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -380,7 +387,7 @@ fi SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -472,7 +479,7 @@ cd "$PCRE_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --enable-pcregrep-libz --enable-pcregrep-libbz2 \ --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -515,7 +522,7 @@ cd "$PCRE2_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 \ --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -558,7 +565,7 @@ cd "$CURL_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lidn2" "-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -642,7 +649,7 @@ fi SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-pthreads --with-lib="$INSTALL_LIBDIR" --with-openssl="$INSTALL_PREFIX" \ --with-curl="$INSTALL_PREFIX" --with-libpcre="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" \ From 842b753b7890b1ba39aca42cc472442019a64990 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Mar 2017 06:12:51 -0400 Subject: [PATCH 04/16] Add script for OpenSSH This commit uses OpenSSL 1.0.2 because OpenSSH has not ported to OpenSSL 1.1.0 --- build-ssh.sh | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 build-ssh.sh diff --git a/build-ssh.sh b/build-ssh.sh new file mode 100644 index 000000000..94552de63 --- /dev/null +++ b/build-ssh.sh @@ -0,0 +1,258 @@ +#!/usr/bin/env bash + +# See fixup for INSTALL_LIBDIR below +INSTALL_PREFIX=/usr/local +INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + +# OpenSSH can only use OpenSSL 1.0.2 +# https://groups.google.com/forum/#!topic/opensshunixdev/AlgfQvPIlQE +OPENSSL_TAR=openssl-1.0.2k.tar.gz +OPENSSL_DIR=openssl-1.0.2k +#OPENSSL_TAR=openssl-1.1.0e.tar.gz +#OPENSSL_DIR=openssl-1.1.0e + +SSH_TAR=openssh-7.5p1.tar.gz +SSH_DIR=openssh-7.5p1 + +ZLIB_TAR=zlib-1.2.11.tar.gz +ZLIB_DIR=zlib-1.2.11 + +############################################################################### + +# Autotools on Solaris has an implied requirement for GNU gear +# Things fall apart without it. +if [[ -d "/usr/gnu/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo "Adding /usr/gnu/bin to PATH for Solaris" + PATH="/usr/gnu/bin:$PATH" + fi +fi + +# I don't like doing this, but... +read -s -p "Please enter password for sudo: " SUDO_PASSWWORD +echo + +############################################################################### + +THIS_SYSTEM=$(uname -s 2>&1) +IS_DARWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c darwin) +IS_LINUX=$(echo -n "$THIS_SYSTEM" | grep -i -c linux) +IS_CYGWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c cygwin) +IS_MINGW=$(echo -n "$THIS_SYSTEM" | grep -i -c mingw) +IS_OPENBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c openbsd) +IS_DRAGONFLY=$(echo -n "$THIS_SYSTEM" | grep -i -c dragonfly) +IS_FREEBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c freebsd) +IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) +IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) + +if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1") ]]; then + MAKE=gmake +elif [[ ("$IS_SOLARIS" -eq "1") ]]; then + MAKE=$(which gmake 2>/dev/null | grep -v "no gmake" | head -1) + if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then + MAKE=/usr/sfw/bin/gmake + fi +else + MAKE=make +fi + +# Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64 +# The Autoconf programs misdetect Solaris as x86 even though its x64. OpenBSD has +# getconf, but it does not have LONG_BIT. +IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64) +if [[ "$IS_64BIT" -eq "0" ]]; then + IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') +fi + +if [[ "$IS_SOLARIS" -eq "1" ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" +elif [[ "$IS_64BIT" -eq "1" ]]; then + if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" + else + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + fi +else + SH_KBITS=32 + SH_MARCH=-m32 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" +fi + +echo +echo "********** libdir **********" +echo +echo "Using libdir $INSTALL_LIBDIR" + +############################################################################### + +echo +echo "********** zLib **********" +echo + +wget "http://www.zlib.net/$ZLIB_TAR" -O "$ZLIB_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$ZLIB_DIR" &>/dev/null +tar -xzf "$ZLIB_TAR" +cd "$ZLIB_DIR" + +SH_LDLIBS=("-ldl -lpthread") +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** OpenSSL **********" +echo + +# wget on Ubuntu 16 cannot validate against Let's Encrypt certificate +wget "https://www.openssl.org/source/$OPENSSL_TAR" --no-check-certificate -O "$OPENSSL_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$OPENSSL_DIR" &>/dev/null +tar -xzf "$OPENSSL_TAR" +cd "$OPENSSL_DIR" + +# OpenSSL and enable-ec_nistp_64_gcc_128 option +IS_X86_64=$(uname -m 2>&1 | egrep -i -c "(amd64|x86_64)") +if [[ "$SH_KBITS" -eq "32" ]]; then IS_X86_64=0; fi + +CONFIG=./config +CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-DNDEBUG" "-Wl,-rpath,$INSTALL_LIBDIR" + "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") +if [[ "$IS_X86_64" -eq "1" ]]; then + CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") +fi + +KERNEL_BITS="$SH_KBITS" "$CONFIG" "${CONFIG_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4 depend) +"$MAKE" "${MAKE_FLAGS[@]}" + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install_sw + +cd .. + +############################################################################### + +echo +echo "********** OpenSSH **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "http://ftp4.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/$SSH_TAR" --no-check-certificate -O "$SSH_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$SSH_DIR" &>/dev/null +tar -xzf "$SSH_TAR" +cd "$SSH_DIR" + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-lz" "-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" \ + --with-openssl-dir="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4 all) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +echo "$SUDO_PASSWWORD" | sudo -S make install + +cd .. + +############################################################################### + +echo +echo "********** Cleanup **********" +echo + +if true; then + + ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR" + "$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR" + "$IDN2_TAR" "$IDN2_DIR" "$ICONV_TAR" "$ICONV_DIR" "$CURL_TAR" "$CURL_DIR" "$GIT_TAR" "$GIT_DIR") + + for artifact in "${ARTIFACTS[@]}"; do + rm -rf "$artifact" + done + + # ./build-git.sh 2>&1 | tee build-git.log + if [[ -e build-git.log ]]; then + rm build-git.log + fi +fi + +[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0 From 8eb09eadd1bb188acebcfcadf41c41fa40de6225 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Mar 2017 06:17:54 -0400 Subject: [PATCH 05/16] Fix Cleanup rule --- build-ssh.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/build-ssh.sh b/build-ssh.sh index 94552de63..352559bda 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -241,17 +241,15 @@ echo if true; then - ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR" - "$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR" - "$IDN2_TAR" "$IDN2_DIR" "$ICONV_TAR" "$ICONV_DIR" "$CURL_TAR" "$CURL_DIR" "$GIT_TAR" "$GIT_DIR") + ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$OPENSSH_TAR" "$OPENSSH_DIR" "$ZLIB_TAR" "$ZLIB_DIR") for artifact in "${ARTIFACTS[@]}"; do rm -rf "$artifact" done - # ./build-git.sh 2>&1 | tee build-git.log - if [[ -e build-git.log ]]; then - rm build-git.log + # ./build-ssh.sh 2>&1 | tee build-ssh.log + if [[ -e build-ssh.log ]]; then + rm build-ssh.log fi fi From 86ba1e295b9434a6c7cd25b78deba95f3eeced18 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 Mar 2017 06:56:52 -0400 Subject: [PATCH 06/16] Move NDEBUG into CPPFLAGS --- build-git.sh | 21 +++++++++++---------- build-ssh.sh | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/build-git.sh b/build-git.sh index 355a1acbe..75956a604 100644 --- a/build-git.sh +++ b/build-git.sh @@ -142,7 +142,7 @@ cd "$ZLIB_DIR" SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -241,7 +241,7 @@ cd "$UNISTR_DIR" SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -283,7 +283,7 @@ cd "$READLN_DIR" SH_LDLIBS=("-ldl" "-lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -325,7 +325,7 @@ cd "$ICONV_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -387,7 +387,7 @@ fi SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -431,7 +431,8 @@ IS_X86_64=$(uname -m 2>&1 | egrep -i -c "(amd64|x86_64)") if [[ "$SH_KBITS" -eq "32" ]]; then IS_X86_64=0; fi CONFIG=./config -CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-Wl,-rpath,$INSTALL_LIBDIR" "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") +CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-DNDEBUG" "-Wl,-rpath,$INSTALL_LIBDIR" + "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") if [[ "$IS_X86_64" -eq "1" ]]; then CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") fi @@ -479,7 +480,7 @@ cd "$PCRE_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --enable-pcregrep-libz --enable-pcregrep-libbz2 \ --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -522,7 +523,7 @@ cd "$PCRE2_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 \ --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -565,7 +566,7 @@ cd "$CURL_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lidn2" "-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -649,7 +650,7 @@ fi SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-pthreads --with-lib="$INSTALL_LIBDIR" --with-openssl="$INSTALL_PREFIX" \ --with-curl="$INSTALL_PREFIX" --with-libpcre="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" \ diff --git a/build-ssh.sh b/build-ssh.sh index 352559bda..aae6c0729 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -118,7 +118,7 @@ cd "$ZLIB_DIR" SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" @@ -211,7 +211,7 @@ cd "$SSH_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include" CFLAGS="$SH_MARCH -DNDEBUG" CXXFLAGS="$SH_MARCH -DNDEBUG" \ +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ ./configure --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" \ --with-openssl-dir="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" From b6b987b2f2da4ef1d53921f57a844f536671342d Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sat, 1 Apr 2017 00:06:27 -0400 Subject: [PATCH 07/16] Make sudo optional --- build-git.sh | 101 +++++++++++++++++++++++++++++++++++++++++++-------- build-ssh.sh | 40 +++++++++++++++++--- 2 files changed, 119 insertions(+), 22 deletions(-) diff --git a/build-git.sh b/build-git.sh index 75956a604..7ca01e070 100644 --- a/build-git.sh +++ b/build-git.sh @@ -43,16 +43,28 @@ GIT_DIR=git-2.12.2 ############################################################################### -# Autotools on Solaris has an implied requirement for GNU gear -# Things fall apart without it. +# Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it. +# Also see https://blogs.oracle.com/partnertech/entry/preparing_for_the_upcoming_removal. if [[ -d "/usr/gnu/bin" ]]; then if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo echo "Adding /usr/gnu/bin to PATH for Solaris" PATH="/usr/gnu/bin:$PATH" fi +elif [[ -d "/usr/ucb/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then + echo + echo "Adding /usr/ucb/bin to PATH for Solaris" + PATH="/usr/ucb/bin:$PATH" + fi fi -# I don't like doing this, but... +############################################################################### + +echo +echo "If you enter a sudo password, then it will be used for installation." +echo "If you don't enter a password, then ensure INSTALL_PREFIX is writable." +echo "To avoid sudo and the password, just press ENTER and they won't be used." read -s -p "Please enter password for sudo: " SUDO_PASSWWORD echo @@ -159,7 +171,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -216,7 +233,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install PREFIX="$INSTALL_PREFIX" LIBDIR="$INSTALL_LIBDIR" +MAKE_FLAGS=(install PREFIX="$INSTALL_PREFIX" LIBDIR="$INSTALL_LIBDIR") +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -258,7 +280,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -300,7 +327,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -342,7 +374,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -404,7 +441,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -455,7 +497,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install_sw +MAKE_FLAGS=(install_sw) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -498,7 +545,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -541,7 +593,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -584,7 +641,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -627,6 +689,8 @@ if [[ "$IS_SOLARIS" -eq "1" ]]; then do cp "$file" "$file.orig" sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" + cp "$file" "$file.orig" + sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file" rm "$file.orig" done for file in $(find `pwd` -iname 'config*') @@ -634,7 +698,7 @@ if [[ "$IS_SOLARIS" -eq "1" ]]; then cp "$file" "$file.orig" sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" cp "$file" "$file.orig" - sed 's|/usr/ucb/install|/usr/gnu/bin/install|g' "$file.orig" > "$file" + sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file" rm "$file.orig" done fi @@ -690,7 +754,11 @@ if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then fi fi -echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -700,7 +768,8 @@ echo echo "********** Cleanup **********" echo -if true; then +# Set to false to retain artifacts +if false; then ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR" "$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR" diff --git a/build-ssh.sh b/build-ssh.sh index aae6c0729..f922510a0 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -19,16 +19,28 @@ ZLIB_DIR=zlib-1.2.11 ############################################################################### -# Autotools on Solaris has an implied requirement for GNU gear -# Things fall apart without it. +# Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it. +# Also see https://blogs.oracle.com/partnertech/entry/preparing_for_the_upcoming_removal. if [[ -d "/usr/gnu/bin" ]]; then if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo echo "Adding /usr/gnu/bin to PATH for Solaris" PATH="/usr/gnu/bin:$PATH" fi +elif [[ -d "/usr/ucb/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then + echo + echo "Adding /usr/ucb/bin to PATH for Solaris" + PATH="/usr/ucb/bin:$PATH" + fi fi -# I don't like doing this, but... +############################################################################### + +echo +echo "If you enter a sudo password, then it will be used for installation." +echo "If you don't enter a password, then ensure INSTALL_PREFIX is writable." +echo "To avoid sudo and the password, just press ENTER and they won't be used." read -s -p "Please enter password for sudo: " SUDO_PASSWWORD echo @@ -135,7 +147,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -186,7 +203,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install_sw +MAKE_FLAGS=(install_sw) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -229,7 +251,12 @@ if [[ "$?" -ne "0" ]]; then [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -echo "$SUDO_PASSWWORD" | sudo -S make install +MAKE_FLAGS=(install) +if [[ ! (-z SUDO_PASSWWORD) ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi cd .. @@ -239,6 +266,7 @@ echo echo "********** Cleanup **********" echo +# Set to false to retain artifacts if true; then ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$OPENSSH_TAR" "$OPENSSH_DIR" "$ZLIB_TAR" "$ZLIB_DIR") From eeeaa7e26215323eb303aca5a4bcb0b81b323b29 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sat, 1 Apr 2017 00:31:13 -0400 Subject: [PATCH 08/16] Whitespace check-in --- build-git.sh | 441 ++++++++++++++++++++++++++------------------------- build-ssh.sh | 169 ++++++++++---------- 2 files changed, 310 insertions(+), 300 deletions(-) diff --git a/build-git.sh b/build-git.sh index 7ca01e070..57425b8bf 100644 --- a/build-git.sh +++ b/build-git.sh @@ -46,17 +46,23 @@ GIT_DIR=git-2.12.2 # Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it. # Also see https://blogs.oracle.com/partnertech/entry/preparing_for_the_upcoming_removal. if [[ -d "/usr/gnu/bin" ]]; then - if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then - echo - echo "Adding /usr/gnu/bin to PATH for Solaris" - PATH="/usr/gnu/bin:$PATH" - fi + if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo + echo "Adding /usr/gnu/bin to PATH for Solaris" + PATH="/usr/gnu/bin:$PATH" + fi +elif [[ -d "/usr/swf/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/sfw/bin"*) ]]; then + echo + echo "Adding /usr/sfw/bin to PATH for Solaris" + PATH="/usr/sfw/bin:$PATH" + fi elif [[ -d "/usr/ucb/bin" ]]; then - if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then - echo - echo "Adding /usr/ucb/bin to PATH for Solaris" - PATH="/usr/ucb/bin:$PATH" - fi + if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then + echo + echo "Adding /usr/ucb/bin to PATH for Solaris" + PATH="/usr/ucb/bin:$PATH" + fi fi ############################################################################### @@ -81,15 +87,14 @@ IS_FREEBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c freebsd) IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) -if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1") ]]; then - MAKE=gmake -elif [[ ("$IS_SOLARIS" -eq "1") ]]; then - MAKE=$(which gmake 2>/dev/null | grep -v "no gmake" | head -1) - if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then - MAKE=/usr/sfw/bin/gmake - fi +if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1" || "$IS_SOLARIS" -eq "1") ]]; then + if [[ !(-z `which gmake 2>/dev/null | grep -v gmake`) ]]; then + MAKE=gmake + else + MAKE=make + fi else - MAKE=make + MAKE=make fi # Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64 @@ -97,36 +102,36 @@ fi # getconf, but it does not have LONG_BIT. IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64) if [[ "$IS_64BIT" -eq "0" ]]; then - IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') + IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') fi if [[ "$IS_SOLARIS" -eq "1" ]]; then - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" - INSTALL_LIBDIR_DIR="lib64" + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" elif [[ "$IS_64BIT" -eq "1" ]]; then - if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib" - INSTALL_LIBDIR_DIR="lib" - elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" - INSTALL_LIBDIR_DIR="lib64" - else - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib" - INSTALL_LIBDIR_DIR="lib" - fi + if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" + else + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + fi else - SH_KBITS=32 - SH_MARCH=-m32 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib" - INSTALL_LIBDIR_DIR="lib" + SH_KBITS=32 + SH_MARCH=-m32 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" fi echo @@ -143,8 +148,8 @@ echo wget "http://www.zlib.net/$ZLIB_TAR" -O "$ZLIB_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download zLib" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$ZLIB_DIR" &>/dev/null @@ -155,27 +160,27 @@ SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure zLib" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build zLib" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -189,8 +194,8 @@ echo wget "http://www.bzip.org/1.0.6/$BZ2_TAR" -O "$BZ2_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download Bzip" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download Bzip" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$BZ2_DIR" &>/dev/null @@ -229,15 +234,15 @@ MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build Bzip" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build Bzip" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install PREFIX="$INSTALL_PREFIX" LIBDIR="$INSTALL_LIBDIR") if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -252,8 +257,8 @@ echo wget "https://ftp.gnu.org/gnu/libunistring/$UNISTR_TAR" --no-check-certificate -O "$UNISTR_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download IDN" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$UNISTR_DIR" &>/dev/null @@ -264,27 +269,27 @@ SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure IDN" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build IDN" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -299,8 +304,8 @@ echo wget "https://ftp.gnu.org/gnu/readline/$READLN_TAR" --no-check-certificate -O "$READLN_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download Readline" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download Readline" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$READLN_DIR" &>/dev/null @@ -311,27 +316,27 @@ SH_LDLIBS=("-ldl" "-lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure Readline" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure Readline" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build Readline" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build Readline" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -346,8 +351,8 @@ echo wget "https://ftp.gnu.org/pub/gnu/libiconv/$ICONV_TAR" --no-check-certificate -O "$ICONV_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download iConvert" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download iConvert" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$ICONV_DIR" &>/dev/null @@ -358,27 +363,27 @@ SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure iConvert" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure iConvert" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build iConvert" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build iConvert" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -393,8 +398,8 @@ echo wget "https://alpha.gnu.org/gnu/libidn/$IDN2_TAR" --no-check-certificate -O "$IDN2_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download IDN" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$IDN2_DIR" &>/dev/null @@ -402,50 +407,50 @@ tar -xzf "$IDN2_TAR" cd "$IDN2_DIR" if [[ "$IS_SOLARIS" -eq "1" ]]; then - cp src/idn2.c src/idn2.c.orig - sed '/^#include "error.h"/d' src/idn2.c.orig > src/idn2.c - cp src/idn2.c src/idn2.c.orig - sed '43istatic void error (int status, int errnum, const char *format, ...);' src/idn2.c.orig > src/idn2.c - rm src/idn2.c.orig - - echo "" >> src/idn2.c - echo "static void" >> src/idn2.c - echo "error (int status, int errnum, const char *format, ...)" >> src/idn2.c - echo "{" >> src/idn2.c - echo " va_list args;" >> src/idn2.c - echo " va_start(args, format);" >> src/idn2.c - echo " vfprintf(stderr, format, args);" >> src/idn2.c - echo " va_end(args);" >> src/idn2.c - echo " exit(status);" >> src/idn2.c - echo "}" >> src/idn2.c - echo "" >> src/idn2.c + cp src/idn2.c src/idn2.c.orig + sed '/^#include "error.h"/d' src/idn2.c.orig > src/idn2.c + cp src/idn2.c src/idn2.c.orig + sed '43istatic void error (int status, int errnum, const char *format, ...);' src/idn2.c.orig > src/idn2.c + rm src/idn2.c.orig + + echo "" >> src/idn2.c + echo "static void" >> src/idn2.c + echo "error (int status, int errnum, const char *format, ...)" >> src/idn2.c + echo "{" >> src/idn2.c + echo " va_list args;" >> src/idn2.c + echo " va_start(args, format);" >> src/idn2.c + echo " vfprintf(stderr, format, args);" >> src/idn2.c + echo " va_end(args);" >> src/idn2.c + echo " exit(status);" >> src/idn2.c + echo "}" >> src/idn2.c + echo "" >> src/idn2.c fi SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure IDN" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build IDN" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build IDN" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -460,8 +465,8 @@ echo wget "https://www.openssl.org/source/$OPENSSL_TAR" --no-check-certificate -O "$OPENSSL_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download OpenSSL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$OPENSSL_DIR" &>/dev/null @@ -474,16 +479,16 @@ if [[ "$SH_KBITS" -eq "32" ]]; then IS_X86_64=0; fi CONFIG=./config CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-DNDEBUG" "-Wl,-rpath,$INSTALL_LIBDIR" - "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") + "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") if [[ "$IS_X86_64" -eq "1" ]]; then - CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") + CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") fi KERNEL_BITS="$SH_KBITS" "$CONFIG" "${CONFIG_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure OpenSSL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4 depend) @@ -493,15 +498,15 @@ MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build OpenSSL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install_sw) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -516,8 +521,8 @@ echo wget "https://ftp.pcre.org/pub/pcre/$PCRE_TAR" --no-check-certificate -O "$PCRE_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download PCRE" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download PCRE" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$PCRE_DIR" &>/dev/null @@ -528,28 +533,28 @@ SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --enable-pcregrep-libz --enable-pcregrep-libbz2 \ - --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --enable-pcregrep-libz --enable-pcregrep-libbz2 \ + --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure PCRE" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure PCRE" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4 all) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build PCRE" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build PCRE" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -564,8 +569,8 @@ echo wget "https://ftp.pcre.org/pub/pcre/$PCRE2_TAR" --no-check-certificate -O "$PCRE2_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download PCRE2" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download PCRE2" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$PCRE2_DIR" &>/dev/null @@ -576,28 +581,28 @@ SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 \ - --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 \ + --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure PCRE2" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure PCRE2" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4 all) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build PCRE2" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build PCRE2" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -612,8 +617,8 @@ echo wget "https://curl.haxx.se/download/$CURL_TAR" --no-check-certificate -O "$CURL_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download cURL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download cURL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$CURL_DIR" &>/dev/null @@ -624,28 +629,28 @@ SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lidn2" "-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ - --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ + --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure cURL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure cURL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build cURL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build cURL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -660,8 +665,8 @@ echo wget "https://github.com/git/git/archive/$GIT_TAR" --no-check-certificate -O "$GIT_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download Git" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$GIT_DIR" &>/dev/null @@ -671,93 +676,93 @@ cd "$GIT_DIR" make configure if [[ "$?" -ne "0" ]]; then - echo "Failed to make configure Git" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to make configure Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi # "Instruct Git to use pthread library?", http://stackoverflow.com/q/43080417/ for file in $(find `pwd` -iname 'Makefile*') do - cp "$file" "$file.orig" - sed 's|-lrt|-lrt -lpthread|g' "$file.orig" > "$file" - rm "$file.orig" + cp "$file" "$file.orig" + sed 's|-lrt|-lrt -lpthread|g' "$file.orig" > "$file" + rm "$file.orig" done # Various Solaris 11 workarounds if [[ "$IS_SOLARIS" -eq "1" ]]; then - for file in $(find `pwd` -iname 'Makefile*') - do - cp "$file" "$file.orig" - sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" - cp "$file" "$file.orig" - sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file" - rm "$file.orig" - done - for file in $(find `pwd` -iname 'config*') - do - cp "$file" "$file.orig" - sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" - cp "$file" "$file.orig" - sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file" - rm "$file.orig" - done + for file in $(find `pwd` -iname 'Makefile*') + do + cp "$file" "$file.orig" + sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" + cp "$file" "$file.orig" + sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file" + rm "$file.orig" + done + for file in $(find `pwd` -iname 'config*') + do + cp "$file" "$file.orig" + sed 's|-lsocket|-lnsl -lsocket|g' "$file.orig" > "$file" + cp "$file" "$file.orig" + sed 's|/usr/ucb/install|install|g' "$file.orig" > "$file" + rm "$file.orig" + done fi if [[ -e /usr/local/bin/perl ]]; then - SH_PERL=/usr/local/bin/perl + SH_PERL=/usr/local/bin/perl elif [[ -e /usr/bin/perl ]]; then - SH_PERL=/usr/bin/perl + SH_PERL=/usr/bin/perl else - SH_PERL=perl + SH_PERL=perl fi SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-pthreads --with-lib="$INSTALL_LIBDIR" --with-openssl="$INSTALL_PREFIX" \ - --with-curl="$INSTALL_PREFIX" --with-libpcre="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" \ - --with-iconv="$INSTALL_PREFIX" --with-perl="$SH_PERL" --prefix="$INSTALL_PREFIX" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-pthreads --with-lib="$INSTALL_LIBDIR" --with-openssl="$INSTALL_PREFIX" \ + --with-curl="$INSTALL_PREFIX" --with-libpcre="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" \ + --with-iconv="$INSTALL_PREFIX" --with-perl="$SH_PERL" --prefix="$INSTALL_PREFIX" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure Git" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi # See INSTALL for the formats and the requirements MAKE_FLAGS=(-j 4 all) if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then - if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then - MAKE_FLAGS+=("man") - fi - if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then - MAKE_FLAGS+=("info" "html") - fi + if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then + MAKE_FLAGS+=("man") + fi + if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then + MAKE_FLAGS+=("info" "html") + fi fi "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -eq "1" ]]; then - echo "Failed to build Git" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build Git" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi # See INSTALL for the formats and the requirements MAKE_FLAGS=(install) if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then - if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then - MAKE_FLAGS+=("install-man") - fi - if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then - MAKE_FLAGS+=("install-info" "install-html") - fi + if [[ ! -z `which makeinfo 2>/dev/null | grep -v 'no makeinfo'` ]]; then + MAKE_FLAGS+=("install-man") + fi + if [[ ! -z `which xmlto 2>/dev/null | grep -v 'no xmlto'` ]]; then + MAKE_FLAGS+=("install-info" "install-html") + fi fi if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -769,20 +774,20 @@ echo "********** Cleanup **********" echo # Set to false to retain artifacts -if false; then +if true; then - ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR" - "$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR" - "$IDN2_TAR" "$IDN2_DIR" "$ICONV_TAR" "$ICONV_DIR" "$CURL_TAR" "$CURL_DIR" "$GIT_TAR" "$GIT_DIR") + ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$UNISTR_TAR" "$UNISTR_DIR" "$READLN_TAR" "$READLN_DIR" + "$PCRE_TAR" "$PCRE_DIR" "$PCRE2_TAR" "$PCRE2_DIR" "$ZLIB_TAR" "$ZLIB_DIR" "$BZ2_TAR" "$BZ2_DIR" + "$IDN2_TAR" "$IDN2_DIR" "$ICONV_TAR" "$ICONV_DIR" "$CURL_TAR" "$CURL_DIR" "$GIT_TAR" "$GIT_DIR") - for artifact in "${ARTIFACTS[@]}"; do - rm -rf "$artifact" - done + for artifact in "${ARTIFACTS[@]}"; do + rm -rf "$artifact" + done - # ./build-git.sh 2>&1 | tee build-git.log - if [[ -e build-git.log ]]; then - rm build-git.log - fi + # ./build-git.sh 2>&1 | tee build-git.log + if [[ -e build-git.log ]]; then + rm build-git.log + fi fi [[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0 diff --git a/build-ssh.sh b/build-ssh.sh index f922510a0..95590cf3e 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -22,17 +22,23 @@ ZLIB_DIR=zlib-1.2.11 # Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it. # Also see https://blogs.oracle.com/partnertech/entry/preparing_for_the_upcoming_removal. if [[ -d "/usr/gnu/bin" ]]; then - if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then - echo - echo "Adding /usr/gnu/bin to PATH for Solaris" - PATH="/usr/gnu/bin:$PATH" - fi + if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo + echo "Adding /usr/gnu/bin to PATH for Solaris" + PATH="/usr/gnu/bin:$PATH" + fi +elif [[ -d "/usr/swf/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/sfw/bin"*) ]]; then + echo + echo "Adding /usr/sfw/bin to PATH for Solaris" + PATH="/usr/sfw/bin:$PATH" + fi elif [[ -d "/usr/ucb/bin" ]]; then - if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then - echo - echo "Adding /usr/ucb/bin to PATH for Solaris" - PATH="/usr/ucb/bin:$PATH" - fi + if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then + echo + echo "Adding /usr/ucb/bin to PATH for Solaris" + PATH="/usr/ucb/bin:$PATH" + fi fi ############################################################################### @@ -57,15 +63,14 @@ IS_FREEBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c freebsd) IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) -if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1") ]]; then - MAKE=gmake -elif [[ ("$IS_SOLARIS" -eq "1") ]]; then - MAKE=$(which gmake 2>/dev/null | grep -v "no gmake" | head -1) - if [[ (-z "$MAKE") && (-e "/usr/sfw/bin/gmake") ]]; then - MAKE=/usr/sfw/bin/gmake - fi +if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1" || "$IS_SOLARIS" -eq "1") ]]; then + if [[ !(-z `which gmake 2>/dev/null | grep -v gmake`) ]]; then + MAKE=gmake + else + MAKE=make + fi else - MAKE=make + MAKE=make fi # Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64 @@ -73,36 +78,36 @@ fi # getconf, but it does not have LONG_BIT. IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64) if [[ "$IS_64BIT" -eq "0" ]]; then - IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') + IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') fi if [[ "$IS_SOLARIS" -eq "1" ]]; then - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" - INSTALL_LIBDIR_DIR="lib64" + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" elif [[ "$IS_64BIT" -eq "1" ]]; then - if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib" - INSTALL_LIBDIR_DIR="lib" - elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" - INSTALL_LIBDIR_DIR="lib64" - else - SH_KBITS=64 - SH_MARCH=-m64 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib" - INSTALL_LIBDIR_DIR="lib" - fi + if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" + else + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + fi else - SH_KBITS=32 - SH_MARCH=-m32 - INSTALL_LIBDIR="$INSTALL_PREFIX/lib" - INSTALL_LIBDIR_DIR="lib" + SH_KBITS=32 + SH_MARCH=-m32 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" fi echo @@ -119,8 +124,8 @@ echo wget "http://www.zlib.net/$ZLIB_TAR" -O "$ZLIB_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download zLib" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$ZLIB_DIR" &>/dev/null @@ -131,27 +136,27 @@ SH_LDLIBS=("-ldl -lpthread") SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure zLib" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build zLib" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -166,8 +171,8 @@ echo wget "https://www.openssl.org/source/$OPENSSL_TAR" --no-check-certificate -O "$OPENSSL_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download OpenSSL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$OPENSSL_DIR" &>/dev/null @@ -180,16 +185,16 @@ if [[ "$SH_KBITS" -eq "32" ]]; then IS_X86_64=0; fi CONFIG=./config CONFIG_FLAGS=("no-ssl2" "no-ssl3" "no-comp" "shared" "-DNDEBUG" "-Wl,-rpath,$INSTALL_LIBDIR" - "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") + "--prefix=$INSTALL_PREFIX" "--openssldir=$INSTALL_PREFIX" "--libdir=$INSTALL_LIBDIR_DIR") if [[ "$IS_X86_64" -eq "1" ]]; then - CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") + CONFIG_FLAGS+=("enable-ec_nistp_64_gcc_128") fi KERNEL_BITS="$SH_KBITS" "$CONFIG" "${CONFIG_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure OpenSSL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4 depend) @@ -199,15 +204,15 @@ MAKE_FLAGS=(-j 4) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build OpenSSL" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build OpenSSL" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install_sw) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -222,8 +227,8 @@ echo wget "http://ftp4.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/$SSH_TAR" --no-check-certificate -O "$SSH_TAR" if [[ "$?" -ne "0" ]]; then - echo "Failed to download SSH" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to download SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi rm -rf "$SSH_DIR" &>/dev/null @@ -234,28 +239,28 @@ SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ - LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" \ - --with-openssl-dir="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" \ + --with-openssl-dir="$INSTALL_PREFIX" --with-zlib="$INSTALL_PREFIX" if [[ "$?" -ne "0" ]]; then - echo "Failed to configure SSH" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to configure SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(-j 4 all) "$MAKE" "${MAKE_FLAGS[@]}" if [[ "$?" -ne "0" ]]; then - echo "Failed to build SSH" - [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 + echo "Failed to build SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi MAKE_FLAGS=(install) if [[ ! (-z SUDO_PASSWWORD) ]]; then - echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else - "$MAKE" "${MAKE_FLAGS[@]}" + "$MAKE" "${MAKE_FLAGS[@]}" fi cd .. @@ -269,16 +274,16 @@ echo # Set to false to retain artifacts if true; then - ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$OPENSSH_TAR" "$OPENSSH_DIR" "$ZLIB_TAR" "$ZLIB_DIR") + ARTIFACTS=("$OPENSSL_TAR" "$OPENSSL_DIR" "$OPENSSH_TAR" "$OPENSSH_DIR" "$ZLIB_TAR" "$ZLIB_DIR") - for artifact in "${ARTIFACTS[@]}"; do - rm -rf "$artifact" - done + for artifact in "${ARTIFACTS[@]}"; do + rm -rf "$artifact" + done - # ./build-ssh.sh 2>&1 | tee build-ssh.log - if [[ -e build-ssh.log ]]; then - rm build-ssh.log - fi + # ./build-ssh.sh 2>&1 | tee build-ssh.log + if [[ -e build-ssh.log ]]; then + rm build-ssh.log + fi fi [[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0 From cd1118ef7fcdc1fc97baa24bfa06a11fdb7da7bc Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sat, 1 Apr 2017 02:02:21 -0400 Subject: [PATCH 09/16] Fix test for empty sudo password --- build-git.sh | 24 ++++++++++++------------ build-ssh.sh | 8 ++++---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/build-git.sh b/build-git.sh index 57425b8bf..316fd63d9 100644 --- a/build-git.sh +++ b/build-git.sh @@ -88,7 +88,7 @@ IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1" || "$IS_SOLARIS" -eq "1") ]]; then - if [[ !(-z `which gmake 2>/dev/null | grep -v gmake`) ]]; then + if [[ !(-z `which gmake 2>/dev/null | grep -v 'no gmake'`) ]]; then MAKE=gmake else MAKE=make @@ -177,7 +177,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -239,7 +239,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install PREFIX="$INSTALL_PREFIX" LIBDIR="$INSTALL_LIBDIR") -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -286,7 +286,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -333,7 +333,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -380,7 +380,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -447,7 +447,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -503,7 +503,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install_sw) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -551,7 +551,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -599,7 +599,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -647,7 +647,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -759,7 +759,7 @@ if [[ ! -z `which asciidoc 2>/dev/null | grep -v 'no asciidoc'` ]]; then fi fi -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" diff --git a/build-ssh.sh b/build-ssh.sh index 95590cf3e..5d31f7e52 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -64,7 +64,7 @@ IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1" || "$IS_SOLARIS" -eq "1") ]]; then - if [[ !(-z `which gmake 2>/dev/null | grep -v gmake`) ]]; then + if [[ !(-z `which gmake 2>/dev/null | grep -v 'no gmake'`) ]]; then MAKE=gmake else MAKE=make @@ -153,7 +153,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -209,7 +209,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install_sw) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" @@ -257,7 +257,7 @@ if [[ "$?" -ne "0" ]]; then fi MAKE_FLAGS=(install) -if [[ ! (-z SUDO_PASSWWORD) ]]; then +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" else "$MAKE" "${MAKE_FLAGS[@]}" From 7d0fffaa1ac518ea7d990a26594c4beff33d5c5e Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 3 Apr 2017 01:11:59 -0400 Subject: [PATCH 10/16] Port to Debian 7 for ci20 mipsel dev-board --- build-git.sh | 22 ++++++++++++++++++++-- build-ssh.sh | 17 +++++++++++++++-- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/build-git.sh b/build-git.sh index 316fd63d9..d70ef5d53 100644 --- a/build-git.sh +++ b/build-git.sh @@ -4,8 +4,7 @@ INSTALL_PREFIX=/usr/local INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" -# OpenSSH can only use OpenSSL 1.0.2 -# https://groups.google.com/forum/#!topic/opensshunixdev/AlgfQvPIlQE +# OpenSSH can only use OpenSSL 1.0.2 at the moment OPENSSL_TAR=openssl-1.0.2k.tar.gz OPENSSL_DIR=openssl-1.0.2k #OPENSSL_TAR=openssl-1.1.0e.tar.gz @@ -67,6 +66,18 @@ fi ############################################################################### +if [[ -z `which autoreconf` ]]; then + echo "Some packages require autoreconf. Please install autoconf or automake." + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +if [[ -z `which msgfmt` ]]; then + echo "Git requires msgfmt. Please install gettext." + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +############################################################################### + echo echo "If you enter a sudo password, then it will be used for installation." echo "If you don't enter a password, then ensure INSTALL_PREFIX is writable." @@ -134,6 +145,13 @@ else INSTALL_LIBDIR_DIR="lib" fi +if [[ -z "$CC" ]]; then CC=`which cc`; fi + +GCC_46_OR_EARLIER=$("$CC" -v 2>&1 | egrep -i -c 'gcc version ([2-3]\.[0-9]|4\.[0-6])') +if [[ "$GCC_46_OR_EARLIER" -eq "1" ]]; then + SH_MARCH= +fi + echo echo "********** libdir **********" echo diff --git a/build-ssh.sh b/build-ssh.sh index 5d31f7e52..2cfbbb540 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -4,8 +4,7 @@ INSTALL_PREFIX=/usr/local INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" -# OpenSSH can only use OpenSSL 1.0.2 -# https://groups.google.com/forum/#!topic/opensshunixdev/AlgfQvPIlQE +# OpenSSH can only use OpenSSL 1.0.2 at the moment OPENSSL_TAR=openssl-1.0.2k.tar.gz OPENSSL_DIR=openssl-1.0.2k #OPENSSL_TAR=openssl-1.1.0e.tar.gz @@ -43,6 +42,13 @@ fi ############################################################################### +if [[ -z `which autoreconf` ]]; then + echo "Some packages require autoreconf. Please install autoconf or automake." + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +############################################################################### + echo echo "If you enter a sudo password, then it will be used for installation." echo "If you don't enter a password, then ensure INSTALL_PREFIX is writable." @@ -110,6 +116,13 @@ else INSTALL_LIBDIR_DIR="lib" fi +if [[ -z "$CC" ]]; then CC=`which cc`; fi + +GCC_46_OR_EARLIER=$("$CC" -v 2>&1 | egrep -i -c 'gcc version ([2-3]\.[0-9]|4\.[0-6])') +if [[ "$GCC_46_OR_EARLIER" -eq "1" ]]; then + SH_MARCH= +fi + echo echo "********** libdir **********" echo From 011789147648d9385853d1155a4a78cf03c70904 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 3 Apr 2017 03:08:33 -0400 Subject: [PATCH 11/16] Use MAKE variable rather than make command --- build-git.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-git.sh b/build-git.sh index d70ef5d53..30ffc96f1 100644 --- a/build-git.sh +++ b/build-git.sh @@ -691,7 +691,7 @@ rm -rf "$GIT_DIR" &>/dev/null tar -xzf "$GIT_TAR" cd "$GIT_DIR" -make configure +"$MAKE" configure if [[ "$?" -ne "0" ]]; then echo "Failed to make configure Git" From f14c87d7ef8dda4224fad02be4bc0294521e8fed Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 7 Apr 2017 04:13:55 -0400 Subject: [PATCH 12/16] Fixed test for -m32/-m64 --- build-git.sh | 4 ++-- build-ssh.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build-git.sh b/build-git.sh index 30ffc96f1..3a9abb6db 100644 --- a/build-git.sh +++ b/build-git.sh @@ -147,8 +147,8 @@ fi if [[ -z "$CC" ]]; then CC=`which cc`; fi -GCC_46_OR_EARLIER=$("$CC" -v 2>&1 | egrep -i -c 'gcc version ([2-3]\.[0-9]|4\.[0-6])') -if [[ "$GCC_46_OR_EARLIER" -eq "1" ]]; then +MARCH_ERROR=`$CC $SH_MARCH -x c -c - &1 | grep -i -c error` +if [[ "$MARCH_ERROR" -ne "0" ]]; then SH_MARCH= fi diff --git a/build-ssh.sh b/build-ssh.sh index 2cfbbb540..0bce1dde2 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -118,8 +118,8 @@ fi if [[ -z "$CC" ]]; then CC=`which cc`; fi -GCC_46_OR_EARLIER=$("$CC" -v 2>&1 | egrep -i -c 'gcc version ([2-3]\.[0-9]|4\.[0-6])') -if [[ "$GCC_46_OR_EARLIER" -eq "1" ]]; then +MARCH_ERROR=`$CC $SH_MARCH -x c -c - &1 | grep -i -c error` +if [[ "$MARCH_ERROR" -ne "0" ]]; then SH_MARCH= fi From bcb16cb891262201592b1713103c9bb90c62681f Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 7 Apr 2017 08:39:30 -0400 Subject: [PATCH 13/16] Rename SSH_TAR to OPENSSH_TAR --- build-git.sh | 2 +- build-ssh.sh | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build-git.sh b/build-git.sh index 3a9abb6db..013fe8542 100644 --- a/build-git.sh +++ b/build-git.sh @@ -147,7 +147,7 @@ fi if [[ -z "$CC" ]]; then CC=`which cc`; fi -MARCH_ERROR=`$CC $SH_MARCH -x c -c - &1 | grep -i -c error` +MARCH_ERROR=`$CC $SH_MARCH -x c -c -o /dev/null - &1 | grep -i -c error` if [[ "$MARCH_ERROR" -ne "0" ]]; then SH_MARCH= fi diff --git a/build-ssh.sh b/build-ssh.sh index 0bce1dde2..0c9a74075 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -10,8 +10,8 @@ OPENSSL_DIR=openssl-1.0.2k #OPENSSL_TAR=openssl-1.1.0e.tar.gz #OPENSSL_DIR=openssl-1.1.0e -SSH_TAR=openssh-7.5p1.tar.gz -SSH_DIR=openssh-7.5p1 +OPENSSH_TAR=openssh-7.5p1.tar.gz +OPENSSH_DIR=openssh-7.5p1 ZLIB_TAR=zlib-1.2.11.tar.gz ZLIB_DIR=zlib-1.2.11 @@ -118,7 +118,7 @@ fi if [[ -z "$CC" ]]; then CC=`which cc`; fi -MARCH_ERROR=`$CC $SH_MARCH -x c -c - &1 | grep -i -c error` +MARCH_ERROR=`$CC $SH_MARCH -x c -c -o /dev/null - &1 | grep -i -c error` if [[ "$MARCH_ERROR" -ne "0" ]]; then SH_MARCH= fi @@ -237,16 +237,16 @@ echo "********** OpenSSH **********" echo # https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 -wget "http://ftp4.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/$SSH_TAR" --no-check-certificate -O "$SSH_TAR" +wget "http://ftp4.usa.openbsd.org/pub/OpenBSD/OpenSSH/portable/$OPENSSH_TAR" --no-check-certificate -O "$OPENSSH_TAR" if [[ "$?" -ne "0" ]]; then echo "Failed to download SSH" [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 fi -rm -rf "$SSH_DIR" &>/dev/null -tar -xzf "$SSH_TAR" -cd "$SSH_DIR" +rm -rf "$OPENSSH_DIR" &>/dev/null +tar -xzf "$OPENSSH_TAR" +cd "$OPENSSH_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lz" "-ldl" "-lpthread") From fe0d3f9d49413de47890cf62c9016de8df3ded95 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 24 Apr 2017 07:05:45 -0400 Subject: [PATCH 14/16] Update to cURL 7.54. Fix missing certs on Solaris --- build-git.sh | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/build-git.sh b/build-git.sh index 013fe8542..2a76f049e 100644 --- a/build-git.sh +++ b/build-git.sh @@ -34,12 +34,17 @@ PCRE_DIR=pcre-8.40 PCRE2_TAR=pcre2-10.23.tar.gz PCRE2_DIR=pcre2-10.23 -CURL_TAR=curl-7.53.1.tar.gz -CURL_DIR=curl-7.53.1 +CURL_TAR=curl-7.54.0.tar.gz +CURL_DIR=curl-7.54.0 GIT_TAR=v2.12.2.tar.gz GIT_DIR=git-2.12.2 +# Unset to avoid using an existing trust store when configuring cURL. +# No trust store will be supplied for some OSes, like Solaris. +# Also see '/usr/bin/curl-config --ca' and '/usr/bin/curl-config --configure' +USE_TRUST_STORE=1 + ############################################################################### # Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it. @@ -646,10 +651,18 @@ cd "$CURL_DIR" SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") SH_LDLIBS=("-lidn2" "-lssl" "-lcrypto" "-lz" "-ldl" "-lpthread") -CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ +if [[ ("$IS_SOLARIS" -ne ")" && "$USE_TRUST_STORE" -ne "0") ]]; then + CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --without-ca-bundle --with-ca-path=/etc/openssl/certs --enable-ipv6 \ + --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ + --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" +else + CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ + ./configure --enable-shared "${SH_TRUST_STORE[@]}" --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" +fi if [[ "$?" -ne "0" ]]; then echo "Failed to configure cURL" From 0d092dc95cbd26049e8c5a191502d22c54568880 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 30 May 2017 08:29:35 -0400 Subject: [PATCH 15/16] Update downloads --- build-git.sh | 10 +++++----- build-ssh.sh | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build-git.sh b/build-git.sh index 2a76f049e..a4e216b30 100644 --- a/build-git.sh +++ b/build-git.sh @@ -5,8 +5,8 @@ INSTALL_PREFIX=/usr/local INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" # OpenSSH can only use OpenSSL 1.0.2 at the moment -OPENSSL_TAR=openssl-1.0.2k.tar.gz -OPENSSL_DIR=openssl-1.0.2k +OPENSSL_TAR=openssl-1.0.2l.tar.gz +OPENSSL_DIR=openssl-1.0.2l #OPENSSL_TAR=openssl-1.1.0e.tar.gz #OPENSSL_DIR=openssl-1.1.0e @@ -37,8 +37,8 @@ PCRE2_DIR=pcre2-10.23 CURL_TAR=curl-7.54.0.tar.gz CURL_DIR=curl-7.54.0 -GIT_TAR=v2.12.2.tar.gz -GIT_DIR=git-2.12.2 +GIT_TAR=v2.13.0.tar.gz +GIT_DIR=git-2.13.0 # Unset to avoid using an existing trust store when configuring cURL. # No trust store will be supplied for some OSes, like Solaris. @@ -660,7 +660,7 @@ if [[ ("$IS_SOLARIS" -ne ")" && "$USE_TRUST_STORE" -ne "0") ]]; then else CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ - ./configure --enable-shared "${SH_TRUST_STORE[@]}" --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ + ./configure --enable-shared --enable-ipv6 --with-nghttp2 --with-ssl="$INSTALL_PREFIX" \ --with-libidn2="$INSTALL_PREFIX" --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" fi diff --git a/build-ssh.sh b/build-ssh.sh index 0c9a74075..190a4f070 100644 --- a/build-ssh.sh +++ b/build-ssh.sh @@ -5,8 +5,8 @@ INSTALL_PREFIX=/usr/local INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" # OpenSSH can only use OpenSSL 1.0.2 at the moment -OPENSSL_TAR=openssl-1.0.2k.tar.gz -OPENSSL_DIR=openssl-1.0.2k +OPENSSL_TAR=openssl-1.0.2l.tar.gz +OPENSSL_DIR=openssl-1.0.2l #OPENSSL_TAR=openssl-1.1.0e.tar.gz #OPENSSL_DIR=openssl-1.1.0e From d106d3f5e99a79605738eab4e8f4aa797a6d9b19 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sun, 23 Jul 2017 21:00:32 -0400 Subject: [PATCH 16/16] Add Emacs build script for Debian 6 --- build-emacs.sh | 294 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 build-emacs.sh diff --git a/build-emacs.sh b/build-emacs.sh new file mode 100644 index 000000000..2930459bc --- /dev/null +++ b/build-emacs.sh @@ -0,0 +1,294 @@ +#!/usr/bin/env bash + +# See fixup for INSTALL_LIBDIR below +INSTALL_PREFIX=/usr/local +INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + +ZLIB_TAR=zlib-1.2.11.tar.gz +ZLIB_DIR=zlib-1.2.11 + +NCURSES_TAR=ncurses-5.9.tar.gz +NCURSES_DIR=ncurses-5.9 + +EMACS_TAR=emacs-24.5.tar.gz +EMACS_DIR=emacs-24.5 + +############################################################################### + +# Autotools on Solaris has an implied requirement for GNU gear. Things fall apart without it. +# Also see https://blogs.oracle.com/partnertech/entry/preparing_for_the_upcoming_removal. +if [[ -d "/usr/gnu/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/gnu/bin"*) ]]; then + echo + echo "Adding /usr/gnu/bin to PATH for Solaris" + PATH="/usr/gnu/bin:$PATH" + fi +elif [[ -d "/usr/swf/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/sfw/bin"*) ]]; then + echo + echo "Adding /usr/sfw/bin to PATH for Solaris" + PATH="/usr/sfw/bin:$PATH" + fi +elif [[ -d "/usr/ucb/bin" ]]; then + if [[ ! ("$PATH" == *"/usr/ucb/bin"*) ]]; then + echo + echo "Adding /usr/ucb/bin to PATH for Solaris" + PATH="/usr/ucb/bin:$PATH" + fi +fi + +############################################################################### + +#if [[ -z `which autoreconf` ]]; then + #echo "Some packages require autoreconf. Please install autoconf or automake." + #[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +#fi + +############################################################################### + +echo +echo "If you enter a sudo password, then it will be used for installation." +echo "If you don't enter a password, then ensure INSTALL_PREFIX is writable." +echo "To avoid sudo and the password, just press ENTER and they won't be used." +read -s -p "Please enter password for sudo: " SUDO_PASSWWORD +echo + +############################################################################### + +THIS_SYSTEM=$(uname -s 2>&1) +IS_DARWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c darwin) +IS_LINUX=$(echo -n "$THIS_SYSTEM" | grep -i -c linux) +IS_CYGWIN=$(echo -n "$THIS_SYSTEM" | grep -i -c cygwin) +IS_MINGW=$(echo -n "$THIS_SYSTEM" | grep -i -c mingw) +IS_OPENBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c openbsd) +IS_DRAGONFLY=$(echo -n "$THIS_SYSTEM" | grep -i -c dragonfly) +IS_FREEBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c freebsd) +IS_NETBSD=$(echo -n "$THIS_SYSTEM" | grep -i -c netbsd) +IS_SOLARIS=$(echo -n "$THIS_SYSTEM" | grep -i -c sunos) + +if [[ ("$IS_FREEBSD" -eq "1" || "$IS_OPENBSD" -eq "1" || "$IS_NETBSD" -eq "1" || "$IS_DRAGONFLY" -eq "1" || "$IS_SOLARIS" -eq "1") ]]; then + if [[ !(-z `which gmake 2>/dev/null | grep -v 'no gmake'`) ]]; then + MAKE=gmake + else + MAKE=make + fi +else + MAKE=make +fi + +# Try to determine 32 vs 64-bit, /usr/local/lib, /usr/local/lib32 and /usr/local/lib64 +# The Autoconf programs misdetect Solaris as x86 even though its x64. OpenBSD has +# getconf, but it does not have LONG_BIT. +IS_64BIT=$(getconf LONG_BIT 2>&1 | grep -i -c 64) +if [[ "$IS_64BIT" -eq "0" ]]; then + IS_64BIT=$(file /bin/ls 2>&1 | grep -i -c '64-bit') +fi + +if [[ "$IS_SOLARIS" -eq "1" ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" +elif [[ "$IS_64BIT" -eq "1" ]]; then + if [[ (-d /usr/lib) && (-d /usr/lib32) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + elif [[ (-d /usr/lib) && (-d /usr/lib64) ]]; then + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib64" + INSTALL_LIBDIR_DIR="lib64" + else + SH_KBITS=64 + SH_MARCH=-m64 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" + fi +else + SH_KBITS=32 + SH_MARCH=-m32 + INSTALL_LIBDIR="$INSTALL_PREFIX/lib" + INSTALL_LIBDIR_DIR="lib" +fi + +if [[ -z "$CC" ]]; then CC=`which cc`; fi + +MARCH_ERROR=`$CC $SH_MARCH -x c -c -o /dev/null - &1 | grep -i -c error` +if [[ "$MARCH_ERROR" -ne "0" ]]; then + SH_MARCH= +fi + +echo +echo "********** libdir **********" +echo +echo "Using libdir $INSTALL_LIBDIR" + +############################################################################### + +echo +echo "********** zLib **********" +echo + +wget "http://www.zlib.net/$ZLIB_TAR" -O "$ZLIB_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$ZLIB_DIR" &>/dev/null +tar -xzf "$ZLIB_TAR" +cd "$ZLIB_DIR" + +SH_LDLIBS=("-ldl -lpthread") +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") + +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(install) +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi + +cd .. + +############################################################################### + +echo +echo "********** ncurses **********" +echo + +wget "https://ftp.gnu.org/pub/gnu/ncurses/$NCURSES_TAR" --no-check-certificate -O "$NCURSES_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$NCURSES_DIR" &>/dev/null +tar -xzf "$NCURSES_TAR" +cd "$NCURSES_DIR" + +SH_LDLIBS=("-ldl -lpthread") +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") + +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --enable-shared --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build zLib" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(install) +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi + +cd .. + +############################################################################### + +echo +echo "********** Emacs **********" +echo + +# https://savannah.gnu.org/bugs/?func=detailitem&item_id=26786 +wget "http://mirrors.syringanetworks.net/gnu/emacs/$EMACS_TAR" --no-check-certificate -O "$EMACS_TAR" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to download SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +rm -rf "$EMACS_DIR" &>/dev/null +tar -xzf "$EMACS_TAR" +cd "$EMACS_DIR" + +SH_LDFLAGS=("$SH_MARCH" "-Wl,-rpath,$INSTALL_LIBDIR" "-L$INSTALL_LIBDIR") +SH_LDLIBS=("-ldl" "-lpthread") + +CPPFLAGS="-I$INSTALL_PREFIX/include -DNDEBUG" CFLAGS="$SH_MARCH" CXXFLAGS="$SH_MARCH" \ + LDFLAGS="${SH_LDFLAGS[@]}" LIBS="${SH_LDLIBS[@]}" \ + ./configure --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" \ + --with-xml2 --without-x --without-sound --without-xpm \ + --without-jpeg --without-tiff --without-gif --without-png --without-rsvg \ + --without-imagemagick --without-xft --without-libotf --without-m17n-flt \ + --without-xaw3d --without-toolkit-scroll-bars --without-gpm --without-dbus \ + --without-gconf --without-gsettings --without-makeinfo \ + --without-compress-install + +if [[ "$?" -ne "0" ]]; then + echo "Failed to configure SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(-j 4 all) +"$MAKE" "${MAKE_FLAGS[@]}" + +if [[ "$?" -ne "0" ]]; then + echo "Failed to build SSH" + [[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 +fi + +MAKE_FLAGS=(install) +if [[ ! (-z "$SUDO_PASSWWORD") ]]; then + echo "$SUDO_PASSWWORD" | sudo -S "$MAKE" "${MAKE_FLAGS[@]}" +else + "$MAKE" "${MAKE_FLAGS[@]}" +fi + +cd .. + +############################################################################### + +echo +echo "********** Cleanup **********" +echo + +# Set to false to retain artifacts +if true; then + + ARTIFACTS=("$ZLIB_TAR" "$ZLIB_DIR" "$NCURSES_TAR" "$NCURSES_DIR" "$EMACS_TAR" "$EMACS_DIR") + + for artifact in "${ARTIFACTS[@]}"; do + rm -rf "$artifact" + done + + # ./build-ssh.sh 2>&1 | tee build-ssh.log + if [[ -e build-ssh.log ]]; then + rm build-ssh.log + fi +fi + +[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0