discuss-gnustep
[Top][All Lists]
Advanced

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

Re: Problem with the GNUStep packages in FreebSD?


From: Edwin Ancaer
Subject: Re: Problem with the GNUStep packages in FreebSD?
Date: Sat, 20 Mar 2021 10:01:27 +0100

Wolfgang,

I did a reinstall of all installed ports. After a couple of hours of compilation, I can install from ports again, except for
*;


Op wo 17 mrt. 2021 om 11:28 schreef Wolfgang Lux <wolfgang.lux@gmail.com>:


> Am 16.03.2021 um 18:04 schrieb Edwin Ancaer <eancaer@gmail.com>:
>
> When I ran   nm -D libgnustep-gui.so, I did not find any of the undefined references, but I must admit that here, I'm argely out of my comfort zone, so it could be a normal situation.
>
> d: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSArray
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSException
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSMutableArray
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSWorkspace
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSAssertionHandler
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSMutableString
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSCharacterSet
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSFileHandle
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSOpenPanel
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSSavePanel
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSBox
> ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_class_name_NSPopUpButton
>
> What makes it worse is that Eclipse and Java survived the upgrade 🙁
>
> Could it be a problem with -fobjc-runtime=gnustep-1.8 in the link-statement. Shouldn't that have been 2.0 by now?

Oh, yes, well spotted. There’s obviously is mismatch of the runtime system versions. The names that the loader flags as missing make it look like the ProjectCenter framework was compiled for a 1.x version of the GNUstep runtime system. The 2.x versions use different names for the class objects (essentially replacing the prefix __objc_class_name_ by ._OBJC_CLASS_), so mixing libraries or programs compiled for an older version of the runtime with those for the current version is not possible.

Now I would expect that the FreeBSD packages don’t mix incompatible versions, so maybe uninstalling and then reinstalling all GNUstep related packages would get you straight again. Presumably the FreeBSD packages system has a command to recursively update all your installed packages, but as I said I’m not really an expert on this.

Wolfgang


Wolfgang, Riccardo,

Sorry to keep bothering you for what is probably a mistake I made during the upgrade of FreeBSD.  But I upgraded every installed port on the system, causing endless hours and hours of recompilations and installations. and reduced the linker errors in GNUMail and ProjectCenter (maybe  other gnustep ports are involved, but I did not try them allyet) to 1.

Can you give any indication where to look for a solution? 
Linking ProjectCenter gives:

cc   -L/usr/local/lib -fstack-protector-strong  -rdynamic -rdynamic -rdynamic  -rdynamic     -fuse-ld= -pthread -fexceptions -fobjc-runtime=gnustep-2.0 -fblocks  -o ProjectCenter.app/./ProjectCenter \
./obj/ProjectCenter.obj/PCAppController.m.o ./obj/ProjectCenter.obj/PCInfoController.m.o ./obj/ProjectCenter.obj/PCMenuController.m.o ./obj/ProjectCenter.obj/PCPrefController.m.o ./obj/ProjectCenter.obj/ProjectCenter_main.m.o   -L./Framework/ProjectCenter.framework/.  -L./Framework/ProjectCenter.framework/.  -L./Framework/ProjectCenter.framework/.   -L./Framework/ProjectCenter.framework/.    -L/usr/ports/devel/projectcenter/work/GNUstep/Library/Libraries -L/usr/local/GNUstep/Local/Library/Libraries -L/usr/local/GNUstep/System/Library/Libraries  -L/usr/local/lib -lProjectCenter   -lgnustep-gui    -lgnustep-base   -pthread -lobjc   -lm
ld: error: ./Framework/ProjectCenter.framework/./libProjectCenter.so: undefined reference to __objc_ivar_offset_NSView._tracking_rects.
cc: error: linker command failed with exit code 1 (use -v to see invocation)

libProjectCenter.so seems to depend on the latest gnustep libraries:
l
$ ldd /usr/ports/devel/projectcenter/work/ProjectCenter-0.6.2/Framework/ProjectCenter.framework/libProjectCenter.so
/usr/ports/devel/projectcenter/work/ProjectCenter-0.6.2/Framework/ProjectCenter.framework/libProjectCenter.so:
/usr/ports/devel/projectcenter/work/ProjectCenter-0.6.2/Framework/ProjectCenter.framework/libProjectCenter.so:
        libobjc.so.4.6 => /usr/local/lib/libobjc.so.4.6 (0x8006f0000)
        libgnustep-base.so.1.27 => /usr/local/GNUstep/System/Library/Libraries/libgnustep-base.so.1.27 (0x800e00000)
        libgnustep-gui.so.0.28 => /usr/local/GNUstep/System/Library/Libraries/libgnustep-gui.so.0.28 (0x801400000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80072500
0)

The strange thing is, that symbol seems to be in the libgnustep-gui library:

$ nm  /usr/local/GNUstep/System/Library/Libraries/libgnustep-gui.so.0.28 | grep __objc_ivar_offset_NSView._tracking_rects
000000000049f61c d __objc_ivar_offset_NSView._tracking_rects.
$


Thanks for helping out again,

Edwin Ancaer




reply via email to

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