12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #!/usr/bin/env bash
- # Copyright (C) Viktor Szakats
- #
- # SPDX-License-Identifier: curl
- # Sort list of libs, libpaths, cflags found in libcurl.pc and curl-config files,
- # then diff the autotools and cmake generated ones.
- sort_lists() {
- prevline=''
- section=''
- while IFS= read -r l; do
- if [[ "${prevline}" =~ (--cc|--configure) ]]; then # curl-config
- echo "<IGNORED>"
- else
- # libcurl.pc
- if [[ "${l}" =~ ^(Requires|Libs|Cflags)(\.private)?:\ (.+)$ ]]; then
- if [ "${BASH_REMATCH[1]}" = 'Requires' ]; then
- # Spec does not allow duplicates here:
- # https://manpages.debian.org/unstable/pkg-config/pkg-config.1.en.html#Requires:
- # "You may only mention the same package one time on the Requires: line"
- val="$(printf '%s' "${BASH_REMATCH[3]}" | tr ',' '\n' | sort | tr '\n' ' ')"
- else
- val="$(printf '%s' "${BASH_REMATCH[3]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')"
- fi
- l="${BASH_REMATCH[1]}${BASH_REMATCH[2]}: ${val}"
- # curl-config
- elif [[ "${section}" =~ (--libs|--static-libs) && "${l}" =~ ^( *echo\ \")(.+)(\")$ ]]; then
- val="$(printf '%s' "${BASH_REMATCH[2]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')"
- l="${BASH_REMATCH[1]}${val}${BASH_REMATCH[3]}"
- section=''
- fi
- echo "${l}"
- fi
- # curl-config
- prevline="${l}"
- if [[ "${l}" =~ --[a-z-]+\) ]]; then
- section="${BASH_REMATCH[0]}"
- fi
- done < "$1"
- }
- am=$(mktemp -t autotools.XXX); sort_lists "$1" > "${am}"
- cm=$(mktemp -t cmake.XXX) ; sort_lists "$2" > "${cm}"
- diff -u "${am}" "${cm}"
- res="$?"
- rm -r -f "${am}" "${cm}"
- exit "${res}"
|