reassign 593898 src:gnustep-base 1.20.1-3 retitle 593898 Should be built without libkvm on GNU/kFreeBSD; +[NSProcessInfo load] aborts programs with many arguments if HAVE_KVM_ENV thanks
В 12:39 +0200 на 27.08.2010 (пт), Axel Beckert написа: > > I'd be surprised if it builds, > > It does build. > > > and even more surprised if it works. > > At least mknfonts works, too. Thanks, that's good news. I wonder why libkvm-dev was added as build-dependency during the initial GNU/kFreeBSD support (#267889). Probably the kernel+system was less capable 5 years ago, and it was actually needed. > Anything else I should check (some GUI stuff perhaps) if it still > works? Yes. Because such a change is a bit risky at this point of the release preparation, please do the following: 1. Check if there are any compilation warnings for Source/NSProcessInfo.m 2. Run some non-trivial apps (cenon.app, gworkspace.app, cynthiune.app) and see if you can spot some bugs (except the usual ones, I mean :-)). 3. Compile and run the attached test program. As far as I can see from the code, -[NSProcessInfo operatingSystemName] will issue a warning and return the incorrect GSGNULinuxOperatingSystem. That's completely harmless (and not a regression); I'll fix it directly upstream when I get a chance to resurrect my GNU/kFreeBSD machine. All tests should pass, otherwise we need to investigate more. Thanks!
#import <Foundation/Foundation.h> static void test (NSUInteger pass, NSString *desc) { GSPrintf (stderr, pass ? @"PASS: " : @"FAIL: "); GSPrintf (stderr, @"%...@\n", desc); } int main (int argc, char **argv, char **env) { CREATE_AUTORELEASE_POOL (pool); id o; int pid; BOOL log; NSUInteger v; NSString *f; NSProcessInfo *pinfo; pinfo = [NSProcessInfo processInfo]; test (pinfo != nil, @"+processInfo"); o = [pinfo arguments]; test (pinfo != nil && o != nil && [o isKindOfClass: [NSArray class]] && [o count] > 0, @"-arguments"); o = [pinfo environment]; test (o != nil && [o isKindOfClass: [NSDictionary class]], @"-environment"); o = [pinfo globallyUniqueString]; test (o != nil && [o isKindOfClass: [NSString class]] && [o length] > 0, @"-globallyUniqueString"); GSPrintf (stderr, @"\tUnique string: %...@\n", o); o = [pinfo hostName]; test (o != nil && [o isKindOfClass: [NSString class]] && [o length] > 0, @"-hostName"); GSPrintf (stderr, @"\tHostname: %...@\n", o); v = [pinfo operatingSystem]; test (v > 0, @"-operatingSystem"); o = [pinfo operatingSystemName]; test (o != nil && [o isKindOfClass: [NSString class]] && [o length] > 0, @"-operatingSystemName"); GSPrintf (stderr, @"\tOperating system: %...@\n", o); o = [pinfo operatingSystemVersionString]; test (o != nil && [o isKindOfClass: [NSString class]] && [o length] > 0, @"-operatingSystemVersionString"); GSPrintf (stderr, @"\tVersion: %...@\n", o); pid = [pinfo processIdentifier]; test (pid > 0, @"-processIdentifier"); GSPrintf (stderr, @"\tPID: %d\n", pid); o = [pinfo processName]; test (o != nil && [o isKindOfClass: [NSString class]] && [o length] > 0, @"-processName"); GSPrintf (stderr, @"\tProcess name: %...@\n", o); [pinfo setProcessName: @"foo"]; test ([pinfo processName] == @"foo", @"-setProcessName:"); GSPrintf (stderr, @"\tNew process name: %...@\n", [pinfo processName]); f = NSTemporaryDirectory (); f = [f stringByAppendingPathComponent: @"NSProcessInfo_test"]; log = [pinfo setLogFile: f]; test (log, @"-setLogFile:"); GSPrintf (stderr, @"\tLog file: %...@\n", f); RELEASE (pool); exit (EXIT_SUCCESS); }