| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | """distutils.command.bdist_dumb
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Implements the Distutils 'bdist_dumb' command (create a "dumb" built | 
					
						
							|  |  |  | distribution -- i.e., just an archive to be unpacked under $prefix or | 
					
						
							|  |  |  | $exec_prefix)."""
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-10 22:23:15 +00:00
										 |  |  | # This module should be kept compatible with Python 2.1. | 
					
						
							| 
									
										
										
										
											2002-11-19 13:12:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | __revision__ = "$Id$" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | from distutils.core import Command | 
					
						
							| 
									
										
										
										
											2000-08-05 01:31:54 +00:00
										 |  |  | from distutils.util import get_platform | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  | from distutils.dir_util import create_tree, remove_tree, ensure_relative | 
					
						
							| 
									
										
										
										
											2000-04-26 02:29:51 +00:00
										 |  |  | from distutils.errors import * | 
					
						
							| 
									
										
										
										
											2005-03-23 18:54:36 +00:00
										 |  |  | from distutils.sysconfig import get_python_version | 
					
						
							| 
									
										
										
										
											2002-06-04 20:14:43 +00:00
										 |  |  | from distutils import log | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class bdist_dumb (Command): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     description = "create a \"dumb\" built distribution" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-05-13 03:06:56 +00:00
										 |  |  |     user_options = [('bdist-dir=', 'd', | 
					
						
							|  |  |  |                      "temporary directory for creating the distribution"), | 
					
						
							| 
									
										
										
										
											2000-09-11 00:47:35 +00:00
										 |  |  |                     ('plat-name=', 'p', | 
					
						
							|  |  |  |                      "platform name to embed in generated filenames " | 
					
						
							|  |  |  |                      "(default: %s)" % get_platform()), | 
					
						
							| 
									
										
										
										
											2000-05-13 03:06:56 +00:00
										 |  |  |                     ('format=', 'f', | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |                      "archive format to create (tar, ztar, gztar, zip)"), | 
					
						
							| 
									
										
										
										
											2000-09-16 15:53:41 +00:00
										 |  |  |                     ('keep-temp', 'k', | 
					
						
							| 
									
										
										
										
											2000-03-31 05:22:47 +00:00
										 |  |  |                      "keep the pseudo-installation tree around after " + | 
					
						
							|  |  |  |                      "creating the distribution archive"), | 
					
						
							| 
									
										
										
										
											2000-07-05 03:07:37 +00:00
										 |  |  |                     ('dist-dir=', 'd', | 
					
						
							|  |  |  |                      "directory to put final built distributions in"), | 
					
						
							| 
									
										
										
										
											2002-01-12 11:27:42 +00:00
										 |  |  |                     ('skip-build', None, | 
					
						
							|  |  |  |                      "skip rebuilding everything (for testing/debugging)"), | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |                     ('relative', None, | 
					
						
							|  |  |  |                      "build the archive using relative paths" | 
					
						
							|  |  |  |                      "(default: false)"), | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |                    ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |     boolean_options = ['keep-temp', 'skip-build', 'relative'] | 
					
						
							| 
									
										
										
										
											2000-09-25 01:41:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |     default_format = { 'posix': 'gztar', | 
					
						
							| 
									
										
										
										
											2002-01-31 18:56:00 +00:00
										 |  |  |                        'nt': 'zip', | 
					
						
							|  |  |  |                        'os2': 'zip' } | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def initialize_options (self): | 
					
						
							| 
									
										
										
										
											2000-05-13 03:06:56 +00:00
										 |  |  |         self.bdist_dir = None | 
					
						
							| 
									
										
										
										
											2000-09-11 00:47:35 +00:00
										 |  |  |         self.plat_name = None | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |         self.format = None | 
					
						
							| 
									
										
										
										
											2000-09-16 15:53:41 +00:00
										 |  |  |         self.keep_temp = 0 | 
					
						
							| 
									
										
										
										
											2000-07-05 03:07:37 +00:00
										 |  |  |         self.dist_dir = None | 
					
						
							| 
									
										
										
										
											2002-01-12 11:27:42 +00:00
										 |  |  |         self.skip_build = 0 | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |         self.relative = 0 | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |     # initialize_options() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def finalize_options (self): | 
					
						
							| 
									
										
										
										
											2000-09-11 00:47:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-05-13 03:06:56 +00:00
										 |  |  |         if self.bdist_dir is None: | 
					
						
							| 
									
										
										
										
											2000-05-27 17:27:23 +00:00
										 |  |  |             bdist_base = self.get_finalized_command('bdist').bdist_base | 
					
						
							| 
									
										
										
										
											2000-05-13 03:06:56 +00:00
										 |  |  |             self.bdist_dir = os.path.join(bdist_base, 'dumb') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |         if self.format is None: | 
					
						
							|  |  |  |             try: | 
					
						
							|  |  |  |                 self.format = self.default_format[os.name] | 
					
						
							|  |  |  |             except KeyError: | 
					
						
							|  |  |  |                 raise DistutilsPlatformError, \ | 
					
						
							|  |  |  |                       ("don't know how to create dumb built distributions " + | 
					
						
							|  |  |  |                        "on platform %s") % os.name | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-11 00:47:35 +00:00
										 |  |  |         self.set_undefined_options('bdist', | 
					
						
							|  |  |  |                                    ('dist_dir', 'dist_dir'), | 
					
						
							|  |  |  |                                    ('plat_name', 'plat_name')) | 
					
						
							| 
									
										
										
										
											2000-07-05 03:07:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |     # finalize_options() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def run (self): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-01-12 11:27:42 +00:00
										 |  |  |         if not self.skip_build: | 
					
						
							|  |  |  |             self.run_command('build') | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-16 15:30:47 +00:00
										 |  |  |         install = self.reinitialize_command('install', reinit_subcommands=1) | 
					
						
							| 
									
										
										
										
											2000-05-13 03:06:56 +00:00
										 |  |  |         install.root = self.bdist_dir | 
					
						
							| 
									
										
										
										
											2002-01-12 11:27:42 +00:00
										 |  |  |         install.skip_build = self.skip_build | 
					
						
							| 
									
										
										
										
											2002-04-09 14:14:38 +00:00
										 |  |  |         install.warn_dir = 0 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-06-04 20:14:43 +00:00
										 |  |  |         log.info("installing to %s" % self.bdist_dir) | 
					
						
							| 
									
										
										
										
											2000-09-16 15:30:47 +00:00
										 |  |  |         self.run_command('install') | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # And make an archive relative to the root of the | 
					
						
							|  |  |  |         # pseudo-installation tree. | 
					
						
							| 
									
										
										
										
											2000-04-22 02:51:25 +00:00
										 |  |  |         archive_basename = "%s.%s" % (self.distribution.get_fullname(), | 
					
						
							| 
									
										
										
										
											2000-09-11 00:47:35 +00:00
										 |  |  |                                       self.plat_name) | 
					
						
							| 
									
										
										
										
											2002-01-31 18:56:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # OS/2 objects to any ":" characters in a filename (such as when | 
					
						
							|  |  |  |         # a timestamp is used in a version) so change them to hyphens. | 
					
						
							|  |  |  |         if os.name == "os2": | 
					
						
							|  |  |  |             archive_basename = archive_basename.replace(":", "-") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |         pseudoinstall_root = os.path.join(self.dist_dir, archive_basename) | 
					
						
							|  |  |  |         if not self.relative: | 
					
						
							|  |  |  |             archive_root = self.bdist_dir | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             if (self.distribution.has_ext_modules() and | 
					
						
							|  |  |  |                 (install.install_base != install.install_platbase)): | 
					
						
							|  |  |  |                 raise DistutilsPlatformError, \ | 
					
						
							|  |  |  |                       ("can't make a dumb built distribution where " | 
					
						
							|  |  |  |                        "base and platbase are different (%s, %s)" | 
					
						
							|  |  |  |                        % (repr(install.install_base), | 
					
						
							|  |  |  |                           repr(install.install_platbase))) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 archive_root = os.path.join(self.bdist_dir, | 
					
						
							|  |  |  |                                    ensure_relative(install.install_base)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Make the archive | 
					
						
							| 
									
										
										
										
											2005-03-21 20:56:35 +00:00
										 |  |  |         filename = self.make_archive(pseudoinstall_root, | 
					
						
							|  |  |  |                                      self.format, root_dir=archive_root) | 
					
						
							| 
									
										
										
										
											2005-03-23 18:54:36 +00:00
										 |  |  |         if self.distribution.has_ext_modules(): | 
					
						
							|  |  |  |             pyversion = get_python_version() | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             pyversion = 'any' | 
					
						
							|  |  |  |         self.distribution.dist_files.append(('bdist_dumb', pyversion, | 
					
						
							|  |  |  |                                              filename)) | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-16 15:53:41 +00:00
										 |  |  |         if not self.keep_temp: | 
					
						
							| 
									
										
										
										
											2002-06-04 20:14:43 +00:00
										 |  |  |             remove_tree(self.bdist_dir, dry_run=self.dry_run) | 
					
						
							| 
									
										
										
										
											2000-03-31 05:22:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  |     # run() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # class bdist_dumb |