* [PATCH v2] apache2: fix multilib files confliction
@ 2024-04-25 3:07 kai.kang
2024-04-28 21:32 ` [oe] " Peter Kjellerstedt
0 siblings, 1 reply; 3+ messages in thread
From: kai.kang @ 2024-04-25 3:07 UTC (permalink / raw)
To: openembedded-devel
From: Kai Kang <kai.kang@windriver.com>
There are files confliction 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} to fix the confliction by
setting 'installbuilddir'. ${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 conflictions:
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>
---
v2:
* still populate `.../build` directory after installed to ${libexecdir}
* fix buildpaths warning
.../recipes-httpd/apache2/apache2_2.4.59.bb | 38 ++++++++++++-------
1 file changed, 24 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..5b170fac3 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,10 @@ EXTRA_OECONF:class-native = "\
"
do_configure:prepend() {
- sed -i -e 's:$''{prefix}/usr/lib/cgi-bin:$''{libexecdir}/cgi-bin:g' ${S}/config.layout
+ # only modify layout Debian which is adopted
+ sed -i -e '/Layout Debian/,/\Layout/ s#\(cgidir:\s*\).*#\1${libexecdir}/cgi-bin#g' \
+ -e '/Layout Debian/,/\Layout/ s#\(installbuilddir:\s*\).*#\1${libexecdir}/${PN}/build#g' \
+ ${S}/config.layout
}
do_install:append:class-target() {
@@ -119,14 +122,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 +147,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 +158,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 +186,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 +210,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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [oe] [PATCH v2] apache2: fix multilib files confliction
2024-04-25 3:07 [PATCH v2] apache2: fix multilib files confliction kai.kang
@ 2024-04-28 21:32 ` Peter Kjellerstedt
2024-04-29 1:44 ` Kai
0 siblings, 1 reply; 3+ messages in thread
From: Peter Kjellerstedt @ 2024-04-28 21:32 UTC (permalink / raw)
To: Kai Kang, openembedded-devel
> -----Original Message-----
> From: openembedded-devel@lists.openembedded.org <openembedded-devel@lists.openembedded.org> On Behalf Of Kai Kang
> Sent: den 25 april 2024 05:07
> To: openembedded-devel@lists.openembedded.org
> Subject: [oe] [PATCH v2] apache2: fix multilib files confliction
>
> From: Kai Kang <kai.kang@windriver.com>
>
> There are files confliction 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} to fix the confliction by
> setting 'installbuilddir'. ${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 conflictions:
>
> 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>
> ---
> v2:
> * still populate `.../build` directory after installed to ${libexecdir}
> * fix buildpaths warning
>
> .../recipes-httpd/apache2/apache2_2.4.59.bb | 38 ++++++++++++-------
> 1 file changed, 24 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..5b170fac3 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,10 @@ EXTRA_OECONF:class-native = "\
> "
>
> do_configure:prepend() {
> - sed -i -e 's:$''{prefix}/usr/lib/cgi-bin:$''{libexecdir}/cgi-bin:g' ${S}/config.layout
> + # only modify layout Debian which is adopted
> + sed -i -e '/Layout Debian/,/\Layout/ s#\(cgidir:\s*\).*#\1${libexecdir}/cgi-bin#g' \
> + -e '/Layout Debian/,/\Layout/ s#\(installbuilddir:\s*\).*#\1${libexecdir}/${PN}/build#g' \
> + ${S}/config.layout
> }
>
> do_install:append:class-target() {
> @@ -119,14 +122,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 +147,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 +158,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 +186,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 +210,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
The above breaks if you use another layout than Debian. We have the following
in our apache2_%.bbappend:
EXTRA_OECONF:remove = "--enable-layout=Debian --prefix=${base_prefix}"
EXTRA_OECONF:append:class-target = " \
--enable-layout=RedHat \
--sysconfdir=/run/${BPN} \
--libexecdir=${libdir}/${BPN}/modules \
...
"
and with the above patch it now results in:
| sed: can't read .../tmp/work/cortexa9hf-neon-poky-linux-gnueabi/apache2/2.4.58/image/usr/libexec/apache2/build/config_vars.mk: No such file or directory
Due to the fact that these changes are done using sed with an
:append:class-target, it is hard to override them in a subsequent bbappend.
Do you think you could introduce a variable for this path, e.g.,
installbuilddir = "${libexecdir}/${PN}/build"
(which should be ${libexecdir}/${BPN}/build to match the other paths) so
that it can easily be corrected if using another layout than Debian?
//Peter
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [oe] [PATCH v2] apache2: fix multilib files confliction
2024-04-28 21:32 ` [oe] " Peter Kjellerstedt
@ 2024-04-29 1:44 ` Kai
0 siblings, 0 replies; 3+ messages in thread
From: Kai @ 2024-04-29 1:44 UTC (permalink / raw)
To: Peter Kjellerstedt, Kai Kang, openembedded-devel
On 4/29/24 05:32, Peter Kjellerstedt wrote:
>> -----Original Message-----
>> From: openembedded-devel@lists.openembedded.org <openembedded-devel@lists.openembedded.org> On Behalf Of Kai Kang
>> Sent: den 25 april 2024 05:07
>> To: openembedded-devel@lists.openembedded.org
>> Subject: [oe] [PATCH v2] apache2: fix multilib files confliction
>>
>> From: Kai Kang <kai.kang@windriver.com>
>>
>> There are files confliction 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} to fix the confliction by
>> setting 'installbuilddir'. ${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 conflictions:
>>
>> 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>
>> ---
>> v2:
>> * still populate `.../build` directory after installed to ${libexecdir}
>> * fix buildpaths warning
>>
>> .../recipes-httpd/apache2/apache2_2.4.59.bb | 38 ++++++++++++-------
>> 1 file changed, 24 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..5b170fac3 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,10 @@ EXTRA_OECONF:class-native = "\
>> "
>>
>> do_configure:prepend() {
>> - sed -i -e 's:$''{prefix}/usr/lib/cgi-bin:$''{libexecdir}/cgi-bin:g' ${S}/config.layout
>> + # only modify layout Debian which is adopted
>> + sed -i -e '/Layout Debian/,/\Layout/ s#\(cgidir:\s*\).*#\1${libexecdir}/cgi-bin#g' \
>> + -e '/Layout Debian/,/\Layout/ s#\(installbuilddir:\s*\).*#\1${libexecdir}/${PN}/build#g' \
>> + ${S}/config.layout
>> }
>>
>> do_install:append:class-target() {
>> @@ -119,14 +122,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 +147,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 +158,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 +186,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 +210,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
> The above breaks if you use another layout than Debian. We have the following
> in our apache2_%.bbappend:
>
> EXTRA_OECONF:remove = "--enable-layout=Debian --prefix=${base_prefix}"
>
> EXTRA_OECONF:append:class-target = " \
> --enable-layout=RedHat \
> --sysconfdir=/run/${BPN} \
> --libexecdir=${libdir}/${BPN}/modules \
> ...
> "
>
> and with the above patch it now results in:
>
> | sed: can't read .../tmp/work/cortexa9hf-neon-poky-linux-gnueabi/apache2/2.4.58/image/usr/libexec/apache2/build/config_vars.mk: No such file or directory
>
> Due to the fact that these changes are done using sed with an
> :append:class-target, it is hard to override them in a subsequent bbappend.
>
> Do you think you could introduce a variable for this path, e.g.,
> installbuilddir = "${libexecdir}/${PN}/build"
> (which should be ${libexecdir}/${BPN}/build to match the other paths) so
> that it can easily be corrected if using another layout than Debian?
I am sorry that I didn't consider other layout than Debian. I'll fix it
with v3.
Regards,
Kai
>
> //Peter
>
--
Kai Kang
Wind River Linux
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-04-29 1:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-25 3:07 [PATCH v2] apache2: fix multilib files confliction kai.kang
2024-04-28 21:32 ` [oe] " Peter Kjellerstedt
2024-04-29 1:44 ` Kai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).