/[thuban]/branches/WIP-pyshapelib-bramz/setup.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/setup.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6 by bh, Tue Aug 28 15:41:52 2001 UTC revision 97 by bh, Thu Apr 11 09:53:02 2002 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001 by Intevation GmbH  # Copyright (c) 2001, 2002 by Intevation GmbH
2  # Authors:  # Authors:
3  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
4  #  #
# Line 16  __version__ = "$Revision$" Line 16  __version__ = "$Revision$"
16  #  #
17    
18  import os  import os
19    from types import TupleType
20  from distutils.core import setup, Extension, Command  from distutils.core import setup, Extension, Command
21  from distutils.command.install import install  from distutils.command.install import install
22  from distutils.command.build_py import build_py  from distutils.command.build_py import build_py
23    from distutils.command.bdist_rpm import bdist_rpm
24    from distutils.file_util import write_file
25    from distutils.filelist import FileList
26    from distutils.util import convert_path, change_root
27    
28    from distutils import archive_util, dir_util
29  import distutils  import distutils
 print distutils.__file__  
30    
31  from string import split  from string import split
32  import string  import string
# Line 48  if os.name == "posix": Line 53  if os.name == "posix":
53    
54      # On POSIX-systems we run wxgtk-config to determine the C++-compiler      # On POSIX-systems we run wxgtk-config to determine the C++-compiler
55      # flags      # flags
56      wx_config_script = "wxgtk-config"      wx_config_script = "wx-config"
57      # These lists will be filled automatically below      # These lists will be filled automatically below
58      wx_defs = []      wx_defs = []
59      wx_incdirs = []      wx_incdirs = []
# Line 66  elif os.name == "nt": Line 71  elif os.name == "nt":
71      proj4_libdir =  proj4_prefix      proj4_libdir =  proj4_prefix
72      proj4_lib = "proj_i"      proj4_lib = "proj_i"
73    
74        # Define include and lib directories for wxWindows and
75        wx_prefix = r"D:\wx230"
76        wx_inc =  os.path.join(wx_prefix, "include")
77        wx_lib =  os.path.join(wx_prefix, "lib")
78    
79      #      #
80      # Unless you use a wxPython version other than 2.3.1, you probably      # Unless you use a wxPython version other than 2.3.1, you probably
81      # shouldn't have to modify anything below here      # shouldn't have to modify anything below here
# Line 83  elif os.name == "nt": Line 93  elif os.name == "nt":
93      # there's no config script.      # there's no config script.
94      wx_config_script = ""      wx_config_script = ""
95            
     # so we just define the flags manually  
     wx_prefix = r"D:\wx230"  
     wx_inc =  os.path.join(wx_prefix, "include")  
     wx_lib =  os.path.join(wx_prefix, "lib")  
96      # the values of wx_defs and wx_libs. copied from the wxPython      # the values of wx_defs and wx_libs. copied from the wxPython
97      # setup.py      # setup.py
98      wx_defs = [ ('WIN32', None),        # Some of these are no longer      wx_defs = [ ('WIN32', None),        # Some of these are no longer
# Line 139  def run_script(cmdline): Line 145  def run_script(cmdline):
145    
146    
147  def run_wx_script(command):  def run_wx_script(command):
148      # first, determine the C++ preprocessor flags      # first, determine the C++ preprocessor flags Use --cflags here
149      flags = run_script(command + ' --cxxflags ')      # because it seems that older version don't have --cxxflags and
150        # newer ones return the same result for both
151        flags = run_script(command + ' --cflags ')
152      if flags is None:      if flags is None:
153          return 0          return 0
154      for flag in split(flags):      for flag in split(flags):
# Line 192  py_modules = [] Line 200  py_modules = []
200  #  #
201    
202  extensions.append(Extension("Lib.wxproj",  extensions.append(Extension("Lib.wxproj",
203                              [ext_dir + "/thuban/wxproj.cpp",                              [ext_dir + "/thuban/wxproj.cpp"],
204                               shp_dir + "/shpopen.c"],                              include_dirs = ([shp_dir, proj4_incdir,
205                              include_dirs = [shp_dir, proj4_incdir] +wx_incdirs,                                               ext_dir + "/pyshapelib/"]
206                                                + wx_incdirs),
207                              define_macros = wx_defs,                              define_macros = wx_defs,
208                              library_dirs = [proj4_libdir] + wx_libdirs,                              library_dirs = [proj4_libdir] + wx_libdirs,
209                              libraries = [proj4_lib] + wx_libs))                              libraries = [proj4_lib] + wx_libs))
# Line 232  py_modules.append(ext_dir + "/pyprojecti Line 241  py_modules.append(ext_dir + "/pyprojecti
241  data_files = []  data_files = []
242    
243  # bitmaps  # bitmaps
244  dir = "Resources/Bitmaps/"  dir = "Resources/Bitmaps"
245  bitmaps = []  bitmaps = []
246  for file in os.listdir(os.path.join("Resources", "Bitmaps")):  for file in os.listdir(os.path.join("Resources", "Bitmaps")):
247      if string.lower(file[-4:]) == ".xpm":      if string.lower(file[-4:]) == ".xpm":
248          bitmaps.append(dir + file)          bitmaps.append(dir + '/' +  file)
249  data_files.append((dir, bitmaps))  data_files.append((dir, bitmaps))
250    
251  #  #
# Line 244  data_files.append((dir, bitmaps)) Line 253  data_files.append((dir, bitmaps))
253  #  #
254  # So far distutils are only meant to distribute python extensions, not  # So far distutils are only meant to distribute python extensions, not
255  # complete applications, so we have to redefine a few commands  # complete applications, so we have to redefine a few commands
256    #
257    
258    
259    # Much of the data_dist command is directly copied from the distutils'
260    # sdist command
261    class data_dist(Command):
262    
263        description = "create a data distribution (tarball, zip file, etc.)"
264    
265        user_options = [
266            ('formats=', None,
267             "formats for source distribution (comma-separated list)"),
268            ('keep-temp', 'k',
269             "keep the distribution tree around after creating " +
270             "archive file(s)"),
271            ('dist-dir=', 'd',
272             "directory to put the source distribution archive(s) in "
273             "[default: dist]"),
274            ]
275    
276        boolean_options = ['keep-temp']
277    
278        def initialize_options (self):
279            self.formats = None
280            self.keep_temp = 0
281            self.dist_dir = None
282    
283        def finalize_options (self):
284            self.ensure_string_list('formats')
285            if self.formats is None:
286                self.formats = ["zip"]
287            bad_format = archive_util.check_archive_formats(self.formats)
288            if bad_format:
289                raise DistutilsOptionError, \
290                      "unknown archive format '%s'" % bad_format
291    
292            if self.dist_dir is None:
293                self.dist_dir = "dist"
294    
295    
296        def run(self):
297            # 'filelist' contains the list of files that will make up the
298            # manifest
299            self.filelist = FileList()
300            
301            # Do whatever it takes to get the list of files to process.
302            # File list is accumulated in 'self.filelist'.
303            self.get_file_list()
304    
305            # Otherwise, go ahead and create the source distribution tarball,
306            # or zipfile, or whatever.
307            self.make_distribution()
308    
309        def get_file_list(self):
310            """Figure out the list of files to include in the data
311            distribution, and put it in 'self.filelist'.
312            """
313            self.filelist.findall("Data")
314            self.filelist.include_pattern("*", anchor = 0)
315            self.filelist.exclude_pattern(r'/(RCS|CVS)/.*', is_regex=1)
316            self.filelist.sort()
317            self.filelist.remove_duplicates()
318    
319        def make_release_tree(self, base_dir, files):
320            """Create the directory tree that will become the source
321            distribution archive.  All directories implied by the filenames in
322            'files' are created under 'base_dir', and then we hard link or copy
323            (if hard linking is unavailable) those files into place.
324            Essentially, this duplicates the developer's source tree, but in a
325            directory named after the distribution, containing only the files
326            to be distributed.
327            """
328            # Create all the directories under 'base_dir' necessary to
329            # put 'files' there; the 'mkpath()' is just so we don't die
330            # if the manifest happens to be empty.
331            self.mkpath(base_dir)
332            dir_util.create_tree(base_dir, files,
333                                 verbose=self.verbose, dry_run=self.dry_run)
334    
335            # And walk over the list of files, either making a hard link (if
336            # os.link exists) to each one that doesn't already exist in its
337            # corresponding location under 'base_dir', or copying each file
338            # that's out-of-date in 'base_dir'.  (Usually, all files will be
339            # out-of-date, because by default we blow away 'base_dir' when
340            # we're done making the distribution archives.)
341        
342            if hasattr(os, 'link'):        # can make hard links on this system
343                link = 'hard'
344                msg = "making hard links in %s..." % base_dir
345            else:                           # nope, have to copy
346                link = None
347                msg = "copying files to %s..." % base_dir
348    
349            if not files:
350                self.warn("no files to distribute -- empty manifest?")
351            else:
352                self.announce(msg)
353            for file in files:
354                if not os.path.isfile(file):
355                    self.warn("'%s' not a regular file -- skipping" % file)
356                else:
357                    dest = os.path.join(base_dir, file)
358                    self.copy_file(file, dest, link=link)
359    
360    
361        def make_distribution (self):
362            """Create the source distribution(s).  First, we create the release
363            tree with 'make_release_tree()'; then, we create all required
364            archive files (according to 'self.formats') from the release tree.
365            Finally, we clean up by blowing away the release tree (unless
366            'self.keep_temp' is true).  The list of archive files created is
367            stored so it can be retrieved later by 'get_archive_files()'.
368            """
369            # Don't warn about missing meta-data here -- should be (and is!)
370            # done elsewhere.
371            base_dir = "Thuban-data-" + self.distribution.get_version()
372            base_name = os.path.join(self.dist_dir, base_dir)
373    
374            self.make_release_tree(base_dir, self.filelist.files)
375            archive_files = []              # remember names of files we create
376            for fmt in self.formats:
377                file = self.make_archive(base_name, fmt, base_dir=base_dir)
378                archive_files.append(file)
379    
380            self.archive_files = archive_files
381    
382            if not self.keep_temp:
383                dir_util.remove_tree(base_dir, self.verbose, self.dry_run)
384    
385    
386    
# Line 256  class InstallLocal(Command): Line 393  class InstallLocal(Command):
393      """      """
394    
395      description =\      description =\
396          "Create some symlink so you can run thubanfrom the source directory"          "Create some symlinks so you can run thuban from the source directory"
397    
398      user_options = [      user_options = [
         ('debug', 'g', "compile/link with debugging information"),  
399          ('skip-build', None, "skip the build steps"),          ('skip-build', None, "skip the build steps"),
400          ]          ]
401    
# Line 267  class InstallLocal(Command): Line 403  class InstallLocal(Command):
403          self.extensions = None          self.extensions = None
404          self.build_dir = None          self.build_dir = None
405          self.skip_build = None          self.skip_build = None
         self.debug = None  
406    
407      def finalize_options (self):      def finalize_options (self):
408          self.set_undefined_options("install",          self.set_undefined_options("install",
# Line 282  class InstallLocal(Command): Line 417  class InstallLocal(Command):
417          # now do the work. Simply link or copy the Lib dir          # now do the work. Simply link or copy the Lib dir
418          libdir = os.path.join(self.build_dir, "Lib")          libdir = os.path.join(self.build_dir, "Lib")
419          if os.name == "posix":          if os.name == "posix":
420              # on posix, just lilnk the Lib dir              # on posix, just link the Lib dir
421              self.link_dir(libdir, "Lib")              self.link_dir(libdir, "Lib")
422          else:          else:
423              self.copy_tree(libdir, "Lib")              self.copy_tree(libdir, "Lib")
# Line 290  class InstallLocal(Command): Line 425  class InstallLocal(Command):
425      def link_dir(self, src, dest):      def link_dir(self, src, dest):
426          """Create a symbolic link dest pointing to src"""          """Create a symbolic link dest pointing to src"""
427          if self.verbose:          if self.verbose:
428              print "symlinking %s -> %s" % (src, dest)              self.announce("symlinking %s -> %s" % (src, dest))
429          if self.dry_run:          if self.dry_run:
430              return              return
431    
# Line 309  class InstallLocal(Command): Line 444  class InstallLocal(Command):
444  class thuban_build_py(build_py):  class thuban_build_py(build_py):
445    
446      """      """
447      A new build_py that can deal with both packages and modules in      A new build_py that can deal with both packages and modules in one
448      one distribution.      distribution.
449      """      """
450    
451      def run(self):      def run(self):
452          """The same the as teh original in build_py revision 1.33 except          """The same the as the original in build_py revision 1.33 except
453          that this allows both packages and modules to be in one          that this allows both packages and modules to be in one
454          distribution          distribution
455          """          """
# Line 348  class thuban_build_py(build_py): Line 483  class thuban_build_py(build_py):
483              modules.append(("Lib", module_base, module_file))              modules.append(("Lib", module_base, module_file))
484          return modules          return modules
485    
486  #      def find_all_modules (self):
487  # Extend the standard install command to symlink the installed script to          # same as find_all_modules of the original build_py command
488  # $prefix/bin/          # (rev. 1.33) but handle installations with both modules and
489  #          # packages. Needed here so tha the get_outputs works correctly
490            modules = []
491            if self.py_modules:
492                modules.extend(self.find_modules())
493            if self.packages:
494                for package in self.packages:
495                    package_dir = self.get_package_dir(package)
496                    m = self.find_package_modules(package, package_dir)
497                    modules.extend(m)
498    
499            return modules
500    
501    
502    
503  class ThubanInstall(install):  class ThubanInstall(install):
504    
505        """
506        Thuban specific install command.
507    
508        Extend the standard install command to symlink the installed script
509        to $prefix/bin/
510        """
511    
512        user_options = install.user_options[:]
513        user_options.extend([("do-symlink", None,
514                              "Create a symlink to the script in <prefix>/bin."
515                            "(default on posix systems and only relevant there)"),
516    
517                             ("extra-files", None,
518                              "List of filenames or (src, dest) pairs describing "
519                              " extra files to install "
520                              "(can only be set from witin setup.py"),
521                             ])
522    
523        boolean_options = install.boolean_options[:]
524        boolean_options.append("do-symlink")
525    
526        def initialize_options(self):
527            self.do_symlink = None
528            self.extra_files = []
529            install.initialize_options(self)
530    
531        def finalize_options(self):
532            if self.do_symlink is None:
533                if os.name == "posix":
534                    self.do_symlink = 1
535                else:
536                    self.do_symlink = 0
537            install.finalize_options(self)
538    
539      def run(self):      def run(self):
540          install.run(self)          install.run(self)
541          if os.name == "posix":          for item in self.extra_files:
542              scriptfile = os.path.join(self.install_scripts, "thuban.py")              if type(item) == TupleType:
543                    src, dest = item
544                else:
545                    src = dest = item
546                self.copy_file(convert_path(src),
547                               os.path.join(self.root, convert_path(dest)))
548    
549            if os.name == "posix" and self.do_symlink:
550                install_scripts = self.install_scripts
551                if self.root:
552                    install_scripts = install_scripts[len(self.root):]
553                scriptfile = os.path.join(install_scripts, "thuban.py")
554              bindir = os.path.join(self.prefix, "bin")              bindir = os.path.join(self.prefix, "bin")
555                if self.root:
556                    bindir = change_root(self.root, bindir)
557              binfile = os.path.join(bindir, "thuban")              binfile = os.path.join(bindir, "thuban")
558              self.mkpath(bindir)              self.mkpath(bindir)
559              self.copy_file(scriptfile, binfile, link="sym")              self.link_file(scriptfile, binfile)
560    
561        def link_file(self, src, dest):
562            """Create a symbolic link dest pointing to src.
563    
564            Unlike the symlink variant of the command object's copy_file
565            method, this method even performs the link if src doesn't exist.
566            This is useful when installing with an alternat root directory"""
567            if self.verbose:
568                self.announce("symlinking %s -> %s" % (src, dest))
569            if self.dry_run:
570                return
571    
572            if not os.path.exists(dest):
573                os.symlink(src, dest)
574    
575    
576        def get_outputs (self):
577            outputs = install.get_outputs(self)
578            for item in self.extra_files:
579                if type(item) == TupleType:
580                    src, dest = item
581                else:
582                    src = dest = item
583                outputs.append(os.path.join(self.root, convert_path(dest)))
584            if os.name == "posix" and self.do_symlink:
585                bindir = os.path.join(self.prefix, "bin")
586                if self.root:
587                    bindir = change_root(self.root, bindir)
588                binfile = os.path.join(bindir, "thuban")
589                outputs.append(binfile)
590            return outputs
591    
592    
593    bdist_rpm_prep_script = '''
594    %setup
595    cp extensions/pyshapelib/{README,README.pyshapelib}
596    cp extensions/pyshapelib/{COPYING,COPYING.pyshapelib}
597    cp extensions/pyprojection/{LICENSE,LICENSE.pyprojection}
598    '''
599    
600    
601        
602    class thuban_bdist_rpm(bdist_rpm):
603    
604        """Thuban specific RPM distribution command"""
605    
606        def initialize_options(self):
607            # create the prep script for the spec-file
608            open("bdist_rpm_prep", "w").write(bdist_rpm_prep_script)
609    
610            bdist_rpm.initialize_options(self)
611    
612    
613    class bdist_inno(Command):
614    
615        """Command to create a windows installer with Inno Setup"""
616    
617        description = "Create a windows installer with Inno Setup"
618    
619        user_options = [
620            ('skip-build', None, "skip the build steps"),
621            ('bdist-dir=', None,
622             "temporary directory for creating the distribution"),
623            ('run-inno', None,
624             "Run inno-setup to create the installer. On by default on nt"),
625            ('iss-name', None,
626             "The name of the iss file to generate. "
627             "Shouldn't contain directories"),
628    
629            # Parameters for the Inno Setup script
630            ('copyright', None, "Copyright notice for the Inno Setup file"),
631            ('default-dir-name', None,
632             "Default installation directory. Defaults to '{pf}\\<name>'"),
633            ('default-group-name', None,
634             "Default program group name. Defaults to <name>'"),
635            ("license-file", None, "File containing the license."),
636            ("output-basename", None,
637             "Base filename for the Inno Setup output "
638             "(defaults to <name>-<version>-<issrevision>)."),
639            ("iss-revision", None,
640             "revision of the generated installer of the package version"),
641    
642            ("icons-entries", None,
643             "List if InnoIconItems "
644             "(this can only be set from inside the setup.py script)"),
645            ]
646    
647        boolean_options = ["do-symlink"]
648    
649        def initialize_options(self):
650            self.skip_build = 0
651            self.bdist_dir = None
652            self.run_inno = None
653            self.iss_name = None
654            self.copyright = ""
655            self.default_dir_name = None
656            self.default_group_name = None
657            self.license_file = None
658            self.output_basename = None
659            self.iss_revision = None
660            self.icons_entries = []
661    
662        def finalize_options(self):
663            self.set_undefined_options("install",
664                                       ('skip_build', 'skip_build'))
665            if self.bdist_dir is None:
666                bdist_base = self.get_finalized_command('bdist').bdist_base
667                self.bdist_dir = os.path.join(bdist_base, 'inno')
668    
669            if self.run_inno is None:
670                self.run_inno = os.name == "nt"
671    
672            name = self.distribution.get_name()
673            if self.iss_name is None:
674                self.iss_name = name + '.iss'
675    
676            if self.default_dir_name is None:
677                self.default_dir_name = "{pf}\\" + name
678            if self.default_group_name is None:
679                self.default_group_name = name
680    
681            if self.iss_revision is None:
682                self.iss_revision = 0
683            if self.output_basename is None:
684                self.output_basename = "%s-%s-%d" \
685                                       % (name, self.distribution.get_version(),
686                                          self.iss_revision)
687    
688        def run(self, install_options = None):
689            """Execute the command. install_options if given, should be a
690            directory of additional options to set in the install step"""
691            # Obviously have to build before we can install
692            if not self.skip_build:
693                self.run_command('build')
694    
695            # Install in a temporary directory
696            install = self.reinitialize_command('install')
697            install.root = self.bdist_dir
698            if install_options is not None:
699                for key, value in install_options.items():
700                    setattr(install, key, value)
701            if os.name != 'nt':
702                # Must force install to use the 'nt' scheme;
703                install.select_scheme('nt')
704    
705            self.announce("installing to %s" % self.bdist_dir)
706            install.ensure_finalized()
707            install.run()
708    
709            # Create the iss file
710            iss_file = os.path.join(self.bdist_dir, self.iss_name)
711            self.execute(write_file, (iss_file, self.generate_iss()),
712                         "Create Inno Setup script file %s" % iss_file)
713    
714            # and invoke
715            if self.run_inno:
716                self.spawn(["iscc", iss_file])
717    
718        def generate_iss(self):
719            """Return the contents of the iss file as list of strings, one
720            string per line"""
721    
722            # first, turn the icons entries into a more usable form
723            icons = {}
724            for item in self.icons_entries:
725                icons[item.filename] = item
726    
727            iss = []
728    
729            name = self.distribution.get_name()
730            iss.extend(["[Setup]",
731                        "AppName=" + name,
732                        "AppVerName=" + name + " "+self.distribution.get_version(),
733                        "DefaultDirName=" + self.default_dir_name,
734                        "DefaultGroupName=" + self.default_group_name,
735                        ])
736            if self.copyright:
737                iss.append("AppCopyright=" + self.copyright)
738            if self.license_file:
739                iss.append("LicenseFile=" + self.license_file)
740    
741            iss.append("OutputBasefilename=" + self.output_basename)
742    
743            iss.append("")
744            iss.append("[Files]")
745    
746            install = self.get_finalized_command("install")
747            install_scripts = self.get_finalized_command("install_scripts")
748            script_files = install_scripts.get_outputs()
749            prefixlen = len(self.bdist_dir) + len(os.sep)
750            for filename in install.get_outputs():
751                filename = filename[prefixlen:]
752                icon = icons.get(filename)
753                dirname = os.path.dirname(filename)
754                if os.name != "nt":
755                    # change the separators to \ on non-windos systems
756                    filename = string.join(string.split(filename, os.sep), "\\")
757                    dirname =  string.join(string.split(dirname, os.sep), "\\")
758                line = 'Source: "%s"' % filename
759                if icon is not None:
760                    # install it as defined in the icon object
761                    backslash = string.rfind(icon.install_name, "\\")
762                    if backslash >= 0:
763                        dirname = icon.install_name[:backslash]
764                        basename = icon.install_name[backslash + 1:]
765                    else:
766                        dirname = ""
767                        basename = icon.install_name
768                    line = '%s; DestDir: "%s"; DestName: "%s"' % (line, dirname,
769                                                                  basename)
770                else:
771                    line = line + '; DestDir: "{app}\\%s"' % (dirname)
772                iss.append(line)
773    
774            iss.append("")
775            iss.append("[Icons]")
776            for icon in self.icons_entries:
777                line = 'Name: "{group}\\%s"; Filename: "%s";' \
778                       % (icon.title, icon.install_name)
779                iss.append(line)
780                
781            return iss
782    
783    
784    class InnoIconItem:
785    
786        """Describe one item for the start menu for the Inno Setup installer"""
787    
788        def __init__(self, filename, title, install_name = None):
789            self.filename = filename
790            self.title = title
791            if install_name is not None:
792                self.install_name = install_name
793            else:
794                self.install_name = filename
795    
796                
797    class thuban_bdist_inno(bdist_inno):
798    
799        """Thuban specific Inno Setup stuff"""
800    
801        def run(self):
802            install_options = {
803                "prefix": ".",
804                "install_scripts": "$base",
805                "warn_dir": 0,
806                "extra_files": ["COPYING", "Lib/proj.dll"],
807                }
808            # don't make a symlink because we're simulating windows, so
809            # that we can generate the iss-file even on Linux
810            install_options["do_symlink"] = 0
811            bdist_inno.run(self, install_options)
812        
813                
814    #
815    #   Run the script
816    #
817    
818    
819  long_description = """\  long_description = """\
820  Thuban is a viewer for geographic data written in Python  Thuban is a viewer for geographic data written in Python
821  """  """
822    
823  setup(name = "thuban",  setup(name = "Thuban",
824        version = "0.0.3",        version = "0.1.1",
825        description = "Geographic data viewer",        description = "Geographic data viewer",
826        long_description = long_description,        long_description = long_description,
827        licence = "GPL",        licence = "GPL",
# Line 392  setup(name = "thuban", Line 843  setup(name = "thuban",
843                    # same directory.                    # same directory.
844                    "install_lib": "$base/thuban",                    "install_lib": "$base/thuban",
845                    "install_scripts": "$base/thuban",                    "install_scripts": "$base/thuban",
846                    "install_data": "$base/thuban/",                    "install_data": "$base/thuban",
847    
848                    # Don't print warning messages about the lib dir not                    # Don't print warning messages about the lib dir not
849                    # being on Python's path. The libraries are Thuban                    # being on Python's path. The libraries are Thuban
850                    # specific and are installed just for Thuban. They'll                    # specific and are installed just for Thuban. They'll
851                    # be automatically on Python's path when Thuban is run                    # be automatically on Python's path when Thuban is run
852                    "warn_dir": 0,                    "warn_dir": 0,
853                    }},                    },
854                     "bdist_inno":
855                     {"icons_entries": [InnoIconItem(".\\thuban.py",
856                                                     "Start Thuban",
857                                                     "{app}\\thuban.pyw")],
858                      "license_file": "COPYING",
859                      }
860                     },
861        cmdclass = {"build_py": thuban_build_py,        cmdclass = {"build_py": thuban_build_py,
862                    "install_local": InstallLocal,                    "install_local": InstallLocal,
863                    "install": ThubanInstall})                    "install": ThubanInstall,
864                      "bdist_rpm": thuban_bdist_rpm,
865                      "bdist_inno": thuban_bdist_inno,
866                      "data_dist": data_dist
867                      })
868    
869    

Legend:
Removed from v.6  
changed lines
  Added in v.97

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26