rpm-4.0.4-alt100.90 Example: python3-3.5 installs a complex python3.5m-config shell script (unlike python3-3.3 which implemented it in Python). Certainly, fixup-binconfig doesn't expect such a complex script and tries to do stupid things with it by extracting some lines with assignments (but the assigned values are computed from other stuff defined elsewhere in the script). It's not critical, because ultimately fixup-binconfig has no effect in this case, but errors are reported during its work. And it's not quite clear for the maintainer of such a package what fixup-binconfig tries to prevent, and whether something should be done with his /usr/bin/*-config. If fixup-binconfig had a verifying-only mode, which would actually run /usr/bin/*-config with certain options (instead of trying to process its source code) and report whether the output has some deficiencies. If the output is OK, it could silently return successfully, if it is not OK, it could try to fix it up or fail with an error. How the errors look like when building python3-3.5 (I've added "set -x" to fixup-binconfig) -- they come from "sed" invoked in /usr/bin/python3.5m-config: +++ mktemp -dt fixup-binconfig.XXXXXXXX ++ tmpdir=/usr/src/tmp/fixup-binconfig.sEUnGVSt ++ trap 'remove_tmpdir $?' EXIT + TMPFILE=/usr/src/tmp/fixup-binconfig.sEUnGVSt/tmp + f_saved=/usr/src/tmp/fixup-binconfig.sEUnGVSt/sav + f_new=/usr/src/tmp/fixup-binconfig.sEUnGVSt/new + : + rc=0 + for f in '"$@"' + '[' '!' -f ./usr/bin/python3.5m-config ']' + fname=./usr/bin/python3.5m-config + fname=/usr/bin/python3.5m-config + '[' -n '' ']' ++ file -b ./usr/bin/python3.5m-config + t='Bourne shell script text executable' + '[' -z '' ']' + fix + local includedir= + local libdir= + local prefix= + local exec_prefix= + sed -ne 's/^\(\([a-z_A-Z]*\)\(prefix\|dir\|path\)\)=\(.*\)$/local \1=\4/pg' ./usr/bin/python3.5m-config + '[' '!' -s /usr/src/tmp/fixup-binconfig.sEUnGVSt/tmp ']' + . /usr/src/tmp/fixup-binconfig.sEUnGVSt/tmp +++ echo '' +++ sed s### sed: -e expression #1, char 0: no previous regular expression ++ local prefix= +++ echo '' +++ sed s### sed: -e expression #1, char 0: no previous regular expression ++ local exec_prefix= +++ echo /usr/include +++ sed s### sed: -e expression #1, char 0: no previous regular expression ++ local includedir= +++ echo /usr/lib64 +++ sed s### sed: -e expression #1, char 0: no previous regular expression ++ local libdir= ++ printf %s '' ++ tr -s / + prefix= ++ printf %s '' ++ tr -s / + exec_prefix= ++ printf %s '' ++ tr -s / + includedir= ++ printf %s '' ++ tr -s / + libdir= + cat ./usr/bin/python3.5m-config + cmp -s /usr/src/tmp/fixup-binconfig.sEUnGVSt/new /usr/src/tmp/fixup-binconfig.sEUnGVSt/sav The script's source code -- for example, $prefix is computed from other values (which get lost by fixup-binconfig): #!/bin/sh # Keep this script in sync with python-config.in exit_with_usage () { echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir" exit $1 } if [ "$1" = "" ] ; then exit_with_usage 1 fi # Returns the actual prefix where this script was installed to. installed_prefix () { RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)) if which readlink >/dev/null 2>&1 ; then if readlink -f "$RESULT" >/dev/null 2>&1; then RESULT=$(readlink -f "$RESULT") fi fi echo $RESULT } prefix_build="/usr" prefix_real=$(installed_prefix "$0") # Use sed to fix paths from their built-to locations to their installed-to # locations. prefix=$(echo "$prefix_build" | sed "s#$prefix_build#$prefix_real#") exec_prefix_build="/usr" exec_prefix=$(echo "$exec_prefix_build" | sed "s#$exec_prefix_build#$prefix_real#") includedir=$(echo "/usr/include" | sed "s#$prefix_build#$prefix_real#") libdir=$(echo "/usr/lib64" | sed "s#$prefix_build#$prefix_real#") CFLAGS=$(echo "-pipe -Wall -g -O3" | sed "s#$prefix_build#$prefix_real#") VERSION="3.5" LIBM="-lm" LIBC="" SYSLIBS="$LIBM $LIBC" ABIFLAGS="m" LIBS="-lpython${VERSION}${ABIFLAGS} -lpthread -ldl -lutil $SYSLIBS" BASECFLAGS=" -Wno-unused-result -Wsign-compare -Wunreachable-code" LDLIBRARY="libpython${VERSION}${ABIFLAGS}.a" LINKFORSHARED="-Xlinker -export-dynamic" OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes" PY_ENABLE_SHARED="0" LDVERSION="${VERSION}${ABIFLAGS}" LIBDEST=${prefix}/lib/python${VERSION} LIBPL=$(echo "${prefix}/lib/python3.5/config-${VERSION}${ABIFLAGS}" | sed "s#$prefix_build#$prefix_real#") SO=".cpython-35m.so" PYTHONFRAMEWORK="" INCDIR="-I$includedir/python${VERSION}${ABIFLAGS}" PLATINCDIR="-I$includedir/python${VERSION}${ABIFLAGS}" # Scan for --help or unknown argument. for ARG in $* do case $ARG in --help) exit_with_usage 0 ;; --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir) ;; *) exit_with_usage 1 ;; esac done for ARG in "$@" do case "$ARG" in --prefix) echo "$prefix" ;; --exec-prefix) echo "$exec_prefix" ;; --includes) echo "$INCDIR $PLATINCDIR" ;; --cflags) echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT" ;; --libs) echo "$LIBS" ;; --ldflags) LINKFORSHAREDUSED= if [ -z "$PYTHONFRAMEWORK" ] ; then LINKFORSHAREDUSED=$LINKFORSHARED fi LIBPLUSED= if [ "$PY_ENABLE_SHARED" = "0" ] ; then LIBPLUSED="-L$LIBPL" fi echo "$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED" ;; --extension-suffix) echo "$SO" ;; --abiflags) echo "$ABIFLAGS" ;; --configdir) echo "$LIBPL" ;; esac done