5f227fe260
* Install ansible-test Modify the install script to install ansible-test and its supporting code. Alternative to #60701 that doesn't change package_dir ansible for fear that it might regress https://github.com/ansible/ansible/issues/10437 Also: * No longer use package_data. Everything in the package dirs is going to be installed. Anything that shouldn't be installed needs to be moved elsewhere. * modify the algorithm to store symlinks which are in the same tree instead of same directory * Add ansible_test files to package-data sanity test * MANIFEST.in cleanups * Add lib/ansible/config/*.yml * Make most things in code directories (lib/ansible and test/lib/ansible_test/) use explicit file extensions instead of wildcards for maintainability * Exclude common file extensions that we don't want included in the code directories * Change package-data test to be more complete * Now compares the repository, sdist, and install * Compares both that everything in the sdist is in the repo and everything in the install is in the sdist in addition to comparing that everything in the repo that we want is in the install * Leave out test artifacts Only include the directory structure for test/results and test/cache not any files that may have been generated by test runs Remove test/utils files from the sdist as these are only needed for our CI cleanup of docs in MANIFEST.in; getting rid of build files. * Add the ability to output sdist and snapshot to specific directory * Add a warning about modifying the heuristic to setup.py * Address generated files * Use make snapshot instead of sdist to generate changelog and man pages and make sure they're included * Ignore both the test/utils and generated test files (results, cache) * Deal with Python3 __pycache__ byte code caches * Don't check documentation, that isn't built for the sdist * Restructure for clarity * Add cli web docs to make clean This was causing problems when attempting to test that the sdist didn't have extra files * Fix bug constructing python names from __pycache__ names * Create a clean repo to work from * Exclude test/legacy and be more explicit on extensions * Exclude the legacy directory from sdist
116 lines
3.9 KiB
Makefile
116 lines
3.9 KiB
Makefile
OS := $(shell uname -s)
|
|
SITELIB = $(shell python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"):
|
|
PLUGIN_FORMATTER=../../hacking/build-ansible.py document-plugins
|
|
TESTING_FORMATTER=../bin/testing_formatter.sh
|
|
KEYWORD_DUMPER=../../hacking/build-ansible.py document-keywords
|
|
CONFIG_DUMPER=../../hacking/build-ansible.py document-config
|
|
GENERATE_CLI=../../hacking/build-ansible.py generate-man
|
|
COLLECTION_DUMPER=../../hacking/build-ansible.py collection-meta
|
|
ifeq ($(shell echo $(OS) | egrep -ic 'Darwin|FreeBSD|OpenBSD|DragonFly'),1)
|
|
CPUS ?= $(shell sysctl hw.ncpu|awk '{print $$2}')
|
|
else
|
|
CPUS ?= $(shell nproc)
|
|
endif
|
|
|
|
# Sets the build output directory if it's not already specified
|
|
ifndef BUILDDIR
|
|
BUILDDIR = _build
|
|
endif
|
|
|
|
MODULE_ARGS=
|
|
ifdef MODULES
|
|
MODULE_ARGS = -l $(MODULES)
|
|
endif
|
|
|
|
PLUGIN_ARGS=
|
|
ifdef PLUGINS
|
|
PLUGIN_ARGS = -l $(PLUGINS)
|
|
endif
|
|
|
|
DOC_PLUGINS ?= become cache callback cliconf connection httpapi inventory lookup shell strategy vars
|
|
|
|
assertrst:
|
|
ifndef rst
|
|
$(error specify document or pattern with rst=somefile.rst)
|
|
endif
|
|
|
|
all: docs
|
|
|
|
docs: htmldocs
|
|
|
|
generate_rst: collections_meta config cli keywords modules plugins testing
|
|
|
|
htmldocs: generate_rst
|
|
CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx html
|
|
|
|
singlehtmldocs: generate_rst
|
|
CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx singlehtml
|
|
|
|
webdocs: docs
|
|
|
|
#TODO: leaving htmlout removal for those having older versions, should eventually be removed also
|
|
clean:
|
|
@echo "Cleaning $(BUILDDIR)"
|
|
-rm -rf $(BUILDDIR)/doctrees
|
|
-rm -rf $(BUILDDIR)/html
|
|
-rm -rf htmlout
|
|
-rm -rf module_docs
|
|
-rm -rf _build
|
|
-rm -f .buildinfo
|
|
-rm -f objects.inv
|
|
-rm -rf *.doctrees
|
|
@echo "Cleaning up minified css files"
|
|
find . -type f -name "*.min.css" -delete
|
|
@echo "Cleaning up byte compiled python stuff"
|
|
find . -regex ".*\.py[co]$$" -delete
|
|
@echo "Cleaning up editor backup files"
|
|
find . -type f \( -name "*~" -or -name "#*" \) -delete
|
|
find . -type f \( -name "*.swp" \) -delete
|
|
@echo "Cleaning up generated rst"
|
|
rm -f rst/modules/*_by_category.rst
|
|
rm -f rst/modules/list_of_*.rst
|
|
rm -f rst/modules/*_maintained.rst
|
|
rm -f rst/modules/*_module.rst
|
|
rm -f rst/modules/*_plugin.rst
|
|
rm -f rst/playbooks_directives.rst
|
|
rm -f rst/plugins/*/*.rst
|
|
rm -f rst/reference_appendices/config.rst
|
|
rm -f rst/reference_appendices/playbooks_keywords.rst
|
|
rm -f rst/dev_guide/collections_galaxy_meta.rst
|
|
rm -f rst/cli/*.rst
|
|
|
|
.PHONY: docs clean
|
|
|
|
collections_meta: ../templates/collections_galaxy_meta.rst.j2
|
|
PYTHONPATH=../../lib $(COLLECTION_DUMPER) --template-file=../templates/collections_galaxy_meta.rst.j2 --output-dir=rst/dev_guide/ ../../lib/ansible/galaxy/data/collections_galaxy_meta.yml
|
|
|
|
# TODO: make generate_man output dir cli option
|
|
cli:
|
|
mkdir -p rst/cli
|
|
PYTHONPATH=../../lib $(GENERATE_CLI) --template-file=../templates/cli_rst.j2 --output-dir=rst/cli/ --output-format rst ../../lib/ansible/cli/*.py
|
|
|
|
keywords: ../templates/playbooks_keywords.rst.j2
|
|
PYTHONPATH=../../lib $(KEYWORD_DUMPER) --template-dir=../templates --output-dir=rst/reference_appendices/ ./keyword_desc.yml
|
|
|
|
config: ../templates/config.rst.j2
|
|
PYTHONPATH=../../lib $(CONFIG_DUMPER) --template-file=../templates/config.rst.j2 --output-dir=rst/reference_appendices/ ../../lib/ansible/config/base.yml
|
|
|
|
modules: ../templates/plugin.rst.j2
|
|
PYTHONPATH=../../lib $(PLUGIN_FORMATTER) -t rst --template-dir=../templates --module-dir=../../lib/ansible/modules -o rst/modules/ $(MODULE_ARGS)
|
|
|
|
plugins: ../templates/plugin.rst.j2
|
|
@echo "looping over doc plugins"
|
|
for plugin in $(DOC_PLUGINS); \
|
|
do \
|
|
PYTHONPATH=../../lib $(PLUGIN_FORMATTER) -t rst --plugin-type $$plugin --template-dir=../templates --module-dir=../../lib/ansible/plugins/$$plugin -o rst $(PLUGIN_ARGS); \
|
|
done
|
|
|
|
testing:
|
|
$(TESTING_FORMATTER)
|
|
|
|
epub:
|
|
(CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx epub)
|
|
|
|
htmlsingle: assertrst
|
|
sphinx-build -j $(CPUS) -b html -d $(BUILDDIR)/doctrees ./rst $(BUILDDIR)/html rst/$(rst)
|
|
@echo "Output is in $(BUILDDIR)/html/$(rst:.rst=.html)"
|