[M3devel] python build problems

Jay K jayk123 at hotmail.com
Sun Sep 8 06:39:46 CEST 2013

We crossed emails. The order in upgrade.py isn't the order run, it is filtered through pkginfo.txt.
m3cgcat is not really needed here. I was using it a lot with the C backend, but no longer.
m3bundle's presence here is questionable. It isn't used to build cm3.
m3cggen is there for communicating rare but occurring changes to m3cc, so should be filtered out along with m3cc, optionally.
mklib is only for NT targets. I would like to remove it, but that isn't trivial -- cm3 should produce the .def files and I guess list every function in every capital I Interface .i3 file.
But it works.  
The unneeded stuff builds ok.  
 - Jay
From: rcolebur at SCIRES.COM
To: jayk123 at hotmail.com; m3devel at elegosoft.com
Subject: RE: python build problems
Date: Sun, 8 Sep 2013 04:23:48 +0000


Thanks for your help.

Re #3 below, if I put mklib back in, the order my script gets for the 1st step (front end) is:

     1. m3-win\import-libs

     2. m3-libs\sysutils

     3. m3-sys\m3middle

     4. m3-sys\m3objfile

     5. m3-sys\m3linker

     6. m3-sys\m3back

     7. m3-sys\m3cggen

     8. m3-sys\m3front

     9. m3-sys\m3quake

    10. m3-sys\cm3

    11. m3-sys\m3cgcat

    12. m3-sys\mklib

whereas, upgrade.py compiles the following in order for the 1st step (front end):

    1. "import-libs"

    2. "m3bundle"

    3. "m3middle"

    4. "m3quake"

    5. "m3objfile"

    6. "m3linker"

    7. "m3back"

    8. "m3front"

    9. "sysutils"

   10. "cm3"

   11. "m3cggen"

   12. "mklib"

   13. "m3cgcat"

If Re#2 you say the order in pkginfo.txt is correct, then my script must be interpreting something wrong if the order in upgrade.py is what should be used, or either you have some reason for doing it different in upgrade.py.  Please advise.

Re#4, are you saying I should try one of these "fixes" or is that something you plan to do?

Re#1, I'll hold off further work till you let me know.  Also, I'm not sure whether my old cm3 had LONGINT in it or not.  Is there an easy way to tell?


Randy Coleburn

From: Jay K [jayk123 at hotmail.com]

Sent: Saturday, September 07, 2013 11:54 PM

To: Coleburn, Randy; m3devel

Subject: EXT:RE: python build problems

 1. I'll remove the Cstdint dependency. That is in newer m3core. 

    But you are correctly using an older m3core for the bootstrap.

    Please give me a bit of time. Maybe tonight.

    Does your cm3 provide LONGINT? 

 2. The order is correct in pkginfo.txt.

 3. The problem wasn't the order but which you were building.

    You were missing mklib. You need a newer mklib

    to fix the "_xmm" problem. Look at upgrade.py or upgrade.sh closely.

 4. AttributeError: 'NoneType' object has no attribute 'startswith' 

   Probably due to an older cm3 that doesn't output host/target. 

   Maybe fixable with set CM3_TARGET=I386_NT or NT386 or such. 

 - Jay

From: rcolebur at SCIRES.COM

To: m3devel at elegosoft.com; jayk123 at hotmail.com

Subject: python build problems

Date: Sun, 8 Sep 2013 03:48:00 +0000


I'm still having lots of problems.

I installed python 2.7 on WinXP-32bit and tried upgrade.py against a working cm3 circa 2008.

I get the following error:

Traceback (most recent call last):

  File "C:\cm3\Sandbox\cm3\scripts\python\upgrade.py", line 4, in <module>

    import pylib

  File "C:\cm3\Sandbox\cm3\scripts\python\pylib.py", line 631, in <module>

    if Target.startswith("NT386"):

AttributeError: 'NoneType' object has no attribute 'startswith'

Looking at upgrade.py, it seems the first set of compilations is in the following order:

"import-libs", "m3bundle", "m3middle", "m3quake", "m3objfile",

                            "m3linker", "m3back", "m3front", "sysutils",

                            "cm3", "m3cggen", "mklib", "m3cgcat"

So, I tried to manually follow this order by cd to each folder, removing the NT386, running cm3, then cm3 -ship.  Things go well until I get to m3back, where I get the following error:


--- building in NT386 ---

ignoring ..\src\m3overrides

new source -> compiling TIntN.i3

new source -> compiling TIntN.m3

new source -> compiling TWordN.i3

new source -> compiling TWordN.m3

new source -> compiling M3x86.i3

new source -> compiling Wrx86.i3

new source -> compiling M3x86Rep.i3

new source -> compiling Codex86.i3

new source -> compiling Stackx86.i3

new source -> compiling M3x86.m3

new source -> compiling M3C.i3

new source -> compiling M3C.m3

"..\src\M3CC.i3", line 2: unable to find interface (Cstdint)

"..\src\M3CC.i3", line 4: undefined (Cstdint.int32_t)

"..\src\M3CC.i3", line 6: undefined (Cstdint.uint32_t)

3 errors encountered

new source -> compiling M3CC.i3


1 error encountered

new source -> compiling Wrx86.m3

new source -> compiling Stackx86.m3

new source -> compiling Codex86.m3

new source -> compiling M3CC.c

new exporters -> recompiling M3C.i3

new exporters -> recompiling M3x86Rep.i3

compilation failed => not building library "m3back.lib"

Fatal Error: package build failed

Any suggestions on what to do?

I need to get a working cm3 on both WinXP and Win7 that is current with the HEAD branch.

BTW, it was my understanding that the compilation order was defined in "pkginfo.txt".  Has this changed, or is the file not up-to-date?  Reason I ask is that my RCC_upgradeCM3.cmd used to work fine and it bases the order on pkginfo.txt, yet you remarked in
 a previous post that I was leaving something out, plus it seems the order in upgrade.py doesn't match what you find in pkginfo.txt.  Please advise.


Randy Coleburn

An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20130908/c90c2b25/attachment-0002.html>

More information about the M3devel mailing list