fpm-cookery 0.28.0 → 0.29.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a665d466e70afc2e4c508512b2ba36cceac7337
4
- data.tar.gz: 48dab70d5d15219594323fa6191054322d988eae
3
+ metadata.gz: e13450b36139981c3b9700c05e8a1cdd307a7d15
4
+ data.tar.gz: 36cbf763dd3217ee377eba4e6301d3f74d3825d6
5
5
  SHA512:
6
- metadata.gz: 46abd44a9cb99b4bec920d415310421e34354502c9826d05feee09d3adde552c2b9c10acb2b1b6017a57294eb8672ee5f73764dfec3c7cf0778c37c179b4340c
7
- data.tar.gz: 2421b226b5b365a9ea1a0046c3a714f8826c24f07d21f89bbebc27739e8720358d5ed3d335f76b5f61b544a39d87b16d83ca2614869abea974b9b777cbf6f24d
6
+ metadata.gz: 431ea4562cea0993d46c3b05b6f841d933d5263831106b9080c11dee93c735cecb3851ed23b7a6c52f74ca1454e129b94b94d3034cdbe40c342d64976d33e832
7
+ data.tar.gz: e5f23c74e1358f45f0bcfb7e35caddfe8c5ac85eb81dfff5bff7016c0ba1c1082e5c1cf64246aea80e6496616f72cfe0ad49e438d1a1668a6718b2d38086b010
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # v0.29.0 (2015-07-25)
2
+ * Start documentation at https://fpm-cookery.readthedocs.org/.
3
+ The documentation is now included in the source code (`docs/` directory) and
4
+ is written in sphinx/rst.
5
+ * Add lifecycle hooks to the recipe class. (#113)
6
+ __WARNING__: This is an experimental feature and the hook names might change!
7
+ * Add `extraced_source` attribute to the recipe class. (#112)
8
+
1
9
  # v0.28.0 (2015-07-10)
2
10
  * Add :extract option to git source handler.
3
11
  Using ":extract => :clone" with a :git source handler will clone the
data/README.md CHANGED
@@ -20,6 +20,12 @@ quite some time
20
20
 
21
21
  It is using __fpm__ to create the actual packages.
22
22
 
23
+ ## Documentation
24
+
25
+ Please find the documentation page here: https://fpm-cookery.readthedocs.org/
26
+
27
+ Hosting and building of the documentation is provided by the great [Read the Docs project](https://readthedocs.org/)!
28
+
23
29
  ## Why?
24
30
 
25
31
  Building operating system packages for Debian/Ubuntu and RedHat using the
data/docs/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /_build
data/docs/Makefile ADDED
@@ -0,0 +1,192 @@
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, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
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) .
19
+ # the i18n builder cannot share the environment and doctrees with the others
20
+ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
21
+
22
+ .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage 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 " applehelp to make an Apple Help Book"
34
+ @echo " devhelp to make HTML files and a Devhelp project"
35
+ @echo " epub to make an epub"
36
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
37
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
38
+ @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
39
+ @echo " text to make text files"
40
+ @echo " man to make manual pages"
41
+ @echo " texinfo to make Texinfo files"
42
+ @echo " info to make Texinfo files and run them through makeinfo"
43
+ @echo " gettext to make PO message catalogs"
44
+ @echo " changes to make an overview of all changed/added/deprecated items"
45
+ @echo " xml to make Docutils-native XML files"
46
+ @echo " pseudoxml to make pseudoxml-XML files for display purposes"
47
+ @echo " linkcheck to check all external links for integrity"
48
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
49
+ @echo " coverage to run coverage check of the documentation (if enabled)"
50
+
51
+ clean:
52
+ rm -rf $(BUILDDIR)/*
53
+
54
+ html:
55
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
56
+ @echo
57
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
58
+
59
+ dirhtml:
60
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
61
+ @echo
62
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
63
+
64
+ singlehtml:
65
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
66
+ @echo
67
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
68
+
69
+ pickle:
70
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
71
+ @echo
72
+ @echo "Build finished; now you can process the pickle files."
73
+
74
+ json:
75
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
76
+ @echo
77
+ @echo "Build finished; now you can process the JSON files."
78
+
79
+ htmlhelp:
80
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
81
+ @echo
82
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
83
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
84
+
85
+ qthelp:
86
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
87
+ @echo
88
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
89
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
90
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/fpm-cookery.qhcp"
91
+ @echo "To view the help file:"
92
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/fpm-cookery.qhc"
93
+
94
+ applehelp:
95
+ $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
96
+ @echo
97
+ @echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
98
+ @echo "N.B. You won't be able to view it unless you put it in" \
99
+ "~/Library/Documentation/Help or install it in your application" \
100
+ "bundle."
101
+
102
+ devhelp:
103
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
104
+ @echo
105
+ @echo "Build finished."
106
+ @echo "To view the help file:"
107
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/fpm-cookery"
108
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/fpm-cookery"
109
+ @echo "# devhelp"
110
+
111
+ epub:
112
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
113
+ @echo
114
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
115
+
116
+ latex:
117
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
118
+ @echo
119
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
120
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
121
+ "(use \`make latexpdf' here to do that automatically)."
122
+
123
+ latexpdf:
124
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
125
+ @echo "Running LaTeX files through pdflatex..."
126
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf
127
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
128
+
129
+ latexpdfja:
130
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
131
+ @echo "Running LaTeX files through platex and dvipdfmx..."
132
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
133
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
134
+
135
+ text:
136
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
137
+ @echo
138
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
139
+
140
+ man:
141
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
142
+ @echo
143
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
144
+
145
+ texinfo:
146
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
147
+ @echo
148
+ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
149
+ @echo "Run \`make' in that directory to run these through makeinfo" \
150
+ "(use \`make info' here to do that automatically)."
151
+
152
+ info:
153
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
154
+ @echo "Running Texinfo files through makeinfo..."
155
+ make -C $(BUILDDIR)/texinfo info
156
+ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
157
+
158
+ gettext:
159
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
160
+ @echo
161
+ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
162
+
163
+ changes:
164
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
165
+ @echo
166
+ @echo "The overview file is in $(BUILDDIR)/changes."
167
+
168
+ linkcheck:
169
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
170
+ @echo
171
+ @echo "Link check complete; look for any errors in the above output " \
172
+ "or in $(BUILDDIR)/linkcheck/output.txt."
173
+
174
+ doctest:
175
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
176
+ @echo "Testing of doctests in the sources finished, look at the " \
177
+ "results in $(BUILDDIR)/doctest/output.txt."
178
+
179
+ coverage:
180
+ $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
181
+ @echo "Testing of coverage in the sources finished, look at the " \
182
+ "results in $(BUILDDIR)/coverage/python.txt."
183
+
184
+ xml:
185
+ $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
186
+ @echo
187
+ @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
188
+
189
+ pseudoxml:
190
+ $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
191
+ @echo
192
+ @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
data/docs/conf.py ADDED
@@ -0,0 +1,295 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # fpm-cookery documentation build configuration file, created by
4
+ # sphinx-quickstart on Sat Jul 25 11:02:45 2015.
5
+ #
6
+ # This file is execfile()d with the current directory set to its
7
+ # containing dir.
8
+ #
9
+ # Note that not all possible configuration values are present in this
10
+ # autogenerated file.
11
+ #
12
+ # All configuration values have a default; values that are commented out
13
+ # serve to show the default.
14
+
15
+ import sys
16
+ import os
17
+ import shlex
18
+
19
+ on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
20
+
21
+ if not on_rtd: # only import and set the theme if we're building docs locally
22
+ import sphinx_rtd_theme
23
+ html_theme = 'sphinx_rtd_theme'
24
+ html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
25
+ # otherwise, readthedocs.org uses their theme by default, so no need to specify it
26
+
27
+
28
+ # If extensions (or modules to document with autodoc) are in another directory,
29
+ # add these directories to sys.path here. If the directory is relative to the
30
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
31
+ #sys.path.insert(0, os.path.abspath('.'))
32
+
33
+ # -- General configuration ------------------------------------------------
34
+
35
+ # If your documentation needs a minimal Sphinx version, state it here.
36
+ #needs_sphinx = '1.0'
37
+
38
+ # Add any Sphinx extension module names here, as strings. They can be
39
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
40
+ # ones.
41
+ extensions = [
42
+ 'sphinx.ext.ifconfig',
43
+ ]
44
+
45
+ # Add any paths that contain templates here, relative to this directory.
46
+ templates_path = ['_templates']
47
+
48
+ # The suffix(es) of source filenames.
49
+ # You can specify multiple suffix as a list of string:
50
+ # source_suffix = ['.rst', '.md']
51
+ source_suffix = '.rst'
52
+
53
+ # The encoding of source files.
54
+ #source_encoding = 'utf-8-sig'
55
+
56
+ # The master toctree document.
57
+ master_doc = 'index'
58
+
59
+ # General information about the project.
60
+ project = u'fpm-cookery'
61
+ copyright = u'2015, Bernd Ahlers'
62
+ author = u'Bernd Ahlers'
63
+
64
+ # The version info for the project you're documenting, acts as replacement for
65
+ # |version| and |release|, also used in various other places throughout the
66
+ # built documents.
67
+ #
68
+ # The short X.Y version.
69
+ version = open("../lib/fpm/cookery/version.rb").read().split("'")[1]
70
+ # The full version, including alpha/beta/rc tags.
71
+ release = version
72
+
73
+ # The language for content autogenerated by Sphinx. Refer to documentation
74
+ # for a list of supported languages.
75
+ #
76
+ # This is also used if you do content translation via gettext catalogs.
77
+ # Usually you set "language" from the command line for these cases.
78
+ language = None
79
+
80
+ # There are two options for replacing |today|: either, you set today to some
81
+ # non-false value, then it is used:
82
+ #today = ''
83
+ # Else, today_fmt is used as the format for a strftime call.
84
+ #today_fmt = '%B %d, %Y'
85
+
86
+ # List of patterns, relative to source directory, that match files and
87
+ # directories to ignore when looking for source files.
88
+ exclude_patterns = ['_build']
89
+
90
+ # The reST default role (used for this markup: `text`) to use for all
91
+ # documents.
92
+ #default_role = None
93
+
94
+ # If true, '()' will be appended to :func: etc. cross-reference text.
95
+ #add_function_parentheses = True
96
+
97
+ # If true, the current module name will be prepended to all description
98
+ # unit titles (such as .. function::).
99
+ #add_module_names = True
100
+
101
+ # If true, sectionauthor and moduleauthor directives will be shown in the
102
+ # output. They are ignored by default.
103
+ #show_authors = False
104
+
105
+ # The name of the Pygments (syntax highlighting) style to use.
106
+ pygments_style = 'sphinx'
107
+
108
+ # A list of ignored prefixes for module index sorting.
109
+ #modindex_common_prefix = []
110
+
111
+ # If true, keep warnings as "system message" paragraphs in the built documents.
112
+ #keep_warnings = False
113
+
114
+ # If true, `todo` and `todoList` produce output, else they produce nothing.
115
+ todo_include_todos = False
116
+
117
+
118
+ # -- Options for HTML output ----------------------------------------------
119
+
120
+ # The theme to use for HTML and HTML Help pages. See the documentation for
121
+ # a list of builtin themes.
122
+ #html_theme = 'alabaster'
123
+
124
+ # Theme options are theme-specific and customize the look and feel of a theme
125
+ # further. For a list of options available for each theme, see the
126
+ # documentation.
127
+ #html_theme_options = {}
128
+
129
+ # Add any paths that contain custom themes here, relative to this directory.
130
+ #html_theme_path = []
131
+
132
+ # The name for this set of Sphinx documents. If None, it defaults to
133
+ # "<project> v<release> documentation".
134
+ #html_title = None
135
+
136
+ # A shorter title for the navigation bar. Default is the same as html_title.
137
+ #html_short_title = None
138
+
139
+ # The name of an image file (relative to this directory) to place at the top
140
+ # of the sidebar.
141
+ #html_logo = None
142
+
143
+ # The name of an image file (within the static path) to use as favicon of the
144
+ # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
145
+ # pixels large.
146
+ #html_favicon = None
147
+
148
+ # Add any paths that contain custom static files (such as style sheets) here,
149
+ # relative to this directory. They are copied after the builtin static files,
150
+ # so a file named "default.css" will overwrite the builtin "default.css".
151
+ html_static_path = ['_static']
152
+
153
+ # Add any extra paths that contain custom files (such as robots.txt or
154
+ # .htaccess) here, relative to this directory. These files are copied
155
+ # directly to the root of the documentation.
156
+ #html_extra_path = []
157
+
158
+ # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
159
+ # using the given strftime format.
160
+ #html_last_updated_fmt = '%b %d, %Y'
161
+
162
+ # If true, SmartyPants will be used to convert quotes and dashes to
163
+ # typographically correct entities.
164
+ #html_use_smartypants = True
165
+
166
+ # Custom sidebar templates, maps document names to template names.
167
+ #html_sidebars = {}
168
+
169
+ # Additional templates that should be rendered to pages, maps page names to
170
+ # template names.
171
+ #html_additional_pages = {}
172
+
173
+ # If false, no module index is generated.
174
+ #html_domain_indices = True
175
+
176
+ # If false, no index is generated.
177
+ #html_use_index = True
178
+
179
+ # If true, the index is split into individual pages for each letter.
180
+ #html_split_index = False
181
+
182
+ # If true, links to the reST sources are added to the pages.
183
+ #html_show_sourcelink = True
184
+
185
+ # If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
186
+ #html_show_sphinx = True
187
+
188
+ # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
189
+ #html_show_copyright = True
190
+
191
+ # If true, an OpenSearch description file will be output, and all pages will
192
+ # contain a <link> tag referring to it. The value of this option must be the
193
+ # base URL from which the finished HTML is served.
194
+ #html_use_opensearch = ''
195
+
196
+ # This is the file name suffix for HTML files (e.g. ".xhtml").
197
+ #html_file_suffix = None
198
+
199
+ # Language to be used for generating the HTML full-text search index.
200
+ # Sphinx supports the following languages:
201
+ # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
202
+ # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
203
+ #html_search_language = 'en'
204
+
205
+ # A dictionary with options for the search language support, empty by default.
206
+ # Now only 'ja' uses this config value
207
+ #html_search_options = {'type': 'default'}
208
+
209
+ # The name of a javascript file (relative to the configuration directory) that
210
+ # implements a search results scorer. If empty, the default will be used.
211
+ #html_search_scorer = 'scorer.js'
212
+
213
+ # Output file base name for HTML help builder.
214
+ htmlhelp_basename = 'fpm-cookerydoc'
215
+
216
+ # -- Options for LaTeX output ---------------------------------------------
217
+
218
+ latex_elements = {
219
+ # The paper size ('letterpaper' or 'a4paper').
220
+ #'papersize': 'letterpaper',
221
+
222
+ # The font size ('10pt', '11pt' or '12pt').
223
+ #'pointsize': '10pt',
224
+
225
+ # Additional stuff for the LaTeX preamble.
226
+ #'preamble': '',
227
+
228
+ # Latex figure (float) alignment
229
+ #'figure_align': 'htbp',
230
+ }
231
+
232
+ # Grouping the document tree into LaTeX files. List of tuples
233
+ # (source start file, target name, title,
234
+ # author, documentclass [howto, manual, or own class]).
235
+ latex_documents = [
236
+ (master_doc, 'fpm-cookery.tex', u'fpm-cookery Documentation',
237
+ u'Bernd Ahlers', 'manual'),
238
+ ]
239
+
240
+ # The name of an image file (relative to this directory) to place at the top of
241
+ # the title page.
242
+ #latex_logo = None
243
+
244
+ # For "manual" documents, if this is true, then toplevel headings are parts,
245
+ # not chapters.
246
+ #latex_use_parts = False
247
+
248
+ # If true, show page references after internal links.
249
+ #latex_show_pagerefs = False
250
+
251
+ # If true, show URL addresses after external links.
252
+ #latex_show_urls = False
253
+
254
+ # Documents to append as an appendix to all manuals.
255
+ #latex_appendices = []
256
+
257
+ # If false, no module index is generated.
258
+ #latex_domain_indices = True
259
+
260
+
261
+ # -- Options for manual page output ---------------------------------------
262
+
263
+ # One entry per manual page. List of tuples
264
+ # (source start file, name, description, authors, manual section).
265
+ man_pages = [
266
+ (master_doc, 'fpm-cookery', u'fpm-cookery Documentation',
267
+ [author], 1)
268
+ ]
269
+
270
+ # If true, show URL addresses after external links.
271
+ #man_show_urls = False
272
+
273
+
274
+ # -- Options for Texinfo output -------------------------------------------
275
+
276
+ # Grouping the document tree into Texinfo files. List of tuples
277
+ # (source start file, target name, title, author,
278
+ # dir menu entry, description, category)
279
+ texinfo_documents = [
280
+ (master_doc, 'fpm-cookery', u'fpm-cookery Documentation',
281
+ author, 'fpm-cookery', 'One line description of project.',
282
+ 'Miscellaneous'),
283
+ ]
284
+
285
+ # Documents to append as an appendix to all manuals.
286
+ #texinfo_appendices = []
287
+
288
+ # If false, no module index is generated.
289
+ #texinfo_domain_indices = True
290
+
291
+ # How to display URL addresses: 'footnote', 'no', or 'inline'.
292
+ #texinfo_show_urls = 'footnote'
293
+
294
+ # If true, do not generate a @detailmenu in the "Top" node's menu.
295
+ #texinfo_no_detailmenu = False
data/docs/index.rst ADDED
@@ -0,0 +1,37 @@
1
+ .. fpm-cookery documentation master file, created by
2
+ sphinx-quickstart on Sat Jul 25 11:02:45 2015.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ Welcome to the fpm-cookery documentation!
7
+ =========================================
8
+
9
+ **Current version:** |version|
10
+
11
+ fpm-cookery provides an infrastructure to automatically build software based on recipes. It's heavily inspired and borrows code from the great `homebrew <https://github.com/mxcl/homebrew>`_ and `brew2deb <https://github.com/tmm1/brew2deb>`_ projects.
12
+
13
+ Features
14
+ ^^^^^^^^
15
+
16
+ * Source archive download and caching.
17
+ * Recipes to describe and execute the software build. (e.g. configure, make, make install)
18
+ * Sandboxed builds.
19
+ * Package creation via `fpm <https://github.com/jordansissel/fpm>`_.
20
+ * Standalone recipe trees/books/you name it. No need to put the recipes into the fpm-cookery source tree.
21
+
22
+ Documentation Contents
23
+ ^^^^^^^^^^^^^^^^^^^^^^
24
+
25
+ .. toctree::
26
+ :maxdepth: 2
27
+
28
+ pages/getting-started
29
+
30
+
31
+ Indices and tables
32
+ ==================
33
+
34
+ * :ref:`genindex`
35
+ * :ref:`modindex`
36
+ * :ref:`search`
37
+
@@ -0,0 +1,184 @@
1
+ Getting Started
2
+ ===============
3
+
4
+ This page helps you to get started with the fpm-cookery tool and guides you
5
+ through the installation and the creation of a simple recipe to build your
6
+ first package.
7
+
8
+ You will create a package for the `tmux <http://tmux.sourceforge.net/>`_ program.
9
+
10
+ Prerequisites
11
+ -------------
12
+
13
+ The following instructions have been tested with an Ubuntu 12.04 Linux system.
14
+ It might work on other versions or other Linux systems but that cannot be
15
+ guaranteed. Please use something like `Vagrant <http://www.vagrantup.com/>`_ to
16
+ create an Ubuntu 12.04 VM if you do not have one at hand.
17
+
18
+ Installation
19
+ ------------
20
+
21
+ Rubygems
22
+ ^^^^^^^^
23
+
24
+ fpm-cookery is written in Ruby. Before we can actually install the rubygem, you
25
+ have to install a Ruby interpreter and some build tools.
26
+ Execute the following to install the required packages::
27
+
28
+ $ sudo apt-get install ruby1.9.1 ruby1.9.1-dev build-essential curl
29
+
30
+ Ruby 1.9 includes the ``gem`` program to install rubygems::
31
+
32
+ $ sudo gem install fpm-cookery
33
+
34
+ This installs the fpm-cookery rubygem and its dependencies. At the end you
35
+ should see something like "Successfully installed fpm-cookery-|version|".
36
+
37
+ Your fpm-cookery installation is ready to build some packages now!
38
+
39
+ OS Package
40
+ ^^^^^^^^^^
41
+
42
+ We are planning to provide a packaged version for different operating systems.
43
+ Please use the Rubygems installation method above in the meantime.
44
+
45
+ The Recipe
46
+ ----------
47
+
48
+ The recipe is a Ruby file that contains a simple class which acts as a DSL
49
+ to set the attributes of a package (like name and version) and to describe
50
+ the build and installation process of a package.
51
+
52
+ You might want to create some folders to organize your recipes::
53
+
54
+ $ mkdir recipes
55
+ $ mkdir recipes/tmux
56
+ $ cd recipes/tmux
57
+ $ touch recipe.rb
58
+
59
+ The last command creates an empty recipe file. See the following snippet for
60
+ the complete recipe to build a tmux package. We will go through each step
61
+ afterwards. Use your text editor to add the code to the ``recipe.rb`` file.
62
+
63
+ .. code-block:: ruby
64
+
65
+ class Tmux < FPM::Cookery::Recipe
66
+ description 'terminal multiplexer'
67
+
68
+ name 'tmux'
69
+ version '1.9a'
70
+ homepage 'http://tmux.sourceforce.net/'
71
+ source 'http://freefr.dl.sourceforge.net/project/tmux/tmux/tmux-1.9/tmux-1.9a.tar.gz'
72
+
73
+ build_depends 'libevent-dev', 'libncurses5-dev'
74
+ depends 'libevent-2.0-5'
75
+
76
+ def build
77
+ configure :prefix => prefix
78
+ make
79
+ end
80
+
81
+ def install
82
+ make :install, 'DESTDIR' => destdir
83
+ end
84
+ end
85
+
86
+ Example Workflow
87
+ ----------------
88
+
89
+ The following commands require the ``recipe.rb`` recipe file created above.
90
+
91
+ .. code-block:: none
92
+
93
+ $ fpm-cook
94
+ ===> Starting package creation for tmux-1.9a (ubuntu, deb)
95
+ ===>
96
+ ===> Verifying build_depends and depends with Puppet
97
+ ===> Verifying package: libevent-dev
98
+ ===> Verifying package: libevent-2.0-5
99
+ ===> Missing/wrong version packages: libevent-dev
100
+ ERROR: Not running as root; please run 'sudo fpm-cook install-deps' to install dependencies.
101
+
102
+ .. code-block:: none
103
+
104
+ $ sudo fpm-cook install-deps
105
+ ===> Verifying build_depends and depends with Puppet
106
+ ===> Verifying package: libevent-dev
107
+ ===> Verifying package: libevent-2.0-5
108
+ ===> Missing/wrong version packages: libevent-dev
109
+ ===> Running as root; installing missing/wrong version build_depends and depends with Puppet
110
+ ===> Installing package: libevent-dev
111
+ ===> ensure changed 'purged' to 'present'
112
+ ===> All dependencies installed!
113
+
114
+ .. code-block:: none
115
+
116
+ $ fpm-cook
117
+ ===> Starting package creation for tmux-1.9a (ubuntu, deb)
118
+ ===>
119
+ ===> Verifying build_depends and depends with Puppet
120
+ ===> Verifying package: libevent-dev
121
+ ===> Verifying package: libncurses5-dev
122
+ ===> Verifying package: libevent-2.0-5
123
+ ===> All build_depends and depends packages installed
124
+ ===> Fetching source:
125
+ ######################################################################## 100.0%
126
+ ===> Building in /home/vagrant/recipes/tmux/tmp-build/tmux-1.9a
127
+ checking for a BSD-compatible install... /usr/bin/install -c
128
+ checking whether build environment is sane... yes
129
+
130
+ [lots of output removed]
131
+
132
+ make[1]: Nothing to be done for `install-data-am'.
133
+ make[1]: Leaving directory `/home/vagrant/recipes/tmux/tmp-build/tmux-1.9a'
134
+ ===> [FPM] Converting dir to deb {}
135
+ ===> [FPM] No deb_installed_size set, calculating now. {}
136
+ ===> [FPM] Reading template {"path":"/var/lib/gems/1.9.1/gems/fpm-1.0.2/templates/deb.erb"}
137
+ ===> [FPM] Creating {"path":"/tmp/package-deb-build20140308-7998-1v6uqm5/control.tar.gz","from":"/tmp/package-deb-build20140308-7998-1v6uqm5/control"}
138
+ ===> [FPM] Created deb package {"path":"tmux_1.9a-1_amd64.deb"}
139
+ ===> Created package: /home/vagrant/recipes/tmux/pkg/tmux_1.9a-1_amd64.deb
140
+
141
+ .. code-block:: none
142
+
143
+ .
144
+ |-- cache
145
+ | `-- tmux-1.9a.tar.gz
146
+ |-- pkg
147
+ | `-- tmux_1.9a-1_amd64.deb
148
+ |-- recipe.rb
149
+ |-- tmp-build
150
+ | `-- tmux-1.9a
151
+ `-- tmp-dest
152
+ `-- usr
153
+
154
+ .. code-block:: none
155
+
156
+ $ dpkg -c pkg/tmux_1.9a-1_amd64.deb
157
+ drwxrwxr-x 0/0 0 2014-03-08 01:26 ./
158
+ drwxrwxr-x 0/0 0 2014-03-08 01:26 ./usr/
159
+ drwxrwxr-x 0/0 0 2014-03-08 01:26 ./usr/share/
160
+ drwxrwxr-x 0/0 0 2014-03-08 01:26 ./usr/share/man/
161
+ drwxrwxr-x 0/0 0 2014-03-08 01:26 ./usr/share/man/man1/
162
+ -rw-r--r-- 0/0 93888 2014-03-08 01:26 ./usr/share/man/man1/tmux.1
163
+ drwxrwxr-x 0/0 0 2014-03-08 01:26 ./usr/bin/
164
+ -rwxr-xr-x 0/0 491016 2014-03-08 01:26 ./usr/bin/tmux
165
+
166
+ .. code-block:: none
167
+
168
+ $ dpkg -I pkg/tmux_1.9a-1_amd64.deb
169
+ new debian package, version 2.0.
170
+ size 235488 bytes: control archive= 437 bytes.
171
+ 260 bytes, 12 lines control
172
+ 105 bytes, 2 lines md5sums
173
+ Package: tmux
174
+ Version: 1.9a-1
175
+ License: unknown
176
+ Vendor:
177
+ Architecture: amd64
178
+ Maintainer: <vagrant@ubuntu1204>
179
+ Installed-Size: 571
180
+ Depends: libevent-2.0-5
181
+ Section: optional
182
+ Priority: extra
183
+ Homepage: http://tmux.sourceforce.net/
184
+ Description: terminal multiplexer
@@ -0,0 +1,18 @@
1
+ require 'fpm/cookery/log'
2
+
3
+ module FPM
4
+ module Cookery
5
+ module LifecycleHooks
6
+ def run_lifecycle_hook(hook_name)
7
+ Log.debug("Run lifecycle hook: #{hook_name}")
8
+ self.__send__(hook_name)
9
+ end
10
+
11
+ def before_dependency_installation
12
+ end
13
+
14
+ def after_dependency_installation
15
+ end
16
+ end
17
+ end
18
+ end
@@ -44,7 +44,9 @@ module FPM
44
44
  end
45
45
 
46
46
  def install_deps
47
+ recipe.run_lifecycle_hook(:before_dependency_installation)
47
48
  DependencyInspector.verify!(recipe.depends, recipe.build_depends)
49
+ recipe.run_lifecycle_hook(:after_dependency_installation)
48
50
  Log.info("All dependencies installed!")
49
51
  end
50
52
 
@@ -59,7 +61,9 @@ module FPM
59
61
 
60
62
  # RecipeInspector.verify!(recipe)
61
63
  if config.fetch(:dependency_check, true)
64
+ recipe.run_lifecycle_hook(:before_dependency_installation)
62
65
  DependencyInspector.verify!(recipe.depends, recipe.build_depends)
66
+ recipe.run_lifecycle_hook(:after_dependency_installation)
63
67
  end
64
68
 
65
69
  recipe.installing = false
@@ -101,6 +105,11 @@ module FPM
101
105
  Dir.chdir(recipe.builddir) do
102
106
  extracted_source = source.extract
103
107
 
108
+ if recipe.extracted_source
109
+ Log.debug "Using custom extracted source dir: #{recipe.builddir(recipe.extracted_source)}"
110
+ extracted_source = recipe.extracted_source
111
+ end
112
+
104
113
  Dir.chdir(extracted_source) do
105
114
  #Source::Patches.new(recipe.patches).apply!
106
115
 
@@ -6,6 +6,7 @@ require 'fpm/cookery/source_handler'
6
6
  require 'fpm/cookery/utils'
7
7
  require 'fpm/cookery/path_helper'
8
8
  require 'fpm/cookery/environment'
9
+ require 'fpm/cookery/lifecycle_hooks'
9
10
  require 'fpm/cookery/package/cpan'
10
11
  require 'fpm/cookery/package/dir'
11
12
  require 'fpm/cookery/package/gem'
@@ -19,6 +20,7 @@ module FPM
19
20
  include FileUtils
20
21
  include FPM::Cookery::Utils
21
22
  include FPM::Cookery::PathHelper
23
+ include FPM::Cookery::LifecycleHooks
22
24
 
23
25
  def self.attr_rw(*attrs)
24
26
  attrs.each do |attr|
@@ -166,12 +168,21 @@ module FPM
166
168
  @spec = spec
167
169
  end
168
170
  alias_method :url, :source
171
+
172
+ def extracted_source(path = nil)
173
+ return @extracted_source if path.nil?
174
+ @extracted_source = path
175
+ end
169
176
  end
170
177
 
171
178
  def source
172
179
  self.class.source
173
180
  end
174
181
 
182
+ def extracted_source
183
+ self.class.extracted_source
184
+ end
185
+
175
186
  attr_reader :source_handler
176
187
 
177
188
  extend Forwardable
@@ -1,5 +1,5 @@
1
1
  module FPM
2
2
  module Cookery
3
- VERSION = '0.28.0'
3
+ VERSION = '0.29.0'
4
4
  end
5
5
  end
data/spec/recipe_spec.rb CHANGED
@@ -199,6 +199,12 @@ describe "Recipe" do
199
199
  end
200
200
  end
201
201
 
202
+ describe "#extracted_source" do
203
+ it "can be set" do
204
+ check_attribute(:extracted_source, 'test-1.0.0')
205
+ end
206
+ end
207
+
202
208
  def self.spec_recipe_attribute_list(name, list)
203
209
  class_eval %Q{
204
210
  describe "##{name}" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fpm-cookery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.0
4
+ version: 0.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernd Ahlers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-10 00:00:00.000000000 Z
11
+ date: 2015-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -124,6 +124,11 @@ files:
124
124
  - README.md
125
125
  - Rakefile
126
126
  - bin/fpm-cook
127
+ - docs/.gitignore
128
+ - docs/Makefile
129
+ - docs/conf.py
130
+ - docs/index.rst
131
+ - docs/pages/getting-started.rst
127
132
  - fpm-cookery.gemspec
128
133
  - lib/fpm/cookery/book.rb
129
134
  - lib/fpm/cookery/book_hook.rb
@@ -134,6 +139,7 @@ files:
134
139
  - lib/fpm/cookery/environment.rb
135
140
  - lib/fpm/cookery/exceptions.rb
136
141
  - lib/fpm/cookery/facts.rb
142
+ - lib/fpm/cookery/lifecycle_hooks.rb
137
143
  - lib/fpm/cookery/log.rb
138
144
  - lib/fpm/cookery/log/color.rb
139
145
  - lib/fpm/cookery/log/output/console.rb