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 [failing: 1E, 1F as of 1.11.29]
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
15 # keep 1.11.x here for python2 support
19 Group: Libraries/Python
20 Source0: https://www.djangoproject.com/m/releases/1.11/Django-%{version}.tar.gz
21 # Source0-md5: e725953dfc63ea9e3b5b0898a8027bd7
22 Patch0: %{name}-sphinx.patch
23 URL: https://www.djangoproject.com/
24 %if %(locale -a | grep -q '^C\.utf8$'; echo $?)
25 BuildRequires: glibc-localedb-all
27 BuildRequires: rpm-pythonprov
28 BuildRequires: rpmbuild(find_lang) >= 1.40
29 BuildRequires: rpmbuild(macros) >= 1.714
30 %{?with_doc:BuildRequires: sphinx-pdg}
32 BuildRequires: python-devel >= 1:2.7
33 BuildRequires: python-setuptools
35 BuildRequires: python-pytz
39 BuildRequires: python3-devel >= 1:3.4
40 BuildRequires: python3-setuptools
42 BuildRequires: python3-pytz
46 BuildRequires: sphinx-pdg >= 1.8
48 Suggests: python-MySQLdb
49 Suggests: python-PyGreSQL
50 Suggests: python-devel-tools
52 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
55 Django is a high-level Python Web framework that encourages rapid
56 development and clean, pragmatic design.
58 %description -l pl.UTF-8
59 Django to wysokopoziomowy szkielet dla serwisów WWW w Pythonie
60 wspierający szybkie tworzenie i czysty, pragmatyczny projekt.
62 %package -n python3-%{module}
63 Summary: The web framework for perfectionists with deadlines
64 Summary(pl.UTF-8): Szkielet WWW dla perfekcjonistów z ograniczeniami czasowymi
65 Group: Libraries/Python
66 Suggests: python3-MySQLdb
67 Suggests: python3-devel-tools
68 Suggests: python3-psycopg2
70 %description -n python3-%{module}
71 Django is a high-level Python Web framework that encourages rapid
72 development and clean, pragmatic design.
74 %description -n python3-%{module} -l pl.UTF-8
75 Django to wysokopoziomowy szkielet dla serwisów WWW w Pythonie
76 wspierający szybkie tworzenie i czysty, pragmatyczny projekt.
79 Summary: Documentation on Django
80 Summary(de.UTF-8): Dokumentation zu Django
81 Summary(es.UTF-8): Documentación para Django
82 Summary(fr.UTF-8): Documentation sur Django
83 Summary(pl.UTF-8): Dokumentacja do Django
87 Documentation on Django.
89 %description doc -l pl.UTF-8
90 Dokumentacja do Django.
93 %setup -q -n Django-%{version}
102 PYTHONPATH=$(pwd)/build-2/lib \
103 %{__python} tests/runtests.py --parallel 1
112 PYTHONPATH=$(pwd)/build-3/lib \
113 %{__python3} tests/runtests.py --parallel 1
118 %{__make} -C docs html
122 rm -rf $RPM_BUILD_ROOT
128 %{__mv} $RPM_BUILD_ROOT%{_bindir}/{django-admin.py,django-admin-2}
129 ln -s django-admin-2 $RPM_BUILD_ROOT%{_bindir}/py2-django-admin
131 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' $RPM_BUILD_ROOT%{py_sitescriptdir}/django/conf/project_template/manage.py-tpl
137 %{__mv} $RPM_BUILD_ROOT%{_bindir}/{django-admin.py,django-admin-3}
138 ln -s django-admin-3 $RPM_BUILD_ROOT%{_bindir}/py3-django-admin
140 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python3},' $RPM_BUILD_ROOT%{py3_sitescriptdir}/django/conf/project_template/manage.py-tpl
141 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python3},' $RPM_BUILD_ROOT%{py3_sitescriptdir}/django/bin/django-admin.py
144 # setup "django-admin" global alias
145 # this needs to be done after both Python versions are installed
146 # otherwise file contents would be overwritten via symlink
148 # default to python2 if built
149 ln -sf py2-django-admin $RPM_BUILD_ROOT%{_bindir}/django-admin
152 ln -sf py3-django-admin $RPM_BUILD_ROOT%{_bindir}/django-admin
157 install -d $RPM_BUILD_ROOT%{_docdir}
158 ln -sf python-django-doc-%{version} $RPM_BUILD_ROOT%{_docdir}/python-django-doc
161 # don't package .po sources
163 %{?with_python2:$RPM_BUILD_ROOT%{py_sitescriptdir}/%{module}} \
164 %{?with_python3:$RPM_BUILD_ROOT%{py3_sitescriptdir}/%{module}} \
166 -name djangojs.po | xargs %{__rm} -v
168 %find_lang django --with-django --all-name
170 # fix after find-lang:
171 # - remove __pycache__ "language"
172 # - drop charsets from lang names (django uses non-standard _Charset instead of @charset)
173 grep -v __pycache__ <django.lang | \
174 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
176 # separate lang to Python 2 and Python 3 files
178 grep python2 django_fixed.lang > python2-django.lang
181 grep python3 django_fixed.lang > python3-django.lang
185 rm -rf $RPM_BUILD_ROOT
188 %files -f python2-django.lang
189 %defattr(644,root,root,755)
190 %doc AUTHORS LICENSE README.rst
191 %attr(755,root,root) %{_bindir}/django-admin
192 %attr(755,root,root) %{_bindir}/py2-django-admin
193 %attr(755,root,root) %{_bindir}/django-admin-2
194 %dir %{py_sitescriptdir}/%{module}
195 %{py_sitescriptdir}/%{module}/*.py[co]
196 %{py_sitescriptdir}/%{module}/apps
197 %{py_sitescriptdir}/%{module}/bin
198 %{py_sitescriptdir}/%{module}/core
199 %{py_sitescriptdir}/%{module}/db
200 %{py_sitescriptdir}/%{module}/dispatch
201 %{py_sitescriptdir}/%{module}/forms
202 %{py_sitescriptdir}/%{module}/http
203 %{py_sitescriptdir}/%{module}/middleware
204 %{py_sitescriptdir}/%{module}/template
205 %{py_sitescriptdir}/%{module}/templatetags
206 %{py_sitescriptdir}/%{module}/test
207 %{py_sitescriptdir}/%{module}/urls
208 %{py_sitescriptdir}/%{module}/utils
209 %{py_sitescriptdir}/%{module}/views
211 %dir %{py_sitescriptdir}/%{module}/conf
212 %{py_sitescriptdir}/%{module}/conf/*.py[co]
213 %{py_sitescriptdir}/%{module}/conf/app_template
214 %dir %{py_sitescriptdir}/%{module}/conf/locale
215 %{py_sitescriptdir}/%{module}/conf/locale/__init__.py[co]
216 %{py_sitescriptdir}/%{module}/conf/project_template
217 %{py_sitescriptdir}/%{module}/conf/urls
219 %dir %{py_sitescriptdir}/%{module}/contrib
220 %{py_sitescriptdir}/%{module}/contrib/*.py[co]
221 %dir %{py_sitescriptdir}/%{module}/contrib/admin
222 %{py_sitescriptdir}/%{module}/contrib/admin/*.py[co]
223 %dir %{py_sitescriptdir}/%{module}/contrib/admin/locale
224 %{py_sitescriptdir}/%{module}/contrib/admin/migrations
225 %{py_sitescriptdir}/%{module}/contrib/admin/static
226 %{py_sitescriptdir}/%{module}/contrib/admin/templates
227 %{py_sitescriptdir}/%{module}/contrib/admin/templatetags
228 %{py_sitescriptdir}/%{module}/contrib/admin/views
229 %dir %{py_sitescriptdir}/%{module}/contrib/admindocs
230 %{py_sitescriptdir}/%{module}/contrib/admindocs/*.py[co]
231 %dir %{py_sitescriptdir}/%{module}/contrib/admindocs/locale
232 %{py_sitescriptdir}/%{module}/contrib/admindocs/templates
233 %dir %{py_sitescriptdir}/%{module}/contrib/auth
234 %{py_sitescriptdir}/%{module}/contrib/auth/*.py[co]
235 %{py_sitescriptdir}/%{module}/contrib/auth/common-passwords.txt.gz
236 %{py_sitescriptdir}/%{module}/contrib/auth/handlers
237 %dir %{py_sitescriptdir}/%{module}/contrib/auth/locale
238 %{py_sitescriptdir}/%{module}/contrib/auth/management
239 %{py_sitescriptdir}/%{module}/contrib/auth/migrations
240 %{py_sitescriptdir}/%{module}/contrib/auth/templates
241 %{py_sitescriptdir}/%{module}/contrib/auth/tests
242 %dir %{py_sitescriptdir}/%{module}/contrib/contenttypes
243 %{py_sitescriptdir}/%{module}/contrib/contenttypes/*.py[co]
244 %dir %{py_sitescriptdir}/%{module}/contrib/contenttypes/locale
245 %{py_sitescriptdir}/%{module}/contrib/contenttypes/management
246 %{py_sitescriptdir}/%{module}/contrib/contenttypes/migrations
247 %dir %{py_sitescriptdir}/%{module}/contrib/flatpages
248 %{py_sitescriptdir}/%{module}/contrib/flatpages/*.py[co]
249 %dir %{py_sitescriptdir}/%{module}/contrib/flatpages/locale
250 %{py_sitescriptdir}/%{module}/contrib/flatpages/migrations
251 %{py_sitescriptdir}/%{module}/contrib/flatpages/templatetags
252 %dir %{py_sitescriptdir}/%{module}/contrib/gis
253 %{py_sitescriptdir}/%{module}/contrib/gis/*.py[co]
254 %{py_sitescriptdir}/%{module}/contrib/gis/admin
255 %{py_sitescriptdir}/%{module}/contrib/gis/db
256 %{py_sitescriptdir}/%{module}/contrib/gis/forms
257 %{py_sitescriptdir}/%{module}/contrib/gis/gdal
258 %{py_sitescriptdir}/%{module}/contrib/gis/geoip
259 %{py_sitescriptdir}/%{module}/contrib/gis/geoip2
260 %{py_sitescriptdir}/%{module}/contrib/gis/geometry
261 %{py_sitescriptdir}/%{module}/contrib/gis/geos
262 %dir %{py_sitescriptdir}/%{module}/contrib/gis/locale
263 %{py_sitescriptdir}/%{module}/contrib/gis/management
264 %{py_sitescriptdir}/%{module}/contrib/gis/serializers
265 %{py_sitescriptdir}/%{module}/contrib/gis/sitemaps
266 %{py_sitescriptdir}/%{module}/contrib/gis/static
267 %{py_sitescriptdir}/%{module}/contrib/gis/templates
268 %{py_sitescriptdir}/%{module}/contrib/gis/utils
269 %dir %{py_sitescriptdir}/%{module}/contrib/humanize
270 %{py_sitescriptdir}/%{module}/contrib/humanize/*.py[co]
271 %dir %{py_sitescriptdir}/%{module}/contrib/humanize/locale
272 %{py_sitescriptdir}/%{module}/contrib/humanize/templatetags
273 %dir %{py_sitescriptdir}/%{module}/contrib/messages
274 %{py_sitescriptdir}/%{module}/contrib/messages/*.py[co]
275 %{py_sitescriptdir}/%{module}/contrib/messages/storage
276 %dir %{py_sitescriptdir}/%{module}/contrib/postgres
277 %{py_sitescriptdir}/%{module}/contrib/postgres/*.py[co]
278 %{py_sitescriptdir}/%{module}/contrib/postgres/aggregates
279 %{py_sitescriptdir}/%{module}/contrib/postgres/fields
280 %{py_sitescriptdir}/%{module}/contrib/postgres/forms
281 %{py_sitescriptdir}/%{module}/contrib/postgres/jinja2
282 %dir %{py_sitescriptdir}/%{module}/contrib/postgres/locale
283 %{py_sitescriptdir}/%{module}/contrib/postgres/templates
284 %dir %{py_sitescriptdir}/%{module}/contrib/redirects
285 %{py_sitescriptdir}/%{module}/contrib/redirects/*.py[co]
286 %dir %{py_sitescriptdir}/%{module}/contrib/redirects/locale
287 %{py_sitescriptdir}/%{module}/contrib/redirects/migrations
288 %dir %{py_sitescriptdir}/%{module}/contrib/sessions
289 %{py_sitescriptdir}/%{module}/contrib/sessions/*.py[co]
290 %{py_sitescriptdir}/%{module}/contrib/sessions/backends
291 %dir %{py_sitescriptdir}/%{module}/contrib/sessions/locale
292 %{py_sitescriptdir}/%{module}/contrib/sessions/management
293 %{py_sitescriptdir}/%{module}/contrib/sessions/migrations
294 %{py_sitescriptdir}/%{module}/contrib/sitemaps
295 %dir %{py_sitescriptdir}/%{module}/contrib/sites
296 %{py_sitescriptdir}/%{module}/contrib/sites/*.py[co]
297 %dir %{py_sitescriptdir}/%{module}/contrib/sites/locale
298 %{py_sitescriptdir}/%{module}/contrib/sites/migrations
299 %{py_sitescriptdir}/%{module}/contrib/staticfiles
300 %{py_sitescriptdir}/%{module}/contrib/syndication
301 %{py_sitescriptdir}/%{egg_name}-%{version}-py*.egg-info
305 %files -n python3-%{module} -f python3-django.lang
306 %defattr(644,root,root,755)
307 %doc AUTHORS LICENSE README.rst
308 %if %{without python2}
309 %attr(755,root,root) %{_bindir}/django-admin
311 %attr(755,root,root) %{_bindir}/py3-django-admin
312 %attr(755,root,root) %{_bindir}/django-admin-3
313 %dir %{py3_sitescriptdir}/%{module}
314 %{py3_sitescriptdir}/%{module}/*.py
315 %{py3_sitescriptdir}/%{module}/__pycache__
316 %{py3_sitescriptdir}/%{module}/apps
317 %{py3_sitescriptdir}/%{module}/bin
318 %{py3_sitescriptdir}/%{module}/core
319 %{py3_sitescriptdir}/%{module}/db
320 %{py3_sitescriptdir}/%{module}/dispatch
321 %{py3_sitescriptdir}/%{module}/forms
322 %{py3_sitescriptdir}/%{module}/http
323 %{py3_sitescriptdir}/%{module}/middleware
324 %{py3_sitescriptdir}/%{module}/template
325 %{py3_sitescriptdir}/%{module}/templatetags
326 %{py3_sitescriptdir}/%{module}/test
327 %{py3_sitescriptdir}/%{module}/urls
328 %{py3_sitescriptdir}/%{module}/utils
329 %{py3_sitescriptdir}/%{module}/views
331 %dir %{py3_sitescriptdir}/%{module}/conf
332 %{py3_sitescriptdir}/%{module}/conf/*.py
333 %{py3_sitescriptdir}/%{module}/conf/__pycache__
334 %{py3_sitescriptdir}/%{module}/conf/app_template
335 %dir %{py3_sitescriptdir}/%{module}/conf/locale
336 %{py3_sitescriptdir}/%{module}/conf/locale/__init__.py
337 %{py3_sitescriptdir}/%{module}/conf/locale/__pycache__
338 %{py3_sitescriptdir}/%{module}/conf/project_template
339 %{py3_sitescriptdir}/%{module}/conf/urls
341 %dir %{py3_sitescriptdir}/%{module}/contrib
342 %{py3_sitescriptdir}/%{module}/contrib/*.py
343 %{py3_sitescriptdir}/%{module}/contrib/__pycache__
344 %dir %{py3_sitescriptdir}/%{module}/contrib/admin
345 %{py3_sitescriptdir}/%{module}/contrib/admin/*.py
346 %{py3_sitescriptdir}/%{module}/contrib/admin/__pycache__
347 %dir %{py3_sitescriptdir}/%{module}/contrib/admin/locale
348 %{py3_sitescriptdir}/%{module}/contrib/admin/migrations
349 %{py3_sitescriptdir}/%{module}/contrib/admin/static
350 %{py3_sitescriptdir}/%{module}/contrib/admin/templates
351 %{py3_sitescriptdir}/%{module}/contrib/admin/templatetags
352 %{py3_sitescriptdir}/%{module}/contrib/admin/views
353 %dir %{py3_sitescriptdir}/%{module}/contrib/admindocs
354 %{py3_sitescriptdir}/%{module}/contrib/admindocs/*.py
355 %{py3_sitescriptdir}/%{module}/contrib/admindocs/__pycache__
356 %dir %{py3_sitescriptdir}/%{module}/contrib/admindocs/locale
357 %{py3_sitescriptdir}/%{module}/contrib/admindocs/templates
358 %dir %{py3_sitescriptdir}/%{module}/contrib/auth
359 %{py3_sitescriptdir}/%{module}/contrib/auth/*.py
360 %{py3_sitescriptdir}/%{module}/contrib/auth/__pycache__
361 %{py3_sitescriptdir}/%{module}/contrib/auth/common-passwords.txt.gz
362 %{py3_sitescriptdir}/%{module}/contrib/auth/handlers
363 %dir %{py3_sitescriptdir}/%{module}/contrib/auth/locale
364 %{py3_sitescriptdir}/%{module}/contrib/auth/management
365 %{py3_sitescriptdir}/%{module}/contrib/auth/migrations
366 %{py3_sitescriptdir}/%{module}/contrib/auth/templates
367 %{py3_sitescriptdir}/%{module}/contrib/auth/tests
368 %dir %{py3_sitescriptdir}/%{module}/contrib/contenttypes
369 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/*.py
370 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/__pycache__
371 %dir %{py3_sitescriptdir}/%{module}/contrib/contenttypes/locale
372 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/management
373 %{py3_sitescriptdir}/%{module}/contrib/contenttypes/migrations
374 %dir %{py3_sitescriptdir}/%{module}/contrib/flatpages
375 %{py3_sitescriptdir}/%{module}/contrib/flatpages/*.py
376 %{py3_sitescriptdir}/%{module}/contrib/flatpages/__pycache__
377 %dir %{py3_sitescriptdir}/%{module}/contrib/flatpages/locale
378 %{py3_sitescriptdir}/%{module}/contrib/flatpages/migrations
379 %{py3_sitescriptdir}/%{module}/contrib/flatpages/templatetags
380 %dir %{py3_sitescriptdir}/%{module}/contrib/gis
381 %{py3_sitescriptdir}/%{module}/contrib/gis/*.py
382 %{py3_sitescriptdir}/%{module}/contrib/gis/__pycache__
383 %{py3_sitescriptdir}/%{module}/contrib/gis/admin
384 %{py3_sitescriptdir}/%{module}/contrib/gis/db
385 %{py3_sitescriptdir}/%{module}/contrib/gis/forms
386 %{py3_sitescriptdir}/%{module}/contrib/gis/gdal
387 %{py3_sitescriptdir}/%{module}/contrib/gis/geoip
388 %{py3_sitescriptdir}/%{module}/contrib/gis/geoip2
389 %{py3_sitescriptdir}/%{module}/contrib/gis/geometry
390 %{py3_sitescriptdir}/%{module}/contrib/gis/geos
391 %dir %{py3_sitescriptdir}/%{module}/contrib/gis/locale
392 %{py3_sitescriptdir}/%{module}/contrib/gis/management
393 %{py3_sitescriptdir}/%{module}/contrib/gis/serializers
394 %{py3_sitescriptdir}/%{module}/contrib/gis/sitemaps
395 %{py3_sitescriptdir}/%{module}/contrib/gis/static
396 %{py3_sitescriptdir}/%{module}/contrib/gis/templates
397 %{py3_sitescriptdir}/%{module}/contrib/gis/utils
398 %dir %{py3_sitescriptdir}/%{module}/contrib/humanize
399 %{py3_sitescriptdir}/%{module}/contrib/humanize/*.py
400 %{py3_sitescriptdir}/%{module}/contrib/humanize/__pycache__
401 %dir %{py3_sitescriptdir}/%{module}/contrib/humanize/locale
402 %{py3_sitescriptdir}/%{module}/contrib/humanize/templatetags
403 %dir %{py3_sitescriptdir}/%{module}/contrib/messages
404 %{py3_sitescriptdir}/%{module}/contrib/messages/*.py
405 %{py3_sitescriptdir}/%{module}/contrib/messages/__pycache__
406 %{py3_sitescriptdir}/%{module}/contrib/messages/storage
407 %dir %{py3_sitescriptdir}/%{module}/contrib/postgres
408 %{py3_sitescriptdir}/%{module}/contrib/postgres/*.py
409 %{py3_sitescriptdir}/%{module}/contrib/postgres/__pycache__
410 %{py3_sitescriptdir}/%{module}/contrib/postgres/aggregates
411 %{py3_sitescriptdir}/%{module}/contrib/postgres/fields
412 %{py3_sitescriptdir}/%{module}/contrib/postgres/forms
413 %{py3_sitescriptdir}/%{module}/contrib/postgres/jinja2
414 %dir %{py3_sitescriptdir}/%{module}/contrib/postgres/locale
415 %{py3_sitescriptdir}/%{module}/contrib/postgres/templates
416 %dir %{py3_sitescriptdir}/%{module}/contrib/redirects
417 %{py3_sitescriptdir}/%{module}/contrib/redirects/*.py
418 %{py3_sitescriptdir}/%{module}/contrib/redirects/__pycache__
419 %dir %{py3_sitescriptdir}/%{module}/contrib/redirects/locale
420 %{py3_sitescriptdir}/%{module}/contrib/redirects/migrations
421 %dir %{py3_sitescriptdir}/%{module}/contrib/sessions
422 %{py3_sitescriptdir}/%{module}/contrib/sessions/*.py
423 %{py3_sitescriptdir}/%{module}/contrib/sessions/__pycache__
424 %{py3_sitescriptdir}/%{module}/contrib/sessions/backends
425 %dir %{py3_sitescriptdir}/%{module}/contrib/sessions/locale
426 %{py3_sitescriptdir}/%{module}/contrib/sessions/management
427 %{py3_sitescriptdir}/%{module}/contrib/sessions/migrations
428 %{py3_sitescriptdir}/%{module}/contrib/sitemaps
429 %dir %{py3_sitescriptdir}/%{module}/contrib/sites
430 %{py3_sitescriptdir}/%{module}/contrib/sites/*.py
431 %{py3_sitescriptdir}/%{module}/contrib/sites/__pycache__
432 %dir %{py3_sitescriptdir}/%{module}/contrib/sites/locale
433 %{py3_sitescriptdir}/%{module}/contrib/sites/migrations
434 %{py3_sitescriptdir}/%{module}/contrib/staticfiles
435 %{py3_sitescriptdir}/%{module}/contrib/syndication
437 %{py3_sitescriptdir}/%{egg_name}-%{version}-py*.egg-info
442 %defattr(644,root,root,755)
443 %doc docs/_build/html/{_downloads,_images,_modules,_static,faq,howto,internals,intro,misc,ref,releases,topics,*.html,*.js}
444 %{_docdir}/python-django-doc