go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

common.sh (3617B)


      1 # Copyright (c) 2021, Google Inc. All rights reserved.
      2 #
      3 # Redistribution and use in source and binary forms, with or without
      4 # modification, are permitted provided that the following conditions are
      5 # met:
      6 #
      7 #   * Redistributions of source code must retain the above copyright
      8 #     notice, this list of conditions and the following disclaimer.
      9 #
     10 #   * Redistributions in binary form must reproduce the above copyright
     11 #     notice, this list of conditions and the following disclaimer in
     12 #     the documentation and/or other materials provided with the
     13 #     distribution.
     14 #
     15 #   * Neither the name of Google nor the names of its contributors may
     16 #     be used to endorse or promote products derived from this software
     17 #     without specific prior written permission.
     18 #
     19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     23 # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     30 
     31 log_err() {
     32   echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" >&2
     33 }
     34 
     35 #######################################
     36 # Create build directory. Build directory will be deleted if it exists.
     37 # Arguments:
     38 #   None.
     39 # Returns:
     40 #   mkdir result.
     41 #######################################
     42 make_build_dir() {
     43   if [[ "$#" -ne 1 ]]; then
     44     return 1
     45   fi
     46 
     47   local build_dir
     48   build_dir="$1"
     49   rm -rf "${build_dir}"
     50   mkdir -p "${build_dir}"
     51 }
     52 
     53 #######################################
     54 # Cleanup files from the build directory.
     55 # Globals:
     56 #   LIBWEBP_ROOT repository's root path.
     57 # Arguments:
     58 #   $1 build directory.
     59 #######################################
     60 cleanup() {
     61   # $1 is not completely removed to allow for binary artifacts to be
     62   # extracted.
     63   find "${1:?"Build directory not defined"}" \
     64     \( -name "*.[ao]" -o -name "*.l[ao]" \) -exec rm -f {} +
     65 }
     66 
     67 #######################################
     68 # Setup ccache for toolchain.
     69 # Globals:
     70 #   PATH
     71 # Arguments:
     72 #   None.
     73 #######################################
     74 setup_ccache() {
     75   if [[ -x "$(command -v ccache)" ]]; then
     76     export CCACHE_CPP2=yes
     77     export PATH="/usr/lib/ccache:${PATH}"
     78   fi
     79 }
     80 
     81 #######################################
     82 # Detects whether test block should be run in the current test shard.
     83 # Globals:
     84 #   TEST_TOTAL_SHARDS: Valid range: [1, N]. Defaults to 1.
     85 #   TEST_SHARD_INDEX: Valid range: [0, TEST_TOTAL_SHARDS). Defaults to 0.
     86 #   libwebp_test_id: current test number; incremented with each call.
     87 # Arguments:
     88 #   None
     89 # Returns:
     90 #   true if the shard is active
     91 #   false if the shard is inactive
     92 #######################################
     93 shard_should_run() {
     94   TEST_TOTAL_SHARDS=${TEST_TOTAL_SHARDS:=1}
     95   TEST_SHARD_INDEX=${TEST_SHARD_INDEX:=0}
     96   libwebp_test_id=${libwebp_test_id:=-1}
     97   : $((libwebp_test_id += 1))
     98 
     99   if [[ "${TEST_SHARD_INDEX}" -lt 0 ||
    100     "${TEST_SHARD_INDEX}" -ge "${TEST_TOTAL_SHARDS}" ]]; then
    101     log_err "Invalid TEST_SHARD_INDEX (${TEST_SHARD_INDEX})!" \
    102       "Expected [0, ${TEST_TOTAL_SHARDS})."
    103   fi
    104 
    105   [[ "$((libwebp_test_id % TEST_TOTAL_SHARDS))" -eq "${TEST_SHARD_INDEX}" ]]
    106 }