github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/kati/testcase/readonly_rule.sh (about)

     1  #!/bin/bash
     2  #
     3  # Copyright 2016 Google Inc. All rights reserved
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #      http:#www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  
    17  set -u
    18  
    19  mk="$@"
    20  
    21  function build() {
    22    cat <<EOF > Makefile
    23  all: FOO $1 bar
    24  all: .KATI_READONLY $2 FOO
    25  FOO $3 foo
    26  all: FOO $3 baz
    27  all:
    28  EOF
    29  
    30    echo "Testcase: $1 $2 $3"
    31    if echo "${mk}" | grep -q "^make"; then
    32      # Make doesn't support .KATI_READONLY
    33      echo "Makefile:4: *** cannot assign to readonly variable: FOO"
    34    else
    35      ${mk} 2>&1 && echo "Clean exit"
    36    fi
    37  }
    38  
    39  #build "=" "=" "="
    40  #build "=" "+=" "="
    41  #build "=" ":=" "="
    42  #
    43  #build "=" ":=" ":="
    44  #build "=" ":=" "+="
    45  #
    46  #build ":=" ":=" ":="
    47  build ":=" ":=" "+="
    48  #build ":=" ":=" "="