#15578 closed defect (fixed)
gmp: universal build is broken (t-get_d test fails)
Reported by: | ryandesign (Ryan Carsten Schmidt) | Owned by: | ryandesign (Ryan Carsten Schmidt) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 1.7.0 |
Keywords: | Cc: | illogic-al@…, MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) | |
Port: | gmp |
Description
I enabled the universal variant of gmp in r37327 because it seemed to build, but the test suite fails:
creating t-scan make check-TESTS PASS: t-asmtype PASS: t-aors_1 PASS: t-divrem_1 PASS: t-fat mpn_get_d wrong on 2^n bit 0 exp 0 want_bit 0 sign 0 n =0x1 nsize 1 want =[00 00 00 00 00 00 F0 3F] 1 got =[FE 07 00 00 00 00 00 00] 1.0108583113911904294e-320 FAIL: t-get_d PASS: t-instrument PASS: t-iord_u PASS: t-mp_bases PASS: t-perfsqr PASS: t-scan ================================== 1 of 10 tests failed Please report to gmp-bugs@swox.com ================================== make[4]: *** [check-TESTS] Error 1 make[3]: *** [check-am] Error 2 make[2]: *** [check-recursive] Error 1 make[1]: *** [check-recursive] Error 1 make: *** [check] Error 2
I'm asking the developers for help with this problem.
Change History (13)
comment:1 Changed 16 years ago by ryandesign (Ryan Carsten Schmidt)
comment:2 Changed 16 years ago by illogic-al@…
Hi. I just "fixed" gmp to allow for universal builds in a recent check-in. I didn't realize this ticket was here. But, now that it's all said and done, I'd like to keep it as is until I test out some software which requires it. I'll report back on what happens when run on a ppc and intel machine.
comment:4 Changed 16 years ago by ryandesign (Ryan Carsten Schmidt)
Port: | gmp added |
---|
Removed universal variant again because it does not produce a viable gmp. See notes in duplicate #16935. The gmp developers are hostile towards the use of Apple gcc in general; they are unlikely to support a universal build. Please see the above referenced conversation I had with the developers of gmp in which they did not even know what a universal binary was.
comment:5 Changed 16 years ago by illogic-al@…
Unfortunate, but understandable. I tested the app using gmp (KCalc) and from my limited testing it worked fine. I saw the other bug about the UB failing compilation on ppc however so that doesn't help much. Do you think I should try to do that builds for each arch separately, as with cairo? We could provide each generated file in the port's file directory, then copy it over after configure right? I don't actually _need_ this Portfile to build as a universal (since I know how now) but I think it works when it does get built that way, so we might as well give it a shot i think. Also I think I'll bug the gmp people again. :-)
comment:6 follow-up: 7 Changed 16 years ago by blb@…
One issue I noticed was the gmp.h header file, which as (among other things) __GMP_HAVE_HOST_CPU_FAMILY_powerpc, on Intel it's 0, PowerPC it's a 1, so the header file is technically not universal...
comment:7 follow-up: 8 Changed 16 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to blb@…:
One issue I noticed was the gmp.h header file, which as (among other things) __GMP_HAVE_HOST_CPU_FAMILY_powerpc, on Intel it's 0, PowerPC it's a 1, so the header file is technically not universal...
Right. We've overcome things like that in other ports; see the glib2 port for example.
It would be nice to have a universal gmp. We would need to see if gmp can be cross-compiled at all. If it can, then we still have the problem that probably the test suite cannot be run for the non-native architecture (at least, the Intel parts can probably not be tested on PowerPC; the PowerPC parts might be testable on Intel via Rosetta). I have learned the hard way (and it is stated in the gmp documentation) that the test suite must must must pass before you can use the built gmp. Otherwise you're just asking for trouble.
comment:8 Changed 16 years ago by illogic-al@…
Replying to ryandesign@…:
It would be nice to have a universal gmp. We would need to see if gmp can be cross-compiled at all. If it can, then we still have the problem that probably the test suite cannot be run for the non-native architecture (at least, the Intel parts can probably not be tested on PowerPC; the PowerPC parts might be testable on Intel via Rosetta). I have learned the hard way (and it is stated in the gmp documentation) that the test suite must must must pass before you can use the built gmp. Otherwise you're just asking for trouble.
Ok so the app I've tested, kcalc, links to a universal libgmp. I've tested on intel and ppc (rosetta) and nothing crashes. I'll ask the gmp developers this weekend.
comment:9 follow-up: 13 Changed 16 years ago by blb@…
Cc: | mcalhoun@… added |
---|
Is this still an issue with gmp using muniversal?
comment:10 Changed 16 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
As it stands now, gmp can build universal:
On an Intel Mac: ppc/i386, ppc/x86_64, or i386/x86_64
On a PPC Mac: ppc/ppc64
All the tests pass on the configurations I can test.
This is not quite ideal (no ppc/i386/x86_64 or 4-way universal), but there are no plans to improve the situation.
I would vote this ticket be closed.
comment:11 Changed 16 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | new → closed |
I built an i386/x86_64 universal and it passed all tests, so that's good. It's better than no universal at all. I'll close this for now.
comment:13 Changed 3 years ago by barracuda156
Replying to blb@…:
Is this still an issue with gmp using muniversal?
It is an issue with building for ppc on 10.6.8: https://trac.macports.org/ticket/64496
The developers have not been helpful and I haven't had sufficient time to look into this so I just disabled the universal variant again for now in r37785.