canmove, Confirmed users
6,439
edits
No edit summary |
|||
(13 intermediate revisions by 4 users not shown) | |||
Line 5: | Line 5: | ||
"Installation" here is taken to mean getting the package installed, along with any supporting files (e.g., NRPE plugins). | "Installation" here is taken to mean getting the package installed, along with any supporting files (e.g., NRPE plugins). | ||
= | == Requiring == | ||
All packages can be required as a class: | |||
require => Class['packages::foo'] | |||
= Implementation = | = Implementation = | ||
In general, package management resources get set up in the 'packagesetup' stage (see [ReleaseEngineering/PuppetAgain#Stages]), so that subsequent uses of the package manager can assume it is configured. This is done with an invocation of ''packages::setup'' from the ''toplevel::base'' class. | In general, package management resources get set up by the ''packages::setup'' class in the 'packagesetup' stage (see [ReleaseEngineering/PuppetAgain#Stages]), so that subsequent uses of the package manager can assume it is configured. This is done with an invocation of ''packages::setup'' from the ''toplevel::base'' class. | ||
== CentOS == | == CentOS == | ||
Line 19: | Line 21: | ||
Yum caches repository metadata on clients for a default of six hours. This can cause problems when trying to land package changes, as the change will not be visible on clients for this time. A cache reload can be forced by incrementing '''$repoflag''' in modules/packages/manifests/setup.pp, working around the problem. | Yum caches repository metadata on clients for a default of six hours. This can cause problems when trying to land package changes, as the change will not be visible on clients for this time. A cache reload can be forced by incrementing '''$repoflag''' in modules/packages/manifests/setup.pp, working around the problem. | ||
= Setup = | === Setup === | ||
The ''packages::yumrepo'' class is used from ''packages::setup'' to install yum repositories. It takes | The ''packages::yumrepo'' class is used from ''packages::setup'' to install yum repositories. It takes | ||
Line 27: | Line 29: | ||
; $gpg_key: (optional) puppet location of the gpg key for the repo | ; $gpg_key: (optional) puppet location of the gpg key for the repo | ||
; $gpg_key_pkg: (required if $gpg_key given) gpg-pubkey package that appears when the key is installed (use 'rpm -q gpg-pubkey' to find this) | ; $gpg_key_pkg: (required if $gpg_key given) gpg-pubkey package that appears when the key is installed (use 'rpm -q gpg-pubkey' to find this) | ||
Many of the basic repos - CentOS, releng, and puppet - are included by default. Others are defined in `modules/packages/manifests/setup.pp` as virtual resources and realized in the package manifests when required. | |||
== Darwin == | |||
There is no setup required for darwin packages. Each package is installed using ''packages::pkgdmg'': | |||
packages::pkgdmg { | |||
screenresolution: | |||
version => "1.6"; | |||
} | |||
This define automatically calculates the DMG path and uses the puppet pkgdmg provider to install it. | |||
See [[ReleaseEngineering/PuppetAgain/Packages#Darwin]] for details on installing and creating Darwin packages. | |||
= Packages = | = Packages = | ||
See | See https://github.com/mozilla/build-puppet/tree/master/modules/packages/manifests for the current list of non-customized packages. The names should be self-explanatory, right? | ||
== Mozilla- | The private Apple packages are from https://developer.apple.com/downloads (Apple ID required) | ||
== Mozilla-Custom Packages == | |||
In many cases, we want customized or patched packages. Those should be under ''packages::mozilla''. Packages in this space have more requirements, since they are not simply pulling in a publicly available package. See [[ReleaseEngineering/PuppetAgain/HowTo/Hack on PuppetAgain#Custom Packages]]. | In many cases, we want customized or patched packages. Those should be under ''packages::mozilla''. Packages in this space have more requirements, since they are not simply pulling in a publicly available package. See [[ReleaseEngineering/PuppetAgain/HowTo/Hack on PuppetAgain#Custom Packages]]. | ||
=== packages::mozilla::ccache === | |||
This is a newer version than is distributed by CentOS. It seems no other changes have been made. | |||
=== packages::mozilla::hgtool === | |||
This is a python wrapper around hg that simplifies using hg from build automation. The canonical source for hgtool is http://hg.mozilla.org/build/tools/file/2dc15e3ec0ca/buildfarm/utils/hgtool.py, and it is packaged into a self-contained python script with http://hg.mozilla.org/build/tools/file/2dc15e3ec0ca/buildfarm/utils/Makefile#l3 | |||
It installs to /usr/local/bin | |||
=== packages::mozilla::gittool === | |||
This is a python wrapper around git that simplifies using git from build automation. The canonical source for gittool is http://hg.mozilla.org/build/tools/file/2dc15e3ec0ca/buildfarm/utils/gittool.py, and it is packaged into a self-contained python script with http://hg.mozilla.org/build/tools/file/2dc15e3ec0ca/buildfarm/utils/Makefile#l6 | |||
It installs to /usr/local/bin | |||
=== packages::mozilla::git === | === packages::mozilla::git === | ||
Line 54: | Line 87: | ||
=== packages::mozilla::python27 === | === packages::mozilla::python27 === | ||
This is a custom build of Python-2.7.2. The Python prefix is /tools/python27, with symlinks from /tools/python and /tools/python2. The python binary is at /tools/python26/bin/python, with a symlink at /usr/local/bin/python2.7. | |||
=== packages::mozilla::py27_mercurial === | === packages::mozilla::py27_mercurial === | ||
Line 63: | Line 96: | ||
Installs virtualenv, built against packages::mozilla::python27. Note that virtualenv is a single .py file, and thus does not need to be built at all. The python::virtualenv puppet module does not use this package. This installs a symlink at /usr/local/bin/virtualenv. | Installs virtualenv, built against packages::mozilla::python27. Note that virtualenv is a single .py file, and thus does not need to be built at all. The python::virtualenv puppet module does not use this package. This installs a symlink at /usr/local/bin/virtualenv. | ||
=== packages::mozilla::retry === | |||
This is a python tool to retry an operation a configurable number of times. The canonical source for hgtool is http://hg.mozilla.org/build/tools/file/tip/buildfarm/utils/retry.py, and it is packaged into a self-contained python script with http://hg.mozilla.org/build/tools/file/tip/buildfarm/utils/Makefile | |||
It installs to /usr/local/bin | |||
=== packages::mozilla::screenresolution === | |||
This installs the jford's tool to set the screen resolution on a Mac in /usr/local/bin/screenresolution. The screenresolution class uses this on Darwin. | |||
=== packages::mozilla::supervisor === | |||
A newer version of supervisor package based on FC16 spec file and supervisor_3.0-0.10.a12. Used by <tt>supervisord</tt> module. | |||
=== packages::mozilla::tooltool === | === packages::mozilla::tooltool === | ||
This installs the tooltool script at /tools/tooltool.py; it is built from a template to use packages::mozilla::python27. | This installs the tooltool script at /tools/tooltool.py; it is built from a template to use packages::mozilla::python27. |