ReleaseEngineering/PuppetAgain/Modules/packages: Difference between revisions

 
(10 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).


= tips for a successful patch review =
== Requiring ==


Note that no other actions are appropriate for package modules.  If it's not installing a package, it shouldn't be here.  Classes in this module should be *extremely* boring and generic.
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 http://hg.mozilla.org/build/puppet/file/tip/modules/packages/manifests for the current list of packages.  The names should be self-explanatory, right?
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-Built Packages ==
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 ===


Same, but for Python-2.7.2.
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 64: Line 97:
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::tooltool ===
=== 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


This installs the tooltool script at /tools/tooltool.py; it is built from a template to use packages::mozilla::python27.
It installs to /usr/local/bin


=== packages::mozilla::screenresolution ===
=== packages::mozilla::screenresolution ===


This installs the jford's tool to set the screen resolution on a Mac in /usr/local/bin/screenresolution.  The screen resolution is set in the builder.pp class for Darwin hosts only.
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 ===
 
This installs the tooltool script at /tools/tooltool.py; it is built from a template to use packages::mozilla::python27.
canmove, Confirmed users
6,439

edits