diff mbox series

[v3,1/1] apache2: fix multilib file conflicts

Message ID 20240508070649.1657864-1-kai.kang@windriver.com
State Under Review
Headers show
Series apache2: fix multilib file conflicts | expand

Commit Message

Kai May 8, 2024, 7:06 a.m. UTC
From: Kai Kang <kai.kang@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.kang@windriver.com>
---
 .../recipes-httpd/apache2/apache2_2.4.59.bb   | 37 ++++++++++++-------
 1 file changed, 23 insertions(+), 14 deletions(-)

Comments

Peter Kjellerstedt May 12, 2024, 1:59 p.m. UTC | #1
> -----Original Message-----
> From: kai.kang@windriver.com <kai.kang@windriver.com>
> Sent: den 8 maj 2024 09:07
> To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> Cc: openembedded-devel@lists.openembedded.org
> Subject: [PATCH v3 1/1] apache2: fix multilib file conflicts
> 
> From: Kai Kang <kai.kang@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.kang@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
Kai May 13, 2024, 3:29 a.m. UTC | #2
On 5/12/24 21:59, Peter Kjellerstedt wrote:
>> -----Original Message-----
>> From:kai.kang@windriver.com  <kai.kang@windriver.com>
>> Sent: den 8 maj 2024 09:07
>> To: Peter Kjellerstedt<peter.kjellerstedt@axis.com>
>> Cc:openembedded-devel@lists.openembedded.org
>> Subject: [PATCH v3 1/1] apache2: fix multilib file conflicts
>>
>> From: Kai Kang<kai.kang@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.kang@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
>
Khem Raj May 13, 2024, 5:12 a.m. UTC | #3
Kai

Can you add the needed bits to commit msg and send a v4 please

On Sun, May 12, 2024 at 8:30 PM Kai Kang via lists.openembedded.org
<kai.kang=eng.windriver.com@lists.openembedded.org> wrote:
>
> On 5/12/24 21:59, Peter Kjellerstedt wrote:
>
> -----Original Message-----
> From: kai.kang@windriver.com <kai.kang@windriver.com>
> Sent: den 8 maj 2024 09:07
> To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> Cc: openembedded-devel@lists.openembedded.org
> Subject: [PATCH v3 1/1] apache2: fix multilib file conflicts
>
> From: Kai Kang <kai.kang@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.kang@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/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Peter Kjellerstedt May 13, 2024, 10:03 a.m. UTC | #4
> -----Original Message-----
> From: Kai <kai.kang@windriver.com> 
> Sent: den 13 maj 2024 05:29
> To: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> Cc: openembedded-devel@lists.openembedded.org
> Subject: Re: [PATCH v3 1/1] apache2: fix multilib file conflicts
> 
> On 5/12/24 21:59, Peter Kjellerstedt wrote:
> > -----Original Message-----
> > From: mailto:kai.kang@windriver.com mailto:kai.kang@windriver.com
> > Sent: den 8 maj 2024 09:07
> > To: Peter Kjellerstedt mailto:peter.kjellerstedt@axis.com
> > Cc: mailto:openembedded-devel@lists.openembedded.org
> > Subject: [PATCH v3 1/1] apache2: fix multilib file conflicts
> > 
> > > From: Kai Kang mailto:kai.kang@windriver.com
> > > 
> > > There are file conflicts of apache2 when multilib enabled:

[snip]

> > > @@ -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 may have been the intention, but until now, the path was only changed 
for layouts that use `${prefix}/usr/lib/cgi-bin` as cgidir, which only the 
Debian layout does. So it definitely needs to be documented as a change.

> It is just update the sed pattern to make it more clear this time.

You also change `$''{libexecdir}/cgi-bin` to `${libexecdir}/cgi-bin`. This means 
that the modified file now contains the expanded value of ${libexecdir} rather 
than the unexpanded string as it did before. I do not think this is a problem  
per se, but you may as well continue to use $''{libexecdir} above and below to 
maintain the formatting of the file.

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

//Peter
diff mbox series

Patch

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#' \
+           -e 's#\(installbuilddir:\s*\).*#\1${libexecdir}/${PN}/build#' \
+           ${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} \