diff --git a/net-libs/c-client/Manifest b/net-libs/c-client/Manifest index a84c4a83e18d1..6a0e064589961 100644 --- a/net-libs/c-client/Manifest +++ b/net-libs/c-client/Manifest @@ -1,2 +1,3 @@ DIST c-client-2007f-chappa-115-all.patch.gz 30571 BLAKE2B 707ec7718f764d5fea4142a4e0c4dd561d0a387cb72fea16de656a01bc21a0b30600dc121c8af090b76188d0131852ca6f3d40b9bba8745696faed5a79fb8c59 SHA512 f44489ec38aa6a3dc682872a6857154254c23352db81ee380dfdfad39743234d97a8bcc07a74459f7532efe2fc073cf7d9c078433e11a95de19beeb387ff8b65 DIST imap-2007f.tar.Z 2793529 BLAKE2B f5b597551ef56d284180cd49cf6b7d01a63ee60bcb513a354bd7ec63428184b854e3ea666a9f3ce1f5b27699cf81d2f1d0e66e5cfc7fee93d723bb146d113ec7 SHA512 2c728deaf66d23158c61ae55ff94f05d2a1cf0168002760321ca30c6ee1c58c0a4c7bc14ece0097ea662df6c7c49be3b91c8e5e943724c9e2736800fa9298dae +DIST uw-imap_2007f~dfsg-7.debian.tar.xz 44960 BLAKE2B 836dfd9a5922cd3043278a89c87276c974c8e91c5831a94caef6e73b2839d246bda879f67bdad88ae59888b5dc8b6ca366aa48b6d197508cd10cdc68f1e7027f SHA512 3a903062c782c942d4c7a1122be686e301ea4d4c6f6ff1dbc78ae29c7ee7b8e02fb25a903401e6a7047ddccaf6bcceba953f6cad1c1890cd6410ea909b014af6 diff --git a/net-libs/c-client/c-client-2007f_p7.ebuild b/net-libs/c-client/c-client-2007f_p7.ebuild new file mode 100644 index 0000000000000..c3fd74b4a8a90 --- /dev/null +++ b/net-libs/c-client/c-client-2007f_p7.ebuild @@ -0,0 +1,172 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic libtool toolchain-funcs + +MY_PN=imap +MY_P="${MY_PN}-${PV}" + +CHAPPA_PL=115 +DESCRIPTION="UW IMAP c-client library" +HOMEPAGE="http://www.washington.edu/imap/" +SRC_URI=" + ftp://ftp.cac.washington.edu/imap/${MY_PN}-$(ver_cut 1-2).tar.Z + mirror://debian/pool/main/u/uw-${MY_PN}/uw-${MY_PN}_${PV/_p/"~dfsg-"}.debian.tar.xz + chappa? ( mirror://gentoo/${PN}-$(ver_cut 1-2)-chappa-${CHAPPA_PL}-all.patch.gz ) +" +S="${WORKDIR}"/${MY_PN}-$(ver_cut 1-2) + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="doc +ipv6 kerberos pam ssl static-libs topal chappa" + +RDEPEND=" + ssl? ( + dev-libs/openssl:= + ) + kernel_linux? ( + pam? ( >=sys-libs/pam-0.72 ) + !pam? ( virtual/libcrypt:= ) + ) + kerberos? ( app-crypt/mit-krb5 ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${WORKDIR}"/debian/patches + + # Apply a patch to only build the stuff we need for c-client + "${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. + "${FILESDIR}/${PN}-2007f_GENTOO_amd64-so-fix.patch" + + # Respect LDFLAGS + "${FILESDIR}/${PN}-2007f_p7-ldflags.patch" + + # build fix for -Werror=implicit-function-declaration and + # incompatible function pointer types, bug #870478 + "${FILESDIR}/${PN}-2007f-scandir-callback-types.patch" + "${FILESDIR}/${PN}-2007f_p7-implicit-declaration-fix.patch" +) + +src_prepare() { + use topal && PATCHES+=( "${FILESDIR}/${P}-topal.patch" ) + + default + + use chappa && eapply -p2 "${WORKDIR}/${P}-chappa-${CHAPPA_PL}-all.patch" + + # 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" + + # Remove the pesky checks about SSL stuff + sed -e '/read.*exit/d' -i Makefile \ + || die "failed to disable SSL warning in the Makefile" + + 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" + + elibtoolize +} + +src_compile() { + local mymake target passwdtype + + local ipver='IP=4' + if use ipv6 ; then + ipver="IP=6" + touch ip6 || die "failed to create ip6 file" + fi + + local ssltype="none" + if use ssl ; then + ssltype="unix" + fi + + 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=lnps passwdtype=pam || target=slx passwdtype=std + fi + + if use kerberos ; then + mymake="EXTRAAUTHENTICATORS=gss" + EXTRALIBS="-lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" + fi + + 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 +} diff --git a/net-libs/c-client/files/c-client-2007f_GENTOO_amd64-so-fix.patch b/net-libs/c-client/files/c-client-2007f_GENTOO_amd64-so-fix.patch new file mode 100644 index 0000000000000..3a3be72211851 --- /dev/null +++ b/net-libs/c-client/files/c-client-2007f_GENTOO_amd64-so-fix.patch @@ -0,0 +1,12 @@ +--- a/src/osdep/unix/Makefile ++++ b/src/osdep/unix/Makefile +@@ -990,6 +990,9 @@ onceenv: + -DLOCKPGM3=\"$(LOCKPGM3)\" > OSCFLAGS + echo $(BASELDFLAGS) $(EXTRALDFLAGS) > LDFLAGS + echo "$(ARRC) $(ARCHIVE) $(BINARIES) $(LIBRARIES);$(RANLIB) $(ARCHIVE)" > ARCHIVE ++ echo "`$(CAT) CCTYPE` `$(CAT) CFLAGS` `$(CAT) OSFLAGS` -shared \ ++ -Wl,-soname,libc-client.so.1 -o libc-client.so.1.0.0 $(BINARIES)" \ ++ >> ARCHIVE + echo $(ARCHIVE) > ARCHIVENAME + echo $(OS) > OSTYPE + ./drivers $(EXTRADRIVERS) $(DEFAULTDRIVERS) dummy diff --git a/net-libs/c-client/files/c-client-2007f_p7-implicit-declaration-fix.patch b/net-libs/c-client/files/c-client-2007f_p7-implicit-declaration-fix.patch new file mode 100644 index 0000000000000..413ddbf43869d --- /dev/null +++ b/net-libs/c-client/files/c-client-2007f_p7-implicit-declaration-fix.patch @@ -0,0 +1,46 @@ +This patch solves build issues with -Werror=implicit-function-declaration +enabled. + +- safe_flock is a function from flocklnx.c but header file for consumers + is missing, the simplest was to add function prototype to other + header file. +- utime.h is needed also in multiple places but os_slx.h header file is + used in all of them + +Bug: https://bugs.gentoo.org/870478 +--- a/src/osdep/unix/os_lnx.h ++++ b/src/osdep/unix/os_lnx.h +@@ -46,6 +46,7 @@ + #include + #include + #include /* for struct tm */ ++#include + #include + #include + #include +@@ -57,6 +58,7 @@ + + #define direct dirent + ++int safe_flock(int, int); + #define flock safe_flock + + +--- a/src/osdep/unix/os_slx.h ++++ b/src/osdep/unix/os_slx.h +@@ -46,6 +46,7 @@ + #include + #include + #include /* for struct tm */ ++#include + #include + #include + #include +@@ -57,6 +58,7 @@ + + #define direct dirent + ++int safe_flock(int, int); + #define flock safe_flock + + diff --git a/net-libs/c-client/files/c-client-2007f_p7-ldflags.patch b/net-libs/c-client/files/c-client-2007f_p7-ldflags.patch new file mode 100644 index 0000000000000..8a273355c2f96 --- /dev/null +++ b/net-libs/c-client/files/c-client-2007f_p7-ldflags.patch @@ -0,0 +1,33 @@ +--- a/src/osdep/unix/Makefile ++++ b/src/osdep/unix/Makefile +@@ -975,23 +975,24 @@ os_sol.h: + + # Once-only environment setup + +-once: onceenv ckp$(PASSWDTYPE) ssl$(SSLTYPE) osdep.c ++once: ssl$(SSLTYPE) onceenv ckp$(PASSWDTYPE) osdep.c + + onceenv: + @echo Once-only environment setup... + echo $(CC) > CCTYPE +- echo $(BASECFLAGS) '$(EXTRACFLAGS)' -DCHUNKSIZE=$(CHUNKSIZE) > CFLAGS +- echo -DCREATEPROTO=$(CREATEPROTO) -DEMPTYPROTO=$(EMPTYPROTO) \ ++ echo `$(CAT) CFLAGS` $(BASECFLAGS) '$(EXTRACFLAGS)' -DCHUNKSIZE=$(CHUNKSIZE) > CFLAGS ++ echo `$(CAT) OSCFLAGS` -DCREATEPROTO=$(CREATEPROTO) -DEMPTYPROTO=$(EMPTYPROTO) \ + -DMD5ENABLE=\"$(MD5PWD)\" -DMAILSPOOL=\"$(MAILSPOOL)\" \ + -DANONYMOUSHOME=\"$(MAILSPOOL)/anonymous\" \ + -DACTIVEFILE=\"$(ACTIVEFILE)\" -DNEWSSPOOL=\"$(NEWSSPOOL)\" \ + -DLOCKPGM=\"$(LOCKPGM)\" \ + -DLOCKPGM1=\"$(LOCKPGM1)\" -DLOCKPGM2=\"$(LOCKPGM2)\" \ + -DLOCKPGM3=\"$(LOCKPGM3)\" > OSCFLAGS +- echo $(BASELDFLAGS) $(EXTRALDFLAGS) > LDFLAGS ++ echo $(EXTRALIBS) `$(CAT) LDFLAGS` > LIBS ++ echo $(EXTRALDFLAGS) `$(CAT) LDFLAGS` -lcrypt $(BASELDFLAGS) > LDFLAGS + echo "$(ARRC) $(ARCHIVE) $(BINARIES) $(LIBRARIES);$(RANLIB) $(ARCHIVE)" > ARCHIVE +- echo "`$(CAT) CCTYPE` `$(CAT) CFLAGS` `$(CAT) OSFLAGS` -shared \ +- -Wl,-soname,libc-client.so.1 -o libc-client.so.1.0.0 $(BINARIES)" \ ++ echo "`$(CAT) CCTYPE` `$(CAT) CFLAGS` $(EXTRALDFLAGS) `$(CAT) OSFLAGS` -shared \ ++ -Wl,-soname,libc-client.so.1 -o libc-client.so.1.0.0 $(BINARIES)" `$(CAT) LIBS` $(BASELDFLAGS) \ + >> ARCHIVE + echo $(ARCHIVE) > ARCHIVENAME + echo $(OS) > OSTYPE