pkg-config zlib check in 3c13bc
Tomi Ollila
tomi.ollila at iki.fi
Tue May 6 13:31:53 PDT 2014
On Tue, May 06 2014, Xīcò <xico at atelo.org> wrote:
> Dear notmuch,
>
> Although notmuch was configuring fine on FreeBSD before 3c13bc, the pkg-config
> check introduced for zlib does not work. Indeed, zlib is part of the
> base system, and always assumed to be present.
>
> Proposed patch puts platform test before pkg-config checks, and add a
> special case for zlib on FreeBSD. uname -U is used to get (numeric) OS version,
> and compared to lowest release where at least zlib 1.2.5.2 was available
> (that’s FreeBSD 9.1, with zlib 1.2.7).
>
> Best,
This line:
if [ $platform = FREEBSD -a `uname -U` -ge 901000 ] ; then
fails on systems where uname does not have -U option
as `uname -U` is executed always...
if [ $platform = FREEBSD ] && [ "`uname -U`" -ge 901000 ] ; then
would work better there...
But, I'd like suggest alternate option to create a test c program
and test whether it compiles (analogous to what there is already
done with many other checks) -- this same would apply to fdatasync()
case too.
If we cared about cross-compilability one could also do
zlib_vernum=$(printf '#include <zlib.h>\nZLIB_VERNUM' | gcc -E - | sed -n '$ s/^0x/0x/p')
if [ $((${zlib_vernum:-0})) -ge 4690 ]; then # 4690 == 0x1252
printf "Yes\n"
...
But that would be sooooo inconsistent what we have now
(and possibly fragile?)
> --
> Xīcò
Tomi
>>From ca0b168ac01391b4137de504bea2845d39d0fff9 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?X=C4=ABc=C3=B2?= <xico at atelo.org>
> Date: Tue, 6 May 2014 12:37:32 -0700
> Subject: [PATCH 1/1] FreeBSD check for zlib version.
>
> ---
> configure | 130 +++++++++++++++++++++++++++++++++-----------------------------
> 1 file changed, 69 insertions(+), 61 deletions(-)
>
> diff --git a/configure b/configure
> index 9bde2eb..7204812 100755
> --- a/configure
> +++ b/configure
> @@ -270,6 +270,62 @@ EOF
>
> errors=0
>
> +libdir_in_ldconfig=0
> +
> +printf "Checking which platform we are on... "
> +uname=`uname`
> +if [ $uname = "Darwin" ] ; then
> + printf "Mac OS X.\n"
> + platform=MACOSX
> + linker_resolves_library_dependencies=0
> +elif [ $uname = "SunOS" ] ; then
> + printf "Solaris.\n"
> + platform=SOLARIS
> + linker_resolves_library_dependencies=0
> +elif [ $uname = "FreeBSD" ] ; then
> + printf "FreeBSD.\n"
> + platform=FREEBSD
> + linker_resolves_library_dependencies=0
> +elif [ $uname = "OpenBSD" ] ; then
> + printf "OpenBSD.\n"
> + platform=OPENBSD
> + linker_resolves_library_dependencies=0
> +elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then
> + printf "$uname\n"
> + platform="$uname"
> + linker_resolves_library_dependencies=1
> +
> + printf "Checking for $libdir_expanded in ldconfig... "
> + ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
> + # Separate ldconfig_paths only on newline (not on any potential
> + # embedded space characters in any filenames). Note, we use a
> + # literal newline in the source here rather than something like:
> + #
> + # IFS=$(printf '\n')
> + #
> + # because the shell's command substitution deletes any trailing newlines.
> + IFS="
> +"
> + for path in $ldconfig_paths; do
> + if [ "$path" = "$libdir_expanded" ]; then
> + libdir_in_ldconfig=1
> + fi
> + done
> + IFS=$DEFAULT_IFS
> + if [ "$libdir_in_ldconfig" = '0' ]; then
> + printf "No (will set RPATH)\n"
> + else
> + printf "Yes\n"
> + fi
> +else
> + printf "Unknown.\n"
> + cat <<EOF
> +
> +*** Warning: Unknown platform. Notmuch might or might not build correctly.
> +
> +EOF
> +fi
> +
> if pkg-config --version > /dev/null 2>&1; then
> have_pkg_config=1
> else
> @@ -342,14 +398,22 @@ fi
>
> printf "Checking for zlib (>= 1.2.5.2)... "
> have_zlib=0
> -if pkg-config --atleast-version=1.2.5.2 zlib; then
> +# zlib is part of base in FreeBSD. version 9.1 included 1.2.7
> +if [ $platform = FREEBSD -a `uname -U` -ge 901000 ] ; then
> printf "Yes.\n"
> have_zlib=1
> - zlib_cflags=$(pkg-config --cflags zlib)
> - zlib_ldflags=$(pkg-config --libs zlib)
> + zlib_cflags=
> + zlib_ldflags=-lz
> else
> - printf "No.\n"
> - errors=$((errors + 1))
> + if pkg-config --atleast-version=1.2.5.2 zlib; then
> + printf "Yes.\n"
> + have_zlib=1
> + zlib_cflags=$(pkg-config --cflags zlib)
> + zlib_ldflags=$(pkg-config --libs zlib)
> + else
> + printf "No.\n"
> + errors=$((errors + 1))
> + fi
> fi
>
> printf "Checking for talloc development files... "
> @@ -427,62 +491,6 @@ else
> fi
> fi
>
> -libdir_in_ldconfig=0
> -
> -printf "Checking which platform we are on... "
> -uname=`uname`
> -if [ $uname = "Darwin" ] ; then
> - printf "Mac OS X.\n"
> - platform=MACOSX
> - linker_resolves_library_dependencies=0
> -elif [ $uname = "SunOS" ] ; then
> - printf "Solaris.\n"
> - platform=SOLARIS
> - linker_resolves_library_dependencies=0
> -elif [ $uname = "FreeBSD" ] ; then
> - printf "FreeBSD.\n"
> - platform=FREEBSD
> - linker_resolves_library_dependencies=0
> -elif [ $uname = "OpenBSD" ] ; then
> - printf "OpenBSD.\n"
> - platform=OPENBSD
> - linker_resolves_library_dependencies=0
> -elif [ $uname = "Linux" ] || [ $uname = "GNU" ] ; then
> - printf "$uname\n"
> - platform="$uname"
> - linker_resolves_library_dependencies=1
> -
> - printf "Checking for $libdir_expanded in ldconfig... "
> - ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
> - # Separate ldconfig_paths only on newline (not on any potential
> - # embedded space characters in any filenames). Note, we use a
> - # literal newline in the source here rather than something like:
> - #
> - # IFS=$(printf '\n')
> - #
> - # because the shell's command substitution deletes any trailing newlines.
> - IFS="
> -"
> - for path in $ldconfig_paths; do
> - if [ "$path" = "$libdir_expanded" ]; then
> - libdir_in_ldconfig=1
> - fi
> - done
> - IFS=$DEFAULT_IFS
> - if [ "$libdir_in_ldconfig" = '0' ]; then
> - printf "No (will set RPATH)\n"
> - else
> - printf "Yes\n"
> - fi
> -else
> - printf "Unknown.\n"
> - cat <<EOF
> -
> -*** Warning: Unknown platform. Notmuch might or might not build correctly.
> -
> -EOF
> -fi
> -
> printf "Checking byte order... "
> cat> _byteorder.c <<EOF
> #include <stdio.h>
> --
> 1.9.2
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
More information about the notmuch
mailing list