Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
077b9df to
31f7825
Compare
theuni
left a comment
There was a problem hiding this comment.
Nice! Concept ack.
+1 for a new prog to replace our dmg hacks. I think that might also mean that we could get rid of CMake.
Will review in depth.
|
Concept ACK |
| Needs rebase |
|
Tested building depends on macOS 10.14.6 Mojave. I still had to do this annoying workaround: And building protobuf fails: log If I remove protobuf and native_protobuf it does build. I can then compile QT: ./autogen.sh
./configure --prefix=`pwd`/depends/x86_64-apple-darwin18.7.0 --disable-bip70
makeThis works, but I get a flood of warnings at the end: log Will test on macOS 10.15 Catalina later. We should backport this to 0.18 given #16387 and ideally do a 0.18.2 tag before Catalina is out (September or October). Our 0.19 release is scheduled for November #15940, so otherwise there's no tag to build from. Concept ACK on bumping macOS from 10.10 to 10.12, though a small percentage of users would have to stay on the 0.18 branch (the last tag before backport). The bottleneck for upgrading macOS is hardware, and that's pretty durable. Here are the minimum specs for 10.10: Some refurbished machines for sale: Some second hand machines at an even lower price point still work: |
Yep, that isn't new with this change, but may go away if we can remove any reliance on having the headers in the now deprecated location. See details in the
Did you try to build depends before installing the new headers? If you |
31f7825 to
536034b
Compare
|
Concept ACK. Aidium publishes their update stats and it looks like, >10% was using 10.11 this week. It'd say we wait with this. |
I thought I did, but maybe not. I just tried
If it doesn't break anything else, maybe we can do this bump when we bump QT to 5.12 (LTS)? |
536034b to
7decfd4
Compare
|
Updated to add some documentation (Linux) for the macOS 10.14 SDK extraction. This doesn't have to be the final docs, but should be useful for someone on a Linux machine wanting to extract the SDK and test this PR.
We don't have to bump the minimum to |
|
From Apple: "All Macintosh computers that can run Mountain Lion, Mavericks, or Yosemite can run El Capitan" (10.11). I suspect many people just don't realize they can upgrade. I managed to build
That means this PR is not enough to support Catalina, at least not without some other workaround. |
theuni
left a comment
There was a problem hiding this comment.
For the most part this looks great. I've added a few notes around libtapi which still needs a little work IMO.
I've not tried building yet, I'll work on getting an SDK extracted.
| $(MAKE) DESTDIR=$($(package)_staging_dir) install && \ | ||
| mkdir -p $($(package)_staging_prefix_dir)/lib/ && \ | ||
| cd $($(package)_extract_dir)/installed_libtapi && \ | ||
| cp lib/libtapi.so.6 $($(package)_staging_prefix_dir)/lib/ && \ |
There was a problem hiding this comment.
We want this built statically if possible, otherwise this introduces a (rather unnecessary) LDPATH runtime requirement. Does build.sh have static lib support?
|
I tested a few of my cleanup suggestions above, and they seem to work fine. |
7decfd4 to
97b3349
Compare
|
@theuni I've incorporated some of your suggestions (trimming the LD64 stuff, and the clang hacks) and added you as co-author to the relevant commits. We are now pointing back to upstream We are also now pointing back to the upstream
I still need to address:
|
|
Building depends on macOS 10.14.6 Mojave still works as of 97b3349. |
This also removes some now-unnecessary cctools hacks. Co-Authored-By: Cory Fields <[email protected]>
This also removes the obsolete mlinker-version option Co-Authored-By: Cory Fields <[email protected]>
Co-Authored-By: Carl Dong <[email protected]>
248526e to
7e21044
Compare
|
Tested ACK via a depends build with macOS SDK 10.14: |
Downloaded file seems broken. UPDATE: it was a download error. This one is ok. |
|
Tested ca5055a Cross compilation on Linux Mint 19.3 with depends and MacOSX10.14.sdk was contaminated by system Qt packages (#18042, #18045, #18051): The patch from #18051 was applied, then compilation passed successfully with loads of linker warnings like this: The resulted |
Gitian builds
|
|
@MarcoFalke Looks like DrahtBot is still missing the new SDK. |
|
re-ACK 7e21044 (rebased from 248526e) |
|
@fanquake I apologize for my lateness, but here's my outstanding changes so that we can generate and use the SDK with headers as requested: fanquake/bitcoin@macos-toolchain-update...dongcarl:2020-01-macos-sdk-with-headers Here are the new instructions: https://github.com/dongcarl/bitcoin/blob/adf9968de5dc872e3c51e538f6b99e9423b65bd3/contrib/macdeploy/README.md#step-2-generating-macosx1014sdktargz-from-xcodeapp |
|
Let's try to get this merged soon—if we still want this for 0.20 it's not something that should be done last minute. |
|
Built depends successfully on 10.14.6 Is there anything more to say re the "obsolete mlinker-version option"? Is it obsolete only in that it is no longer required for build? |
7e21044 build: use macOS 10.14 SDK (fanquake) ca5055a depends: native_cctools 921, ld64 409.12, libtapi 1000.10.8 (fanquake) 1de8c06 depends: clang 6.0.1 (fanquake) Pull request description: TLDR: This updates our macOS toolchain to use a newer version of Clang, cctools (including new [dependency on libtapi](https://github.com/tpoechtrager/cctools-port/tree/master#dependencies)), LD64 and the macOS SDK. I've been testing depends builds (`HOST=x86_64-apple-darwin16`) inside a Debian Buster [Docker container](https://github.com/fanquake/core-review/blob/master/docker/debian.dockerfile), and running the resultant `bitcoind` and `bitcoin-qt` binaries on a macOS `10.14.4` system. The `.dmg` generated by a `make deploy` also mounts correctly on the same macOS system. #### Clang Upgraded from `3.7.1` to [`6.0.1`](https://releases.llvm.org/6.0.1/docs/ReleaseNotes.html) #### cctools * cctools `877.8` -> [`921`](https://opensource.apple.com/tarballs/cctools/) * LD64 `253.9` -> [`409.12`](https://opensource.apple.com/source/ld64/) * TAPI [`1000.10.8`](https://opensource.apple.com/tarballs/tapi/) See [tpoechtrager/cctools-port](https://github.com/tpoechtrager/cctools-port/) and [tpoechtrager/apple-libtapi](https://github.com/tpoechtrager/apple-libtapi/). #### macOS SDK Upgraded from building against the macOS `10.11` SDK to the macOS `10.14` SDK. #### TODO - [x] Make the `10.14` SDK available to Travis. Fixes: #16052 Closes: #14797 ACKs for top commit: Sjors: re-ACK 7e21044 (rebased from 248526e) dongcarl: ACK 7e21044 Tree-SHA512: fd36a33dbfb98c144240f8c69b77343e3f5bc18d8cf7d40fff61f51ad48925ec1872e6daba34c4045b18b4c2c84c22c744ebf4cba11061a0305eed13975ceefe
Thanks, please add these instructions in a new PR! |
It's here! :-) #18072 |
dc9305b random: don't special case clock usage on macOS (fanquake) Pull request description: `clock_gettime()`, `CLOCK_MONOTONIC` and `CLOCK_REALTIME` are all available for use on macOS (now that we require macOS >=10.12 and build against 10.14). Use them rather than the [deprecated](https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/Mach/Mach.html) `mach_timespec_t` time API. I mentioned the possibility for this change [in #17270](#17270 (comment)). [master](1dbf335): ```bash 2019-12-23T20:49:43Z Feeding 216 bytes of dynamic environment data into RNG 2019-12-23T20:50:43Z Feeding 216 bytes of dynamic environment data into RNG ``` This PR: ```bash 2019-12-23T20:32:41Z Feeding 232 bytes of dynamic environment data into RNG 2019-12-23T20:33:42Z Feeding 232 bytes of dynamic environment data into RNG ``` ~~Depends on #16392.~~ Merged. ACKs for top commit: laanwj: ACK dc9305b Tree-SHA512: 18c2f336ea628f9cf7339b817381d230a18893fd9c0351bf99a39ca6f45c5b0a20af9d599d48d6c09515627d5edafa91337c17f9f790264251d2cdcb3763bbd5
dc9305b random: don't special case clock usage on macOS (fanquake) Pull request description: `clock_gettime()`, `CLOCK_MONOTONIC` and `CLOCK_REALTIME` are all available for use on macOS (now that we require macOS >=10.12 and build against 10.14). Use them rather than the [deprecated](https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/Mach/Mach.html) `mach_timespec_t` time API. I mentioned the possibility for this change [in bitcoin#17270](bitcoin#17270 (comment)). [master](1dbf335): ```bash 2019-12-23T20:49:43Z Feeding 216 bytes of dynamic environment data into RNG 2019-12-23T20:50:43Z Feeding 216 bytes of dynamic environment data into RNG ``` This PR: ```bash 2019-12-23T20:32:41Z Feeding 232 bytes of dynamic environment data into RNG 2019-12-23T20:33:42Z Feeding 232 bytes of dynamic environment data into RNG ``` ~~Depends on bitcoin#16392.~~ Merged. ACKs for top commit: laanwj: ACK dc9305b Tree-SHA512: 18c2f336ea628f9cf7339b817381d230a18893fd9c0351bf99a39ca6f45c5b0a20af9d599d48d6c09515627d5edafa91337c17f9f790264251d2cdcb3763bbd5





TLDR: This updates our macOS toolchain to use a newer version of Clang, cctools (including new dependency on libtapi), LD64 and the macOS SDK.
I've been testing depends builds (
HOST=x86_64-apple-darwin16) inside a Debian Buster Docker container, and running the resultantbitcoindandbitcoin-qtbinaries on a macOS10.14.4system. The.dmggenerated by amake deployalso mounts correctly on the same macOS system.Clang
Upgraded from
3.7.1to6.0.1cctools
877.8->921253.9->409.121000.10.8See tpoechtrager/cctools-port and tpoechtrager/apple-libtapi.
macOS SDK
Upgraded from building against the macOS
10.11SDK to the macOS10.14SDK.TODO
10.14SDK available to Travis.Fixes: #16052
Closes: #14797