diff options
-rw-r--r-- | app-admin/puppet/ChangeLog | 10 | ||||
-rw-r--r-- | app-admin/puppet/Manifest | 29 | ||||
-rw-r--r-- | app-admin/puppet/files/puppetmaster-2.7.6.confd | 18 | ||||
-rw-r--r-- | app-admin/puppet/files/puppetmaster-2.7.6.init | 34 | ||||
-rw-r--r-- | app-admin/puppet/puppet-2.6.11.ebuild | 165 | ||||
-rw-r--r-- | app-admin/puppet/puppet-2.7.6-r1.ebuild (renamed from app-admin/puppet/puppet-2.7.5.ebuild) | 75 |
6 files changed, 127 insertions, 204 deletions
diff --git a/app-admin/puppet/ChangeLog b/app-admin/puppet/ChangeLog index c5cd4b586394..d4c40942fdd3 100644 --- a/app-admin/puppet/ChangeLog +++ b/app-admin/puppet/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for app-admin/puppet # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/ChangeLog,v 1.94 2011/11/06 13:21:43 ranger Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/ChangeLog,v 1.95 2011/12/04 17:11:02 matsuu Exp $ + +*puppet-2.7.6-r1 (04 Dec 2011) + + 04 Dec 2011; MATSUU Takuto <matsuu@gentoo.org> -puppet-2.6.11.ebuild, + -puppet-2.7.5.ebuild, +puppet-2.7.6-r1.ebuild, + +files/puppetmaster-2.7.6.confd, +files/puppetmaster-2.7.6.init: + multiple puppetmasters support, bug #299799. Added minimal USE flag, bug + #385181. 06 Nov 2011; Brent Baude <ranger@gentoo.org> puppet-2.6.12.ebuild: Marking puppet-2.6.12 ppc for bug 388161 diff --git a/app-admin/puppet/Manifest b/app-admin/puppet/Manifest index a03d1da6bd04..3d98554b5e2b 100644 --- a/app-admin/puppet/Manifest +++ b/app-admin/puppet/Manifest @@ -1,14 +1,33 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + AUX 50puppet-mode-gentoo.el 217 RMD160 6ab7ace77c4e2da030c894f6b7f1a520e4950311 SHA1 7f6e97e1db4079bc45021360b0ada69c0482c008 SHA256 e70f8d26e2523d2d118a4944d11540807b48f59d75d878e6fa6aac606ece9a91 AUX puppet.init 916 RMD160 6fc57ee6e0daab1fdc23660deac947174f2e9da9 SHA1 00042571d62182afd22924447966600e961d9135 SHA256 edad76953e36dab793010955cb4775242271c3e4a22a193ecf1ade4f0716d2bf +AUX puppetmaster-2.7.6.confd 640 RMD160 6117e911ecc9be8c5eaa5df7562b6c9c56bc28aa SHA1 acfb9bfcee57cf356563f543339e5196aec6c500 SHA256 2245ae58a702618504257b690fd9b82b3562e7eaaa0d4ef2a96f918996249e8b +AUX puppetmaster-2.7.6.init 861 RMD160 128e7eaa892cfb52da37278c263943186782de91 SHA1 fa6facc1f28055dda3b17294d02afea5fe51ce5e SHA256 16f6429c15d282b3628fa7be926a6edf93358dbdcfe6a45b6594c4301b7e36be AUX puppetmaster.confd 279 RMD160 64824fc2c88d9069b25d0548fac5981f1ff4fa6b SHA1 d521616310e7a27986c27138bd4d4382238d609a SHA256 6db68d9e093d3d231c8ad35968e8d276f68cdd7aec8577b3f7ac2998d1f91692 AUX puppetmaster.init 984 RMD160 0f64b00f6b67fd4a7df0ed765fae096d7708abe0 SHA1 73c53119ac29591f1119637eb8818225bc32b95f SHA256 62f0abb0a386620be83586adaf34c1baff4719618d08495a7cbadaa21cc2d101 -DIST puppet-2.6.11.gem 1545728 RMD160 ee9672ace49bcc8d08ebec61428feefe8f0c9dd5 SHA1 ed55d1338b774c8ca1201092aefedeb68160cc04 SHA256 ce86eba1c2804d9459aa4f461b04cba3bfc78fe7e488244c34a7cd2dd200746e DIST puppet-2.6.12.gem 1530880 RMD160 283875f708d07e1b8acbf8cbe8fb6e1f1a67b5bf SHA1 75e6978b13a88b3498e3f79f467a19802ec83672 SHA256 d4dbfb48c42e73fd22d1f3605d6794756f7cd0873e57b3ffde00d81e5ccfa732 -DIST puppet-2.7.5.gem 1732608 RMD160 a29be8c85c498c99158be743127383ca718e7eea SHA1 db1b63bf1d1ac63d2be76103f636d3d1c5788b1c SHA256 24e476e414b278e55b27f7690d5eb6ec3b667d9dae39f65400d5a576b6752eb5 DIST puppet-2.7.6.gem 1738240 RMD160 16dba3d477624ee04f8a433ade15555a28d0a919 SHA1 650e7c6f0560f7bd4e4c520737a6844e50cd0df3 SHA256 566d28f471cb65ffe278c1d6ec69147441db5f811b94d44527e9211915ed4bcd -EBUILD puppet-2.6.11.ebuild 4815 RMD160 cfc50ec483ffd9cd708ca3c023febae36a469759 SHA1 b3f2a90a12271458cb8ceebfe76de59e80a28d4e SHA256 dbb4e5c10546a0658c37ffba41cea42ada147c119e6074f778e862665a17db79 EBUILD puppet-2.6.12.ebuild 4811 RMD160 535ceff9dfcc36f6ab2fdf8e18a7a5ee434748ce SHA1 64f16fc5ab0129ba871b77b8a78b224bd71e72eb SHA256 0ab06f8b307100f3682b7edc737c6bb89f4f46fdc657dc1f21a248087132756b -EBUILD puppet-2.7.5.ebuild 4697 RMD160 7e23c01e0b8cdfa6b13308a07257f8e81f4ff48f SHA1 5518c234663329247fb08075feb05f18cc585ef1 SHA256 28cbf52905bd5e981477e90c4c3fefcf0fe5137b98f109c96f55381bbc5fda68 +EBUILD puppet-2.7.6-r1.ebuild 4609 RMD160 58ed29b374e36a4728175b062b1e9bf71ab1a90e SHA1 aa25478d015a99d62992c9b67c4d48c2642e5e41 SHA256 ff1ed8cb4cac4b00946ac53c5892e7c61d78b93bacffbfb54d950cc1e7e9dbe7 EBUILD puppet-2.7.6.ebuild 4697 RMD160 0eb1181bd129adbd10cee0d03ddbe68e10a7bb70 SHA1 3d77f9240c8423bf0519fc04417f8bb427aef66e SHA256 f5c34dfab6614dae1d270cb63883f89998972bf17eeaf037c3bd2bce483b4296 -MISC ChangeLog 16046 RMD160 67864fe1c7038e37924c1d0bb95a9c4102fc167d SHA1 f0365b47cb3e413a798a00663a1fe793a0de42b4 SHA256 72d1132e00f8b9b27fccb4cb5901c5d671d3978e9629d4acba2e23af70f7f242 +MISC ChangeLog 16353 RMD160 ad35d599db093ccaa7a89a9a886cf1ef93b754ab SHA1 bd6b2501fe4e5b8fa89b34b1e44676bfecbf78ff SHA256 0067d35a6b24e94ebd6c3854b86f7d5ce3deef076a0bfad4943643296f47b16a MISC metadata.xml 1129 RMD160 64eb4cc09f22194da11da3c4e01441d846d1e9eb SHA1 bd76204117d9000ea1b3704054dbac3945a09026 SHA256 4e7dfa915273eb359790f38782099255c8e788794539b83205ed866b400d09cf +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.18 (GNU/Linux) + +iQIcBAEBAgAGBQJO26m9AAoJECaGw+YFKA1pysUP/2BJXXW3St2Wo5uchyjq7Wyv +KQvG5n+2h/VJQQu5HC4A8BHYp9av9kZ2OZ8y88WMc4VO6KE2N1Ljvk04MX59KggY +Nq4tTFGvgDRndXAAzWGvEDOfyElVzvb8tiFpAqyLRaBsSmO2bXd4qiMbNs07ZOMt +iVona3FVW5GJSqg+fgF9sSz0PW/O2cdTcnmutLyws5mKDKx30K/NOJ1ybfuO7WbX +gj/3v3H6qUD97GX4xSV0MpWIY8jth7xhBZIo7KMJns5sI80mBzEoStPAgUR6WTgs +MzJTZfXlch6sYQCB6vzRmkcB2qmajydQHPHHZYuKrBsdM3cr62KdFusMi1ICs+KV +YOB94UW/ko76NcpiHth/f9fov4952krPJuYu+CX6CRJYwHMI20VuEQPsF3LJVgdt +fd/M0b/hEtM1RgbSQyBF96NjKhBNGcevrXM5+rPnY0IZgr67LprXXH6NBVuj0zE9 +ZoKYBq0SW9v7PiYMjeqJ0w9jz9sXLJBnvTTHDsiSaDAUABZMm24x/OTn1dbwVAyR +y2TdW+FCjoaScAmVEFCEQ06QDjzQP8awm9Y2fpF09Dvpus5LBJ1ajymMXIvo5kT3 +4dFDfIxJcoHEVZjcB/hfbxVXLsylyOui3zH4FMhjL8d9ljSaGpuyVoyGWHWvHrwA +IF65+0Vh37YFBpX9TQPR +=eBb7 +-----END PGP SIGNATURE----- diff --git a/app-admin/puppet/files/puppetmaster-2.7.6.confd b/app-admin/puppet/files/puppetmaster-2.7.6.confd new file mode 100644 index 000000000000..afecf479a6a1 --- /dev/null +++ b/app-admin/puppet/files/puppetmaster-2.7.6.confd @@ -0,0 +1,18 @@ +# Location of PID files +PUPPETMASTER_PID_DIR="/var/run/puppet" + +# Where to log general messages to. +# Specify syslog to send log messages to the system log. +#PUPPETMASTER_LOG="syslog" + +# You may specify other parameters to the puppetmaster here +#PUPPETMASTER_EXTRA_OPTS="--noca" + +# You may specify an alternate port on which puppetmaster should listen. +# Default is: 8140 +#PUPPETMASTER_PORT="8140" + +# To start multiple servers: +# # cp /etc/conf.d/puppetmaster /etc/conf.d/puppetmaster.master_8141 +# # ln -s puppetmaster /etc/init.d/puppetmaster.master_8141 +# # ${EDITOR} /etc/conf.d/puppetmaster.master_8141 (set 8141 to PUPPETMASTER_PORT) diff --git a/app-admin/puppet/files/puppetmaster-2.7.6.init b/app-admin/puppet/files/puppetmaster-2.7.6.init new file mode 100644 index 000000000000..05ed1eb30878 --- /dev/null +++ b/app-admin/puppet/files/puppetmaster-2.7.6.init @@ -0,0 +1,34 @@ +#!/sbin/runscript +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +if [ "${SVCNAME}" = "puppetmaster" ] ; then + PUPPETMASTER_PID="master" +else + PUPPETMASTER_PID="${SVCNAME#*.}" +fi +pidfile="${PUPPETMASTER_PID_DIR}/${PUPPETMASTER_PID}.pid" + +command_args="--pidfile ${pidfile}" +if [ -n "${PUPPETMASTER_PORT}" ] ; then + command_args="${command_args} --masterport ${PUPPETMASTER_PORT}" +fi +command_args="${command_args} ${PUPPETMASTER_EXTRA_OPTS}" + +command="/usr/bin/puppetmasterd" +extra_started_commands="reload" + +depend() { + need localmount net + use dns logger slapd netmount nfsmount +} + +start_pre() { + checkpath --dir --owner puppet:puppet "${PUPPETMASTER_PID_DIR}" +} + +reload() { + ebegin "Reloading ${SVCNAME}" + start-stop-daemon --signal HUP --pidfile "${pidfile}" + eend $? "Failed to stop ${SVCNAME}" +} diff --git a/app-admin/puppet/puppet-2.6.11.ebuild b/app-admin/puppet/puppet-2.6.11.ebuild deleted file mode 100644 index 952f2b4074ba..000000000000 --- a/app-admin/puppet/puppet-2.6.11.ebuild +++ /dev/null @@ -1,165 +0,0 @@ -# Copyright 1999-2011 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/puppet-2.6.11.ebuild,v 1.6 2011/10/09 17:44:00 xarthisius Exp $ - -EAPI="3" -USE_RUBY="ruby18" - -RUBY_FAKEGEM_TASK_DOC="" -RUBY_FAKEGEM_TASK_TEST="test" -RUBY_FAKEGEM_EXTRADOC="CHANGELOG* README*" - -inherit elisp-common xemacs-elisp-common eutils ruby-fakegem - -DESCRIPTION="A system automation and configuration management software" -HOMEPAGE="http://puppetlabs.com/" - -LICENSE="GPL-2" -SLOT="0" -IUSE="augeas diff doc emacs ldap rrdtool selinux shadow sqlite3 vim-syntax xemacs" -KEYWORDS="amd64 hppa ppc sparc x86" - -ruby_add_rdepend " - >=dev-ruby/facter-1.5.1 - augeas? ( dev-ruby/ruby-augeas ) - diff? ( dev-ruby/diff-lcs ) - doc? ( dev-ruby/rdoc ) - ldap? ( dev-ruby/ruby-ldap ) - shadow? ( dev-ruby/ruby-shadow ) - sqlite3? ( dev-ruby/sqlite3-ruby ) - virtual/ruby-ssl" -# couchdb? ( dev-ruby/couchrest ) -# mongrel? ( www-servers/mongrel ) -# rack? ( >=dev-ruby/rack-1 ) -# rails? ( -# dev-ruby/rails -# >=dev-ruby/activerecord-2.1 -# ) -# stomp? ( dev-ruby/stomp ) - -DEPEND="${DEPEND} - emacs? ( virtual/emacs ) - xemacs? ( app-editors/xemacs )" -RDEPEND="${RDEPEND} - emacs? ( virtual/emacs ) - xemacs? ( app-editors/xemacs ) - rrdtool? ( >=net-analyzer/rrdtool-1.2.23[ruby] ) - selinux? ( sys-libs/libselinux[ruby] ) - >=app-portage/eix-0.18.0" - -SITEFILE="50${PN}-mode-gentoo.el" - -pkg_setup() { - enewgroup puppet - enewuser puppet -1 -1 /var/lib/puppet puppet -} - -all_ruby_compile() { - all_fakegem_compile - - if use emacs ; then - elisp-compile ext/emacs/puppet-mode.el || die "elisp-compile failed" - fi - - if use xemacs ; then - # Create a separate version for xemacs to be able to install - # emacs and xemacs in parallel. - mkdir ext/xemacs || die - cp ext/emacs/* ext/xemacs/ || die - xemacs-elisp-compile ext/xemacs/puppet-mode.el || die "xemacs-elisp-compile failed" - fi -} - -each_fakegem_install() { - ${RUBY} install.rb --destdir="${D}" install || die -} - -all_ruby_install() { - all_fakegem_install - - newinitd "${FILESDIR}"/puppetmaster.init puppetmaster || die - doconfd conf/gentoo/conf.d/puppetmaster || die - newinitd "${FILESDIR}"/puppet.init puppet || die - doconfd conf/gentoo/conf.d/puppet || die - - # Initial configuration files - keepdir /etc/puppet/manifests || die - keepdir /etc/puppet/modules || die - insinto /etc/puppet - - # Bug #338439 - #doins conf/gentoo/puppet/* || die - doins conf/redhat/*.conf || die - doins conf/auth.conf || die - - # Location of log and data files - keepdir /var/run/puppet || die - keepdir /var/log/puppet || die - keepdir /var/lib/puppet/ssl || die - keepdir /var/lib/puppet/facts || die - keepdir /var/lib/puppet/files || die - fowners -R puppet:puppet /var/{run,log,lib}/puppet || die - - if use emacs ; then - elisp-install ${PN} ext/emacs/puppet-mode.el* || die "elisp-install failed" - elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die - fi - - if use xemacs ; then - xemacs-elisp-install ${PN} ext/xemacs/puppet-mode.el* || die "xemacs-elisp-install failed" - xemacs-elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die - fi - - if use ldap ; then - insinto /etc/openldap/schema; doins ext/ldap/puppet.schema || die - fi - - if use vim-syntax ; then - insinto /usr/share/vim/vimfiles/ftdetect; doins ext/vim/ftdetect/puppet.vim || die - insinto /usr/share/vim/vimfiles/ftplugin; doins ext/vim/ftplugin/puppet.vim || die - insinto /usr/share/vim/vimfiles/indent; doins ext/vim/indent/puppet.vim || die - insinto /usr/share/vim/vimfiles/syntax; doins ext/vim/syntax/puppet.vim || die - fi - - # ext and examples files - for f in $(find ext examples -type f) ; do - docinto "$(dirname ${f})"; dodoc "${f}" || die - done - docinto conf; dodoc conf/namespaceauth.conf || die -} - -pkg_postinst() { - elog - elog "Please, *don't* include the --ask option in EMERGE_EXTRA_OPTS as this could" - elog "cause puppet to hang while installing packages." - elog - elog "Puppet uses eix to get information about currently installed packages," - elog "so please keep the eix metadata cache updated so puppet is able to properly" - elog "handle package installations." - elog - elog "Currently puppet only supports adding and removing services to the default" - elog "runlevel, if you want to add/remove a service from another runlevel you may" - elog "do so using symlinking." - elog - - if [ \ - -f "${EPREFIX}/etc/puppet/puppetd.conf" -o \ - -f "${EPREFIX}/etc/puppet/puppetmaster.conf" -o \ - -f "${EPREFIX}/etc/puppet/puppetca.conf" \ - ] ; then - elog - elog "Please remove deprecated config files." - elog " /etc/puppet/puppetca.conf" - elog " /etc/puppet/puppetd.conf" - elog " /etc/puppet/puppetmasterd.conf" - elog - fi - - use emacs && elisp-site-regen - use xemacs && xemacs-elisp-site-regen -} - -pkg_postrm() { - use emacs && elisp-site-regen - use xemacs && xemacs-elisp-site-regen -} diff --git a/app-admin/puppet/puppet-2.7.5.ebuild b/app-admin/puppet/puppet-2.7.6-r1.ebuild index 3b489a0b8bb3..a972b08dcb48 100644 --- a/app-admin/puppet/puppet-2.7.5.ebuild +++ b/app-admin/puppet/puppet-2.7.6-r1.ebuild @@ -1,8 +1,8 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/puppet-2.7.5.ebuild,v 1.1 2011/09/30 23:58:51 matsuu Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/puppet-2.7.6-r1.ebuild,v 1.1 2011/12/04 17:11:02 matsuu Exp $ -EAPI="3" +EAPI="4" # ruby19: dev-ruby/ruby-ldap has no ruby19 USE_RUBY="ruby18" @@ -17,7 +17,7 @@ HOMEPAGE="http://puppetlabs.com/" LICENSE="Apache-2.0" SLOT="0" -IUSE="augeas diff doc emacs ldap rrdtool selinux shadow sqlite3 vim-syntax xemacs" +IUSE="augeas diff doc emacs ldap minimal rrdtool selinux shadow sqlite3 vim-syntax xemacs" KEYWORDS="~amd64 ~hppa ~ppc ~sparc ~x86" ruby_add_rdepend " @@ -59,72 +59,81 @@ all_ruby_compile() { all_fakegem_compile if use emacs ; then - elisp-compile ext/emacs/puppet-mode.el || die "elisp-compile failed" + elisp-compile ext/emacs/puppet-mode.el fi if use xemacs ; then # Create a separate version for xemacs to be able to install # emacs and xemacs in parallel. - mkdir ext/xemacs || die - cp ext/emacs/* ext/xemacs/ || die - xemacs-elisp-compile ext/xemacs/puppet-mode.el || die "xemacs-elisp-compile failed" + mkdir ext/xemacs + cp ext/emacs/* ext/xemacs/ + xemacs-elisp-compile ext/xemacs/puppet-mode.el fi } each_fakegem_install() { - ${RUBY} install.rb --destdir="${D}" install || die + ${RUBY} install.rb --destdir="${D}" install } all_ruby_install() { all_fakegem_install - newinitd "${FILESDIR}"/puppetmaster.init puppetmaster || die - doconfd conf/gentoo/conf.d/puppetmaster || die - newinitd "${FILESDIR}"/puppet.init puppet || die - doconfd conf/gentoo/conf.d/puppet || die + newinitd "${FILESDIR}"/puppet.init puppet + doconfd conf/gentoo/conf.d/puppet # Initial configuration files - keepdir /etc/puppet/manifests || die - keepdir /etc/puppet/modules || die insinto /etc/puppet - # Bug #338439 - #doins conf/gentoo/puppet/* || die - doins conf/redhat/*.conf || die - doins conf/auth.conf || die + #doins conf/gentoo/puppet/* + doins conf/redhat/puppet.conf # Location of log and data files - keepdir /var/run/puppet || die - keepdir /var/log/puppet || die - keepdir /var/lib/puppet/ssl || die - keepdir /var/lib/puppet/facts || die - keepdir /var/lib/puppet/files || die - fowners -R puppet:puppet /var/{run,log,lib}/puppet || die + keepdir /var/{run,log}/puppet + fowners -R puppet:puppet /var/{run,log}/puppet + + if use minimal ; then + rm "${ED}/usr/bin/puppetmasterd" + rm "${ED}/etc/puppet/auth.conf" + else + newinitd "${FILESDIR}"/puppetmaster-2.7.6.init puppetmaster + newconfd "${FILESDIR}"/puppetmaster-2.7.6.confd puppetmaster + + insinto /etc/puppet + doins conf/redhat/fileserver.conf + + keepdir /etc/puppet/manifests + keepdir /etc/puppet/modules + + keepdir /var/lib/puppet/ssl + keepdir /var/lib/puppet/facts + keepdir /var/lib/puppet/files + fowners -R puppet:puppet /var/{run,log,lib}/puppet + fi if use emacs ; then - elisp-install ${PN} ext/emacs/puppet-mode.el* || die "elisp-install failed" - elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die + elisp-install ${PN} ext/emacs/puppet-mode.el* + elisp-site-file-install "${FILESDIR}/${SITEFILE}" fi if use xemacs ; then - xemacs-elisp-install ${PN} ext/xemacs/puppet-mode.el* || die "xemacs-elisp-install failed" - xemacs-elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die + xemacs-elisp-install ${PN} ext/xemacs/puppet-mode.el* + xemacs-elisp-site-file-install "${FILESDIR}/${SITEFILE}" fi if use ldap ; then - insinto /etc/openldap/schema; doins ext/ldap/puppet.schema || die + insinto /etc/openldap/schema; doins ext/ldap/puppet.schema fi if use vim-syntax ; then - insinto /usr/share/vim/vimfiles/ftdetect; doins ext/vim/ftdetect/puppet.vim || die - insinto /usr/share/vim/vimfiles/syntax; doins ext/vim/syntax/puppet.vim || die + insinto /usr/share/vim/vimfiles/ftdetect; doins ext/vim/ftdetect/puppet.vim + insinto /usr/share/vim/vimfiles/syntax; doins ext/vim/syntax/puppet.vim fi # ext and examples files for f in $(find ext examples -type f) ; do - docinto "$(dirname ${f})"; dodoc "${f}" || die + docinto "$(dirname ${f})"; dodoc "${f}" done - docinto conf; dodoc conf/namespaceauth.conf || die + docinto conf; dodoc conf/namespaceauth.conf } pkg_postinst() { |