> -----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.

> +           -e 's#\(installbuilddir:\s*\).*#\1${libexecdir}/${PN}/build#' \

This now works for us while using the RedHat layout.

> +           ${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

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#110324): 
https://lists.openembedded.org/g/openembedded-devel/message/110324
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