Bug 2274733 - Mapserver RPMSPEC has Bad Requires and BuildRequires
Summary: Mapserver RPMSPEC has Bad Requires and BuildRequires
Keywords:
Status: NEW
Alias: None
Product: Fedora EPEL
Classification: Fedora
Component: mapserver
Version: epel9
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Pavel Lisý
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-04-12 14:36 UTC by andrew-beck
Modified: 2025-03-23 17:51 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-03-23 12:51:13 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description andrew-beck 2024-04-12 14:36:19 UTC
Description of problem:
The RMSPEC for mapserver (https://src.fedoraproject.org/rpms/mapserver/blob/epel9/f/mapserver.spec) has an install requirement on the "httpd" package that it does not need.
It also has a matching build requirement requirement of "httpd-devel" it does not need.

This cause it to fail to install if the machine is using "Easy Apache" package.

The mapserv binary in this package is a standalone cgi binary it does not need "httpd" to run or "httpd-devel" to build as configured in the package.

The package as built by the RPMSPEC taken from the build log (https://kojipkgs.fedoraproject.org//packages/mapserver/8.0.0/3.el9/data/logs/x86_64/build.log) of hpackage build https://koji.fedoraproject.org/koji/buildinfo?buildID=2082450

show that mapserver was build with the option
"Apache Module (Experimental): disabled"

This is an experimental non default build option and is the only part of Mapserver that require the Apache "httpd" package (https://github.com/MapServer/MapServer/blob/branch-8-0/apache/CMakeLists.txt)

Thus as the RPMSPEC does not build mapserver with any option that requires "httpd" they should be removed from the RPMSPEC

Version-Release number of selected component (if applicable):


How reproducible:

Setup an Enterprise Redhat based machine like AlmaLinux 9
Install Easy Apache 4 (and cPanel)
Make sure the necessary EPEL repos are enabled 
dnf install mapserver


Actual results:
Error:
 Problem: problem with installed package ea-apache24-2.4.59-1.1.1.cpanel.x86_64
  - package ea-apache24-2.4.59-1.1.1.cpanel.x86_64 from @System conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-1.1.5.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-1.1.6.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-3.3.5.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.58-3.3.6.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package ea-apache24-2.4.59-1.1.1.cpanel.x86_64 from EA4-c9 conflicts with httpd-mmn provided by httpd-core-2.4.57-5.el9.x86_64 from appstream
  - package httpd-2.4.57-5.el9.x86_64 from appstream requires httpd-core = 2.4.57-5.el9, but none of the providers can be installed
  - package mapserver-8.0.0-3.el9.x86_64 from epel requires httpd, but none of the providers can be installed
  - conflicting requests
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)


Expected results:
The package to install

Additional info:
Removing the lines from the RPMSPEC:-

Requires:       httpd
BuildRequires:  httpd-devel

Results in successful build and package.
The package then installs on a system without the "httpd" package
Running the "mapserv" binary produced the normal html output.

Comment 1 Sandro Mani 2025-03-23 12:51:13 UTC
This is not a mapserver package bug, but the result of httpd not being installable due to other conflicts.

Comment 2 andrew-beck 2025-03-23 17:00:15 UTC
This is most definitely a Bug is the mapserver package.

Mapserver default build has no dependencies on httpd, therefore why does it need httpd to be installed to install the mapserver package?

The reason why I was installing mapserver without a httpd package has no relevance other than it highlighted the redundant dependency on httpd.

Comment 3 andrew-beck 2025-03-23 17:51:39 UTC
If you ldd the binary

ldd mapserv 
        linux-vdso.so.1 (0x00007ffcc94ee000)
        libmapserver.so.2 => /lib64/libmapserver.so.2 (0x00007fe84989e000)
        libfcgi.so.0 => /lib64/libfcgi.so.0 (0x00007fe849890000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fe849687000)
        libpng16.so.16 => /lib64/libpng16.so.16 (0x00007fe849650000)
        libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007fe8495cf000)
        libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007fe84950b000)
        libproj.so.22 => /lib64/libproj.so.22 (0x00007fe849163000)
        libprotobuf-c.so.1 => /lib64/libprotobuf-c.so.1 (0x00007fe849158000)
        libfribidi.so.0 => /lib64/libfribidi.so.0 (0x00007fe84913a000)
        libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007fe84906b000)
        libcairo.so.2 => /lib64/libcairo.so.2 (0x00007fe848f51000)
        libmariadb.so.3 => /lib64/libmariadb.so.3 (0x00007fe848efb000)
        libgeos_c.so.1 => /lib64/libgeos_c.so.1 (0x00007fe848eb6000)
        libpq.so.5 => /lib64/libpq.so.5 (0x00007fe848e63000)
        libgdal.so.30 => /lib64/libgdal.so.30 (0x00007fe84756e000)
        libcurl.so.4 => /lib64/libcurl.so.4 (0x00007fe8474f0000)
        libxml2.so.2 => /lib64/libxml2.so.2 (0x00007fe847367000)
        libxslt.so.1 => /lib64/libxslt.so.1 (0x00007fe847322000)
        libexslt.so.0 => /lib64/libexslt.so.0 (0x00007fe847309000)
        libgif.so.7 => /lib64/libgif.so.7 (0x00007fe8472fd000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fe8470d6000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fe846ffb000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe846fe0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe849c6c000)
        libz.so.1 => /lib64/libz.so.1 (0x00007fe846fc6000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fe846fb1000)
        libbrotlidec.so.1 => /lib64/libbrotlidec.so.1 (0x00007fe846fa3000)
        libsqlite3.so.0 => /lib64/libsqlite3.so.0 (0x00007fe846e6b000)
        libtiff.so.5 => /lib64/libtiff.so.5 (0x00007fe846de2000)
        libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007fe846ca7000)
        libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007fe846c86000)
        libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x00007fe846bd8000)
        libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007fe846b89000)
        libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007fe846b84000)
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fe846b59000)
        libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007fe846b49000)
        libXrender.so.1 => /lib64/libXrender.so.1 (0x00007fe846b3c000)
        libX11.so.6 => /lib64/libX11.so.6 (0x00007fe8469f2000)
        libXext.so.6 => /lib64/libXext.so.6 (0x00007fe8469dd000)
        libssl.so.3 => /lib64/libssl.so.3 (0x00007fe846937000)
        libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007fe846505000)
        libgeos.so.3.10.1 => /lib64/libgeos.so.3.10.1 (0x00007fe8462b6000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fe84625f000)
        libldap.so.2 => /lib64/libldap.so.2 (0x00007fe8461f6000)
        libarmadillo.so.12 => /lib64/libarmadillo.so.12 (0x00007fe8461e2000)
        libpoppler.so.106 => /lib64/libpoppler.so.106 (0x00007fe845e59000)
        libjson-c.so.5 => /lib64/libjson-c.so.5 (0x00007fe845e46000)
        libfreexl.so.1 => /lib64/libfreexl.so.1 (0x00007fe845e3a000)
        libwebp.so.7 => /lib64/libwebp.so.7 (0x00007fe845dcd000)
        libodbc.so.2 => /lib64/libodbc.so.2 (0x00007fe845d59000)
        libodbcinst.so.2 => /lib64/libodbcinst.so.2 (0x00007fe845d44000)
        libkmlbase.so.1 => /lib64/libkmlbase.so.1 (0x00007fe845d21000)
        libkmldom.so.1 => /lib64/libkmldom.so.1 (0x00007fe845c84000)
        libkmlengine.so.1 => /lib64/libkmlengine.so.1 (0x00007fe845c51000)
        libkmlxsd.so.1 => /lib64/libkmlxsd.so.1 (0x00007fe845c3e000)
        libkmlregionator.so.1 => /lib64/libkmlregionator.so.1 (0x00007fe845c2f000)
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fe845bfe000)
        libxerces-c-3.2.so => /lib64/libxerces-c-3.2.so (0x00007fe845878000)
        libopenjp2.so.7 => /lib64/libopenjp2.so.7 (0x00007fe84581e000)
        libjasper.so.4 => /lib64/libjasper.so.4 (0x00007fe8457cc000)
        libnetcdf.so.19 => /lib64/libnetcdf.so.19 (0x00007fe84564c000)
        libhdf5.so.200 => /lib64/libhdf5.so.200 (0x00007fe845251000)
        libmfhdf.so.0 => /lib64/libmfhdf.so.0 (0x00007fe845226000)
        libdf.so.0 => /lib64/libdf.so.0 (0x00007fe84517c000)
        libogdi.so.4 => /lib64/libogdi.so.4 (0x00007fe84515d000)
        libgeotiff.so.5 => /lib64/libgeotiff.so.5 (0x00007fe845127000)
        libgta.so.1 => /lib64/libgta.so.1 (0x00007fe84511b000)
        libcfitsio.so.9 => /lib64/libcfitsio.so.9 (0x00007fe844e01000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fe844dd5000)
        libspatialite.so.7 => /lib64/libspatialite.so.7 (0x00007fe8445e5000)
        libdapclient.so.6 => /lib64/libdapclient.so.6 (0x00007fe8445a3000)
        libdapserver.so.7 => /lib64/libdapserver.so.7 (0x00007fe844591000)
        libdap.so.27 => /lib64/libdap.so.27 (0x00007fe8443ef000)
        libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fe844351000)
        libnghttp2.so.14 => /lib64/libnghttp2.so.14 (0x00007fe844327000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fe84424c000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fe844233000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fe84422c000)
        libbrotlicommon.so.1 => /lib64/libbrotlicommon.so.1 (0x00007fe844207000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fe844130000)
        libjbig.so.2.1 => /lib64/libjbig.so.2.1 (0x00007fe844122000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fe8440aa000)
        libXau.so.6 => /lib64/libXau.so.6 (0x00007fe8440a4000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fe844091000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fe84408a000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe844076000)
        liblber.so.2 => /lib64/liblber.so.2 (0x00007fe844064000)
        libevent-2.1.so.7 => /lib64/libevent-2.1.so.7 (0x00007fe84400b000)
        libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fe843feb000)
        libopenblaso.so.0 => /lib64/libopenblaso.so.0 (0x00007fe8416a5000)
        liblapack.so.3 => /lib64/liblapack.so.3 (0x00007fe840f82000)
        libarpack.so.2 => /lib64/libarpack.so.2 (0x00007fe840f36000)
        libsuperlu.so.6 => /lib64/libsuperlu.so.6 (0x00007fe840ec0000)
        liblcms2.so.2 => /lib64/liblcms2.so.2 (0x00007fe840e5c000)
        libsmime3.so => /lib64/libsmime3.so (0x00007fe840e2f000)
        libnss3.so => /lib64/libnss3.so (0x00007fe840cf4000)
        libplc4.so => /lib64/libplc4.so (0x00007fe840ced000)
        libnspr4.so => /lib64/libnspr4.so (0x00007fe840caa000)
        libltdl.so.7 => /lib64/libltdl.so.7 (0x00007fe840c9f000)
        liburiparser.so.1 => /lib64/liburiparser.so.1 (0x00007fe840c86000)
        libkmlconvenience.so.1 => /lib64/libkmlconvenience.so.1 (0x00007fe840c63000)
        libhdf5_hl.so.200 => /lib64/libhdf5_hl.so.200 (0x00007fe840c3f000)
        libtirpc.so.3 => /lib64/libtirpc.so.3 (0x00007fe840c0f000)
        libsz.so.2 => /lib64/libsz.so.2 (0x00007fe840c05000)
        libminizip.so.3.0 => /lib64/libminizip.so.3.0 (0x00007fe840bdd000)
        librttopo.so.1 => /lib64/librttopo.so.1 (0x00007fe840b60000)
        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fe840b56000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fe840b29000)
        libcrypt.so.2 => /lib64/libcrypt.so.2 (0x00007fe840aef000)
        libgfortran.so.5 => /lib64/libgfortran.so.5 (0x00007fe840833000)
        libgomp.so.1 => /lib64/libgomp.so.1 (0x00007fe8407ea000)
        libblas.so.3 => /lib64/libblas.so.3 (0x00007fe84075b000)
        libflexiblas.so.3 => /lib64/libflexiblas.so.3 (0x00007fe8403a9000)
        libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007fe84035f000)
        libmetis.so.0 => /lib64/libmetis.so.0 (0x00007fe8402f5000)
        libnssutil3.so => /lib64/libnssutil3.so (0x00007fe8402bf000)
        libplds4.so => /lib64/libplds4.so (0x00007fe8402b8000)
        libpcre2-posix.so.3 => /lib64/libpcre2-posix.so.3 (0x00007fe8402b3000)

The httpd package does not provide any of these libraries.

The mapserv binary has a commandline interface, e.g.
sh-5.1# ./mapserv -h
Usage: mapserv [--help] [-v] [-nh] [QUERY_STRING=value] [PATH_INFO=value]
                [-conf filename]

Options :
  -h, --help              Display this help message.
  -v                      Display version and exit.
  -nh                     Suppress HTTP headers in CGI mode.
  -conf filename          Filename of the MapServer configuration file.
  QUERY_STRING=value      Set the QUERY_STRING in GET request mode.
  PATH_INFO=value         Set the PATH_INFO for an API request.

Yes it is common to have an Http server execute the standalone mapserv binary inside it's cgi environment, just it not a requirement to actually do this.


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