public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michael Orlitzky" <mjo@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-libs/c-client/
Date: Sat, 18 Feb 2017 16:14:09 +0000 (UTC)	[thread overview]
Message-ID: <1487434402.3524b85eb813d017c7fa32843a3949d065ab2d6b.mjo@gentoo> (raw)

commit:     3524b85eb813d017c7fa32843a3949d065ab2d6b
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Sat Feb 18 15:27:51 2017 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Sat Feb 18 16:13:22 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3524b85e

net-libs/c-client: new revision building the "slx" target with USE="-pam".

The build system for c-client supports a few different targets. When
USE=pam was not set, we were using the "lnx" target, which supposes
that the crypt() function is available directly in libc. That is not
the case in Gentoo, but things usually worked out when libcrypt was
linked in transitively (by, say, PHP).

However, the "gold" linker is more strict than "bfd" with regard to
transitive dependencies. The gold linker treats them as superfluous
and mercilessly prunes them; thus c-client could wind up with no
crypt() function when the gold linker was used: c-client was not
linking with -lcrypt itself, and even though consumers might be
linking in c-client with -lcrypt, the crypt library appeared unused
and would be omitted.

By switching from the "lnx" target to "slx", we ensure that -lcrypt is
passed to the linker when it links c-client itself. Thus the crypt()
function is where it is expected to be, and the associated PHP build
failure is resolved. I was unable to reproduce a related bug in
mail-client/alpine.

I added two (unrelated) missing "die" statements to the ebuild while I
was at it.

This non-maintainer commit was with permission from robbat2.

Gentoo-Bug: 456928
Gentoo-Bug: 545086

Package-Manager: portage-2.3.3

 net-libs/c-client/c-client-2007f-r6.ebuild | 150 +++++++++++++++++++++++++++++
 1 file changed, 150 insertions(+)

diff --git a/net-libs/c-client/c-client-2007f-r6.ebuild b/net-libs/c-client/c-client-2007f-r6.ebuild
new file mode 100644
index 0000000000..fc6ce38b6a
--- /dev/null
+++ b/net-libs/c-client/c-client-2007f-r6.ebuild
@@ -0,0 +1,150 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+inherit flag-o-matic eutils libtool toolchain-funcs multilib
+
+MY_PN=imap
+MY_P="${MY_PN}-${PV}"
+S=${WORKDIR}/${MY_P}
+
+CHAPPA_PL=115
+DESCRIPTION="UW IMAP c-client library"
+HOMEPAGE="http://www.washington.edu/imap/"
+SRC_URI="ftp://ftp.cac.washington.edu/imap/${MY_P}.tar.Z
+	chappa? ( mirror://gentoo/${P}-chappa-${CHAPPA_PL}-all.patch.gz )"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="doc +ipv6 kerberos kernel_linux kernel_FreeBSD libressl pam ssl static-libs topal chappa"
+
+RDEPEND="
+	ssl? (
+		!libressl? ( dev-libs/openssl:0= )
+		libressl? ( dev-libs/libressl:0= ) )
+	!net-mail/uw-imap
+	kerberos? ( app-crypt/mit-krb5 )
+"
+DEPEND="${RDEPEND}
+	kernel_linux? ( pam? ( >=sys-libs/pam-0.72 ) )
+"
+
+src_prepare() {
+	default
+
+	# Tarball packed with bad file perms
+	chmod -R u+rwX,go-w . || die "failed to fix permissions"
+
+	# lots of things need -fPIC, including various platforms, and this library
+	# generally should be built with it anyway.
+	append-flags -fPIC
+
+	# Modifications so we can build it optimally and correctly
+	sed \
+		-e "s:BASECFLAGS=\".*\":BASECFLAGS=:g" \
+		-e 's:SSLDIR=/usr/local/ssl:SSLDIR=/usr:g' \
+		-e 's:SSLCERTS=$(SSLDIR)/certs:SSLCERTS=/etc/ssl/certs:g' \
+		-i src/osdep/unix/Makefile \
+		|| die "failed to fix compiler flags and SSL paths in the Makefile"
+
+	# Make the build system more multilib aware
+	sed \
+		-e "s:^SSLLIB=\$(SSLDIR)/lib:SSLLIB=\$(SSLDIR)/$(get_libdir):" \
+		-e "s:^AFSLIB=\$(AFSDIR)/lib:AFSLIB=\$(AFSDIR)/$(get_libdir):" \
+		-i src/osdep/unix/Makefile \
+		|| die "failed to fix our libdir in the Makefile"
+
+	# Targets should use the Gentoo (ie linux) fs
+	sed -e '/^bsf:/,/^$/ s:ACTIVEFILE=.*:ACTIVEFILE=/var/lib/news/active:g' \
+		-i src/osdep/unix/Makefile \
+		|| die "failed to fix the FreeBSD ACTIVEFILE path in the Makefile"
+
+	# Apply a patch to only build the stuff we need for c-client
+	eapply "${FILESDIR}/${PN}-2006k_GENTOO_Makefile.patch"
+
+	# Apply patch to add the compilation of a .so for PHP
+	# This was previously conditional, but is more widely useful.
+	eapply "${FILESDIR}/${PN}-2006k_GENTOO_amd64-so-fix.patch"
+
+	# Remove the pesky checks about SSL stuff
+	sed -e '/read.*exit/d' -i Makefile \
+		|| die "failed to disable SSL warning in the Makefile"
+
+	# Respect LDFLAGS
+	eapply "${FILESDIR}/${PN}-2007f-ldflags.patch"
+	sed -e "s/CC=cc/CC=$(tc-getCC)/" \
+		-e "s/ARRC=ar/ARRC=$(tc-getAR)/" \
+		-e "s/RANLIB=ranlib/RANLIB=$(tc-getRANLIB)/" \
+		-i src/osdep/unix/Makefile \
+		|| die "failed to fix build flags support in the Makefile"
+
+	use topal && eapply "${FILESDIR}/${P}-topal.patch"
+	use chappa && epatch "${DISTDIR}/${P}-chappa-${CHAPPA_PL}-all.patch.gz"
+
+	elibtoolize
+}
+
+src_compile() {
+	local mymake ipver ssltype target passwdtype
+	ipver='IP=4'
+	if use ipv6 ; then
+		ipver="IP=6"
+		touch ip6 || die "failed to create ip6 file"
+	fi
+	use ssl && ssltype="unix" || ssltype="none"
+	if use kernel_linux ; then
+		# Fall back to "slx" when USE=pam is not set. This ensures that
+		# we link in libcrypt to get the crypt() routine (bug #456928).
+		use pam && target=lnp passwdtype=pam || target=slx passwdtype=std
+	elif use kernel_FreeBSD ; then
+		target=bsf passwdtype=pam
+	fi
+	use kerberos \
+		&& mymake="EXTRAAUTHENTICATORS=gss" \
+		&& EXTRALIBS="-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" \
+	# no parallel builds supported!
+	emake -j1 SSLTYPE=${ssltype} $target \
+		PASSWDTYPE=${passwdtype} ${ipver} ${mymake} \
+		EXTRACFLAGS="${CFLAGS}" \
+		EXTRALDFLAGS="${LDFLAGS}" \
+		EXTRALIBS="${EXTRALIBS}" \
+		GSSDIR=/usr
+}
+
+src_install() {
+	if use static-libs; then
+		# Library binary
+		dolib.a c-client/c-client.a
+		dosym c-client.a "/usr/$(get_libdir)/libc-client.a"
+	fi
+
+	# Now the shared library
+	dolib.so c-client/libc-client.so.1.0.0
+
+	dosym libc-client.so.1.0.0 "/usr/$(get_libdir)/libc-client.so"
+	dosym libc-client.so.1.0.0 "/usr/$(get_libdir)/libc-client.so.1"
+
+	# Headers
+	insinto /usr/include/imap
+	doins src/osdep/unix/*.h
+	doins src/c-client/*.h
+	doins c-client/linkage.h
+	doins c-client/linkage.c
+	doins c-client/osdep.h
+
+	if use ssl; then
+		echo "  ssl_onceonlyinit ();" >> "${D}"/usr/include/imap/linkage.c \
+			|| die "failed to add ssl init statement to linkage.c"
+	fi
+
+	# Documentation
+	dodoc README docs/*.txt docs/BUILD docs/CONFIG docs/RELNOTES docs/SSLBUILD
+	if use doc; then
+		docinto rfc
+		dodoc docs/rfc/*.txt
+		docinto draft
+		dodoc docs/draft/*
+	fi
+}


             reply	other threads:[~2017-02-18 16:14 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-18 16:14 Michael Orlitzky [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-03-17 17:36 [gentoo-commits] repo/gentoo:master commit in: net-libs/c-client/ Sam James
2023-03-17 17:22 Sam James
2023-03-17 16:52 Arthur Zamarin
2023-03-17 16:22 Arthur Zamarin
2023-03-17 16:22 Arthur Zamarin
2023-03-17 16:16 Arthur Zamarin
2023-02-18  4:19 Sam James
2023-02-06 22:31 Sam James
2022-12-24  9:16 Andreas Sturmlechner
2022-12-22 21:13 Sam James
2022-12-22 21:13 Sam James
2022-12-22 21:13 Sam James
2022-12-22 21:13 Sam James
2022-12-22 21:13 Sam James
2022-12-22 21:13 Sam James
2022-12-22 20:45 Arthur Zamarin
2022-01-04  3:29 Sam James
2021-08-29  8:37 Marek Szuba
2021-05-02 10:16 Mikle Kolyada
2019-05-22  4:03 Aaron Bauman
2019-03-16 18:53 Mikle Kolyada
2018-10-24 15:13 Lars Wendler
2017-11-27  0:03 David Seifert
2017-11-26 23:11 David Seifert
2017-07-07 17:45 Alexis Ballier
2017-07-05 11:35 Michał Górny
2017-06-11 14:17 Michael Orlitzky
2017-06-10 15:10 Agostino Sarubbo
2017-04-27 11:23 Agostino Sarubbo
2017-04-19  6:52 Jeroen Roovers
2017-04-04 22:28 Michael Weber
2017-04-01 16:06 Agostino Sarubbo
2017-03-28 11:16 Michael Weber
2017-03-25 14:43 Agostino Sarubbo
2017-02-21  2:16 Michael Orlitzky
2016-10-09 19:07 Pacho Ramos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1487434402.3524b85eb813d017c7fa32843a3949d065ab2d6b.mjo@gentoo \
    --to=mjo@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox