1 from distutils
.core
import setup
2 from distutils
.command
.install_data
import install_data
3 from distutils
.command
.install
import INSTALL_SCHEMES
7 class osx_install_data(install_data
):
8 # On MacOS, the platform-specific lib dir is /System/Library/Framework/Python/.../
9 # which is wrong. Python 2.5 supplied with MacOS 10.5 has an Apple-specific fix
10 # for this in distutils.command.install_data#306. It fixes install_lib but not
11 # install_data, which is why we roll our own install_data class.
13 def finalize_options(self
):
14 # By the time finalize_options is called, install.install_lib is set to the
15 # fixed directory, so we set the installdir to install_lib. The
16 # install_data class uses ('install_data', 'install_dir') instead.
17 self
.set_undefined_options('install', ('install_lib', 'install_dir'))
18 install_data
.finalize_options(self
)
20 if sys
.platform
== "darwin":
21 cmdclasses
= {'install_data': osx_install_data
}
23 cmdclasses
= {'install_data': install_data
}
25 def fullsplit(path
, result
=None):
27 Split a pathname into components (the opposite of os.path.join) in a
32 head
, tail
= os
.path
.split(path
)
34 return [tail
] + result
37 return fullsplit(head
, [tail
] + result
)
39 # Tell distutils not to put the data_files in platform-specific installation
40 # locations. See here for an explanation:
41 # http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb
42 for scheme
in INSTALL_SCHEMES
.values():
43 scheme
['data'] = scheme
['purelib']
45 # Compile the list of packages available, because distutils doesn't have
46 # an easy way to do this.
47 packages
, data_files
= [], []
48 root_dir
= os
.path
.dirname(__file__
)
53 for dirpath
, dirnames
, filenames
in os
.walk(django_dir
):
54 # Ignore dirnames that start with '.'
55 for i
, dirname
in enumerate(dirnames
):
56 if dirname
.startswith('.'): del dirnames
[i
]
57 if '__init__.py' in filenames
:
58 packages
.append('.'.join(fullsplit(dirpath
)))
60 data_files
.append([dirpath
, [os
.path
.join(dirpath
, f
) for f
in filenames
]])
62 # Small hack for working with bdist_wininst.
63 # See http://mail.python.org/pipermail/distutils-sig/2004-August/004134.html
64 if len(sys
.argv
) > 1 and sys
.argv
[1] == 'bdist_wininst':
65 for file_info
in data_files
:
66 file_info
[0] = '\\PURELIB\\%s' % file_info
[0]
68 # Dynamically calculate the version based on django.VERSION.
69 version
= __import__('django').get_version()
74 url
= 'http://www.djangoproject.com/',
75 author
= 'Django Software Foundation',
76 author_email
= 'foundation@djangoproject.com',
77 description
= 'A high-level Python Web framework that encourages rapid development and clean, pragmatic design.',
78 download_url
= 'https://www.djangoproject.com/m/releases/1.4/Django-1.4.13.tar.gz',
80 cmdclass
= cmdclasses
,
81 data_files
= data_files
,
82 scripts
= ['django/bin/django-admin.py'],
84 'Development Status :: 5 - Production/Stable',
85 'Environment :: Web Environment',
86 'Framework :: Django',
87 'Intended Audience :: Developers',
88 'License :: OSI Approved :: BSD License',
89 'Operating System :: OS Independent',
90 'Programming Language :: Python',
91 'Programming Language :: Python :: 2.5',
92 'Programming Language :: Python :: 2.6',
93 'Programming Language :: Python :: 2.7',
94 'Topic :: Internet :: WWW/HTTP',
95 'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
96 'Topic :: Internet :: WWW/HTTP :: WSGI',
97 'Topic :: Software Development :: Libraries :: Application Frameworks',
98 'Topic :: Software Development :: Libraries :: Python Modules',