Bug 1733356 - cannot rebuild qt-4.8.7-49.fc30.src.rpm in RHEL 8 server
Summary: cannot rebuild qt-4.8.7-49.fc30.src.rpm in RHEL 8 server
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: qt5
Version: 8.0
Hardware: x86_64
OS: Linux
unspecified
low
Target Milestone: rc
: 8.0
Assignee: Jan Grulich
QA Contact: Desktop QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-07-25 19:37 UTC by Sharuzzaman Ahmat Raslan
Modified: 2019-11-01 10:54 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-09-24 09:03:56 UTC
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)
Patch for qt4 to compile on el8 (2.51 KB, patch)
2019-11-01 10:54 UTC, Kozinov Ivan
no flags Details | Diff

Description Sharuzzaman Ahmat Raslan 2019-07-25 19:37:37 UTC
Description of problem:
I want to install qt-4.8.7 on RHEL 8 server but it is not available. I have used yum to find qt4 package, but it looks like RHEL 8 only have qt5

So I went to prepare an RHEL 8 server in AWS and setting up the rpmbuild environment.

Initially run rpmbuild --rebuild qt-4.8.7-49.fc30.src.rpm to find out the build dependency, I have managed to install all of them (most of it by rebuilding the dependency from FC30 source.

Then I repeat the command rpmbuild --rebuild qt-4.8.7-49.fc30.src.rpm again, but this time, the following error message appeared, and the build fail:

make[1]: Entering directory '/home/ec2-user/rpmbuild/BUILD/qt-everywhere-opensource-src-4.8.7/src/network'
g++ -c -std=gnu++98 -Wno-deprecated -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_NETWORK_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include -I../../include/QtNetwork -I.rcc/release-shared -Ikernel -I.moc/release-shared -o .obj/release-shared/qsslsocket_openssl_symbols.o ssl/qsslsocket_openssl_symbols.cpp
In file included from ssl/qsslsocket_openssl_symbols.cpp:47:
ssl/qsslsocket_openssl_symbols.cpp: In function 'unsigned char* q_ASN1_STRING_data(ASN1_STRING*)':
ssl/qsslsocket_openssl_symbols_p.h:169:39: warning: 'unsigned char* ASN1_STRING_data(ASN1_STRING*)' is deprecated [-Wdeprecated-declarations]
     ret q_##func(arg) { funcret func(a); }
                                       ^
ssl/qsslsocket_openssl_symbols.cpp:109:1: note: in expansion of macro 'DEFINEFUNC'
 DEFINEFUNC(unsigned char *, ASN1_STRING_data, ASN1_STRING *a, a, return 0, return)
 ^~~~~~~~~~
In file included from /usr/include/openssl/opensslconf.h:42,
                 from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/asn1.h:14,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslsocket_openssl_symbols.cpp:47:
/usr/include/openssl/asn1.h:554:1: note: declared here
 DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
 ^~~~~~~~~~~~~~~~~~
In file included from ssl/qsslsocket_openssl_symbols.cpp:47:
ssl/qsslsocket_openssl_symbols_p.h:169:39: warning: 'unsigned char* ASN1_STRING_data(ASN1_STRING*)' is deprecated [-Wdeprecated-declarations]
     ret q_##func(arg) { funcret func(a); }
                                       ^
ssl/qsslsocket_openssl_symbols.cpp:109:1: note: in expansion of macro 'DEFINEFUNC'
 DEFINEFUNC(unsigned char *, ASN1_STRING_data, ASN1_STRING *a, a, return 0, return)
 ^~~~~~~~~~
In file included from /usr/include/openssl/opensslconf.h:42,
                 from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/asn1.h:14,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslsocket_openssl_symbols.cpp:47:
/usr/include/openssl/asn1.h:554:1: note: declared here
 DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
 ^~~~~~~~~~~~~~~~~~
In file included from ssl/qsslsocket_openssl_symbols.cpp:47:
ssl/qsslsocket_openssl_symbols.cpp: In function 'const SSL_METHOD* q_SSLv3_client_method()':
ssl/qsslsocket_openssl_symbols.cpp:256:32: error: 'SSLv3_client_method' was not declared in this scope
 DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
                                ^~~~~~~~~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:169:33: note: in definition of macro 'DEFINEFUNC'
     ret q_##func(arg) { funcret func(a); }
                                 ^~~~
ssl/qsslsocket_openssl_symbols.cpp:256:32: note: suggested alternative: 'SSLv23_client_method'
 DEFINEFUNC(const SSL_METHOD *, SSLv3_client_method, DUMMYARG, DUMMYARG, return 0, return)
                                ^~~~~~~~~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:169:33: note: in definition of macro 'DEFINEFUNC'
     ret q_##func(arg) { funcret func(a); }
                                 ^~~~
ssl/qsslsocket_openssl_symbols.cpp: In function 'const SSL_METHOD* q_TLSv1_client_method()':
ssl/qsslsocket_openssl_symbols_p.h:169:39: warning: 'const SSL_METHOD* TLSv1_client_method()' is deprecated [-Wdeprecated-declarations]
     ret q_##func(arg) { funcret func(a); }
                                       ^
ssl/qsslsocket_openssl_symbols.cpp:262:1: note: in expansion of macro 'DEFINEFUNC'
 DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return)
 ^~~~~~~~~~
In file included from /usr/include/openssl/opensslconf.h:42,
                 from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/asn1.h:14,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslsocket_openssl_symbols.cpp:47:
/usr/include/openssl/ssl.h:1854:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void))
 ^~~~~~~~~~~~~~~~~~
In file included from ssl/qsslsocket_openssl_symbols.cpp:47:
ssl/qsslsocket_openssl_symbols_p.h:169:39: warning: 'const SSL_METHOD* TLSv1_client_method()' is deprecated [-Wdeprecated-declarations]
     ret q_##func(arg) { funcret func(a); }
                                       ^
ssl/qsslsocket_openssl_symbols.cpp:262:1: note: in expansion of macro 'DEFINEFUNC'
 DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return 0, return)
 ^~~~~~~~~~
In file included from /usr/include/openssl/opensslconf.h:42,
                 from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/asn1.h:14,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslsocket_openssl_symbols.cpp:47:
/usr/include/openssl/ssl.h:1854:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void))
 ^~~~~~~~~~~~~~~~~~
In file included from ssl/qsslsocket_openssl_symbols.cpp:47:
ssl/qsslsocket_openssl_symbols.cpp: In function 'const SSL_METHOD* q_SSLv3_server_method()':
ssl/qsslsocket_openssl_symbols.cpp:266:32: error: 'SSLv3_server_method' was not declared in this scope
 DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return)
                                ^~~~~~~~~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:169:33: note: in definition of macro 'DEFINEFUNC'
     ret q_##func(arg) { funcret func(a); }
                                 ^~~~
ssl/qsslsocket_openssl_symbols.cpp:266:32: note: suggested alternative: 'SSLv23_server_method'
 DEFINEFUNC(const SSL_METHOD *, SSLv3_server_method, DUMMYARG, DUMMYARG, return 0, return)
                                ^~~~~~~~~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:169:33: note: in definition of macro 'DEFINEFUNC'
     ret q_##func(arg) { funcret func(a); }
                                 ^~~~
ssl/qsslsocket_openssl_symbols.cpp: In function 'const SSL_METHOD* q_TLSv1_server_method()':
ssl/qsslsocket_openssl_symbols_p.h:169:39: warning: 'const SSL_METHOD* TLSv1_server_method()' is deprecated [-Wdeprecated-declarations]
     ret q_##func(arg) { funcret func(a); }
                                       ^
ssl/qsslsocket_openssl_symbols.cpp:272:1: note: in expansion of macro 'DEFINEFUNC'
 DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return)
 ^~~~~~~~~~
In file included from /usr/include/openssl/opensslconf.h:42,
                 from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/asn1.h:14,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslsocket_openssl_symbols.cpp:47:
/usr/include/openssl/ssl.h:1853:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void))
 ^~~~~~~~~~~~~~~~~~
In file included from ssl/qsslsocket_openssl_symbols.cpp:47:
ssl/qsslsocket_openssl_symbols_p.h:169:39: warning: 'const SSL_METHOD* TLSv1_server_method()' is deprecated [-Wdeprecated-declarations]
     ret q_##func(arg) { funcret func(a); }
                                       ^
ssl/qsslsocket_openssl_symbols.cpp:272:1: note: in expansion of macro 'DEFINEFUNC'
 DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return 0, return)
 ^~~~~~~~~~
In file included from /usr/include/openssl/opensslconf.h:42,
                 from /usr/include/openssl/e_os2.h:13,
                 from /usr/include/openssl/asn1.h:14,
                 from ssl/qsslsocket_openssl_p.h:66,
                 from ssl/qsslsocket_openssl_symbols_p.h:57,
                 from ssl/qsslsocket_openssl_symbols.cpp:47:
/usr/include/openssl/ssl.h:1853:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void))
 ^~~~~~~~~~~~~~~~~~
make[1]: *** [Makefile:18286: .obj/release-shared/qsslsocket_openssl_symbols.o] Error 1
make[1]: Leaving directory '/home/ec2-user/rpmbuild/BUILD/qt-everywhere-opensource-src-4.8.7/src/network'
make[1]: *** Waiting for unfinished jobs....
make[1]: Entering directory '/home/ec2-user/rpmbuild/BUILD/qt-everywhere-opensource-src-4.8.7/src/network'
g++ -c -std=gnu++98 -Wno-deprecated -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_NETWORK_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include -I../../include/QtNetwork -I.rcc/release-shared -Ikernel -I.moc/release-shared -o .obj/release-shared/qsslsocket_openssl.o ssl/qsslsocket_openssl.cpp
make[1]: Leaving directory '/home/ec2-user/rpmbuild/BUILD/qt-everywhere-opensource-src-4.8.7/src/network'
make: *** [Makefile:281: sub-network-make_default-ordered] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.174Kui (%build)


RPM build errors:
    qt-4.8.7-49.fc30.src.rpm: Header V3 RSA/SHA256 Signature, key ID cfc659b9: NOKEY
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    user mockbuild does not exist - using root
    group mock does not exist - using root
    Macro expanded in comment on line 269: %{?fedora} > 29

    Macro expanded in comment on line 280: %{_datadir}/qt4

    Macro expanded in comment on line 419: %{name}-x11 < 1:4.7.1-10

    Macro expanded in comment on line 573: %{?_isa} if plasma-workspace)

    Bad exit status from /var/tmp/rpm-tmp.174Kui (%build)


-----
Checking the spec file, I noticed there is already patch to build against OpenSSL 1.1.0, but not sure if it is applicable to OpenSSL 1.1.1 or the build in  FC 30 is not using "-Wno-deprecated"

It looks like FC30 is also using OpenSSL 1.1.1



Version-Release number of selected component (if applicable):
qt-4.8.7-49.fc30.src.rpm

How reproducible:
Always


Steps to Reproduce:
1. Preprare RHEL 8 server with all the repositories
2. Run rpmbuild --rebuild qt-4.8.7-49.fc30.src.rpm to find build package dependency
3. Install/rebuild build package dependency from RHEL 8 or from FC30 source
4. Attempt rpmbuild --rebuild qt-4.8.7-49.fc30.src.rpm again, and it failed due to deprecated OpenSSL function in the source code

Actual results:
rpm package rebuild fail


Expected results:
rpm package rebuild successful like other FC30 source rpm

Additional info:
# rpm -qa |grep -i openssl
apr-util-openssl-1.6.1-6.el8.x86_64
openssl-pkcs11-0.4.8-2.el8.x86_64
openssl-1.1.1-8.el8.x86_64
openssl-libs-1.1.1-8.el8.x86_64
openssl-devel-1.1.1-8.el8.x86_64
python3-pyOpenSSL-18.0.0-1.el8.noarch
rubygem-openssl-2.1.2-103.module+el8+2671+ebcc7ee0.x86_64

# rpm -qa |grep -i rpm
rpm-build-libs-4.14.2-9.el8.x86_64
python2-rpm-macros-3-38.module+el8.0.0+2961+596d0223.noarch
openblas-srpm-macros-2-2.el8.noarch
go-srpm-macros-2-16.el8.noarch
efi-srpm-macros-3-2.el8.noarch
rpm-libs-4.14.2-9.el8.x86_64
rpm-plugin-selinux-4.14.2-9.el8.x86_64
rpm-plugin-systemd-inhibit-4.14.2-9.el8.x86_64
drpm-0.3.0-14.el8.x86_64
ghc-srpm-macros-1.4.2-7.el8.noarch
qt5-srpm-macros-5.11.1-2.el8.noarch
python-rpm-macros-3-37.el8.noarch
qt5-rpm-macros-5.11.1-2.el8.noarch
perl-srpm-macros-1-25.el8.noarch
ocaml-srpm-macros-5-4.el8.noarch
python-srpm-macros-3-37.el8.noarch
cmake-rpm-macros-3.11.4-3.el8.noarch
rpm-4.14.2-9.el8.x86_64
python-qt5-rpm-macros-5.11.2-3.el8.noarch
rust-srpm-macros-5-2.el8.noarch
python3-rpm-4.14.2-9.el8.x86_64
python3-rpm-generators-5-4.el8.noarch
python3-rpm-macros-3-37.el8.noarch
redhat-rpm-config-116-1.el8.noarch
rpm-build-4.14.2-9.el8.x86_64

Comment 1 Daniel Mach 2019-07-26 06:26:58 UTC
Reassigning to qt5 as it's more a packaging issue than an issue with rpm-build or rpm macros.

Comment 2 Jan Grulich 2019-09-24 09:03:56 UTC
Qt4 is not supported on RHEL 8.

I would recommend to look into Fedora version, which will most likely have patches for newer openssl.

Comment 3 Kozinov Ivan 2019-11-01 10:54:14 UTC
Created attachment 1631435 [details]
Patch for qt4 to compile on el8

For whose who wants to build qt4 for el8, looks like openssl is built without SSL3, so we should rely on OPENSSL_NO_SSL3 definition. Simple patch for src.rpm from Fedora is attached, add it to qt.spec after all other patches.


Note You need to log in before you can comment on or make changes to this bug.