kameleon-builder 2.0.0.dev

Sign up to get free protection for your applications and to get access to all the features.
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."