spelling/grammatical fixes
Merge pull request #1613 from floatingatoll/pull_1

spelling/grammatical fixes
(#4561) Support structured facts

Add the option stringify_facts which defaults to true. If it is turned
on the current behaviour with turning facts into strings is kept.
If it is false facts are sanitized and only converted to strings if they
aren't booleans, numerics, arrays and hashes. It does this sanitizing in
a nested manner for arrays and hashes.
Merge branch 'dalen-4561_structured_facts'

* dalen-4561_structured_facts:
  (#4561) Support structured facts

closes #1578
Refactor how files are watched

LoadedFile is now WatchedFile (since it has nothing to do with loading
files, only with telling when they change), and some of its internal
variables have been renamed for clarity. Also added a FileWatcher class
whose entire purpose is to track a set of LoadedFiles in aggregate. This
is now used by TypeCollection in place of its own hash.

Puppet::FileServing::Configuration::Parser and
Puppet::Util::NetworkDevice::Config were inheriting LoadedFile, simply
for its changed? method, even though neither of them really has file
properties. Now they wrap a WatchedFile instance instead.
Merge branch 'nicklewis-refactor-loaded-file'

* nicklewis-refactor-loaded-file:
  Refactor how files are watched

closes #1355
(maint) Make sqlite3 use an in-memory DB for specs

Without this patch the spec tests are configuring sqlite in a manner
that writes the database to a file named ':memory'.  This is a problem
because filesystem databases are slower than in-memory databases and the
tests are not cleaning up this file after completing.

The change in 60e78b2d36f23877dc7b50e72578ad123d62c1f0 caused this
change in behavior, likely by accident, because the database connection
string was ':memory:' and the patch changed the string to ':memory'
likely because this looks like a Ruby symbol.

This patch addresses the problem by restoring the original connection
string of ':memory:'
Merge branch 'stable'

* stable:
  (maint) Make sqlite3 use an in-memory DB for specs
(#16568) Warn when TypeCollection skips missing objects

Commit 242692e optimized the `TypeCollection` by having it track missing
objects and then skip searching for those objects during subsequent
compilations. The problem is that this behavior was not logged which led many
users to wonder why classes and definitions would repeatedly come up as missing
until the puppet master was restarted (ref [#16568][16568]).

[16568]: https://projects.puppetlabs.com/issues/16568
(#16568) Try to load missing types by default

This patch adds a new setting `:ignoremissingtypes` that controls the
optimization introduced in 242692e. This setting defaults to `false` as the
behavior of this optimization is likely to confuse those who don't need it.
Merge branch 'Sharpie-16568-make-typecollection-optimization-optional' into stable

* Sharpie-16568-make-typecollection-optimization-optional:
  (#16568) Try to load missing types by default
  (#16568) Warn when TypeCollection skips missing objects

closes #1616
Merge branch 'stable'

* stable:
  (#16568) Try to load missing types by default
  (#16568) Warn when TypeCollection skips missing objects
(#20421) Use systemd as default service on arch

Per https://www.archlinux.org/news/end-of-initscripts-support/ Arch
Linux has migrated to systemd and as of January 2013 has dropped support
for sysv style init scripts. GH-1468 updated the systemctl binary
location which made the systemd service provider functional on Arch, but
since there was no clear default between init and systemd, init won out
which effectively broke systemd init scripts.

This commit sets systemd as the default for Arch Linux, and makes the
sysvinit scripts available as a fallback option. Since the init provider
is still functional and can be delegated to if there is no systemd
service for a given system service.

Squashed into a single commit and commit message update by Adrien Thebo
<adrien@puppetlabs.com>
Merge branch 'pull-1615' into stable
Merge branch 'stable'
(maint) Make sqlite3 use an in-memory DB (try 2)

The previous attempt to enable in-memory sqlite3 database testing for
the spec tests in 58e1c23 is insufficient because the
Puppet[:dblocation] setting is a type of FileSetting which munges values
using File.expand_path.  This is a problem because the path expansion
caused the database to be written to the filesystem rather than memory,
as intended.

This patch addresses the problem by adding a special case for all file
settings.  The munge operation is a no-op if the special value of
':memory:' is passed.
Merge branch 'stable'

* stable:
  (maint) Make sqlite3 use an in-memory DB (try 2)
(#2244) Remove nil results in static compiler as well

Fix this bug in static compiler as well.
Merge branch 'dalen-2244_static_compiler' into stable

* dalen-2244_static_compiler:
  (#2244) Remove nil results in static compiler as well

closes #1610
Merge branch 'stable'

* stable:
  (#2244) Remove nil results in static compiler as well