#!/bin/sh
#
# This script is used to inject the Varnish ABI into the RPM Provides.

set -e

BUILD_DIR=$(dirname "$0")
VERSION=${RPM_BUILD_ROOT##*varnish-}
FIND_PROVIDES=$1
shift

VMOD_VERSION=" = ${VERSION%.*}" # remove arch
ABI_ISA=$(rpm --eval '%{?_isa}')

expand_macro() {
	cpp - -Iinclude <<-EOF |
	#include "vcs_version.h"
	#include "vdef.h"
	#include "vrt.h"
	$1
	EOF
	tail -1
}

varnishd_provides() (
	cd "$BUILD_DIR"

	ABI=$(expand_macro VCS_Version | tr -d '"')
	VRT_MAJOR=$(expand_macro VRT_MAJOR_VERSION | tr -c -d '[0-9]')
	VRT_MINOR=$(expand_macro VRT_MINOR_VERSION | tr -c -d '[0-9]')

	cat <<-EOF
	varnishd(abi)$ABI_ISA = $ABI
	varnishd(vrt)$ABI_ISA = $VRT_MAJOR.$VRT_MINOR
	EOF
)

while read -r FILE
do
	case $FILE in
	*bin/varnishd)
		varnishd_provides
		printf "%s\n" "$FILE" | $FIND_PROVIDES "$@"
		;;
	*/libvmod_*.so)
		VMOD=${FILE##*/libvmod_}
		VMOD=${VMOD%.so}
		printf 'vmod(%s)%s%s\n' "$VMOD" "$ABI_ISA" "$VMOD_VERSION"
		;;
	*)
		printf "%s\n" "$FILE" | $FIND_PROVIDES "$@"
		;;
	esac
done |
sort |
uniq
