discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUstep + libobjc2 and powerpc ( was "libobjc2 on powerpc")


From: Josh Freeman
Subject: Re: GNUstep + libobjc2 and powerpc ( was "libobjc2 on powerpc")
Date: Wed, 21 Mar 2018 15:33:55 -0400

On Mar 21, 2018, at 9:43 AM, David Chisnall wrote:

4. The script on the wiki builds and install gnustep-make two times :
before and after libobjc2 ? Is it still correct ?

No, that’s definitely wrong. It dates back to when I tried to use GNUstep Make to build libobjc2, but that led to circular dependencies.

The reason for installing gnustep-make twice is that libobjc2's install path depends on whether gnustep-config is present (at least on Debian/Ubuntu): If gnustep-config is present, libobjc2 installs to / usr/GNUstep/Local/Library/ - if not, it installs to /usr/local/lib/.

GNUstep-make's configure won't find libobjc2 in /usr/local/lib/; It'll still successfully configure ("checking for custom shared objc library... NONE"), build, & install, but then GNUstep-base will fail to build - its configure will fail the "checking whether objc really works..." test because no runtime was found.

So, GNUstep make's first (pre-libobjc2) install puts gnustep-config in place so that libobjc2 will install in a location where GNUstep make's second, post-libobjc2 install can find & use it as the runtime.


5. For gnustep-make build, is this line still mandatory ?
"git checkout `git rev-list -1 --first-parent --before=2017-04-06
master` # fixes segfault, should probably be looked at."

Has this bug in gnustep-make been fixed since 2017-04-06

I can’t speak for Ubuntu, but that definitely isn’t needed on FreeBSD.

That line was added as a workaround for an issue that caused all apps (on Debian/Ubuntu) to segfault. The issue turned out to be incorrect instance-variable offsets when using libobjc2's nonfragile- abi.

The reason the script's git-checkout command fixes the crashes is that until 2017-04-06, gnustep-make's build flag for setting the nonfragile-abi was in the wrong place, so gnustep-make builds ended up using the fragile-abi (incorrect abi, but no crashes); When a gnustep- make fix for the nonfragile-abi flag was checked in on 2017-04-07, builds started using the correct abi, and the crashes appeared. (The libobjc2 ivar-offset bug was already present before then, but it was hidden due to using the fragile-abi).

I posted a libobjc2 patch awhile back with a workaround, and an updated Ubuntu script that installs the patch & can then use the current gnustep-make from the trunk (rolling it back to 2017-04-06 no longer needed). As far as I know, that patch & script are currently the only way to install GNUstep on Debian/Ubuntu so that it uses the nonfragile-ABI (until a fix is checked into clang). This bug report has some more info:
https://github.com/gnustep/libobjc2/issues/52

Cheers,

Josh




reply via email to

[Prev in Thread] Current Thread [Next in Thread]