Re-enable --as-needed; workaround Perl breakage.

- Re-enable --as-needed, now that PCRE has been patched.
- Add workaround for improper linking of some Perl modules.
This commit is contained in:
Jason Tibbitts 2019-01-23 13:25:02 -06:00
parent e198817bac
commit b2c08d2974
2 changed files with 37 additions and 6 deletions

View File

@ -1,10 +1,5 @@
%define scmt(l:) %(c=%1; echo ${c:0:%{-l:%{-l*}}%{!-l:7}})
# Disable passing --as-needed to the linker; it breaks cyrus terribly for
# reasons I don't understand.
# https://github.com/cyrusimap/cyrus-imapd/issues/2629
%undefine _ld_as_needed
# Cassandane commit hash. Cassandane doesn't have releases often, but it
# receives constant development. This was fetched on 20180518.
%global cocas c8040fd9e3a3c9ec96a7b58ff8a0601756108d46
@ -14,7 +9,7 @@
Name: cyrus-imapd
Version: 3.0.8
Release: 5%{?dist}
Release: 6%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@ -52,6 +47,12 @@ Patch3: patch-vzic-proper-cflags
# https://github.com/cyrusimap/cyrus-imapd/issues/2621
Patch4: patch-clamav101
# Ugly workaround for some compiled Perl modules not being linked against
# libpcreposix, which causes them to fail to load.
# https://bugzilla.redhat.com/show_bug.cgi?id=1668723
# https://github.com/cyrusimap/cyrus-imapd/issues/2629#issuecomment-456925909
Patch5: patch-cyrus-perl-linking
Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config
Source12: cyrus-imapd.sysconfig
@ -689,6 +690,10 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /v
%changelog
* Wed Jan 23 2019 Jason L Tibbitts III <tibbs@math.uh.edu> - 3.0.8-6
- Re-enable --as-needed, now that PCRE has been patched.
- Add workaround for improper linking of some Perl modules.
* Tue Jan 15 2019 Jason L Tibbitts III <tibbs@math.uh.edu> - 3.0.8-5
- Disable passing --as-needed to to the linker. This breaks cyrus horribly.
- Re-enable Cassandane run.

26
patch-cyrus-perl-linking Normal file
View File

@ -0,0 +1,26 @@
diff --git a/perl/imap/Makefile.PL.in b/perl/imap/Makefile.PL.in
index a0fda4a..5fb0f1f 100644
--- a/perl/imap/Makefile.PL.in
+++ b/perl/imap/Makefile.PL.in
@@ -89,7 +89,7 @@ WriteMakefile(
},
'clean' => {'FILES' => 'libcyrperl.a cyradm'},
'OBJECT' => 'IMAP.o',
- 'MYEXTLIB' => '@top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a',
+ 'MYEXTLIB' => '@top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a -lpcreposix',
'LIBS' => [ "$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @ZLIB@"],
'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING'
'INC' => "-I@top_srcdir@ -I@top_srcdir@/com_err/et @SASLFLAGS@ @SSL_CPPFLAGS@ -I@top_srcdir@/perl/imap",
diff --git a/perl/sieve/managesieve/Makefile.PL.in b/perl/sieve/managesieve/Makefile.PL.in
index 2a3415a..f2a2592 100644
--- a/perl/sieve/managesieve/Makefile.PL.in
+++ b/perl/sieve/managesieve/Makefile.PL.in
@@ -68,7 +68,7 @@ WriteMakefile(
'NAME' => 'Cyrus::SIEVE::managesieve',
'ABSTRACT' => 'Cyrus Sieve management interface',
'VERSION_FROM' => "@top_srcdir@/perl/sieve/managesieve/managesieve.pm", # finds $VERSION
- 'MYEXTLIB' => '../lib/.libs/libisieve.a @top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a',
+ 'MYEXTLIB' => '../lib/.libs/libisieve.a @top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a -lpcreposix',
'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @ZLIB@ @SQLITE_LIBADD@ @MYSQL_LIBADD@ @PGSQL_LIBADD@"],
'CCFLAGS' => '@GCOV_CFLAGS@',
'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING'