diff --git a/Makefile b/Makefile index 54eb2dc5cab..e775e151713 100644 --- a/Makefile +++ b/Makefile @@ -31,9 +31,10 @@ ASCII2MAN = rst2man.py $< $@ else ASCII2MAN = @echo "ERROR: rst2man from docutils command is not installed but is required to build $(MANPAGES)" && exit 1 endif -GENERATE_CLI = docs/bin/generate_man.py PYTHON=python +GENERATE_CLI = $(PYTHON) docs/bin/generate_man.py + SITELIB = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()") # fetch version from project release.py as single source-of-truth @@ -238,7 +239,14 @@ sdist_check: .PHONY: sdist sdist: sdist_check clean docs - $(PYTHON) setup.py sdist + _ANSIBLE_SDIST_FROM_MAKEFILE=1 $(PYTHON) setup.py sdist + +# Official releases generate the changelog as the last commit before the release. +# Snapshots shouldn't result in new checkins so the changelog is generated as +# part of creating the tarball. +.PHONY: snapshot +sdist: sdist_check clean docs changelog + _ANSIBLE_SDIST_FROM_MAKEFILE=1 $(PYTHON) setup.py sdist .PHONY: sdist_upload sdist_upload: clean docs @@ -246,7 +254,7 @@ sdist_upload: clean docs .PHONY: changelog changelog: - packaging/release/changelogs/changelog.py release -vv && packaging/release/changelogs/changelog.py generate -vv + PYTHONPATH=./lib packaging/release/changelogs/changelog.py release -vv && PYTHONPATH=./lib packaging/release/changelogs/changelog.py generate -vv .PHONY: rpmcommon rpmcommon: sdist diff --git a/setup.py b/setup.py index b100f7ebd33..f9c85aab875 100644 --- a/setup.py +++ b/setup.py @@ -136,6 +136,15 @@ class SDistCommand(SDist): SDist.run(self) + # Print warnings at the end because no one will see warnings before all the normal status + # output + if os.environ.get('_ANSIBLE_SDIST_FROM_MAKEFILE', False) != '1': + warnings.warn('When setup.py sdist is run from outside of the Makefile,' + ' the generated tarball may be incomplete. Use `make snapshot`' + ' to create a tarball from an arbitrary checkout or use' + ' `cd packaging/release && make release version=[..]` for official builds.', + RuntimeWarning) + def read_file(file_name): """Read file and return its contents."""