#13166: Gkrellm fails to build on Mac OS X 10.5 Leopard (kvm.h not found) -----------------------------------+---------------------------------------- Reporter: daniel@hulsteijn.net | Owner: markd@macports.org Type: defect | Status: new Priority: Normal | Milestone: Port Bugs Component: ports | Version: 1.5.0 Resolution: | Keywords: gkrellm kvm -----------------------------------+---------------------------------------- Comment (by syrinx@cfl.rr.com): Replying to [comment:5 afb@macports.org]:
Replying to [comment:2 nox@macports.org]:
Seems somewhat the same as #13201.
Difference being that this port actually uses kvm, while the other didn't (just a extra #include)
I was able to get it to compile and work. Here's what I did: 1. Observe 'sudo port install gkrellm' fails with the above message. 2. cd to /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_sysutils_gkrellm/work/gkrellm-2.3.0/src 3. Attempt to manually compile the one file by including the extra -I for kvm.h: sudo cc -Wall -O2 -I.. `pkg-config --cflags gtk+-2.0 gthread-2.0` -DENABLE_NLS -DLOCALEDIR=\"/opt/local/share/locale\" -DHAVE_GETADDRINFO -I/opt/local/include -L/opt/local/lib -I/opt/local/include -I/Developer/SDKs/MacOSX10.4u.sdk/usr/include -c -o sysdeps-unix.o sysdeps-unix.c Password: In file included from sysdeps-unix.c:34: sysdeps/darwin.c: In function ‘gkrellm_sys_cpu_read_data’: sysdeps/darwin.c:69: warning: pointer targets in passing argument 3 of ‘host_processor_info’ differ in signedness sysdeps/darwin.c: In function ‘gkrellm_sys_cpu_init’: sysdeps/darwin.c:95: warning: pointer targets in passing argument 3 of ‘host_processor_info’ differ in signedness In file included from /System/Library/Frameworks/IOKit.framework/Headers/IOKitLib.h:51, from sysdeps/darwin.c:250, from sysdeps-unix.c:34: /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h: At top level: /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h:85: error: ‘io_user_reference_t’ undeclared here (not in a function) /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h:87: error: syntax error before ‘OSAsyncReference64’ /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h:92: error: syntax error before ‘OSAsyncReference64’ /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h:99: error: syntax error before ‘}’ token /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h:103: error: syntax error before ‘io_user_reference_t’ 4. sudo vi /System/Library/Frameworks/IOKit.framework/Headers/OSMessageNotification.h' to edit the file and include this typedef uint64_t io_user_reference_t; This should go just before the enum that first references it (search for the first occurance of io_user_reference_t, and stick the typedef just before the struct) 5. Retry step 3, it should work. 6. Try again to 'sudo port install gkrellm' - observe another failure about a missing kvm library: sudo port install gkrellm ---> Building gkrellm with target darwin Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_sysutils_gkrellm/work/gkrellm-2.3.0" && gnumake darwin " returned error 2 Command output: (cd po && gnumake all) gnumake[1]: Nothing to be done for `all'. (cd src && gnumake GTK_CONFIG=gtk-config STRIP= HAVE_GETADDRINFO=1 \ EXTRAOBJS= SYS_LIBS="-lkvm -framework IOKit" \ LINK_FLAGS="-prebind -Wl,-bind_at_load -framework CoreFoundation -lX11" \ gkrellm ) cc -Wall -O2 -I.. `pkg-config --cflags gtk+-2.0 gthread-2.0` -DENABLE_NLS -DLOCALEDIR=\"/opt/local/share/locale\" -DHAVE_GETADDRINFO main.o alerts.o battery.o base64.o clock.o cpu.o disk.o fs.o hostname.o inet.o mail.o mem.o net.o proc.o sensors.o uptime.o chart.o panel.o config.o gui.o krell.o plugins.o pixops.o smbdes.o smbencrypt.o smbmd4.o smbutil.o client.o utils.o deprecated.o winops-x11.o sysdeps-unix.o -o gkrellm `pkg-config --libs gtk+-2.0 gthread-2.0` -L/usr/X11R6/lib -lSM -lICE -lkvm -framework IOKit -lssl -lcrypto -prebind -Wl,-bind_at_load -framework CoreFoundation -lX11 ld: library not found for -lkvm collect2: ld returned 1 exit status gnumake[1]: *** [gkrellm] Error 1 gnumake: *** [darwin] Error 2 Error: Status 1 encountered during processing. 7. Go back to the same directory, and try to manually link the gkrellm binary and omit the -lkvm: sudo cc -Wall -O2 -I.. `pkg-config --cflags gtk+-2.0 gthread-2.0` -DENABLE_NLS -DLOCALEDIR=\"/opt/local/share/locale\" -DHAVE_GETADDRINFO main.o alerts.o battery.o base64.o clock.o cpu.o disk.o fs.o hostname.o inet.o mail.o mem.o net.o proc.o sensors.o uptime.o chart.o panel.o config.o gui.o krell.o plugins.o pixops.o smbdes.o smbencrypt.o smbmd4.o smbutil.o client.o utils.o deprecated.o winops-x11.o sysdeps-unix.o -o gkrellm `pkg-config --libs gtk+-2.0 gthread-2.0` -L/usr/X11R6/lib -lSM -lICE -framework IOKit -lssl -lcrypto -prebind -Wl,-bind_at_load -framework CoreFoundation -lX11 It works! To quickly try the binary, just type './gkrellm' 8. Copy the binary to your location of choice. 9. Puke in a bucket, wash your hands, and say your hail mary's because this is a HUGE hack that has unknown consequences to all other apps, and should only be used to do the 'real' fix. -- Ticket URL: <http://trac.macports.org/ticket/13166#comment:7> MacPorts <http://www.macports.org/> Ports system for Mac OS