discuss-gnustep
[Top][All Lists]
Advanced

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

Re: GWorkspace on OpenBSD


From: Enrico Sersale
Subject: Re: GWorkspace on OpenBSD
Date: Tue, 12 Jun 2007 13:34:14 +0300
User-agent: GNUMail (Version 1.2.0)

On 2007-06-10 08:50:05 +0300 Sebastian Reitenbach 
<sebastia@l00-bugdead-prods.de> wrote:

Hi,

I had some trouble to get GWorkspace to run on OpenBSD 4.1. I took the OpenBSD ports from http://mail.rochester.edu/~asveikau/gnustep-openbsd/, updated them to use gnustep-make-2.0.1, gnustep-base-1.15.0, gnustep-gui-0.12.0, gnustep-back-0.12, and GWorkspace-0.8.6. After installing, trying to start it, GWorkspace aborted with the following message:

Critical Error in GWorkspace
NSInvalidArgumentException: NSTask - launch path (mount) not valid

It took me a while to find out what this message wants me to know. After running GWorkspace it in the debugger, I saw it stopping here:

(gdb) bt
...
#10 0x0a34f3c5 in -[NSWorkspace(mounting) mountedVolumes] (self=0x87b4e928, _cmd=0x2a347848) at FSNodeRep.m:756 ...

This NSWorkspace's -mountedVolumes method, implemented by gworkspace in a 
category, is necessarily a compromise, an hack; the criteria it uses are:

#ifdef __APPLE__
  it uses getmntinfo() - tested on darwin.
#else
  #if defined(HAVE_GETMNTENT) && defined(MNT_DIR)
    it uses getmntent() - this is the default on linux.
  #else
    it uses [[NSProcessInfo processInfo] operatingSystem] and takes in 
consideration two cases:
          NSGNULinuxOperatingSystem:
            it parses /etc/mtab - this has been tested by me on Linux 
commenting the getmntent() part.  
          NSBSDOperatingSystem:
        it uses a NSTask, that is, the output of "mount -p" - this has been 
suggested by a FreeBSD user and should return a NSString equivalent to the contents of 
/etc/mtab on Linux. Untested by me.

For all the other cases an empty NSArray is returned.

I've not OpenBSD; the only solution I can see is if you write a patch for this method or 
(simplier) tell me the equivalent on OpenBSD for "mount -p".

The problem is easily explained: on OpenBSD mount is in /sbin, not in /bin. /sbin is not in $PATH environment variable of the user, therefore GWorkspace does not find the mount command automagically. The fix is to add /sbin to the PATH environment variable. With this done, I see another error message on the console regarding mount. Mount is called with parameter -p (on Linux to specify a file descriptor to read passwords from). This parameter does not exist on OpenBSD, therefore at least one call to mount fails, but does not seem to be fatal.






reply via email to

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