depends: Only use D_DARWIN_C_SOURCE when building miniupnpc on darwin #12466

pull fanquake wants to merge 1 commits into bitcoin:master from fanquake:fix-miniupnpc-darwin changing 1 files +1 −2
  1. fanquake commented at 3:14 AM on February 17, 2018: member

    Only use D_DARWIN_C_SOURCE when building on darwin, so we don't inadvertently introduce issues elsewhere.

    cc @theuni

  2. fanquake added the label Build system on Feb 17, 2018
  3. fanquake requested review from theuni on Feb 17, 2018
  4. laanwj commented at 9:16 AM on February 17, 2018: member

    Obvious utACK, sorry for merging before @theuni could get a look at it.

  5. theuni commented at 7:06 PM on February 20, 2018: member

    @laanwj No worries!

    Unfortunately this isn't quite as obvious as it looks. This change would clobber any default cflags. @fanquake Could you give this a try?

    diff --git a/depends/packages/miniupnpc.mk b/depends/packages/miniupnpc.mk
    index 9976db43c2..0a17f07e22 100644
    --- a/depends/packages/miniupnpc.mk
    +++ b/depends/packages/miniupnpc.mk
    @@ -5,11 +5,10 @@ $(package)_file_name=$(package)-$($(package)_version).tar.gz
     $(package)_sha256_hash=90dda8c7563ca6cd4a83e23b3c66dbbea89603a1675bfdb852897c2c9cc220b7
    
     define $(package)_set_vars
    -$(package)_build_opts=CC="$($(package)_cc)"
    +$(package)_build_opts=CC="$($(package)_cc)" AR="$($(package)_ar)"
     $(package)_build_opts_darwin=OS=Darwin LIBTOOL="$($(package)_libtool)"
     $(package)_build_opts_mingw32=-f Makefile.mingw
    -$(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)"
    -$(package)_build_env+=CFLAGS=-D_DARWIN_C_SOURCE
    +$(package)_cppflags_darwin+=-D_DARWIN_C_SOURCE
     endef
    
     define $(package)_preprocess_cmds
    @@ -19,7 +18,7 @@ define $(package)_preprocess_cmds
     endef
    
     define $(package)_build_cmds
    -       $(MAKE) libminiupnpc.a $($(package)_build_opts)
    +       CFLAGS="$($(package)_cflags) $($(package)_cppflags)" $(MAKE) libminiupnpc.a $($(package)_build_opts)
     endef
    
     define $(package)_stage_cmds
    
  6. laanwj commented at 4:12 PM on February 22, 2018: member

    BTW; isn't this something that should ideally be fixed upstream?

  7. fanquake commented at 12:53 AM on February 24, 2018: member

    @cfields sorry for the slowness, I'll have this updated tomorrow. @laanwj When compiling miniupnpc directly on osx the correct flags are currently being set.

  8. fanquake force-pushed on Feb 25, 2018
  9. fanquake force-pushed on Feb 25, 2018
  10. fanquake commented at 9:51 AM on February 25, 2018: member

    @theuni using the patch you suggested, -D_DARWIN_C_SOURCE is now appearing twice in the build flags:

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.8 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/Users/xxx/Github/bitcoin/depends/x86_64-apple-darwin17.4.0/include   -D_DARWIN_C_SOURCE   -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o miniwget.o miniwget.c
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.8 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/Users/xxx/Github/bitcoin/depends/x86_64-apple-darwin17.4.0/include   -D_DARWIN_C_SOURCE   -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o minixml.o minixml.c
    

    I've pushed up your changes without the cppflags_darwin addition, we'll see what Travis thinks.

  11. fanquake commented at 1:17 PM on February 25, 2018: member

    Looks like -D_DARWIN_C_SOURCE is being added without the specific cppflags_darwin +=. The build is failing differently:

    /home/travis/build/bitcoin/bitcoin/depends/work/download/miniupnpc-2.0.20180203/miniupnpc-2.0.20180203.tar.gz.temp: OK
    Extracting miniupnpc...
    /home/travis/build/bitcoin/bitcoin/depends/sources/miniupnpc-2.0.20180203.tar.gz: OK
    Preprocessing miniupnpc...
    Configuring miniupnpc...
    Building miniupnpc...
    make[1]: Entering directory `/home/travis/build/bitcoin/bitcoin/depends/work/build/x86_64-apple-darwin11/miniupnpc/2.0.20180203-a0cb00241a9'
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o miniwget.o miniwget.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o minixml.o minixml.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o igd_desc_parse.o igd_desc_parse.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o minisoap.o minisoap.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o miniupnpc.o miniupnpc.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o upnpreplyparse.o upnpreplyparse.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o upnpcommands.o upnpcommands.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o upnperrors.o upnperrors.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o connecthostport.o connecthostport.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o portlistingparse.o portlistingparse.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o receivedata.o receivedata.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o upnpdev.o upnpdev.c
    clang -target x86_64-apple-darwin11 -mmacosx-version-min=10.8 --sysroot /home/travis/build/bitcoin/bitcoin/depends/SDKs/MacOSX10.11.sdk -mlinker-version=253.9 -D_DARWIN_C_SOURCE -fPIC -pipe -O2     -I/home/travis/build/bitcoin/bitcoin/depends/x86_64-apple-darwin11/include     -Wall -W -Wstrict-prototypes -fno-common -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE   -c -o minissdpc.o minissdpc.c
    /usr/bin/libtool -static -o libminiupnpc.a miniwget.o minixml.o igd_desc_parse.o minisoap.o miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o connecthostport.o portlistingparse.o receivedata.o upnpdev.o minissdpc.o
    libtool: unrecognized option `-static'
    libtool: Try `libtool --help' for more information.
    make[1]: *** [libminiupnpc.a] Error 1
    make[1]: Leaving directory `/home/travis/build/bitcoin/bitcoin/depends/work/build/x86_64-apple-darwin11/miniupnpc/2.0.20180203-a0cb00241a9'
    make: *** [/home/travis/build/bitcoin/bitcoin/depends/work/build/x86_64-apple-darwin11/miniupnpc/2.0.20180203-a0cb00241a9/./.stamp_built] Error 2
    make: Leaving directory `/home/travis/build/bitcoin/bitcoin/depends'
    
  12. theuni commented at 11:32 PM on February 26, 2018: member

    @fanquake good catch! Upstream did add the define, as @laanwj mentioned that they should.

    Our issue turns out to be that upstream added cross-build detection, which we partially override by defining OS. If we just let it be discovered as intended, all is fine. The problem you're seeing now is that LIBTOOL isn't defined (apple has a libtool utility that can handle ar's features, it's unrelated to gnu libtool).

    Looks like the fix is as simple as:

    --- a/depends/packages/miniupnpc.mk
    +++ b/depends/packages/miniupnpc.mk
    @@ -6,10 +6,9 @@ $(package)_sha256_hash=90dda8c7563ca6cd4a83e23b3c66dbbea89603a1675bfdb852897c2c9
    
     define $(package)_set_vars
     $(package)_build_opts=CC="$($(package)_cc)"
    -$(package)_build_opts_darwin=OS=Darwin LIBTOOL="$($(package)_libtool)"
    +$(package)_build_opts_darwin=LIBTOOL="$($(package)_libtool)"
     $(package)_build_opts_mingw32=-f Makefile.mingw
     $(package)_build_env+=CFLAGS="$($(package)_cflags) $($(package)_cppflags)" AR="$($(package)_ar)"
    -$(package)_build_env+=CFLAGS=-D_DARWIN_C_SOURCE
     endef
    
     define $(package)_preprocess_cmds
    
  13. fanquake force-pushed on Feb 28, 2018
  14. depends: Only use D_DARWIN_C_SOURCE when building miniupnpc on darwin 992f568762
  15. fanquake force-pushed on Mar 5, 2018
  16. laanwj merged this on Mar 5, 2018
  17. laanwj closed this on Mar 5, 2018

  18. laanwj referenced this in commit 6645eaf0ab on Mar 5, 2018
  19. fanquake deleted the branch on Mar 5, 2018
  20. deadalnix referenced this in commit 4770ec44e8 on Mar 19, 2020
  21. ftrader referenced this in commit 1490237f97 on May 19, 2020
  22. PastaPastaPasta referenced this in commit ef88462111 on Jun 9, 2020
  23. PastaPastaPasta referenced this in commit f4211ba144 on Jun 9, 2020
  24. PastaPastaPasta referenced this in commit 9716b15872 on Jun 10, 2020
  25. PastaPastaPasta referenced this in commit 3ff83acb83 on Jun 10, 2020
  26. PastaPastaPasta referenced this in commit ee09ae9113 on Jun 11, 2020
  27. PastaPastaPasta referenced this in commit 87dc8585db on Jun 11, 2020
  28. PastaPastaPasta referenced this in commit 2cf1ddcff5 on Jun 12, 2020
  29. PastaPastaPasta referenced this in commit d48810d0c5 on Jun 14, 2020
  30. gades referenced this in commit 272c49d185 on Jun 24, 2021
  31. CryptoCentric referenced this in commit 219bf18f33 on Jul 2, 2021
  32. DrahtBot locked this on Sep 8, 2021


theuni


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-26 06:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me