#!/bin/bash # # Copyright (c) 2025, The OpenThread Authors. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the copyright holder nor the # names of its contributors may be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # set -euxo pipefail TEMP_PATH=$(mktemp -d) SOCAT="socat-1.7.4.4" SOCAT_TAR="$SOCAT.tar.bz2" # Use the Yocto source mirror for HTTPS transport; verify the upstream archive hash below. SOCAT_URL="https://downloads.yoctoproject.org/mirror/sources/$SOCAT_TAR" SOCAT_SHA256="fbd42bd2f0e54a3af6d01bdf15385384ab82dbc0e4f1a5e153b3e0be1b6380ac" trap 'rm -rf "$TEMP_PATH" || sudo rm -rf "$TEMP_PATH"' EXIT verify_sha256() { local actual_sha256 local archive=$1 if command -v sha256sum >/dev/null 2>&1; then actual_sha256=$(sha256sum "$archive" | awk '{print $1}') elif command -v shasum >/dev/null 2>&1; then actual_sha256=$(shasum -a 256 "$archive" | awk '{print $1}') else echo "sha256sum or shasum is required to verify $archive" >&2 exit 1 fi if [[ $actual_sha256 != "$SOCAT_SHA256" ]]; then echo "SHA-256 mismatch for $archive" >&2 echo "Expected: $SOCAT_SHA256" >&2 echo "Actual: $actual_sha256" >&2 exit 1 fi } INSTALL_PREFIX="--prefix=/usr" if command -v brew >/dev/null 2>&1; then INSTALL_PREFIX="" # On MacOS, it's not allowed to install to /usr/bin due to System Integrity Protection fi cd "$TEMP_PATH" [[ -f $SOCAT_TAR ]] || wget \ --tries 4 \ --https-only \ --secure-protocol=TLSv1_2 \ --max-redirect=0 \ --output-document="$SOCAT_TAR" \ "$SOCAT_URL" verify_sha256 "$SOCAT_TAR" tar -xjf "$SOCAT_TAR" cd "$SOCAT" # Fix C23 / glibc 2.43 build failure where const-preserving strchr() rejects # mutating asctime()'s char * return value through a const char * variable. sed '/^static int printtime(/,/^}/s/const char \*s;/char *s;/' filan.c >filan.c.tmp mv filan.c.tmp filan.c ./configure "$INSTALL_PREFIX" make sudo make install