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

Darko Volaric lists at darko.org
Mon Aug 3 20:59:26 CEST 2009


Putting it in /etc would mean that having different active versions of  
compiler would e a pain, which is useful when developing, debugging or  
trying out new versions of the compiler and when compilers are not  
self hosted, which will be the case for ARM_DARWIN.

What's the benefit of having it /etc other than being "standard"?


On 03/08/2009, at 5:25 PM, Olaf Wagner wrote:

> 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