[Zope-dev] It worked! [Andy rocks]

Andy McKay andym@ActiveState.com
Thu, 22 Mar 2001 16:05:24 -0800


Hey no problem, glad it works. Thanks to Brian for sending me all that stuff
a while ago...
--
  Andy McKay.


----- Original Message -----
From: "resefficient..." <resefficient@yahoo.com>
To: "Andy McKay" <andym@activestate.com>; <zope-dev@zope.org>
Cc: "Chris McDonough" <chrism@digicool.com>
Sent: Thursday, March 22, 2001 3:57 PM
Subject: [Zope-dev] It worked! [Andy rocks]


> You are terrific Andy.  Thanks a ton.  I've been
> busting my ass with cygwin and all kinds of Windoze
> junk.  What a nightmare.
>
> I hope you find good use for the hack.
>
> All my best,
>
> Jason Spisak
> --- Andy McKay <andym@ActiveState.com> wrote:
> > Here we go.... maybe
> >
> > How to:
> >
> > get Python 1.5.2 source and build it.
> > get Zope source
> > put ext15.py somewhere in your path
> >
> > then call
> >
> > d:\Python-1.5.2\python d:\Zope-2.3.0-src\ext15.py -p
> > d:\Python-1.5.2
> >
> > you need to specify the source of your python and
> > you may need to move a few
> > files within python to get it looking at the right
> > files.
> >
> > totally untested pyd but Visual Studio 6.0 didnt
> > complain
> >
> > HTH
> > --
> >   Andy McKay.
> >
> >
> > ----- Original Message -----
> > From: "resefficient..." <resefficient@yahoo.com>
> > To: <zope-dev@zope.org>
> > Sent: Thursday, March 22, 2001 1:36 PM
> > Subject: [Zope-dev] What does DC use to compile
> > Splitter.c on Windows?
> >
> >
> > > Can someone from DC tell me what they use to come
> > up
> > > with the binary version of the Splitter on
> > Windoze.  I
> > > am trying to get the Catalog to recognize "C++" on
> > > Win32.  I have posted the Splitter.c file to my
> > home
> > > page http://www.zope.org/Members/jspisak/Splitter
> > >
> > >
> > > Can anyone give me a clue as to how to make a
> > working
> > > Splitter.pyd out of this file on Windoze.
> > >
> > > Thanks in advance!
> > >
> > > Jason Spisak
> > >
> > >
> > > __________________________________________________
> > > Do You Yahoo!?
> > > Get email at your own domain with Yahoo! Mail.
> > > http://personal.mail.yahoo.com/
> > >
> > > _______________________________________________
> > > Zope-Dev maillist  -  Zope-Dev@zope.org
> > > http://lists.zope.org/mailman/listinfo/zope-dev
> > > **  No cross posts or HTML encoding!  **
> > > (Related lists -
> > >
> > http://lists.zope.org/mailman/listinfo/zope-announce
> > >  http://lists.zope.org/mailman/listinfo/zope )
> > >
> >
>
> > ATTACHMENT part 2 application/octet-stream
> name=Splitter.pyd
>
>
> > ATTACHMENT part 3 application/octet-stream
> name=Splitter.def
>
>
> > ATTACHMENT part 4 application/octet-stream
> name=Splitter.mak
>
>
> > ATTACHMENT part 5 application/octet-stream
> name=Splitter.c
> >
> > '''Build t Python extension using Visual C++ 40
> >
> > This script generates and runs a series of .mak and
> > .def
> > files for extensions defined in a Setup file.
> >
> > Note that you must have set up your environment to
> > run VC command-line
> > ustilities.  This can be done by running the
> > vcvar32.bat file in the
> > VC++ bin directory.
> >
> > Usage: python ext.py [options]
> >
> > Options:
> >
> >    -r     Run nmake to build release version
> >    -d     Run nmake to build debug version
> >    -c     If used with -r or -d, runs nmake on clean
> > target.
> >    -p     Specify location of Python source tree.
> > Default
> >           is ..\.. (assuming you are in
> > Extensions/some_name)
> >
> > The script reads a file named "Setup" in the current
> > directory.  The
> > Setup file has lines that describe the contents of
> > an extension.
> > Here\'s an example:
> >
> >   ExtensionClass ExtensionClass.c
> >   Acquisition Acquisition.c
> >
> > Note that I\'ve intented for readability.  The Setup
> > file shouldn\'t
> > be indented.  Basically, the first token on the line
> > is the module
> > name, and the second token on the line is the sorce
> > file. Additional
> > source files and include directories may be included
> > as well, as in:
> >
> >   pyexpat pyexpat.c -DXML_NS -Iexpat/xmlparse
> > -Iexpat/xmltok expat/xmlparse/xmlparse.c
> > expat/xmlparse/hashtable.c expat/xmltok/xmlrole.c
> > expat/xmltok/xmltok.c
> >
> >
> > ''' # '
> >
> > import sys, getopt, os, string, regex
> >
> > def die(m):
> > print m
> > print
> > print __doc__
> > sys.exit(1)
> >
> > def setup():
> >
> >
> >
> poptlist,pargs=getopt.getopt(sys.argv[1:],'p:drcI:o:h')
> >     if opt(poptlist,'h'): print __doc__
> >     if poptlist==[('-h','')]: sys.exit(0)
> >
> >     pargs and die('Unrecognized arguments: %s',
> > string.join(args))
> >
> >     ext_regex = regex.compile('\([a-z][a-z0-9_]*\)[
> > \t]'
> >
> > '\([.a-z][./a-z0-9_]*[.]c\)[ \t\n]',
> >                               regex.casefold)
> >
> >     for line in open('Setup').readlines():
> >
> >         if ext_regex.match(line) >= 0:
> >     sargs=string.split(line)
> >     module=sargs[0]
> >             src=sargs[1]
> >             if src[:2]=='./': continue
> >     soptlist, sargs =
> > getopt.getopt(sargs[2:],'I:D:')
> >
> >     filter(lambda a: a[:1]=='-' or
> > string.find(a,'.') < 0,
> >    sargs) and die('Invalid arguments in Setup
> > file: %s' %
> >   string.join(sargs))
> >
> >             sargs=map(lambda a: string.replace(a,
> > '/','\\'), sargs)
> >             simple(module,poptlist+soptlist, sargs)
> >
> >
> > main=setup
> >
> > def filebase(o,
> >              splitext=os.path.splitext,
> >              split=os.path.split):
> >         return splitext(split(o)[1])[0]
> >
> >
> >
> > def simple(module,optlist,others):
> >     tdef,tmak=templates()
> >
> >     pyhome=opt(optlist,'p')
> >     pyhome=pyhome and pyhome[0] or '..\\..'
> >     cfg=opt(optlist,'d') and 'Debug' or 'Release'
> >     parms={'module': module, 'pyhome':pyhome, 'cfg':
> > cfg}
> >     parms['includes']=string.join(
> > map(lambda i: '/I "%s"' % i,
> >     opt(optlist,'I')) +
> > map(lambda i: '/D "%s"' % i,
> >     opt(optlist,'D'))
> > , ' ')
> >     parms['other_clean_release']=string.join(
> > map(lambda o:
> >     '\n\t-@erase ".\\Release\\%s.obj"' %
> > filebase(o),
> >     others),'')
> >     parms['other_clean_debug']=string.join(
> > map(lambda o:
> >     '\n\t-@erase ".\\Debug\\%s.obj"' %
> > filebase(o),
> >     others),'')
> >     parms['other_rule']=string.join(
> > map(lambda o:
> >     '"$(INTDIR)\%s.obj" : .\%s $(DEP_CPP_MOD)
> > "$(INTDIR)"\n'
> >             '\t$(CPP) $(CPP_PROJ)  .\%s '
> >             % (filebase(o), o, o),
> >     others),'\n')
> >     parms['other_link']=string.join(
> > map(lambda o:
> >     '\n\t"$(INTDIR)\%s.obj" \\' % filebase(o),
> >     others),'')
> >
> >     open(module+'.def','w').write(tdef % parms)
> >     open(module+'.mak','w').write(tmak % parms)
> >     cfg_=' CFG="%s - Win32 %s"' % (module,cfg)
> >     os.system('nmake /nologo /f %s.mak%s' %
> > (module,cfg_))
> >     os.system('copy %s\%s.dll %s.pyd' %
> > (cfg,module,module))
> >     if opt(optlist,'c'):
> >         os.system("nmake /f %s.mak%s CLEAN" %
> > (module,cfg_))
> >
> >
> >
> > def opt(optlist,name):
> >     l=filter(lambda t, name='-'+name: t[0]==name,
> > optlist)
> >     return map(lambda t: t[1], l)
> >
> > def templates():
> >     tdef = '''EXPORTS
> > init%(module)s
> > '''
> >
> >     tmak = '''# Microsoft Developer Studio Generated
> > NMAKE File, Format Version 4.00
> > # ** DO NOT EDIT **
> >
> > # TARGTYPE "Win32 (x86) Dynamic-Link Library"
> > 0x0102
> >
> > !IF "$(CFG)" == ""
> > CFG=%(module)s - Win32 Debug
> > !MESSAGE No configuration specified.  Defaulting to
> > %(module)s - Win32 Debug.
> > !ENDIF
> >
> > !IF "$(CFG)" != "%(module)s - Win32 Release" &&
> > "$(CFG)" !=\\
> >  "%(module)s - Win32 Debug"
> > !MESSAGE Invalid configuration "$(CFG)" specified.
> > !MESSAGE You can specify a configuration when
> > running NMAKE on this makefile
> > !MESSAGE by defining the macro CFG on the command
> > line.  For example:
> > !MESSAGE
> > !MESSAGE NMAKE /f "%(module)s.mak" CFG="%(module)s -
> > Win32 Debug"
> > !MESSAGE
> > !MESSAGE Possible choices for configuration are:
> > !MESSAGE
> > !MESSAGE "%(module)s - Win32 Release" (based on\\
> >  "Win32 (x86) Dynamic-Link Library")
> > !MESSAGE "%(module)s - Win32 Debug" (based on "Win32
> > (x86) Dynamic-Link Library")
> > !MESSAGE
> > !ERROR An invalid configuration is specified.
> > !ENDIF
> >
> > !IF "$(OS)" == "Windows_NT"
> >
> === message truncated ===
>
>
> __________________________________________________
> Do You Yahoo!?
> Get email at your own domain with Yahoo! Mail.
> http://personal.mail.yahoo.com/
>
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev@zope.org
> http://lists.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope )
>