kameleon-builder 2.0.0.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. data/.editorconfig +23 -0
  2. data/.env +51 -0
  3. data/.gitignore +22 -0
  4. data/AUTHORS +19 -0
  5. data/CHANGELOG +36 -0
  6. data/COPYING +340 -0
  7. data/Gemfile +4 -0
  8. data/README.md +53 -0
  9. data/Rakefile +24 -0
  10. data/Vagrantfile +68 -0
  11. data/bin/kameleon +16 -0
  12. data/contrib/kameleon_bashrc.sh +138 -0
  13. data/contrib/scripts/VirtualBox_deploy.sh +12 -0
  14. data/contrib/scripts/chroot_env +9 -0
  15. data/contrib/scripts/create_passwd.py +17 -0
  16. data/contrib/scripts/umount-chroot.sh +290 -0
  17. data/contrib/steps/bootstrap/debian/bootstrap_if_needed.yaml +47 -0
  18. data/contrib/steps/bootstrap/debian/bootstrap_static.yaml +38 -0
  19. data/contrib/steps/setup/add_timestamp.yaml +6 -0
  20. data/contrib/steps/setup/autologin.yaml +16 -0
  21. data/contrib/steps/setup/copy_ssh_auth_file.yaml +10 -0
  22. data/contrib/steps/setup/debian/add_network_interface.yaml +7 -0
  23. data/contrib/steps/setup/debian/cluster_tools_install.yaml +16 -0
  24. data/contrib/steps/setup/debian/network_config_static.yaml +17 -0
  25. data/contrib/steps/setup/generate_user_ssh_key.yaml +15 -0
  26. data/contrib/steps/setup/install_my_ssh_key.yaml +26 -0
  27. data/contrib/steps/setup/make_swap_file.yaml +9 -0
  28. data/contrib/steps/setup/root_ssh_config.yaml +18 -0
  29. data/contrib/steps/setup/set_user_password.yaml +7 -0
  30. data/contrib/steps/setup/system_optimization.yaml +8 -0
  31. data/docs/.gitignore +1 -0
  32. data/docs/Makefile +177 -0
  33. data/docs/make.bat +242 -0
  34. data/docs/source/_static/.gitignore +0 -0
  35. data/docs/source/aliases.rst +29 -0
  36. data/docs/source/checkpoint.rst +28 -0
  37. data/docs/source/cli.rst +3 -0
  38. data/docs/source/commands.rst +62 -0
  39. data/docs/source/conf.py +254 -0
  40. data/docs/source/context.rst +42 -0
  41. data/docs/source/faq.rst +3 -0
  42. data/docs/source/getting_started.rst +3 -0
  43. data/docs/source/index.rst +38 -0
  44. data/docs/source/installation.rst +3 -0
  45. data/docs/source/recipe.rst +256 -0
  46. data/docs/source/why.rst +3 -0
  47. data/docs/source/workspace.rst +11 -0
  48. data/kameleon-builder.gemspec +37 -0
  49. data/lib/kameleon.rb +75 -0
  50. data/lib/kameleon/cli.rb +176 -0
  51. data/lib/kameleon/context.rb +83 -0
  52. data/lib/kameleon/engine.rb +357 -0
  53. data/lib/kameleon/environment.rb +38 -0
  54. data/lib/kameleon/error.rb +51 -0
  55. data/lib/kameleon/logger.rb +53 -0
  56. data/lib/kameleon/recipe.rb +474 -0
  57. data/lib/kameleon/shell.rb +290 -0
  58. data/lib/kameleon/step.rb +213 -0
  59. data/lib/kameleon/utils.rb +45 -0
  60. data/lib/kameleon/version.rb +3 -0
  61. data/templates/COPYRIGHT +21 -0
  62. data/templates/aliases/defaults.yaml +83 -0
  63. data/templates/checkpoints/docker.yaml +14 -0
  64. data/templates/checkpoints/qcow2.yaml +44 -0
  65. data/templates/debian-wheezy-chroot.yaml +98 -0
  66. data/templates/debian-wheezy-docker.yaml +97 -0
  67. data/templates/fedora-docker.yaml +96 -0
  68. data/templates/steps/bootstrap/debian/debootstrap.yaml +13 -0
  69. data/templates/steps/bootstrap/fedora/docker_bootstrap.yaml +25 -0
  70. data/templates/steps/bootstrap/fedora/yum_bootstrap.yaml +22 -0
  71. data/templates/steps/bootstrap/prepare_appliance_with_nbd.yaml +93 -0
  72. data/templates/steps/bootstrap/prepare_docker.yaml +38 -0
  73. data/templates/steps/bootstrap/start_chroot.yaml +53 -0
  74. data/templates/steps/bootstrap/start_docker.yaml +12 -0
  75. data/templates/steps/export/build_appliance_from_docker.yaml +105 -0
  76. data/templates/steps/export/clean_appliance.yaml +3 -0
  77. data/templates/steps/export/save_appliance_from_nbd.yaml +54 -0
  78. data/templates/steps/setup/create_user.yaml +12 -0
  79. data/templates/steps/setup/debian/kernel_install.yaml +20 -0
  80. data/templates/steps/setup/debian/keyboard_config.yaml +10 -0
  81. data/templates/steps/setup/debian/network_config.yaml +30 -0
  82. data/templates/steps/setup/debian/software_install.yaml +15 -0
  83. data/templates/steps/setup/debian/system_config.yaml +12 -0
  84. data/templates/steps/setup/fedora/kernel_install.yaml +27 -0
  85. data/templates/steps/setup/fedora/software_install.yaml +10 -0
  86. data/tests/helper.rb +22 -0
  87. data/tests/recipes/dummy_recipe.yaml +48 -0
  88. data/tests/recipes/steps/bootstrap/dummy_distro/dummy_bootstrap_static.yaml +4 -0
  89. data/tests/recipes/steps/export/dummy_save_appliance.yaml +9 -0
  90. data/tests/recipes/steps/setup/default/dummy_root_passwd.yaml +8 -0
  91. data/tests/recipes/steps/setup/dummy_distro/dummy_software_install.yaml +7 -0
  92. data/tests/test_context.rb +16 -0
  93. data/tests/test_recipe.rb +15 -0
  94. data/tests/test_version.rb +9 -0
  95. metadata +300 -0
@@ -0,0 +1,47 @@
1
+ # This step store the bootstrap for a particular distrib and achitechture
2
+ # to avoid downloading on every execution
3
+ # Bootstrap if needed
4
+ - debootstrap:
5
+ - exec_out: |
6
+ export tgz_bootstrap_file=$(echo "../$$workdir""/bootstrap/""$$distrib""_$$debian_version_name""_$$arch"".tar.gz")
7
+ mkdir -p $(dirname $tgz_bootstrap_file)
8
+ if [ ! -f "$tgz_bootstrap_file" ]
9
+ then
10
+ debootstrap --arch=$$arch $$debian_version_name $$rootfs $$distrib_repository
11
+ tar zcf $tgz_bootstrap_file -C $$rootfs --numeric-owner --one-file-system .
12
+ else
13
+ tar zxf $tgz_bootstrap_file -C $$rootfs
14
+ cp -f /etc/resolv.conf $$rootfs/etc
15
+ fi
16
+ #- include:
17
+ # - mount_proc
18
+ - mount_dev:
19
+ - exec_out: mount -o bind /dev $$rootfs/dev
20
+ - on_setup_clean: |
21
+ if mountpoint -q $$rootfs/dev
22
+ then umount $$rootfs/dev
23
+ fi
24
+
25
+ - exec_out: mount -o bind /dev/pts $$rootfs/dev/pts
26
+ - on_setup_clean: |
27
+ if mountpoint -q $$rootfs/dev/pts
28
+ then umount $$rootfs/dev/pts
29
+ fi
30
+ - mount_proc:
31
+ - exec_out: mount -o bind /proc $$rootfs/proc
32
+ - on_setup_clean: |
33
+ if mountpoint -q $$rootfs/proc
34
+ then umount $$rootfs/proc
35
+ fi
36
+ - mount_sys:
37
+ - exec_out: mount -o bind /sys $$rootfs/sys
38
+ - on_setup_clean: |
39
+ if mountpoint -q $$rootfs/sys
40
+ then umount $$rootfs/sys
41
+ fi
42
+
43
+ - update_bootstrap:
44
+ - exec_in: |
45
+ DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes update
46
+ DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes dist-upgrade
47
+
@@ -0,0 +1,38 @@
1
+ # # Bootstrap Static
2
+ - debootstrap:
3
+ - check_cmd: cdebootstrap-static
4
+ - exec_out: |
5
+ cdebootstrap-static \
6
+ --verbose \
7
+ --allow-unauthenticated \
8
+ --arch=$$arch \
9
+ --include=locales \
10
+ $$debian_version_name \
11
+ $$rootfs \
12
+ $$distrib_repository
13
+ #- include:
14
+ # - mount_proc
15
+ - mount_dev:
16
+ - exec_out: mount -o bind /dev $$rootfs/dev
17
+ - on_setup_clean: |
18
+ if mountpoint -q $$rootfs/dev
19
+ then umount $$rootfs/dev
20
+ fi
21
+
22
+ - exec_out: mount -o bind /dev/pts $$rootfs/dev/pts
23
+ - on_setup_clean: |
24
+ if mountpoint -q $$rootfs/dev/pts
25
+ then umount $$rootfs/dev/pts
26
+ fi
27
+ - mount_proc:
28
+ - exec_out: mount -o bind /proc $$rootfs/proc
29
+ - on_setup_clean: |
30
+ if mountpoint -q $$rootfs/proc
31
+ then umount $$rootfs/proc
32
+ fi
33
+ - mount_sys:
34
+ - exec_out: mount -o bind /sys $$rootfs/sys
35
+ - on_setup_clean: |
36
+ if mountpoint -q $$rootfs/sys
37
+ then umount $$rootfs/sys
38
+ fi
@@ -0,0 +1,6 @@
1
+ # Add Timestamp
2
+ - timestamping:
3
+ - exec_out: date +%s > timestamp
4
+ - out2in:
5
+ - timestamp
6
+ - /timestamp
@@ -0,0 +1,16 @@
1
+ # # Autologin
2
+ - set_autologin:
3
+ - exec_in: |
4
+ # check SysV init
5
+ if [ -f '/etc/inittab' ]
6
+ then
7
+ perl -pi -e 's;/sbin/getty.*tty1;/bin/login -f $$user_name tty1 </dev/tty1 >/dev/tty1 2>&1;' /etc/inittab
8
+ else
9
+ # use systemd
10
+ mkdir -p /etc/systemd/system/getty@tty1.service.d
11
+ cat > /etc/systemd/system/getty@tty1.service.d/autologin.conf <<< '
12
+ [Service]
13
+ ExecStart=
14
+ ExecStart=-/usr/bin/agetty --autologin <username> --noclear %I 38400 linux
15
+ '
16
+ fi
@@ -0,0 +1,10 @@
1
+ # Copy auth file from local to in
2
+ - home_in: /root
3
+ - auth_file_in: $$home_in/.ssh/authorized_keys
4
+ - auth_file_local: $$auth_file_in
5
+
6
+ - copy_ssh_auth_content:
7
+ - exec_in: mkdir -p $$home_in/.ssh
8
+ - pipe:
9
+ - exec_local: cat $$auth_file_local
10
+ - exec_in: cat >> $$auth_file_in
@@ -0,0 +1,7 @@
1
+ - add_interface:
2
+ - append_in:
3
+ - /etc/network/interfaces
4
+ - |
5
+ auto eth1
6
+ iface eth1 inet dhcp
7
+ pre-up ip link set mtu 1492 eth1
@@ -0,0 +1,16 @@
1
+ # Cluster Tools Install
2
+ - install_build_essentials:
3
+ - deb_install_in: build-essential
4
+ - install_openmpi:
5
+ - deb_install_in: |
6
+ openmpi-bin openmpi-common \
7
+ openssh-client openssh-server \
8
+ libopenmpi1.3 libopenmpi-dbg libopenmpi-dev
9
+ - install_python:
10
+ - deb_install_in: python python-dev
11
+ - install_java:
12
+ - deb_install_in: openjdk-6-jre
13
+ - install_perl:
14
+ - deb_install_in: perl
15
+ - install_tcl:
16
+ - deb_install_in: tcl
@@ -0,0 +1,17 @@
1
+ # Network Static Config
2
+ - network_interfaces:
3
+ # WARNING: The MTU is set to 1492 to avoid connection failure over some
4
+ # network du to PPP header
5
+ - write_in:
6
+ - /etc/network/interfaces
7
+ - |
8
+ auto lo
9
+ iface lo inet loopback
10
+
11
+ auto eth0
12
+ iface eth0 inet static
13
+ address $$ip_address
14
+ netmask $$netmask
15
+ gateway $$gateway
16
+ dns-nameservers $$dns
17
+ mtu $$mtu
@@ -0,0 +1,15 @@
1
+ # # Generate User Ssh Key
2
+ - generate_keys:
3
+ - exec_in: |
4
+ mkdir -p /home/$$user_name/.ssh
5
+ ssh-keygen -t rsa -C "$$user_name@$$network_hostname" -N "" -f home/$$user_name/.ssh/id_rsa
6
+ #fix permissions
7
+ chmod 700 /home/$$user_name/.ssh
8
+ chmod 644 /home/$$user_name/.ssh/id_rsa.pub
9
+ chmod 600 /home/$$user_name/.ssh/id_rsa
10
+ - exec_in: chown -R $$user_name:$$user_group home/$$user_name/.ssh
11
+ - save_public_key:
12
+ - in2local:
13
+ - /home/$$user_name/.ssh/id_rsa.pub
14
+ - $$generated_rsa_pub_dir
15
+
@@ -0,0 +1,26 @@
1
+ # Install your own key in the selected user home
2
+ # By default from local root to in root
3
+
4
+ - local_private_key: /root/.ssh/id_rsa
5
+ - local_public_key: $$local_private_key.pub
6
+ - in_user: root
7
+ - in_group: root
8
+ - in_home: /root
9
+ - in_private_key: $$in_home/.ssh/id_rsa
10
+ - in_public_key: $$in_private_key.pub
11
+
12
+ - copy_my_key:
13
+ - local2in:
14
+ - $$local_private_key
15
+ - $$in_private_key
16
+ - local2in:
17
+ - $$local_public_key
18
+ - $$in_public_key
19
+
20
+
21
+ - fix_permissions:
22
+ - exec_in: |
23
+ chown -R $$in_user:$$in_group $$in_home/.ssh
24
+ chmod 755 $$in_home/.ssh
25
+ chmod 600 $$in_private_key
26
+ chmod 644 $$in_public_key
@@ -0,0 +1,9 @@
1
+ # Make Swap
2
+ - create_swap_file:
3
+ - exec_in: fallocate -l $$swap_size /swap
4
+ - exec_in: chmod 600 /swap
5
+ - exec_in: chown root:root /swap
6
+ - exec_in: mkswap /swap
7
+ - add_swap_to_fstab:
8
+ - exec_in: echo "/swap swap swap defaults 0 0" >> /etc/fstab
9
+
@@ -0,0 +1,18 @@
1
+ # # Root Ssh Config
2
+ - ssh_key_create:
3
+ - exec_in: mkdir -p /root/.ssh
4
+ - exec_in: ssh-keygen -t rsa -f /root/.ssh/id_rsa -C "root@$$network_hostname" -N ''
5
+ - exec_in: ssh-keygen -t dsa -f /root/.ssh/id_dsa -C "root@$$network_hostname" -N ''
6
+ - copy_key_to_auth_file:
7
+ - exec_in: cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
8
+ - copy_key_to_auth2_file:
9
+ - exec_in: cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2
10
+ - root_ssh_config:
11
+ - append_in:
12
+ - /root/.ssh/config
13
+ - |
14
+ Host *
15
+ PasswordAuthentication yes
16
+ RSAAuthentication yes
17
+ StrictHostKeyChecking no
18
+ NoHostAuthenticationForLocalhost yes
@@ -0,0 +1,7 @@
1
+ # Sets the user password to "kameleon" hash in SHA512. Use create_script.py
2
+ # in contrib/scripts to generate your own password
3
+
4
+ - hash_password: $6$vDcPTe4u$EMxu.WTCjZaZeWQxiqFLC00gYledHmrvHsjvmAE1yQ/7d43EZrb0QuzcFdDv.Fm2IbbOLNdPvqdS08os6HHPH/
5
+
6
+ - set_user_passwd:
7
+ - exec_in: usermod -p '$$hash_password' $$user_name
@@ -0,0 +1,8 @@
1
+ # System optimization
2
+ # WARNING: this step override your sysctl configuration
3
+ - config_swap:
4
+ - write_in:
5
+ - /etc/sysctl.conf
6
+ - |
7
+ vm.swappiness=10
8
+ vm.vfs_cache_pressure=50
data/docs/.gitignore ADDED
@@ -0,0 +1 @@
1
+ build
data/docs/Makefile ADDED
@@ -0,0 +1,177 @@
1
+ # Makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line.
5
+ SPHINXOPTS =
6
+ SPHINXBUILD = sphinx-build
7
+ PAPER =
8
+ BUILDDIR = build
9
+
10
+ # User-friendly check for sphinx-build
11
+ ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
12
+ $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed : "easy_install sphinx sphinx_rtd_theme")
13
+ endif
14
+
15
+ # Internal variables.
16
+ PAPEROPT_a4 = -D latex_paper_size=a4
17
+ PAPEROPT_letter = -D latex_paper_size=letter
18
+ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
19
+ # the i18n builder cannot share the environment and doctrees with the others
20
+ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
21
+
22
+ .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
23
+
24
+ help:
25
+ @echo "Please use \`make <target>' where <target> is one of"
26
+ @echo " html to make standalone HTML files"
27
+ @echo " dirhtml to make HTML files named index.html in directories"
28
+ @echo " singlehtml to make a single large HTML file"
29
+ @echo " pickle to make pickle files"
30
+ @echo " json to make JSON files"
31
+ @echo " htmlhelp to make HTML files and a HTML help project"
32
+ @echo " qthelp to make HTML files and a qthelp project"
33
+ @echo " devhelp to make HTML files and a Devhelp project"
34
+ @echo " epub to make an epub"
35
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
36
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
37
+ @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
38
+ @echo " text to make text files"
39
+ @echo " man to make manual pages"
40
+ @echo " texinfo to make Texinfo files"
41
+ @echo " info to make Texinfo files and run them through makeinfo"
42
+ @echo " gettext to make PO message catalogs"
43
+ @echo " changes to make an overview of all changed/added/deprecated items"
44
+ @echo " xml to make Docutils-native XML files"
45
+ @echo " pseudoxml to make pseudoxml-XML files for display purposes"
46
+ @echo " linkcheck to check all external links for integrity"
47
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
48
+
49
+ clean:
50
+ rm -rf $(BUILDDIR)/*
51
+
52
+ html:
53
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
54
+ @echo
55
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
56
+
57
+ dirhtml:
58
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
59
+ @echo
60
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
61
+
62
+ singlehtml:
63
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
64
+ @echo
65
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
66
+
67
+ pickle:
68
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
69
+ @echo
70
+ @echo "Build finished; now you can process the pickle files."
71
+
72
+ json:
73
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
74
+ @echo
75
+ @echo "Build finished; now you can process the JSON files."
76
+
77
+ htmlhelp:
78
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
79
+ @echo
80
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
81
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
82
+
83
+ qthelp:
84
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
85
+ @echo
86
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
87
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
88
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Kameleon.qhcp"
89
+ @echo "To view the help file:"
90
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Kameleon.qhc"
91
+
92
+ devhelp:
93
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
94
+ @echo
95
+ @echo "Build finished."
96
+ @echo "To view the help file:"
97
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/Kameleon"
98
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Kameleon"
99
+ @echo "# devhelp"
100
+
101
+ epub:
102
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
103
+ @echo
104
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
105
+
106
+ latex:
107
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
108
+ @echo
109
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
110
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
111
+ "(use \`make latexpdf' here to do that automatically)."
112
+
113
+ latexpdf:
114
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
115
+ @echo "Running LaTeX files through pdflatex..."
116
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf
117
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
118
+
119
+ latexpdfja:
120
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
121
+ @echo "Running LaTeX files through platex and dvipdfmx..."
122
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
123
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
124
+
125
+ text:
126
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
127
+ @echo
128
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
129
+
130
+ man:
131
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
132
+ @echo
133
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
134
+
135
+ texinfo:
136
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
137
+ @echo
138
+ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
139
+ @echo "Run \`make' in that directory to run these through makeinfo" \
140
+ "(use \`make info' here to do that automatically)."
141
+
142
+ info:
143
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
144
+ @echo "Running Texinfo files through makeinfo..."
145
+ make -C $(BUILDDIR)/texinfo info
146
+ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
147
+
148
+ gettext:
149
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
150
+ @echo
151
+ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
152
+
153
+ changes:
154
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
155
+ @echo
156
+ @echo "The overview file is in $(BUILDDIR)/changes."
157
+
158
+ linkcheck:
159
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
160
+ @echo
161
+ @echo "Link check complete; look for any errors in the above output " \
162
+ "or in $(BUILDDIR)/linkcheck/output.txt."
163
+
164
+ doctest:
165
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
166
+ @echo "Testing of doctests in the sources finished, look at the " \
167
+ "results in $(BUILDDIR)/doctest/output.txt."
168
+
169
+ xml:
170
+ $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
171
+ @echo
172
+ @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
173
+
174
+ pseudoxml:
175
+ $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
176
+ @echo
177
+ @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."