Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 1 | """distutils.command.bdist_dumb |
| 2 | |
| 3 | Implements the Distutils 'bdist_dumb' command (create a "dumb" built |
| 4 | distribution -- i.e., just an archive to be unpacked under $prefix or |
| 5 | $exec_prefix).""" |
| 6 | |
| 7 | # created 2000/03/29, Greg Ward |
| 8 | |
| 9 | __revision__ = "$Id$" |
| 10 | |
| 11 | import os |
| 12 | from distutils.core import Command |
Greg Ward | b4c850c | 2000-03-31 05:22:47 +0000 | [diff] [blame] | 13 | from distutils.util import get_platform, create_tree, remove_tree |
Greg Ward | 6ce94b7 | 2000-04-26 02:29:51 +0000 | [diff] [blame] | 14 | from distutils.errors import * |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 15 | |
| 16 | class bdist_dumb (Command): |
| 17 | |
| 18 | description = "create a \"dumb\" built distribution" |
| 19 | |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 20 | user_options = [('bdist-dir=', 'd', |
| 21 | "temporary directory for creating the distribution"), |
| 22 | ('format=', 'f', |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 23 | "archive format to create (tar, ztar, gztar, zip)"), |
Greg Ward | b4c850c | 2000-03-31 05:22:47 +0000 | [diff] [blame] | 24 | ('keep-tree', 'k', |
| 25 | "keep the pseudo-installation tree around after " + |
| 26 | "creating the distribution archive"), |
Greg Ward | c4eb84a | 2000-07-05 03:07:37 +0000 | [diff] [blame^] | 27 | ('dist-dir=', 'd', |
| 28 | "directory to put final built distributions in"), |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 29 | ] |
| 30 | |
| 31 | default_format = { 'posix': 'gztar', |
| 32 | 'nt': 'zip', } |
| 33 | |
| 34 | |
| 35 | def initialize_options (self): |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 36 | self.bdist_dir = None |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 37 | self.format = None |
Greg Ward | b4c850c | 2000-03-31 05:22:47 +0000 | [diff] [blame] | 38 | self.keep_tree = 0 |
Greg Ward | c4eb84a | 2000-07-05 03:07:37 +0000 | [diff] [blame^] | 39 | self.dist_dir = None |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 40 | |
| 41 | # initialize_options() |
| 42 | |
| 43 | |
| 44 | def finalize_options (self): |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 45 | if self.bdist_dir is None: |
Greg Ward | 4fb29e5 | 2000-05-27 17:27:23 +0000 | [diff] [blame] | 46 | bdist_base = self.get_finalized_command('bdist').bdist_base |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 47 | self.bdist_dir = os.path.join(bdist_base, 'dumb') |
| 48 | |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 49 | if self.format is None: |
| 50 | try: |
| 51 | self.format = self.default_format[os.name] |
| 52 | except KeyError: |
| 53 | raise DistutilsPlatformError, \ |
| 54 | ("don't know how to create dumb built distributions " + |
| 55 | "on platform %s") % os.name |
| 56 | |
Greg Ward | c4eb84a | 2000-07-05 03:07:37 +0000 | [diff] [blame^] | 57 | self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) |
| 58 | |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 59 | # finalize_options() |
| 60 | |
| 61 | |
| 62 | def run (self): |
| 63 | |
Greg Ward | 4fb29e5 | 2000-05-27 17:27:23 +0000 | [diff] [blame] | 64 | self.run_command ('build') |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 65 | |
Greg Ward | edc6a51 | 2000-06-28 00:36:40 +0000 | [diff] [blame] | 66 | install = self.reinitialize_command('install') |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 67 | install.root = self.bdist_dir |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 68 | |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 69 | self.announce ("installing to %s" % self.bdist_dir) |
Greg Ward | 4fb29e5 | 2000-05-27 17:27:23 +0000 | [diff] [blame] | 70 | install.ensure_finalized() |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 71 | install.run() |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 72 | |
| 73 | # And make an archive relative to the root of the |
| 74 | # pseudo-installation tree. |
Greg Ward | 0ae7f76 | 2000-04-22 02:51:25 +0000 | [diff] [blame] | 75 | archive_basename = "%s.%s" % (self.distribution.get_fullname(), |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 76 | get_platform()) |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 77 | print "self.bdist_dir = %s" % self.bdist_dir |
Greg Ward | b4c850c | 2000-03-31 05:22:47 +0000 | [diff] [blame] | 78 | print "self.format = %s" % self.format |
Greg Ward | c4eb84a | 2000-07-05 03:07:37 +0000 | [diff] [blame^] | 79 | self.make_archive (os.path.join(self.dist_dir, archive_basename), |
| 80 | self.format, |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 81 | root_dir=self.bdist_dir) |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 82 | |
Greg Ward | b4c850c | 2000-03-31 05:22:47 +0000 | [diff] [blame] | 83 | if not self.keep_tree: |
Gregory P. Smith | ba0506b | 2000-05-13 03:06:56 +0000 | [diff] [blame] | 84 | remove_tree (self.bdist_dir, self.verbose, self.dry_run) |
Greg Ward | b4c850c | 2000-03-31 05:22:47 +0000 | [diff] [blame] | 85 | |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 86 | # run() |
| 87 | |
Greg Ward | e1664bd | 2000-03-31 02:56:34 +0000 | [diff] [blame] | 88 | # class bdist_dumb |