summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2001-01-28 11:01:50 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2001-01-28 11:01:50 (GMT)
commit646ddec41f1fcd17d9478d119926300c34a09aa1 (patch)
tree507ed0d40e10e5fbd57080be51873aa082a96b3b /Tools
parent5838d0fc846e2d601967e988f14c88b25d4d17ed (diff)
downloadcpython-646ddec41f1fcd17d9478d119926300c34a09aa1.zip
cpython-646ddec41f1fcd17d9478d119926300c34a09aa1.tar.gz
cpython-646ddec41f1fcd17d9478d119926300c34a09aa1.tar.bz2
Allow installation of IDLE via distutils (patch #103138).
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/idle/idle12
-rw-r--r--Tools/idle/setup.py81
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']
+ )