On 5/12/24 21:59, Peter Kjellerstedt wrote:
-----Original Message-----
From:kai.k...@windriver.com  <kai.k...@windriver.com>
Sent: den 8 maj 2024 09:07
To: Peter Kjellerstedt<peter.kjellerst...@axis.com>
Cc:openembedded-devel@lists.openembedded.org
Subject: [PATCH v3 1/1] apache2: fix multilib file conflicts

From: Kai Kang<kai.k...@windriver.com>

There are file conflicts of apache2 when multilib enabled:

Error: Transaction test error:
   file /usr/share/apache2/build/config.nice conflicts between attempted
     installs of apache2-dev-2.4.58-r0.cortexa57 and 
lib32-apache2-dev-2.4.58-r0.armv7vet2hf_vfp
   file /usr/share/apache2/build/config_vars.mk conflicts between
     attempted installs of apache2-dev-2.4.58-r0.cortexa57 and 
lib32-apache2-dev-2.4.58-r0.armv7vet2hf_vfp

Install the 'build' directory to ${libexecdir} by setting
'installbuilddir' to fix the conflicts. ${libexecdir} is not populated
to sysroot by default, but command apxs requires these files, then add
the dir to SYSROOT_DIRS to populate them.

And inherit bbclasses multilib_script and multilib_header to fix follow
up conflicts:

   file /usr/bin/apxs conflicts between attempted installs of
     apache2-dev-2.4.58-r0.cortexa57 and 
lib32-apache2-dev-2.4.58-r0.armv7vet2hf_vfp
   file /usr/include/apache2/ap_config_layout.h conflicts between
     attempted installs of apache2-dev-2.4.58-r0.cortexa57 and 
lib32-apache2-dev-2.4.58-r0.armv7vet2hf_vfp

Since multilib_script inherits update-alternatives, remove it from
inherit line for beautification.

Fix buildpaths warning as well:

   WARNING: lib32-apache2-2.4.58-r0 do_package_qa: QA Issue: File 
/usr/share/apache2/build/config.nice
            in package lib32-apache2-dev contains reference to TMPDIR 
[buildpaths]

Signed-off-by: Kai Kang<kai.k...@windriver.com>
---
  .../recipes-httpd/apache2/apache2_2.4.59.bb   | 37 ++++++++++++-------
  1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/meta-webserver/recipes-httpd/apache2/apache2_2.4.59.bb 
b/meta-webserver/recipes-httpd/apache2/apache2_2.4.59.bb
index b96e8b4e1..59db22310 100644
--- a/meta-webserver/recipes-httpd/apache2/apache2_2.4.59.bb
+++ b/meta-webserver/recipes-httpd/apache2/apache2_2.4.59.bb
@@ -31,7 +31,7 @@ SRC_URI[sha256sum] = 
"ec51501ec480284ff52f637258135d333230a7d229c3afa6f6c2f9040e

  S = "${WORKDIR}/httpd-${PV}"

-inherit autotools update-rc.d pkgconfig systemd update-alternatives
+inherit autotools update-rc.d pkgconfig systemd multilib_script multilib_header

  DEPENDS = "openssl expat pcre apr apr-util apache2-native "

@@ -80,7 +80,9 @@ EXTRA_OECONF:class-native = "\
      "

  do_configure:prepend() {
-    sed -i -e 's:$''{prefix}/usr/lib/cgi-bin:$''{libexecdir}/cgi-bin:g' 
${S}/config.layout
+    sed -i -e 's#\(cgidir:\s*\).*#\1${libexecdir}/cgi-bin#' \
I do not know if this was intentional or not, but the above changes the
location of the CGI directory for all layouts, where it previously only
changed the path used by the Debian layout.

It is not a problem for us as we do not use it anyway (we actually
remove it in our bbappend), but if it was intentional, it should be
mentioned in the commit message, and if it was not intentional, then
it should be reverted.

It is indeed to change `the CGI directory` and it has been done a long time ago for all layouts.
It is just update the sed pattern to make it more clear this time.


+           -e 's#\(installbuilddir:\s*\).*#\1${libexecdir}/${PN}/build#' \
This now works for us while using the RedHat layout.

Thanks for your feedback.

Regards,
Kai


+           ${S}/config.layout
  }

  do_install:append:class-target() {
@@ -119,14 +121,15 @@ do_install:append:class-target() {
             -e 's,-fdebug-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g; 
s,-ffile-prefix-map[^ ]*,,g' \
             -e 's,${HOSTTOOLS_DIR}/,,g' \
             -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
-           -e 's,APU_CONFIG = .*,APU_CONFIG = ,g' 
${D}${datadir}/apache2/build/config_vars.mk
+           -e 's,APU_CONFIG = .*,APU_CONFIG = ,g' 
${D}${libexecdir}/${PN}/build/config_vars.mk

      sed -i -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
             -e 's,${DEBUG_PREFIX_MAP},,g' \
             -e 's,${RECIPE_SYSROOT},,g' \
             -e 's,-fdebug-prefix-map[^ ]*,,g; s,-fmacro-prefix-map[^ ]*,,g; 
s,-fmacro-prefix-map[^ ]*,,g' \
             -e 's,APU_INCLUDEDIR = .*,APU_INCLUDEDIR = ,g' \
-           -e 's,".*/configure","configure",g' 
${D}${datadir}/apache2/build/config.nice
+           -e 's,${WORKDIR}/recipe-sysroot/,,g' \
+           -e 's,".*/configure","configure",g' 
${D}${libexecdir}/${PN}/build/config.nice

      if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', 
d)}; then
          install -d ${D}${sysconfdir}/tmpfiles.d/
@@ -143,6 +146,8 @@ do_install:append:class-target() {

      rm -rf ${D}${localstatedir} ${D}${sbindir}/envvars*
      chown -R root:root ${D}
+
+    oe_multilib_header apache2/ap_config_layout.h
  }

  do_install:append:class-native() {
@@ -152,20 +157,22 @@ do_install:append:class-native() {

  SYSROOT_PREPROCESS_FUNCS:append:class-target = " apache_sysroot_preprocess"

+SYSROOT_DIRS += "${libexecdir}/${PN}/build"
+
  apache_sysroot_preprocess() {
      install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}
      install -m 755 ${D}${bindir}/apxs ${SYSROOT_DESTDIR}${bindir_crossscripts}
      install -d ${SYSROOT_DESTDIR}${sbindir}
      install -m 755 ${D}${sbindir}/apachectl ${SYSROOT_DESTDIR}${sbindir}
-    sed -i 's!my $installbuilddir = .*!my $installbuilddir = 
"${STAGING_DIR_HOST}/${datadir}/${BPN}/build";!' 
${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
-
-    sed -i 's!^APR_CONFIG = .*!APR_CONFIG = 
${STAGING_BINDIR_CROSS}/apr-1-config!' 
${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^APU_CONFIG = .*!APU_CONFIG = 
${STAGING_BINDIR_CROSS}/apu-1-config!' 
${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^includedir = .*!includedir = ${STAGING_INCDIR}/apache2!' 
${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^CFLAGS = -I[^ ]*!CFLAGS = -I${STAGING_INCDIR}/openssl!' 
${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^EXTRA_LDFLAGS = .*!EXTRA_LDFLAGS = -L${STAGING_LIBDIR}!' 
${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!^EXTRA_INCLUDES = .*!EXTRA_INCLUDES = -I$(includedir) -I. 
-I${STAGING_INCDIR}!' ${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
-    sed -i 's!--sysroot=[^ ]*!--sysroot=${STAGING_DIR_HOST}!' 
${SYSROOT_DESTDIR}${datadir}/${BPN}/build/config_vars.mk
+    sed -i 's!\(my $installbuilddir = \)"\(.*\)"!\1"${STAGING_DIR_HOST}\2"!' 
${SYSROOT_DESTDIR}${bindir_crossscripts}/apxs
+
+    sed -i 's!^APR_CONFIG = .*!APR_CONFIG = 
${STAGING_BINDIR_CROSS}/apr-1-config!' 
${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
+    sed -i 's!^APU_CONFIG = .*!APU_CONFIG = 
${STAGING_BINDIR_CROSS}/apu-1-config!' 
${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
+    sed -i 's!^includedir = .*!includedir = ${STAGING_INCDIR}/apache2!' 
${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
+    sed -i 's!^CFLAGS = -I[^ ]*!CFLAGS = -I${STAGING_INCDIR}/openssl!' 
${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
+    sed -i 's!^EXTRA_LDFLAGS = .*!EXTRA_LDFLAGS = -L${STAGING_LIBDIR}!' 
${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
+    sed -i 's!^EXTRA_INCLUDES = .*!EXTRA_INCLUDES = -I$(includedir) -I. 
-I${STAGING_INCDIR}!' ${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
+    sed -i 's!--sysroot=[^ ]*!--sysroot=${STAGING_DIR_HOST}!' 
${SYSROOT_DESTDIR}${libexecdir}/${PN}/build/config_vars.mk
  }

  # Implications - used by update-rc.d scripts
@@ -178,6 +185,8 @@ SYSTEMD_AUTO_ENABLE:${PN} = "enable"
  ALTERNATIVE:${PN}-doc = "htpasswd.1"
  ALTERNATIVE_LINK_NAME[htpasswd.1] = "${mandir}/man1/htpasswd.1"

+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/apxs"
+
  PACKAGES = "${PN}-utils ${PN}-scripts ${PN}-doc ${PN}-dev ${PN}-dbg ${PN}"

  CONFFILES:${PN} = "${sysconfdir}/${BPN}/httpd.conf \
@@ -200,7 +209,7 @@ FILES:${PN}-utils = "${bindir}/ab \
  # We override here rather than append so that .so links are
  # included in the runtime package rather than here (-dev)
  # and to get build, icons, error into the -dev package
-FILES:${PN}-dev = "${datadir}/${BPN}/build \
+FILES:${PN}-dev = "${libexecdir}/${PN}/build \
                     ${datadir}/${BPN}/icons \
                     ${datadir}/${BPN}/error \
                     ${includedir}/${BPN} \
--
2.34.1
//Peter


--
Kai Kang
Wind River Linux
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#110330): 
https://lists.openembedded.org/g/openembedded-devel/message/110330
Mute This Topic: https://lists.openembedded.org/mt/105976652/21656
Group Owner: openembedded-devel+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to