| 
									
										
										
										
											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)."""
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | from distutils.core import Command | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  | from distutils.util import get_platform | 
					
						
							| 
									
										
										
										
											2008-02-23 18:30:17 +00:00
										 |  |  | from distutils.dir_util import remove_tree, ensure_relative | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  | from distutils.errors import * | 
					
						
							|  |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-30 03:52:21 +00:00
										 |  |  | class bdist_dumb(Command): | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 12:50:05 +00:00
										 |  |  |     description = "create a \"dumb\" built distribution" | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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', | 
					
						
							| 
									
										
										
										
											2015-05-16 22:13:27 +03:00
										 |  |  |                      "archive format to create (tar, gztar, bztar, xztar, " | 
					
						
							|  |  |  |                      "ztar, 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, | 
					
						
							| 
									
										
										
										
											2018-11-05 16:20:25 +02:00
										 |  |  |                      "build the archive using relative paths " | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |                      "(default: false)"), | 
					
						
							| 
									
										
										
										
											2013-11-15 13:01:52 -05:00
										 |  |  |                     ('owner=', 'u', | 
					
						
							|  |  |  |                      "Owner name used when creating a tar file" | 
					
						
							|  |  |  |                      " [default: current user]"), | 
					
						
							|  |  |  |                     ('group=', 'g', | 
					
						
							|  |  |  |                      "Group name used when creating a tar file" | 
					
						
							|  |  |  |                      " [default: current group]"), | 
					
						
							| 
									
										
										
										
											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', | 
					
						
							| 
									
										
										
										
											2012-10-11 01:20:12 +02:00
										 |  |  |                        'nt': 'zip' } | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-30 03:52:21 +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 | 
					
						
							| 
									
										
										
										
											2011-08-29 21:48:39 +02:00
										 |  |  |         self.skip_build = None | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |         self.relative = 0 | 
					
						
							| 
									
										
										
										
											2013-11-15 13:01:52 -05:00
										 |  |  |         self.owner = None | 
					
						
							|  |  |  |         self.group = None | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-30 03:52:21 +00:00
										 |  |  |     def finalize_options(self): | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							| 
									
										
										
										
											2007-08-30 03:52:21 +00:00
										 |  |  |                 raise DistutilsPlatformError( | 
					
						
							|  |  |  |                        "don't know how to create dumb built distributions " | 
					
						
							|  |  |  |                        "on platform %s" % os.name) | 
					
						
							| 
									
										
										
										
											2000-03-31 02:56:34 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-11 00:47:35 +00:00
										 |  |  |         self.set_undefined_options('bdist', | 
					
						
							|  |  |  |                                    ('dist_dir', 'dist_dir'), | 
					
						
							| 
									
										
										
										
											2011-08-29 21:48:39 +02:00
										 |  |  |                                    ('plat_name', 'plat_name'), | 
					
						
							|  |  |  |                                    ('skip_build', 'skip_build')) | 
					
						
							| 
									
										
										
										
											2000-07-05 03:07:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-30 03:52:21 +00:00
										 |  |  |     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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 08:22:29 +01: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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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)): | 
					
						
							| 
									
										
										
										
											2007-08-30 03:52:21 +00:00
										 |  |  |                 raise DistutilsPlatformError( | 
					
						
							|  |  |  |                        "can't make a dumb built distribution where " | 
					
						
							| 
									
										
										
										
											2002-11-26 17:45:19 +00:00
										 |  |  |                        "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, | 
					
						
							| 
									
										
										
										
											2013-11-15 13:01:52 -05:00
										 |  |  |                                      self.format, root_dir=archive_root, | 
					
						
							|  |  |  |                                      owner=self.owner, group=self.group) | 
					
						
							| 
									
										
										
										
											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) |