commit:     4edd04b727e428dbe617c8a56d304ca23e00cf79
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  7 02:03:21 2020 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Tue Jan  7 02:03:45 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4edd04b7

net-misc/cfengine: string parsing fix for infra

Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 net-misc/cfengine/cfengine-2.2.10-r6.ebuild        | 116 +++++++++++++++++++++
 .../files/cfengine-2.2.10-lsbrelease.patch         |  24 +++++
 2 files changed, 140 insertions(+)

diff --git a/net-misc/cfengine/cfengine-2.2.10-r6.ebuild 
b/net-misc/cfengine/cfengine-2.2.10-r6.ebuild
new file mode 100644
index 00000000000..87d5fa9341e
--- /dev/null
+++ b/net-misc/cfengine/cfengine-2.2.10-r6.ebuild
@@ -0,0 +1,116 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="An automated suite of programs for configuring and maintaining
+Unix-like computers"
+HOMEPAGE="http://www.cfengine.org/";
+SRC_URI="http://cfengine.com/source_code/download?file=${P}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE="vim-syntax"
+
+RDEPEND=">=sys-libs/db-4:=
+       <dev-libs/openssl-1.1:=
+       app-portage/portage-utils
+       net-libs/libnsl:="
+DEPEND="${RDEPEND}
+       virtual/yacc
+       sys-devel/flex"
+PDEPEND="vim-syntax? ( app-vim/cfengine-syntax )"
+
+src_prepare() {
+       eapply_user
+
+       # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520696
+       # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=511666
+       # https://bugs.gentoo.org/339808
+       eapply "${FILESDIR}/admit-noclass-520696.patch" \
+               "${FILESDIR}/511666-segfault.patch" \
+               "${FILESDIR}/${P}-snprintf_buffer_overflow.patch" \
+               "${FILESDIR}/${PN}-2.2.10-lsbrelease.patch"
+
+       # 2048 causes crashes on some 32-bit hardened kernels, and the warning
+       # messages say to turn it back down.
+       if use x86; then
+               sed -i -e "s:CF_IFREQ 2048:CF_IFREQ 1024:g" src/cf.defs.h || die
+       fi
+}
+
+src_configure() {
+       # Enforce /var/cfengine for historical compatibility
+       econf \
+               --disable-static \
+               --with-workdir=/var/cfengine \
+               --with-berkeleydb=/usr
+
+       # Fix Makefile to skip doc,inputs, & contrib install to wrong locations
+       sed -i -e 's/\(DIST_SUBDIRS.*\) contrib inputs doc/\1/' \
+               -e 's/\(SUBDIRS.*\) contrib inputs/\1/' \
+               -e 's/\(install-data-am.*\) install-docDATA/\1/' Makefile || die
+
+       # Fix man pages
+       sed -i -e 's@/usr/local@/usr@' doc/*.8 || die
+}
+
+src_install() {
+       newinitd "${FILESDIR}"/cfservd.rc6 cfservd
+       newinitd "${FILESDIR}"/cfenvd.rc6 cfenvd
+       newinitd "${FILESDIR}"/cfexecd.rc6 cfexecd
+
+       emake DESTDIR="${D}" install
+
+       # Remove static library and libtool file as they are not needed
+       rm "${ED}"/usr/$(get_libdir)/*.la || die
+
+       dodoc AUTHORS ChangeLog README TODO INSTALL
+
+       # Manually install doc and inputs
+       doman doc/*.8
+       doinfo doc/*.info*
+       docinto examples
+       dodoc inputs/*.example
+
+       # Create cfengine working directory
+       dodir /var/cfengine
+       fperms 700 /var/cfengine
+       keepdir /var/cfengine/bin
+       keepdir /var/cfengine/inputs
+       keepdir /var/cfengine/modules
+}
+
+pkg_postinst() {
+       # Copy cfagent into the cfengine tree otherwise cfexecd won't
+       # find it. Most hosts cache their copy of the cfengine
+       # binaries here. This is the default search location for the
+       # binaries.
+
+       cp -f /usr/sbin/cf{agent,servd,execd} "${ROOT}"/var/cfengine/bin/
+
+       einfo
+       einfo "NOTE: The cfportage module has been deprecated in favor of the"
+       einfo "      upstream 'packages' action."
+       einfo
+       einfo "Init scripts for cfservd, cfenvd, and cfexecd are now provided."
+       einfo
+       einfo "To run cfengine out of cron every half hour modify your crontab:"
+       einfo "0,30 * * * *    /usr/sbin/cfexecd -F"
+       einfo
+
+       elog "You MUST generate the keys for cfengine by running:"
+       elog "emerge --config ${CATEGORY}/${PN}"
+}
+
+pkg_config() {
+       if [[ -z ${ROOT} ]]; then
+               if [[ ! -f ${EPREFIX}/var/cfengine/ppkeys/localhost.priv ]]; 
then
+                       einfo "Generating keys for localhost."
+                       "${EPREFIX}"/usr/sbin/cfkey
+               fi
+       else
+               die "cfengine cfkey does not support any value of ROOT other 
than /."
+       fi
+}

diff --git a/net-misc/cfengine/files/cfengine-2.2.10-lsbrelease.patch 
b/net-misc/cfengine/files/cfengine-2.2.10-lsbrelease.patch
new file mode 100644
index 00000000000..6f8dfa04d8f
--- /dev/null
+++ b/net-misc/cfengine/files/cfengine-2.2.10-lsbrelease.patch
@@ -0,0 +1,24 @@
+Newer GCC mis-compiles the lsb_release reader function.
+
+Signed-off-by: Robin H. Johnson <[email protected]>
+
+--- cfengine-2.2.10/src/misc.c 2009-02-10 21:55:36.000000000 -0800
++++ cfengine-2.2.10/src/misc.c 2020-01-06 17:58:07.049226386 -0800
+@@ -1187,6 +1187,7 @@ if ((fp = cfpopen(VBUFF, "r")) == NULL)
+ 
+ if (ReadLine(VBUFF, CF_BUFSIZE, fp))
+    {
++   Debug4("(%s)",VBUFF);
+    char * buffer = VBUFF;
+    strsep(&buffer, ":");
+    
+@@ -1198,7 +1199,8 @@ if (ReadLine(VBUFF, CF_BUFSIZE, fp))
+    info = buffer;
+    while((*buffer != '\0') && !isspace(*buffer))
+       {
+-      *buffer = tolower(*buffer++);
++      *buffer = tolower(*buffer);
++      buffer++;
+       }
+    
+    *buffer = '\0';

Reply via email to