Skip to content

NetBSD: hmac() function conflict with stdlib.h #6457

@0-wiz-0

Description

@0-wiz-0

The problem is that in NetBSD 8 (in 2018), a hmac() function was added to libc: https://man.netbsd.org/hmac.3
Its prototype is

     ssize_t
     hmac(const char *hname, const void *key, size_t klen, const void *text,
         size_t tlen, void *digest, size_t dlen);

and it's in stdlib.h, a header that is quickly needed in a C project.
On the other hand, libgit2 has in src/util/hash/rfc6234/sha.h:

extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
    const unsigned char *text,     /* pointer to data stream */
    int text_len,                  /* length of data stream */
    const unsigned char *key,      /* pointer to authentication key */
    int key_len,                   /* length of authentication key */
    uint8_t digest[USHAMaxHashSize]); /* caller digest to fill in */

which doesn't match NetBSD's libc version at all, and when both are included, compilation fails.
This affects all supported NetBSD versions.

Please rename the hmac() function in libgit2 to avoid this conflict.

Reproduction steps

An indirect reproducer on NetBSD using rust/cargo (which is how this has recently been appearing more often) is:

mkdir libgit2-test
cd libgit2-test
cargo init
cargo add libgit2-sys
cargo build

This adds a dependency on the libgit2-sys crate to a new project and tries to build it, which downloads and builds the dependency, and fails:

  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-I" "/tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include" "-I" "libgit2/src/libgit2" "-I" "libgit2/src/util" "-I" "libgit2/deps/http-parser" "-I" "libgit2/deps/pcre" "-fvisibility=hidden" "-DGIT_REGEX_BUILTIN=1" "-DHAVE_STDINT_H=1" "-DHAVE_MEMMOVE=1" "-DNO_RECURSE=1" "-DNEWLINE=10" "-DPOSIX_MALLOC_THRESHOLD=10" "-DLINK_SIZE=2" "-DPARENS_NEST_LIMIT=250" "-DMATCH_LIMIT=10000000" "-DMATCH_LIMIT_RECURSION=MATCH_LIMIT" "-DMAX_NAME_SIZE=32" "-DMAX_NAME_COUNT=10000" "-DSHA1DC_NO_STANDARD_INCLUDES=1" "-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\"" "-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\"" "-o" "/tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/build/libgit2/src/libgit2/diff_parse.o" "-c" "libgit2/src/libgit2/diff_parse.c"
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:10,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:10,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/config.h:15,
  cargo:warning=                 from libgit2/src/libgit2/config.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/config_cache.c:10:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit_graph.h:19,
  cargo:warning=                 from libgit2/src/libgit2/odb.h:18,
  cargo:warning=                 from libgit2/src/libgit2/commit_list.c:12:
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_cache.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/cherrypick.c:10:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  exit status: 1
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/commit_list.h:10,
  cargo:warning=                 from libgit2/src/libgit2/commit_list.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/tree.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit.h:13,
  cargo:warning=                 from libgit2/src/libgit2/describe.c:16:
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  exit status: 1
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/cherrypick.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=      |            ^~~~
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/describe.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-I" "/tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include" "-I" "libgit2/src/libgit2" "-I" "libgit2/src/util" "-I" "libgit2/deps/http-parser" "-I" "libgit2/deps/pcre" "-fvisibility=hidden" "-DGIT_REGEX_BUILTIN=1" "-DHAVE_STDINT_H=1" "-DHAVE_MEMMOVE=1" "-DNO_RECURSE=1" "-DNEWLINE=10" "-DPOSIX_MALLOC_THRESHOLD=10" "-DLINK_SIZE=2" "-DPARENS_NEST_LIMIT=250" "-DMATCH_LIMIT=10000000" "-DMATCH_LIMIT_RECURSION=MATCH_LIMIT" "-DMAX_NAME_SIZE=32" "-DMAX_NAME_COUNT=10000" "-DSHA1DC_NO_STANDARD_INCLUDES=1" "-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\"" "-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\"" "-o" "/tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/build/libgit2/src/libgit2/diff_print.o" "-c" "libgit2/src/libgit2/diff_print.c"
  exit status: 0
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/config.h:15,
  cargo:warning=                 from libgit2/src/libgit2/config_file.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=      |            ^~~~
  cargo:warning=                 from libgit2/src/libgit2/checkout.h:13,
  exit status: 1
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  exit status: 1
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_file.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=                 from libgit2/src/libgit2/checkout.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/checkout.h:10,
  cargo:warning=                 from libgit2/src/libgit2/checkout.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  exit status: 1
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/diff_generate.h:12,
  cargo:warning=                 from libgit2/src/libgit2/diff_generate.c:8:
  exit status: 0
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_generate.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_generate.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  exit status: 1
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/diff_driver.h:12,
  cargo:warning=                 from libgit2/src/libgit2/diff_driver.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_driver.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_driver.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit_graph.h:19,
  cargo:warning=                 from libgit2/src/libgit2/commit_graph.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/commit_graph.h:11,
  cargo:warning=                 from libgit2/src/libgit2/commit_graph.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/diff.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/blame.h:8,
  cargo:warning=                 from libgit2/src/libgit2/blame.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/blame.h:4,
  cargo:warning=                 from libgit2/src/libgit2/blame.c:8:
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=      |          ^~~~
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr.h:12,
  cargo:warning=                 from libgit2/src/libgit2/attr.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/attr.h:10,
  cargo:warning=                 from libgit2/src/libgit2/attr.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/config.h:15,
  cargo:warning=                 from libgit2/src/libgit2/config_mem.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_mem.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/clone.c:20:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/clone.h:10,
  cargo:warning=                 from libgit2/src/libgit2/clone.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/blame.h:8,
  cargo:warning=                 from libgit2/src/libgit2/blame_git.h:12,
  cargo:warning=                 from libgit2/src/libgit2/blame_git.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/blame_git.h:10,
  cargo:warning=                 from libgit2/src/libgit2/blame_git.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/blob.h:13,
  cargo:warning=                 from libgit2/src/libgit2/blob.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/blob.h:10,
  cargo:warning=                 from libgit2/src/libgit2/blob.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/tree.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/commit.h:10,
  cargo:warning=                 from libgit2/src/libgit2/commit.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/crlf.c:16:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/crlf.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit_graph.h:19,
  cargo:warning=                 from libgit2/src/libgit2/odb.h:18,
  cargo:warning=                 from libgit2/src/libgit2/pack.h:18,
  cargo:warning=                 from libgit2/src/libgit2/delta.h:10,
  cargo:warning=                 from libgit2/src/libgit2/delta.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/delta.h:8,
  cargo:warning=                 from libgit2/src/libgit2/delta.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/diff_parse.h:12,
  cargo:warning=                 from libgit2/src/libgit2/diff_parse.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_parse.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_parse.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/tree.h:13,
  cargo:warning=                 from libgit2/src/libgit2/commit.h:13,
  cargo:warning=                 from libgit2/src/libgit2/branch.c:11:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/branch.h:10,
  cargo:warning=                 from libgit2/src/libgit2/branch.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/diff_file.h:12,
  cargo:warning=                 from libgit2/src/libgit2/diff_file.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_file.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_file.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/cache.c:10:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/cache.h:10,
  cargo:warning=                 from libgit2/src/libgit2/cache.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/config.h:15,
  cargo:warning=                 from libgit2/src/libgit2/config_snapshot.c:10:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_backend.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_snapshot.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/apply.c:17:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/apply.h:10,
  cargo:warning=                 from libgit2/src/libgit2/apply.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/ignore.h:12,
  cargo:warning=                 from libgit2/src/libgit2/iterator.h:15,
  cargo:warning=                 from libgit2/src/libgit2/diff.h:18,
  cargo:warning=                 from libgit2/src/libgit2/diff_print.c:11:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/diff_print.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attr_file.h:17,
  cargo:warning=                 from libgit2/src/libgit2/attrcache.h:12,
  cargo:warning=                 from libgit2/src/libgit2/repository.h:24,
  cargo:warning=                 from libgit2/src/libgit2/config.h:15,
  cargo:warning=                 from libgit2/src/libgit2/config_entries.h:11,
  cargo:warning=                 from libgit2/src/libgit2/config_entries.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_entries.h:8,
  cargo:warning=                 from libgit2/src/libgit2/config_entries.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  exit status: 1
  cargo:warning=In file included from libgit2/src/util/hash/builtin.h:13,
  cargo:warning=                 from libgit2/src/util/hash/sha.h:37,
  cargo:warning=                 from libgit2/src/util/hash.h:13,
  cargo:warning=                 from libgit2/src/util/futils.h:17,
  cargo:warning=                 from libgit2/src/libgit2/config_parse.h:13,
  cargo:warning=                 from libgit2/src/libgit2/config_parse.c:8:
  cargo:warning=libgit2/src/util/hash/rfc6234/sha.h:304:12: error: conflicting types for ‘hmac’
  cargo:warning=  304 | extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */
  cargo:warning=      |            ^~~~
  cargo:warning=In file included from /tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include/git2/common.h:11,
  cargo:warning=                 from libgit2/src/util/git2_util.h:14,
  cargo:warning=                 from libgit2/src/libgit2/common.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_parse.h:10,
  cargo:warning=                 from libgit2/src/libgit2/config_parse.c:8:
  cargo:warning=/usr/include/stdlib.h:312:10: note: previous declaration of ‘hmac’ was here
  cargo:warning=  312 | ssize_t  hmac(const char *, const void *, size_t, const void *, size_t, void *,
  cargo:warning=      |          ^~~~
  exit status: 1
  exit status: 1
  exit status: 1
  exit status: 1

  --- stderr


  error occurred: Command "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-I" "/tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/include" "-I" "libgit2/src/libgit2" "-I" "libgit2/src/util" "-I" "libgit2/deps/http-parser" "-I" "libgit2/deps/pcre" "-fvisibility=hidden" "-DGIT_REGEX_BUILTIN=1" "-DHAVE_STDINT_H=1" "-DHAVE_MEMMOVE=1" "-DNO_RECURSE=1" "-DNEWLINE=10" "-DPOSIX_MALLOC_THRESHOLD=10" "-DLINK_SIZE=2" "-DPARENS_NEST_LIMIT=250" "-DMATCH_LIMIT=10000000" "-DMATCH_LIMIT_RECURSION=MATCH_LIMIT" "-DMAX_NAME_SIZE=32" "-DMAX_NAME_COUNT=10000" "-DSHA1DC_NO_STANDARD_INCLUDES=1" "-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\"" "-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\"" "-o" "/tmp/libgit2-test/target/debug/build/libgit2-sys-a44124fbede12cb7/out/build/libgit2/src/libgit2/apply.o" "-c" "libgit2/src/libgit2/apply.c" with args "cc" did not execute successfully (status code exit status: 1).

Expected behavior

Building libgit2-sys succeeds.

Actual behavior

Build fails, see above.

Version of libgit2 (release number or SHA1)

The problematic header still exists in git as of today (036fe1a).

Operating system(s) tested

NetBSD >= 8

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions