Add another snowflake version of burning in package versions

Like every other project, Razor clearly needs a uniquely shaped method to burn
in version numbers during release.  This adds my own triangle to the square,
the rhombus, and the other methods already found here.

In practice, the others all assume that the "this is not versioned" string
uniquely occurs in the file, which makes them all unsuitable for my "extract
the version from git" code.  Alas.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Integrate version burn-in to the tar build process

In the longer term, having to commit a modified version file back to source
control means more windows for human error breaking something, as will as more
challenges around automating builds.

This adds a `NEW_STYLE_PACKAGE` option that integrates the version bump
process into the tar build - so that it only modifies the temporary working
copy of the code, not the master repository.

This allows Razor to have upstream tags be the sole source of version truth,
eliminating one of the typical copies of that data stored in git.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Remove f15 from outgoing directory structure
Add support for rpm signing retries, looping

This commit adds a 5-limit retry for rpm signing password failures,
via a new utility method, loop_shell_command. It also raises an
exception instead of failing silently and just continuing, as the
current methods do, which has resulted in accidentally shipping
unsigned rpms.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Add postflight, make scripts operations conditional on file existence

This commit adds support for templatizing a postflight for OS X packages and
also makes both the postflight and preflight optional. If they don't exist the
task doesn't templatize or copy them.
Use PACKAGEMAKER constant

The tool check here uses a hardcoded path for packagemaker when a constant is
defined for it at the start of the task.
Remove specific remote freight calls

This commit replaces the devel/final-specific remote freight calls with a
single one, in lieu of increased logic on the remote side of the operation. Now
a remote `rake freight` call is suitable for all our cases.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Hide and deprecate deb rc tasks

We no longer need rc tasks for building debs, the original use case (building
puppet 3 rcs with facter 2 rcs) is no longer pertinent. This commit hides these
tasks and prints a deprecation warning on their use.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Unify rc and final tasks, deb and mock task naming

This commit introduces a deprecate utility method that just prints a
deprecation warning. It deprecates "rc" and "final" tasks in favor of tasks
that handle both now that the devel repos aren't necessary for dependency
resolution when building. The old tasks are hidden, but remain functional for
now. Remote tasks have been cleaned up so that their names match the local
tasks, just under a :remote namespace.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Place remote tasks under a remote namespace

To hopefully clarify the 1:1 relationship between remote and local tasks, this
commit places the new/remaining remote tasks under a :remote namespace,
removing the "remote_*" prefix from the task name.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
We have a deprecate method, lets use it

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Add an is_rc? utility method and use it

This method will return whether or not this is an RC version based on the
string returned by get_dash_version. We use it in building rpms and debs to
determine the status of our build, e.g. rc vs foss.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Remove unnecessary brackets from regex
Clarify remote task descs, add single build remote tasks
Make cow builds pass the devel as a string boolean
Fix/remove unnecessary subdir assignments

First, this commit changes the assignment of subdir inside the
build_rpm_with_mocks method to use the argument passed in rather than call out
to the is_rc? method. Second, it removes all the unnecessary assignments of
subdir inside the rake tasks, which used to be necessary but are no longer.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Add basic tests for new is_rc? method.
Add an ln sfT utility method

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Split out build-data into team and project-specific files

Currently, the build-data files are a mess. This commit take the single
monolithic file for each team and splits it into two, one for team-specific
data, and another for project-specific data. This will be important in allowing
us to proceed with dual-build projects (e.g. FOSS and PE from the same source).

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Print the messsage not the exception object