#!/usr/bin/env bash usage_desc() { sed 's/^\t//' < $stable_entry echo2 "Added symbol \`$sym' for architecture \`$arch' ($checksum)." emit_line_from_Module_symvers $arch $symbol || : } cb_checksum_update() { local arch="$1" local symbol="$2" local checksum="$3" local file="$4" local symversions="$5" local symtypes="$6" local prev_index="$7" local prev_csum="$8" #prev_symbol $9 unused local prev_obj="${10}" local prev_macro="${11}" local prev_ns="${12:-}" local stable_entry=$REDHAT/kabi/kabi-module/kabi_$arch/$symbol local index=$(grep -v '^#' $stable_entry | wc -l) if [ "$prev_csum" = "$checksum" ]; then echo2 "Symbol checksum of \`$sym' for architecture \`$arch' unchanged." return fi sed -i -e "s#\#P:.*#\#P:$file#" -e "s/#I:[0-9]\+/#I:$index/" \ $stable_entry if ! emit_line_from_Module_symvers $arch $symbol; then emit_line $checksum $symbol $prev_obj $prev_macro $prev_ns fi >> $stable_entry echo2 "Updated symbol \`$sym' for architecture \`$arch'" \ "($prev_csum -> $checksum)." } # Called whenever a new symbol checksum is obtained # cb_checksum ARCH SYMBOL CHECKSUM FILE SYMVERSIONS_FILE SYMTYPES_FILE cb_checksum() { local arch="$1" local symbol="$2" local checksum="$3" local symversions="$5" local symtypes="$6" local stable_entry=$REDHAT/kabi/kabi-module/kabi_$arch/$symbol cp $symtypes $REDHAT/kabi/kabi-module/kabi_$arch/.$symbol if [ -e $stable_entry ]; then prev_index=$(grep -Po "^#I:\K[0-9]+" $stable_entry) cb_checksum_update "$@" $prev_index $( IFS=' ' grep -v "^#" $stable_entry \ | head -n$((${prev_index}+1)) \ | tail -n1 ) return fi cb_checksum_new "$@" } # Called whenever the generate command finished successfully cb_ready() { # no more symbols, nothing to do : } cd "$(git rev-parse --show-toplevel)" REDHAT=${REDHAT:-$(pwd)/redhat/} # Generate new symbol checksums and symvers files . $REDHAT/kabi/symtype-generate