3 %bcond_without doc # Sphinx documentation
4 %bcond_without python2 # CPython 2.x module
5 %bcond_without python3 # CPython 3.x module
6 %bcond_with tests # unit tests [some fail randomly as of 1.11.x]
9 %define egg_name Django
10 Summary: The web framework for perfectionists with deadlines
11 Summary(pl.UTF-8): Szkielet WWW dla perfekcjonistów z ograniczeniami czasowymi
12 Name: python-%{module}
14 # https://www.djangoproject.com/download/#supported-versions
18 Group: Libraries/Python
19 Source0: https://www.djangoproject.com/m/releases/1.11/Django-%{version}.tar.gz
20 # Source0-md5: 9c25bc2575a2cd357bcc5764f809d29d
21 Patch0: python3.7.patch
22 URL: https://www.djangoproject.com/
23 %if %(locale -a | grep -q '^C\.utf8$'; echo $?)
24 BuildRequires: glibc-localedb-all
26 BuildRequires: rpm-pythonprov
27 BuildRequires: rpmbuild(find_lang) >= 1.40
28 BuildRequires: rpmbuild(macros) >= 1.714
29 %{?with_doc:BuildRequires: sphinx-pdg}
31 BuildRequires: python-devel >= 1:2.7
32 BuildRequires: python-setuptools
34 BuildRequires: python-pytz
38 BuildRequires: python3-devel >= 1:3.4
39 BuildRequires: python3-setuptools
41 BuildRequires: python3-pytz
44 Suggests: python-MySQLdb
45 Suggests: python-PyGreSQL
46 Suggests: python-devel-tools
48 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
51 Django is a high-level Python Web framework that encourages rapid
52 development and clean, pragmatic design.
54 %description -l pl.UTF-8
55 Django to wysokopoziomowy szkielet dla serwisów WWW w Pythonie
56 wspierający szybkie tworzenie i czysty, pragmatyczny projekt.
58 %package -n python3-%{module}
59 Summary: The web framework for perfectionists with deadlines
60 Summary(pl.UTF-8): Szkielet WWW dla perfekcjonistów z ograniczeniami czasowymi
61 Group: Libraries/Python
62 Suggests: python3-MySQLdb
63 Suggests: python3-devel-tools
64 Suggests: python3-psycopg2
66 %description -n python3-%{module}
67 Django is a high-level Python Web framework that encourages rapid
68 development and clean, pragmatic design.
70 %description -n python3-%{module} -l pl.UTF-8
71 Django to wysokopoziomowy szkielet dla serwisów WWW w Pythonie
72 wspierający szybkie tworzenie i czysty, pragmatyczny projekt.
75 Summary: Documentation on Django
76 Summary(de.UTF-8): Dokumentation zu Django
77 Summary(es.UTF-8): Documentación para Django
78 Summary(fr.UTF-8): Documentation sur Django
79 Summary(pl.UTF-8): Dokumentacja do Django
83 Documentation on Django.
85 %description doc -l pl.UTF-8
86 Dokumentacja do Django.
89 %setup -q -n Django-%{version}
99 PYTHONPATH=$(pwd)/build-2/lib \
100 %{__python} tests/runtests.py
109 PYTHONPATH=$(pwd)/build-3/lib \
110 %{__python3} tests/runtests.py
115 %{__make} -C docs html
116 %{__rm} -r docs/_build/html/_sources
120 rm -rf $RPM_BUILD_ROOT
125 %{__mv} $RPM_BUILD_ROOT%{_bindir}/{django-admin.py,django-admin-2}
126 ln -s django-admin-2 $RPM_BUILD_ROOT%{_bindir}/py2-django-admin
132 %{__mv} $RPM_BUILD_ROOT%{_bindir}/{django-admin.py,django-admin-3}
133 ln -s django-admin-3 $RPM_BUILD_ROOT%{_bindir}/py3-django-admin
136 # setup "django-admin" global alias
137 # this needs to be done after both Python versions are installed
138 # otherwise file contents would be overwritten via symlink
140 # default to python2 if built
141 ln -sf py2-django-admin $RPM_BUILD_ROOT%{_bindir}/django-admin
142 # default to python2 if built
145 ln -sf py3-django-admin $RPM_BUILD_ROOT%{_bindir}/django-admin
150 install -d $RPM_BUILD_ROOT%{_docdir}
151 ln -sf python-django-doc-%{version} $RPM_BUILD_ROOT%{_docdir}/python-django-doc
154 # don't package .po sources
156 %{?with_python2:$RPM_BUILD_ROOT%{py_sitescriptdir}/%{module}} \
157 %{?with_python3:$RPM_BUILD_ROOT%{py3_sitescriptdir}/%{module}} \
159 -name djangojs.po | xargs %{__rm} -v
161 %find_lang django --with-django --all-name
163 # fix after find-lang:
164 # - remove __pycache__ "language"
165 # - drop charsets from lang names (django uses non-standard _Charset instead of @charset)
166 grep -v __pycache__ <django.lang | \
167 sed -e 's/lang(sr_Latn)/lang(sr)/;s/lang(zh_Hans)/lang(zh_CN)/;s/lang(zh_Hant)/lang(zh_TW)/' > django_fixed.lang
169 # separate lang to Python 2 and Python 3 files
171 grep python2 django_fixed.lang > python2-django.lang
174 grep python3 django_fixed.lang > python3-django.lang
178 rm -rf $RPM_BUILD_ROOT
181 %files -f python2-django.lang
182 %defattr(644,root,root,755)
183 %doc AUTHORS LICENSE README.rst
184 %attr(755,root,root) %{_bindir}/django-admin
185 %attr(755,root,root) %{_bindir}/py2-django-admin
186 %attr(755,root,root) %{_bindir}/django-admin-2
187 %dir %{py_sitescriptdir}/%{module}
188 %{py_sitescriptdir}/%{module}/*.py[co]
189 %{py_sitescriptdir}/%{module}/apps
190 %{py_sitescriptdir}/%{module}/bin
191 %{py_sitescriptdir}/%{module}/core
192 %{py_sitescriptdir}/%{module}/db
193 %{py_sitescriptdir}/%{module}/dispatch
194 %{py_sitescriptdir}/%{module}/forms
195 %{py_sitescriptdir}/%{module}/http
196 %{py_sitescriptdir}/%{module}/middleware
197 %{py_sitescriptdir}/%{module}/template
198 %{py_sitescriptdir}/%{module}/templatetags
199 %{py_sitescriptdir}/%{module}/test
200 %{py_sitescriptdir}/%{module}/urls
201 %{py_sitescriptdir}/%{module}/utils
202 %{py_sitescriptdir}/%{module}/views
204 %dir %{py_sitescriptdir}/%{module}/conf
205 %{py_sitescriptdir}/%{module}/conf/*.py[co]
206 %{py_sitescriptdir}/%{module}/conf/app_template
207 %dir %{py_sitescriptdir}/%{module}/conf/locale
208 %{py_sitescriptdir}/%{module}/conf/locale/__init__.py[co]
209 %{py_sitescriptdir}/%{module}/conf/project_template
210 %{py_sitescriptdir}/%{module}/conf/urls
212 %dir %{py_sitescriptdir}/%{module}/contrib
213 %{py_sitescriptdir}/%{module}/contrib/*.py[co]
214 %dir %{py_sitescriptdir}/%{module}/contrib/admin
215 %{py_sitescriptdir}/%{module}/contrib/admin/*.py[co]
216 %dir %{py_sitescriptdir}/%{module}/contrib/admin/locale
217 %{py_sitescriptdir}/%{module}/contrib/admin/migrations
218 %{py_sitescriptdir}/%{module}/contrib/admin/static
219 %{py_sitescriptdir}/%{module}/contrib/admin/templates
220 %{py_sitescriptdir}/%{module}/contrib/admin/templatetags
221 %{py_sitescriptdir}/%{module}/contrib/admin/views
222 %dir %{py_sitescriptdir}/%{module}/contrib/admindocs
223 %{py_sitescriptdir}/%{module}/contrib/admindocs/*.py[co]
224 %dir %{py_sitescriptdir}/%{module}/contrib/admindocs/locale
225 %{py_sitescriptdir}/%{module}/contrib/admindocs/templates
226 %dir %{py_sitescriptdir}/%{module}/contrib/auth
227 %{py_sitescriptdir}/%{module}/contrib/auth/*.py[co]
228 %{py_sitescriptdir}/%{module}/contrib/auth/common-passwords.txt.gz
229 %{py_sitescriptdir}/%{module}/contrib/auth/handlers
230 %dir %{py_sitescriptdir}/%{module}/contrib/auth/locale
231 %{py_sitescriptdir}/%{module}/contrib/auth/management
232 %{py_sitescriptdir}/%{module}/contrib/auth/migrations
233 %{py_sitescriptdir}/%{module}/contrib/auth/templates
234 %{py_sitescriptdir}/%{module}/contrib/auth/tests
235 %dir %{py_sitescriptdir}/%{module}/contrib/contenttypes
236 %{py_sitescriptdir}/%{module}/contrib/contenttypes/*.py[co]
237 %dir %{py_sitescriptdir}/%{module}/contrib/contenttypes/locale
238 %{py_sitescriptdir}/%{module}/contrib/contenttypes/management
239 %{py_sitescriptdir}/%{module}/contrib/contenttypes/migrations
240 %dir %{py_sitescriptdir}/%{module}/contrib/flatpages
241 %{py_sitescriptdir}/%{module}/contrib/flatpages/*.py[co]
242 %dir %{py_sitescriptdir}/%{module}/contrib/flatpages/locale
243 %{py_sitescriptdir}/%{module}/contrib/flatpages/migrations
244 %{py_sitescriptdir}/%{module}/contrib/flatpages/templatetags
245 %dir %{py_sitescriptdir}/%{module}/contrib/gis
246 %{py_sitescriptdir}/%{module}/contrib/gis/*.py[co]
247 %{py_sitescriptdir}/%{module}/contrib/gis/admin
248 %{py_sitescriptdir}/%{module}/contrib/gis/db
249 %{py_sitescriptdir}/%{module}/contrib/gis/forms
250 %{py_sitescriptdir}/%{module}/contrib/gis/gdal
251 %{py_sitescriptdir}/%{module}/contrib/gis/geoip
252 %{py_sitescriptdir}/%{module}/contrib/gis/geoip2
253 %{py_sitescriptdir}/%{module}/contrib/gis/geometry
254 %{py_sitescriptdir}/%{module}/contrib/gis/geos
255 %dir %{py_sitescriptdir}/%{module}/contrib/gis/locale
256 %{py_sitescriptdir}/%{module}/contrib/gis/management
257 %{py_sitescriptdir}/%{module}/contrib/gis/serializers
258 %{py_sitescriptdir}/%{module}/contrib/gis/sitemaps
259 %{py_sitescriptdir}/%{module}/contrib/gis/static
260 %{py_sitescriptdir}/%{module}/contrib/gis/templates
261 %{py_sitescriptdir}/%{module}/contrib/gis/utils
262 %dir %{py_sitescriptdir}/%{module}/contrib/humanize
263 %{py_sitescriptdir}/%{module}/contrib/humanize/*.py[co]
264 %dir %{py_sitescriptdir}/%{module}/contrib/humanize/locale
265 %{py_sitescriptdir}/%{module}/contrib/humanize/templatetags
266 %dir %{py_sitescriptdir}/%{module}/contrib/messages
267 %{py_sitescriptdir}/%{module}/contrib/messages/*.py[co]
268 %{py_sitescriptdir}/%{module}/contrib/messages/storage
269 %dir %{py_sitescriptdir}/%{module}/contrib/postgres
270 %{py_sitescriptdir}/%{module}/contrib/postgres/*.py[co]
271 %{py_sitescriptdir}/%{module}/contrib/postgres/aggregates
272 %{py_sitescriptdir}/%{module}/contrib/postgres/fields
273 %{py_sitescriptdir}/%{module}/contrib/postgres/forms
274 %{py_sitescriptdir}/%{module}/contrib/postgres/jinja2
275 %dir %{py_sitescriptdir}/%{module}/contrib/postgres/locale
276 %{py_sitescriptdir}/%{module}/contrib/postgres/templates
277 %dir %{py_sitescriptdir}/%{module}/contrib/redirects
278 %{py_sitescriptdir}/%{module}/contrib/redirects/*.py[co]
279 %dir %{py_sitescriptdir}/%{module}/contrib/redirects/locale
280 %{py_sitescriptdir}/%{module}/contrib/redirects/migrations
281 %dir %{py_sitescriptdir}/%{module}/contrib/sessions
282 %{py_sitescriptdir}/%{module}/contrib/sessions/*.py[co]
283 %{py_sitescriptdir}/%{module}/contrib/sessions/backends
284 %dir %{py_sitescriptdir}/%{module}/contrib/sessions/locale
285 %{py_sitescriptdir}/%{module}/contrib/sessions/management
286 %{py_sitescriptdir}/%{module}/contrib/sessions/migrations
287 %{py_sitescriptdir}/%{module}/contrib/sitemaps
288 %dir %{py_sitescriptdir}/%{module}/contrib/sites
289 %{py_sitescriptdir}/%{module}/contrib/sites/*.py[co]
290 %dir %{py_sitescriptdir}/%{module}/contrib/sites/locale
291 %{py_sitescriptdir}/%{module}/contrib/sites/migrations
292 %{py_sitescriptdir}/%{module}/contrib/staticfiles
293 %{py_sitescriptdir}/%{module}/contrib/syndication
294 %{py_sitescriptdir}/%{egg_name}-%{version}-py*.egg-info
298 %files -n python3-%{module} -f python3-django.lang
299 %defattr(644,root,root,755)
300 %doc AUTHORS LICENSE README.rst
301 %if %{without python2}
302 %attr(755,root,root) %{_bindir}/django-admin
304 %attr(755,root,root) %{_bindir}/py3-django-admin
305 %attr(755,root,root) %{_bindir}/django-admin-3
306 %dir %{py3_sitescriptdir}/%{module}
307 %{py3_sitescriptdir}/%{module}/*.py
308 %{py3_sitescriptdir}/%{module}/__pycache__
309 %{py3_sitescriptdir}/%{module}/apps
310 %{py3_sitescriptdir}/%{module}/bin
311 %{py3_sitescriptdir}/%{module}/core
312 %{py3_sitescriptdir}/%{module}/db
313 %{py3_sitescriptdir}/%{module}/dispatch
314 %{py3_sitescriptdir}/%{module}/forms
315 %{py3_sitescriptdir}/%{module}/http
316 %{py3_sitescriptdir}/%{module}/middleware
317 %{py3_sitescriptdir}/%{module}/template
318 %{py3_sitescriptdir}/%{module}/templatetags
319 %{py3_sitescriptdir}/%{module}/test
320 %{py3_sitescriptdir}/%{module}/urls
321 %{py3_sitescriptdir}/%{module}/utils
322 %{py3_sitescriptdir}/%{module}/views
324 %dir %{py3_sitescriptdir}/%{module}/conf
325 %{py3_sitescriptdir}/%{module}/conf/*.py
326 %{py3_sitescriptdir}/%{module}/conf/__pycache__
327 %{py3_sitescriptdir}/%{module}/conf/app_template
328 %dir %{py3_sitescriptdir}/%{module}/conf/locale
329 %{py3_sitescriptdir}/%{module}/conf/locale/__init__.py
330 %{py3_sitescriptdir}/%{module}/conf/locale/__pycache__
331 %{py3_sitescriptdir}/%{module}/conf/project_template
332 %{py3_sitescriptdir}/%{module}/conf/urls
334 %dir %{py3_sitescriptdir}/%{module}/contrib
335 %{py3_sitescriptdir}/%{module}/contrib/*.py
336 %{py3_sitescriptdir}/%{module}/contrib/__pycache__
337 %dir %{py3_sitescriptdir}/%{module}/contrib/admin
338 %{py3_sitescriptdir}/%{module}/contrib/admin/*.py
339 %{py3_sitescriptdir}/%{module}/contrib/admin/__pycache__
340 %dir %{py3_sitescriptdir}/%{module}/contrib/admin/locale
341 %{py3_sitescriptdir}/%{module}/contrib/admin/migrations
342 %{py3_sitescriptdir}/%{module}/contrib/admin/static
343 %{py3_sitescriptdir}/%{module}/contrib/admin/templates
344 %{py3_sitescriptdir}/%{module}/contrib/admin/templatetags
345 %{py3_sitescriptdir}/%{module}/contrib/admin/views
346 %dir %{py3_sitescriptdir}/%{module}/contrib/admindocs
347 %{py3_sitescriptdir}/%{module}/contrib/admindocs/*.py
348 %{py3_sitescriptdir}/%{module}/contrib/admindocs/__pycache__
349 %dir %{py3_sitescriptdir}/%{module}/contrib/admindocs/locale
350 %{py3_sitescriptdir}/%{module}/contrib/admindocs/templates
351 %dir %{py3_sitescriptdir}/%{module}/contrib/auth
352 %{py3_sitescriptdir}/%{module}/contrib/auth/*.py
353 %{py3_sitescriptdir}/%{module}/contrib/auth/__pycache__
354 %{py3_sitescriptdir}/%{module}/contrib/auth/common-passwords.txt.gz
355 %{py3_sitescriptdir}/%{module}/contrib/auth/handlers
356 %dir %{py3_sitescriptdir}/%{module}/contrib/auth/locale
357 %{py3_sitescriptdir}/%{module}/contrib/auth/management
358 %{py3_sitescriptdir}/%{module}/contrib/auth/migrations
359 %{py3_sitescriptdir}/%{module}/contrib/auth/templates
360 %{py3_sitescriptdir}/%{module}/contrib/auth/tests
361 %dir %{py3_sitescriptdir}/%{module}/contrib/contenttypes
362 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/*.py
363 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/__pycache__
364 %dir %{py3_sitescriptdir}/%{module}/contrib/contenttypes/locale
365 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/management
366 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/migrations
367 %dir %{py3_sitescriptdir}/%{module}/contrib/flatpages
368 %{py3_sitescriptdir}/%{module}/contrib/flatpages/*.py
369 %{py3_sitescriptdir}/%{module}/contrib/flatpages/__pycache__
370 %dir %{py3_sitescriptdir}/%{module}/contrib/flatpages/locale
371 %{py3_sitescriptdir}/%{module}/contrib/flatpages/migrations
372 %{py3_sitescriptdir}/%{module}/contrib/flatpages/templatetags
373 %dir %{py3_sitescriptdir}/%{module}/contrib/gis
374 %{py3_sitescriptdir}/%{module}/contrib/gis/*.py
375 %{py3_sitescriptdir}/%{module}/contrib/gis/__pycache__
376 %{py3_sitescriptdir}/%{module}/contrib/gis/admin
377 %{py3_sitescriptdir}/%{module}/contrib/gis/db
378 %{py3_sitescriptdir}/%{module}/contrib/gis/forms
379 %{py3_sitescriptdir}/%{module}/contrib/gis/gdal
380 %{py3_sitescriptdir}/%{module}/contrib/gis/geoip
381 %{py3_sitescriptdir}/%{module}/contrib/gis/geoip2
382 %{py3_sitescriptdir}/%{module}/contrib/gis/geometry
383 %{py3_sitescriptdir}/%{module}/contrib/gis/geos
384 %dir %{py3_sitescriptdir}/%{module}/contrib/gis/locale
385 %{py3_sitescriptdir}/%{module}/contrib/gis/management
386 %{py3_sitescriptdir}/%{module}/contrib/gis/serializers
387 %{py3_sitescriptdir}/%{module}/contrib/gis/sitemaps
388 %{py3_sitescriptdir}/%{module}/contrib/gis/static
389 %{py3_sitescriptdir}/%{module}/contrib/gis/templates
390 %{py3_sitescriptdir}/%{module}/contrib/gis/utils
391 %dir %{py3_sitescriptdir}/%{module}/contrib/humanize
392 %{py3_sitescriptdir}/%{module}/contrib/humanize/*.py
393 %{py3_sitescriptdir}/%{module}/contrib/humanize/__pycache__
394 %dir %{py3_sitescriptdir}/%{module}/contrib/humanize/locale
395 %{py3_sitescriptdir}/%{module}/contrib/humanize/templatetags
396 %dir %{py3_sitescriptdir}/%{module}/contrib/messages
397 %{py3_sitescriptdir}/%{module}/contrib/messages/*.py
398 %{py3_sitescriptdir}/%{module}/contrib/messages/__pycache__
399 %{py3_sitescriptdir}/%{module}/contrib/messages/storage
400 %dir %{py3_sitescriptdir}/%{module}/contrib/postgres
401 %{py3_sitescriptdir}/%{module}/contrib/postgres/*.py
402 %{py3_sitescriptdir}/%{module}/contrib/postgres/__pycache__
403 %{py3_sitescriptdir}/%{module}/contrib/postgres/aggregates
404 %{py3_sitescriptdir}/%{module}/contrib/postgres/fields
405 %{py3_sitescriptdir}/%{module}/contrib/postgres/forms
406 %{py3_sitescriptdir}/%{module}/contrib/postgres/jinja2
407 %dir %{py3_sitescriptdir}/%{module}/contrib/postgres/locale
408 %{py3_sitescriptdir}/%{module}/contrib/postgres/templates
409 %dir %{py3_sitescriptdir}/%{module}/contrib/redirects
410 %{py3_sitescriptdir}/%{module}/contrib/redirects/*.py
411 %{py3_sitescriptdir}/%{module}/contrib/redirects/__pycache__
412 %dir %{py3_sitescriptdir}/%{module}/contrib/redirects/locale
413 %{py3_sitescriptdir}/%{module}/contrib/redirects/migrations
414 %dir %{py3_sitescriptdir}/%{module}/contrib/sessions
415 %{py3_sitescriptdir}/%{module}/contrib/sessions/*.py
416 %{py3_sitescriptdir}/%{module}/contrib/sessions/__pycache__
417 %{py3_sitescriptdir}/%{module}/contrib/sessions/backends
418 %dir %{py3_sitescriptdir}/%{module}/contrib/sessions/locale
419 %{py3_sitescriptdir}/%{module}/contrib/sessions/management
420 %{py3_sitescriptdir}/%{module}/contrib/sessions/migrations
421 %{py3_sitescriptdir}/%{module}/contrib/sitemaps
422 %dir %{py3_sitescriptdir}/%{module}/contrib/sites
423 %{py3_sitescriptdir}/%{module}/contrib/sites/*.py
424 %{py3_sitescriptdir}/%{module}/contrib/sites/__pycache__
425 %dir %{py3_sitescriptdir}/%{module}/contrib/sites/locale
426 %{py3_sitescriptdir}/%{module}/contrib/sites/migrations
427 %{py3_sitescriptdir}/%{module}/contrib/staticfiles
428 %{py3_sitescriptdir}/%{module}/contrib/syndication
430 %{py3_sitescriptdir}/%{egg_name}-%{version}-py*.egg-info
435 %defattr(644,root,root,755)
436 %doc docs/_build/html/*
437 %{_docdir}/python-django-doc