Closed agirault closed 5 years ago
Yeah, sorry about that. I broke this little while ago with some changes for #36. See the discussion there for more details. Short version is you should be able to update to 1ebe6e7654d9c9e1792076ee3827a45d5d2f34c5 and have things work again.
Actually, after testing this a little bit it looks like it's something to do with the version of Boost you're trying to build (1.63.0) rather than the script itself. If I run the same command with Boost 1.68 or newer it works fine. Is there some reason you aren't able to use a newer version of Boost?
I'm sure it's possible to make the script support older versions of Boost, but honestly that would be a low priority for me & I can't guarantee that I'll be able to dedicate time to doing that any time soon. One option might be to roll back to an older version of the script (I couldn't tell you which one off the top of my head). Another might be to run the script like this: ./boost.sh -ios --boost-version 1.63.0 --min-ios-version 10.0 --boost-libs "filesystem system program_options"
, omitting the --ios-archs
flag and adding the --min-ios-version
flag. This will produce both 32- and 64-bit binaries. You would then need to manually run the lipo
command to strip out the 32-bit binaries.
Gotcha thanks
Is there some reason you aren't able to use a newer version of Boost?
We've locked 1.63 for a project in the same ecosystem so wanted to match that, but we can also consider upgrading it all around the board, so I'll take a look at that.
If I run the same command with Boost 1.68 or newer it works fine
I tried with 1.68 and 1.69, using the specific boost libs I listed above or using the default ones:
./boost.sh -ios --ios-archs arm64 --boost-version 1.68.0 --boost-libs "filesystem system program_options"
./boost.sh -ios --ios-archs arm64 --boost-version 1.68.0
./boost.sh -ios --ios-archs arm64 --boost-version 1.69.0 --boost-libs "filesystem system program_options"
./boost.sh -ios --ios-archs arm64 --boost-version 1.69.0
They all yield to an issue building for the iPhoneSimulator (building for iPhone works):
Performing configuration checks
- default address-model : 64-bit
- default architecture : none
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/feature.jam:787: in expand-composites from module feature
error: explicitly-specified values of non-free feature <toolset-darwin:version> conflict
error: existing values: 12.2~iphonesim 12.2~iphone
error: value from expanding <toolset-darwin:version>12.2~iphone : 12.2~iphone
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/feature.jam:872: in feature.expand from module feature
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/targets.jam:1103: in evaluate-requirements from module targets
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/targets.jam:1121: in common-properties2 from module targets
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/targets.jam:1017: in targets.common-properties from module targets
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/targets.jam:1313: in alias-target-class.generate from module object(top-level-target)@282
Apple-Boost-BuildScript/src/boost_1_68_0/boostcpp.jam:500: in build-multiple from module object(top-level-target)@282
Apple-Boost-BuildScript/src/boost_1_68_0/boostcpp.jam:490: in class@top-level-target.generate from module object(top-level-target)@282
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/targets.jam:812: in generate-really from module object(main-target)@2485
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build/targets.jam:784: in class@main-target.generate from module object(main-target)@2485
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/build-system.jam:797: in load from module build-system
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/kernel/modules.jam:295: in import from module modules
Apple-Boost-BuildScript/src/boost_1_68_0/tools/build/src/kernel/bootstrap.jam:139: in boost-build from module
Apple-Boost-BuildScript/src/boost_1_68_0/boost-build.jam:17: in module scope from module
Need the full log? Should I open a new issue?
That's weird. Is that where the log ends? Full log might be helpful.
Also, did you pull the changes I just pushed this morning? I fixed a problem regarding architectures (but I don't think it would have been a problem with just a single arch though)
Thanks for the light-speed turnaround @faithfracture.
That's weird. Is that where the log ends?
It was. Full log here, but maybe worth looking below beforehand.
Also, did you pull the changes I just pushed this morning?
Pull in the latest changes from this morning, not seeing the issue above anymore, but a new one now when running simply ./boost.sh -ios --ios-archs arm64
:
So, even though it said Building Boost for iPhoneSimulator - Done
, the content of the x86_64
build doesn't seem right: I only have a libboost.a
library that weights 8bytes and no other static lib (while arm64
has one for each library). The obj directories are also empty, but looks like that's the same for arm64
.
Same with 1.68.0.
Full log: ios-build.log
Eh, whoops. Forgot to update an array variable. I'll have a fix shortly.
Ok, should be fixed with c1a06916785260239deedd098a6fc818b9d75e2c
All good. Again, thanks for the quick fixes @faithfracture.
Should we keep that issue open for the initial problem regarding the arm
arch for boost < 1.68
even if there are no planned patches in the near future?
I think it's OK to close it, since it'll still be searchable in the closed issues for anyone else running into this. I'll re-name it though, so it's more clear what the actual issue wound up being.
I tried to build a couple of boost libs for ios 11.0 and higher (so 64 bits only, aka
arm64
architecture), this is what I call:The build fails, due to those errors:
It seems it tries to build for 32-bit even though we specify
arm64
as the only architecture. When looking at the log, I see the compiler makes some calls to-arch arm
and not just"-arch" "arm64"
, which I would guess is the cause of the issue:Edit: I can confirm that when running the
clang++
command above without the-arch arm
flag, it builds the object file just fine. I couldn't figure out inboost.sh
why/where that flag is added though.Full log:
Thanks for your work, it looks pretty fantastic. Looking forward to using it!