~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to setup.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-09-01 08:02:42 UTC
  • mfrom: (5390.3.3 faster-revert-593560)
  • Revision ID: pqm@pqm.ubuntu.com-20100901080242-esg62ody4frwmy66
(spiv) Avoid repeatedly calling self.target.all_file_ids() in
 InterTree.iter_changes. (Andrew Bennetts)

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
import os
10
10
import os.path
11
11
import sys
 
12
import copy
12
13
 
13
14
if sys.version_info < (2, 4):
14
15
    sys.stderr.write("[ERROR] Not a supported Python version. Need 2.4+\n")
413
414
 
414
415
def get_qbzr_py2exe_info(includes, excludes, packages, data_files):
415
416
    # PyQt4 itself still escapes the plugin detection code for some reason...
416
 
    packages.append('PyQt4')
417
 
    excludes.append('PyQt4.elementtree.ElementTree')
418
 
    excludes.append('PyQt4.uic.port_v3')
 
417
    includes.append('PyQt4.QtCore')
 
418
    includes.append('PyQt4.QtGui')
419
419
    includes.append('sip') # extension module required for Qt.
420
420
    packages.append('pygments') # colorizer for qbzr
421
421
    packages.append('docutils') # html formatting
422
422
    includes.append('win32event')  # for qsubprocess stuff
423
 
    # but we can avoid many Qt4 Dlls.
424
 
    dll_excludes.extend(
425
 
        """QtAssistantClient4.dll QtCLucene4.dll QtDesigner4.dll
426
 
        QtHelp4.dll QtNetwork4.dll QtOpenGL4.dll QtScript4.dll
427
 
        QtSql4.dll QtTest4.dll QtWebKit4.dll QtXml4.dll
428
 
        qscintilla2.dll""".split())
429
423
    # the qt binaries might not be on PATH...
430
424
    # They seem to install to a place like C:\Python25\PyQt4\*
431
425
    # Which is not the same as C:\Python25\Lib\site-packages\PyQt4
538
532
            #                time before living with docstring stripping
539
533
            optimize = 1
540
534
            compile_names = [f for f in self.outfiles if f.endswith('.py')]
 
535
            # Round mtime to nearest even second so that installing on a FAT
 
536
            # filesystem bytecode internal and script timestamps will match
 
537
            for f in compile_names:
 
538
                mtime = os.stat(f).st_mtime
 
539
                remainder = mtime % 2
 
540
                if remainder:
 
541
                    mtime -= remainder
 
542
                    os.utime(f, (mtime, mtime))
541
543
            byte_compile(compile_names,
542
544
                         optimize=optimize,
543
545
                         force=self.force, prefix=self.install_dir,
556
558
                                     company_name = "Canonical Ltd.",
557
559
                                     comments = META_INFO['description'],
558
560
                                    )
 
561
    gui_target = copy.copy(target)
 
562
    gui_target.dest_base = "bzrw"
559
563
 
560
564
    packages = BZRLIB['packages']
561
565
    packages.remove('bzrlib')
646
650
    console_targets = [target,
647
651
                       'tools/win32/bzr_postinstall.py',
648
652
                       ]
649
 
    gui_targets = []
 
653
    gui_targets = [gui_target]
650
654
    data_files = topics_files + plugins_files
651
655
 
652
656
    if 'qbzr' in plugins:
691
695
                               "dll_excludes": dll_excludes,
692
696
                               "dist_dir": "win32_bzr.exe",
693
697
                               "optimize": 2,
 
698
                               "custom_boot_script":
 
699
                                        "tools/win32/py2exe_boot_common.py",
694
700
                              },
695
701
                   }
 
702
 
 
703
    # We want the libaray.zip to have optimize = 2, but the exe to have
 
704
    # optimize = 1, so that .py files that get compilied at run time
 
705
    # (e.g. user installed plugins) dont have their doc strings removed.
 
706
    class py2exe_no_oo_exe(py2exe.build_exe.py2exe):
 
707
        def build_executable(self, *args, **kwargs):
 
708
            self.optimize = 1
 
709
            py2exe.build_exe.py2exe.build_executable(self, *args, **kwargs)
 
710
            self.optimize = 2
 
711
 
696
712
    if __name__ == '__main__':
697
713
        setup(options=options_list,
698
714
              console=console_targets,
699
715
              windows=gui_targets,
700
716
              zipfile='lib/library.zip',
701
717
              data_files=data_files,
702
 
              cmdclass={'install_data': install_data_with_bytecompile},
 
718
              cmdclass={'install_data': install_data_with_bytecompile,
 
719
                        'py2exe': py2exe_no_oo_exe},
703
720
              )
704
721
 
705
722
else: