diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2001-01-28 11:01:50 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2001-01-28 11:01:50 (GMT) |
commit | 646ddec41f1fcd17d9478d119926300c34a09aa1 (patch) | |
tree | 507ed0d40e10e5fbd57080be51873aa082a96b3b /Tools | |
parent | 5838d0fc846e2d601967e988f14c88b25d4d17ed (diff) | |
download | cpython-646ddec41f1fcd17d9478d119926300c34a09aa1.zip cpython-646ddec41f1fcd17d9478d119926300c34a09aa1.tar.gz cpython-646ddec41f1fcd17d9478d119926300c34a09aa1.tar.bz2 |
Allow installation of IDLE via distutils (patch #103138).
Diffstat (limited to 'Tools')
-rwxr-xr-x | Tools/idle/idle | 12 | ||||
-rw-r--r-- | Tools/idle/setup.py | 81 |
2 files changed, 93 insertions, 0 deletions
diff --git a/Tools/idle/idle b/Tools/idle/idle new file mode 100755 index 0000000..2a85497 --- /dev/null +++ b/Tools/idle/idle @@ -0,0 +1,12 @@ +#! /usr/bin/env python + +import os +import sys +from idlelib import IdleConf + +idle_dir = os.path.dirname(IdleConf.__file__) +IdleConf.load(idle_dir) + +# defer importing Pyshell until IdleConf is loaded +from idlelib import PyShell +PyShell.main() diff --git a/Tools/idle/setup.py b/Tools/idle/setup.py new file mode 100644 index 0000000..e0612c2 --- /dev/null +++ b/Tools/idle/setup.py @@ -0,0 +1,81 @@ +import os,glob +from distutils.core import setup +from distutils.command.build_py import build_py +from distutils.command.install_lib import install_lib +import idlever + +# name of idle package +idlelib = "idlelib" + +# the normal build_py would not incorporate the .txt files +txt_files = ['config-unix.txt','config-win.txt','config.txt'] +Icons = glob.glob1("Icons","*.gif") +class idle_build_py(build_py): + def get_plain_outfile(self, build_dir, package, file): + # like get_module_outfile, but does not append .py + outfile_path = [build_dir] + list(package) + [file] + return apply(os.path.join, outfile_path) + + def run(self): + # Copies all .py files, then also copies the txt and gif files + build_py.run(self) + assert self.packages == [idlelib] + for name in txt_files: + outfile = self.get_plain_outfile(self.build_lib, [idlelib], name) + dir = os.path.dirname(outfile) + self.mkpath(dir) + self.copy_file(name, outfile, preserve_mode = 0) + for name in Icons: + outfile = self.get_plain_outfile(self.build_lib, + [idlelib,"Icons"], name) + dir = os.path.dirname(outfile) + self.mkpath(dir) + self.copy_file(os.path.join("Icons",name), + outfile, preserve_mode = 0) + + def get_source_files(self): + # returns the .py files, the .txt files, and the icons + icons = [os.path.join("Icons",name) for name in Icons] + return build_py.get_source_files(self)+txt_files+icons + + def get_outputs(self, include_bytecode=1): + # returns the built files + outputs = build_py.get_outputs(self, include_bytecode) + if not include_bytecode: + return outputs + for name in txt_files: + filename = self.get_plain_outfile(self.build_lib, + [idlelib], name) + outputs.append(filename) + for name in Icons: + filename = self.get_plain_outfile(self.build_lib, + [idlelib,"Icons"], name) + outputs.append(filename) + return outputs + +# Arghhh. install_lib thinks that all files returned from build_py's +# get_outputs are bytecode files +class idle_install_lib(install_lib): + def _bytecode_filenames(self, files): + files = [n for n in files if n.endswith('.py')] + return install_lib._bytecode_filenames(self,files) + + +setup(name="IDLE", + version = idlever.IDLE_VERSION, + description = "IDLE, the Python IDE", + author = "Guido van Rossum", + author_email = "guido@python.org", + #url = + long_description = +"""IDLE is a Tkinter based IDE for Python. It is written in 100% pure +Python and works both on Windows and Unix. It features a multi-window +text editor with multiple undo, Python colorizing, and many other things, +as well as a Python shell window and a debugger.""", + + cmdclass = {'build_py':idle_build_py, + 'install_lib':idle_install_lib}, + package_dir = {idlelib:'.'}, + packages = [idlelib], + scripts = ['idle'] + ) |