[M3devel] HEADS UP: cm3.cfg locations, was: Re: problems with cm3.cfg and MxConfig

Olaf Wagner wagner at elegosoft.com
Mon Aug 3 17:25:37 CEST 2009


Quoting Tony Hosking <hosking at cs.purdue.edu>:

> I don't think we did agree that config files reside other than in the
> cm3 hierarchy.

I may have been too quick to extend the search path some weeks ago.
I'm really undecided myself. I guess the score currently is
+2 for cm3/ +1 /etc :-)

But we should perhaps really come to an agreement that is acceptable
for all here.

Olaf

> On 3 Aug 2009, at 06:30, Olaf Wagner wrote:
>
>> It was a specific request from the people building platform specific
>> installation packages that config files reside and are found in the
>> `usual' locations on their system and not somewhere beneath cm3.
>>
>> Place don't change that unless there is no objection from anyone
>> on m3devel.
>>
>> Olaf
>>
>> Quoting Jay K <jay.krell at cornell.edu>:
>>
>>> Sorry about #1 Randy, my mistake.
>>>
>>>
>>> Sitting in the bin directory...seems a little wierd, eh?
>>> What source are you going to build sitting there?
>>> I guess um some custom quake code??
>>> Good enough if empty is instead just "."?
>>>
>>> This falls out of the fact that cm3 actually probes all over the    
>>>  place for the cm3.cfg file and the first place it looks in is the  
>>>    current directory.
>>>
>>>
>>> Another good option I think would be just to remove that probe.
>>> It looks in way too many places.
>>>
>>>
>>> Here is the current code. I think it is gross.
>>> Too much probing make things quite ambiguous.
>>>
>>>
>>> PROCEDURE FindConfig () =
>>> (* LL = mu *)
>>> VAR txt: TEXT;
>>> BEGIN
>>>   IF (found) THEN RETURN END;
>>>
>>>   (* try the current directory *)
>>>   IF TryConfig (Filename) THEN RETURN END;
>>>
>>>   (* try the immediate source directory *)
>>>   IF TryConfig ("src", Filename) THEN RETURN END;
>>>
>>>   (* try the sibling source directory *)
>>>   IF TryConfig ("..", "src", Filename) THEN RETURN END;
>>>
>>>   (* try the M3CONFIG environment variable *)
>>>   txt := QMachine.GetEnv (NIL, "M3CONFIG");
>>>   IF (txt # NIL) THEN
>>>     IF TryConfig (txt) THEN RETURN END;
>>>     IF TryConfig (txt, Filename) THEN RETURN END;
>>>   END;
>>>
>>>   (* try the directory containing the current executable *)
>>>   txt := Pathname.Prefix (Params.Get (0));
>>>
>>>   IF Text.Length (txt)> 0 THEN
>>>     IF TryConfig (txt, Filename) THEN RETURN END;
>>>   END;
>>>
>>>   (* try the directories named by the PATH environment variable. *)
>>>   txt := Env.Get ("PATH");
>>>   FindConfigInPath (txt);
>>>
>>>   IF found THEN RETURN END;
>>>
>>>   (* try the etc directories *)
>>>   IF TryConfig("/usr/local/cm3/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/usr/cm3/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/cm3/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/usr/contrib/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/usr/local/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/usr/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/opt/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/sw/etc", Filename) THEN RETURN END;
>>>   IF TryConfig("/etc", Filename) THEN RETURN END;
>>>
>>>   (* oh well, make sure we don't try this silly exercise again... *)
>>>   config := NIL;
>>>   found := TRUE;
>>> END FindConfig;
>>>
>>>
>>> I propose..roughly roughly, we make it like this instead:
>>>
>>>
>>> PROCEDURE FindConfig () =
>>> (* LL = mu *)
>>> VAR txt: TEXT;
>>> BEGIN
>>>   IF (found) THEN RETURN END;
>>>
>>>   (* try the M3CONFIG environment variable *)
>>>   txt := QMachine.GetEnv (NIL, "M3CONFIG");
>>>   IF (txt # NIL) THEN
>>>     IF TryConfig (txt) THEN RETURN END;
>>>     IF TryConfig (txt, Filename) THEN RETURN END;
>>>   END;
>>>
>>>   (* try the directory containing the current executable *)
>>>   txt := Pathname.Prefix (Params.Get (0));
>>>   IF Text.Length (txt)> 0 THEN
>>>     IF TryConfig (txt, Filename) THEN RETURN END;
>>>   END;
>>>
>>>   (* oh well, make sure we don't try this silly exercise again... *)
>>>   config := NIL;
>>>   found := TRUE;
>>> END FindConfig;
>>>
>>>
>>> or, if people really like it looking all over the place, fixing    
>>> the  case of it being in the current working directory is probably  
>>>   like  this:
>>>
>>>
>>>   (* try the current directory *)
>>> <    IF TryConfig (Filename) THEN RETURN END;
>>>>  IF TryConfig (".", Filename) THEN RETURN END;
>>>
>>>
>>> - Jay
>>>
>>>
>>>
>>> ----------------------------------------
>>>> From: jay.krell at cornell.edu
>>>> To: rcoleburn at scires.com
>>>> Date: Sun, 2 Aug 2009 23:42:17 -0700
>>>> CC: m3devel at elegosoft.com
>>>> Subject: Re: [M3devel] problems with cm3.cfg and MxConfig
>>>>
>>>> Host, hm, I think probably my mistake. It is defined by cm3 but not
>>>> all m3quake users. Path() should be the directory containing the  file
>>>> with the call.
>>>>
>>>> - Jay (phone)
>>>>
>>>> On Aug 2, 2009, at 9:52 PM, "Randy Coleburn"
>>>> wrote:
>>>>
>>>>> I have been working on the problem of cm3ide not getting the
>>>>> BUILD_DIR from cm3.cfg. I've run across some perplexing test  results.
>>>>>
>>>>> MxConfig.Get("BUILD_DIR") is returning NIL on Windows XP & Vista.
>>>>> I've tracked it down a bit further. There seem to be two issues
>>>>> that must be fixed to solve this problem:
>>>>>
>>>>> 1. HOST does not seem to be defined. In particular my "C:\cm3\bin
>>>>> \cm3.cfg" file appears as follows (this is the file Jay  recommended):
>>>>> INSTALL_ROOT = path() & "/.."
>>>>> include (path() & "/config/" & HOST)
>>>>>
>>>>> Is HOST a variable? Or, was I supposed to replace it by "NT386"?
>>>>> If the latter, my bad on this one--I took Jay's message literally.
>>>>>
>>>>> 2. path() does not appear to always yield the path to the bin
>>>>> folder. In particular, it seems to work fine unless you invoke the
>>>>> program when the current directory is actually set to the bin
>>>>> folder, in which case path() seems to return the empty string.
>>>>>
>>>>> So, if Í%=C:\, and I run cm3ide, path() returns "C:\cm3\bin" as  it s
>>>>> hould.
>>>>> But, if Í%=C:\cm3\bin, and I run cm3ide, path() returns "".
>>>>>
>>>>> So in the latter case, the include statement winds up trying to  pull
>>>>> a file from the wrong place, e.g. "/config/NT386" rather than "C:
>>>>> \cm3\bin/config/NT386"
>>>>>
>>>>> Regards,
>>>>> Randy Coleburn
>>
>>
>>
>> -- 
>> Olaf Wagner -- elego Software Solutions GmbH
>>              Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,  Germany
>> phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23  
>>   45 86 95
>>  http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz:  Berlin
>> Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:    
>> DE163214194
>>



-- 
Olaf Wagner -- elego Software Solutions GmbH
                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
    http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




More information about the M3devel mailing list