Fix multilib install conflicts
PATCH v2 1/10 cups: fix multilib install file conflicts
In reply to [email protected]From: Kai Kang <[email protected]>
There are comments which contains path of ${libdir} in configure files. It causes install file conflicts when intall cups and lib32-cups at same time.
Replace ${libdir} with {nonarch_libdir} of the comment lines in config files to fix the issue.
--- meta/recipes-extended/cups/cups.inc | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-extended/cups/cups.inc +3 -0
@@ -78,6 +78,9 @@ do_install () { rm -rf ${D}${sysconfdir}/init.d/ rm -rf ${D}${sysconfdir}/rc* fi + + # workaround for multilib install file conflicts + sed -i "s:\(^#.*\)${libdir}:\1${nonarch_libdir}:" ${D}${sysconfdir}/cups/cups-files.conf* } PACKAGES =+ "${PN}-lib ${PN}-libimage"
Signature · 1 line
2.18.0
PATCH v2 2/10 bind: fix multilib install file conflicts
In reply to [email protected]From: Kai Kang <[email protected]>
It adds ${libdir} to linker options in scripts bind9-config and isc-config.sh. And then causes install file conflicts when install bind andl ib32-bind both.
Inherit multilib_script.bbclass to fix this issue.
--- meta/recipes-connectivity/bind/bind_9.11.4.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
meta/recipes-connectivity/bind/bind_9.11.4.bb +3 -1
@@ -28,7 +28,9 @@ SRC_URI[sha256sum] = "595070b031f869f8939656b5a5d11b121211967f15f6afeafa895df745 UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/" UPSTREAM_CHECK_REGEX = "(?P<pver>9(\.\d+)+(-P\d+)*)/" -inherit autotools update-rc.d systemd useradd pkgconfig +inherit autotools update-rc.d systemd useradd pkgconfig multilib_script + +MULTILIB_SCRIPTS = "${PN}:${bindir}/bind9-config ${PN}:${bindir}/isc-config.sh" # PACKAGECONFIGs readline and libedit should NOT be set at same time PACKAGECONFIG ?= "readline"
Signature · 1 line
2.18.0
v2 cover Fix multilib install conflicts
From: Kai Kang <[email protected]>
V2:
* add Upstream-Status for meta/recipes-devtools/opkg-utils/opkg-utils/update-alternatives-not-warn-same-priorities-for-multilib.patch
The following changes since commit 3bbbe25ae74e120f7d3452685f0cae2245d7b14d:
glibc-package.inc: correct intention for deleting /usr/lib as needed (2018-09-27 23:41:41 +0100)
are available in the Git repository at:
git://git.pokylinux.org/poky-contrib kangkai/ML-sep29
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=kangkai/ML-sep29
Kai Kang (10):
cups: fix multilib install file conflicts
bind: fix multilib install file conflicts
man-db: fix multilib install file conflict
groff: fix multilib install file conflicts
nss: move create blank certificates to pkg_postinst
libcheck: avoid multilib install file conflict opkg-utils/update-alternatives: not warn same priorities for multilib
os-release: fix install file conflict for multilib
gobject-introspection: fix multilib install file conflicts
vala: update vapigen-wrapper
meta/recipes-connectivity/bind/bind_9.11.4.bb | 4 +- meta/recipes-core/os-release/os-release.bb | 6 +- ...ot-warn-same-priorities-for-multilib.patch | 36 ++++++++++ .../opkg-utils/opkg-utils_0.3.6.bb | 1 + meta/recipes-devtools/vala/vala.inc | 4 +- meta/recipes-extended/cups/cups.inc | 3 + meta/recipes-extended/groff/groff_1.22.3.bb | 4 +- meta/recipes-extended/man-db/man-db_2.8.3.bb | 3 + ...nfigure.ac-make-GIR_DIR-configurable.patch | 65 +++++++++++++++++++ .../gobject-introspection_1.58.0.bb | 10 ++- .../libcheck/libcheck_0.12.0.bb | 5 ++ meta/recipes-support/nss/nss_3.38.bb | 32 +++++---- 12 files changed, 153 insertions(+), 20 deletions(-) create mode 100644 meta/recipes-devtools/opkg-utils/opkg-utils/update-alternatives-not-warn-same-priorities-for-multilib.patch create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-configure.ac-make-GIR_DIR-configurable.patch
Signature · 1 line
2.18.0
PATCH v2 4/10 groff: fix multilib install file conflicts
From: Kai Kang <[email protected]>
Perl scripts ${bindir}/{gpinyin, groffer, grog} are ${libdir} related and cause multilib install file conflicts:
| Error: Transaction check error: | file /usr/bin/gpinyin conflicts between attempted installs of groff-1.22.3-r0.core2_64 and lib32-groff-1.22.3-r0.x86 | file /usr/bin/groffer conflicts between attempted installs of groff-1.22.3-r0.core2_64 and lib32-groff-1.22.3-r0.x86 | file /usr/bin/grog conflicts between attempted installs of groff-1.22.3-r0.core2_64 and lib32-groff-1.22.3-r0.x86
Inherit multilib_script.bbclass to fix the errors.
--- meta/recipes-extended/groff/groff_1.22.3.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
meta/recipes-extended/groff/groff_1.22.3.bb +3 -1
@@ -20,7 +20,9 @@ DEPENDS = "groff-native" DEPENDS_class-native = "" RDEPENDS_${PN} += "perl sed" -inherit autotools texinfo +inherit autotools texinfo multilib_script + +MULTILIB_SCRIPTS = "${PN}:${bindir}/gpinyin ${PN}:${bindir}/groffer ${PN}:${bindir}/grog" EXTRA_OECONF = "--without-x" PARALLEL_MAKE = ""
Signature · 1 line
2.18.0
PATCH v2 5/10 nss: move create blank certificates to pkg_postinst
In reply to [email protected]From: Kai Kang <[email protected]>
There is a multilib install file conflict of nss:
| file /etc/pki/nssdb/key4.db conflicts between attempted installs of | lib32-nss-3.38-r0.corei7_32 and nss-3.38-r0.corei7_64
Move the creation of blank certificates to pkg_postinst. And check if certificates exist already, don't re-create them.
--- meta/recipes-support/nss/nss_3.38.bb | 32 +++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-)
meta/recipes-support/nss/nss_3.38.bb +20 -12
@@ -211,20 +211,20 @@ do_install_append() { sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc } -do_install_append_class-target() { - # Create a blank certificate - mkdir -p ${D}${sysconfdir}/pki/nssdb/ - touch ./empty_password - certutil -N -d sql:${D}${sysconfdir}/pki/nssdb/ -f ./empty_password - chmod 644 ${D}${sysconfdir}/pki/nssdb/*.db - rm ./empty_password - # Remove build path prefix - sed -i "s:${D}::g" ${D}${sysconfdir}/pki/nssdb/pkcs11.txt -} - PACKAGE_WRITE_DEPS += "nss-native" pkg_postinst_${PN} () { if [ -n "$D" ]; then + if [ ! -d $D${sysconfdir}/pki/nssdb/ ]; then + # Create a blank certificate + mkdir -p $D${sysconfdir}/pki/nssdb/ + touch $D/empty_password + certutil -N -d sql:$D${sysconfdir}/pki/nssdb/ -f $D/empty_password + chmod 644 $D${sysconfdir}/pki/nssdb/*.db + rm $D/empty_password + # Remove build path prefix + sed -i "s:$D::g" $D${sysconfdir}/pki/nssdb/pkcs11.txt + fi + for I in $D${libdir}/lib*.chk; do DN=`dirname $I` BN=`basename $I .chk`
@@ -235,6 +235,15 @@ pkg_postinst_${PN} () { fi done else + if [ ! -d ${sysconfdir}/pki/nssdb ]; then + # Create a blank certificate + mkdir -p ${sysconfdir}/pki/nssdb + empty_password=`mktemp` + certutil -N -d sql:$D${sysconfdir}/pki/nssdb/ -f $empty_password + chmod 644 $D${sysconfdir}/pki/nssdb/*.db + rm $empty_password + fi + signlibs.sh fi }
@@ -244,7 +253,6 @@ FILES_${PN}-smime = "\ ${bindir}/smime \ " FILES_${PN} = "\ - ${sysconfdir} \ ${bindir} \ ${libdir}/lib*.chk \ ${libdir}/lib*.so \
Signature · 1 line
2.18.0
PATCH v2 3/10 man-db: fix multilib install file conflict
In reply to [email protected]From: Kai Kang <[email protected]>
The first line of config file man_db.conf is the package name. It causes multilib install file conflict. So remove the first line.
--- meta/recipes-extended/man-db/man-db_2.8.3.bb | 3 +++ 1 file changed, 3 insertions(+)
meta/recipes-extended/man-db/man-db_2.8.3.bb +3 -0
@@ -26,6 +26,9 @@ do_install() { install -d ${D}/etc/default/volatiles install -m 0644 ${WORKDIR}/99_mandb ${D}/etc/default/volatiles fi + + # the 1st line of man_db.conf is package name which causes multilib install file conflict + sed -i '1d' ${D}${sysconfdir}/man_db.conf } do_install_append_libc-musl() {
Signature · 1 line
2.18.0
PATCH v2 7/10 opkg-utils/update-alternatives: not warn same priorities for multilib
In reply to [email protected]From: Kai Kang <[email protected]>
update-alternatives is used to handle install file conflicts of multilib packages in multilib_script.bbclass. And the default priority is used for the alternatives which causes QA warning:
| WARNING: core-image-minimal-1.0-r0 do_rootfs: [log_check] core-image-minimal: found 1 warning message in the logfile | [log_check] Warn: update-alternatives: libtool has multiple providers with the same priority, please check | .../core-image-minimal/1.0-r0/rootfs/usr/lib/opkg/alternatives/libtool for details
The same priorities of alternatives are by design, so eliminate the warning for alternatives from multilib packages.
--- ...ot-warn-same-priorities-for-multilib.patch | 36 +++++++++++++++++++ .../opkg-utils/opkg-utils_0.3.6.bb | 1 + 2 files changed, 37 insertions(+) create mode 100644 meta/recipes-devtools/opkg-utils/opkg-utils/update-alternatives-not-warn-same-priorities-for-multilib.patch
meta/recipes-devtools/opkg-utils/opkg-utils/update-alternatives-not-warn-same-priorities-for-multilib.patch new file +36 -0
@@ -0,0 +1,36 @@ +From 5d9ab3a3575267517c3c8fd9847b68f5987a4820 Mon Sep 17 00:00:00 2001 +From: Kai Kang <[email protected]> +Date: Tue, 18 Sep 2018 04:35:54 -0400 +Subject: [PATCH] update-alternatives: not warn same priorities for multilib + +The same priorities of alternatives used in multilib_script.bbclass are +by design, so eliminate the warning of same priorities for alternatives +from multilib packages. + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Kai Kang <[email protected]> +--- + update-alternatives | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/update-alternatives b/update-alternatives +index 89a440b..61b7ef5 100644 +--- a/update-alternatives ++++ b/update-alternatives +@@ -94,7 +94,11 @@ add_alt() { + local priority="$3" + remove_alt $name $path + if grep -qw "$priority" $ad/$name; then +- echo "Warn: update-alternatives: $name has multiple providers with the same priority, please check $ad/$name for details" ++ target=`head -1 $ad/$name` ++ # not warn same priorities from multilib packages ++ if grep -w "$priority" $ad/$name | grep -qv "^$target"; then ++ echo "Warn: update-alternatives: $name has multiple providers with the same priority, please check $ad/$name for details" ++ fi + fi + echo "$path $priority" >> $ad/$name + } +-- +2.19.0.rc2 +
meta/recipes-devtools/opkg-utils/opkg-utils_0.3.6.bb +1 -0
@@ -12,6 +12,7 @@ SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV file://0001-Only-use-sort-name-on-versions-of-tar-which-support-.patch \ file://0002-opkg-build-Use-local-time-for-build_date-since-opkg-.patch \ file://threaded-xz.patch \ + file://update-alternatives-not-warn-same-priorities-for-multilib.patch \ " SRC_URI_append_class-native = " file://tar_ignore_error.patch" UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
Signature · 1 line
2.18.0
PATCH v2 8/10 os-release: fix install file conflict for multilib
In reply to [email protected]From: Kai Kang <[email protected]>
It fails to create image when install os-release and lib32-os-release both:
| file /etc/os-release conflicts between attempted installs of | os-release-1.0-r0.core2_64 and lib32-os-release-1.0-r0.x86
The /etc/os-release is a symlink link to ${libdir}/os-release. Actually the content of files are identical and make /etc/os-release to be hard link could fix the issue. But according to os-release (5), symlink link is necessary for initrd environment such as dracut.
--- meta/recipes-core/os-release/os-release.bb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
meta/recipes-core/os-release/os-release.bb +4 -2
@@ -1,10 +1,12 @@ -inherit allarch - SUMMARY = "Operating system identification" DESCRIPTION = "The /usr/lib/os-release file contains operating system identification data." LICENSE = "MIT" INHIBIT_DEFAULT_DEPS = "1" +inherit allarch multilib_script + +MULTILIB_SCRIPTS = "${PN}:${sysconfdir}/os-release" + do_fetch[noexec] = "1" do_unpack[noexec] = "1" do_patch[noexec] = "1"
Signature · 1 line
2.18.0
PATCH v2 6/10 libcheck: avoid multilib install file conflict
In reply to [email protected]From: Kai Kang <[email protected]>
It has one line different which is a comment in check_stdint.h between libcheck multilib packages. And then causes install file conflict when install libcheck and lib32-libcheck at same time.
Remove the comment line from check_stdint.h to fix the issue.
--- meta/recipes-support/libcheck/libcheck_0.12.0.bb | 5 +++++ 1 file changed, 5 insertions(+)
meta/recipes-support/libcheck/libcheck_0.12.0.bb +5 -0
@@ -16,6 +16,11 @@ inherit autotools pkgconfig texinfo CACHED_CONFIGUREVARS += "ac_cv_path_AWK_PATH=${bindir}/gawk" +do_install_append_class-target () { + # remove the only one line comment which causes multilib install file conflict + sed -i '/^\/\*/ d' ${D}${includedir}/check_stdint.h +} + RREPLACES_${PN} = "check (<= 0.9.5)" RDEPENDS_${PN} += "gawk" RDEPENDS_${PN}_class-native = ""
Signature · 1 line
2.18.0
PATCH v2 10/10 vala: update vapigen-wrapper
In reply to [email protected]From: Kai Kang <[email protected]>
gobject-introspection has changed installation paths of .gir files. Update vapigen-wrapper accordingly.
--- meta/recipes-devtools/vala/vala.inc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
meta/recipes-devtools/vala/vala.inc +3 -1
@@ -29,7 +29,7 @@ do_configure_prepend_class-target() { # The wrapper will call a native vapigen cat > ${B}/vapigen-wrapper << EOF #!/bin/sh -vapigen-${SHRT_VER} "\$@" +vapigen-${SHRT_VER} --girdir=${STAGING_LIBDIR}/gir-1.0 "\$@" EOF chmod +x ${B}/vapigen-wrapper }
@@ -55,3 +55,5 @@ vapigen_sysroot_preprocess() { -e "s|vapigen=.*|vapigen=${bindir}/vapigen-wrapper|" \ ${SYSROOT_DESTDIR}${libdir}/pkgconfig/vapigen-${SHRT_VER}.pc } + +SSTATE_SCAN_FILES += "vapigen-wrapper"
Signature · 1 line
2.18.0
PATCH v2 9/10 gobject-introspection: fix multilib install file conflicts
In reply to [email protected]From: Kai Kang <[email protected]>
Fix multilib isntall file conflicts for gobject-introspection.
* use multilib_script.bbclass to handle ${bindir}/g-ir-annotation-tool and ${bindir}/g-ir-scanner
* add configure option to install .gir files to an alternative path
--- ...nfigure.ac-make-GIR_DIR-configurable.patch | 65 +++++++++++++++++++ .../gobject-introspection_1.58.0.bb | 10 ++- 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-configure.ac-make-GIR_DIR-configurable.patch
meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-configure.ac-make-GIR_DIR-configurable.patch new file +65 -0
@@ -0,0 +1,65 @@ +configure.ac: make GIR_DIR configurable + +.gir files are arch related which contain such as lengths of pointers +that they are different for 64 and 32 bits target. It causes install +file conflicts for multilib when intall gobject-introspection and +lib32-gobject-introspection both. + +Add configure option 'with-gir-dir-prefix' to make .gir could be +installed to a configured path such as ${libdir}. And update girdir in +.pc files as well. + +Upstream-Status: Submitted [https://github.com/GNOME/gobject-introspection/pull/17] + +Signed-off-by: Kai Kang <[email protected]> +--- + configure.ac | 5 ++++- + gobject-introspection-1.0.pc.in | 2 +- + gobject-introspection-no-export-1.0.pc.in | 2 +- + 3 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b4294c57..dc78b832 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -114,7 +114,10 @@ GIR_SUFFIX="gir-1.0" + AC_SUBST(GIR_SUFFIX) + AC_DEFINE_UNQUOTED(GIR_SUFFIX, "$GIR_SUFFIX", [Name of the gir directory]) + +-GIR_DIR="$EXPANDED_DATADIR/$GIR_SUFFIX" ++AC_ARG_WITH(gir-dir-prefix, ++ AS_HELP_STRING([--with-gir-dir-prefix], [Director prefix for gir installation]), ++ [GIR_DIR_PREFIX="$withval"], [GIR_DIR_PREFIX="$EXPANDED_DATADIR"]) ++GIR_DIR="$GIR_DIR_PREFIX/$GIR_SUFFIX" + AC_SUBST(GIR_DIR) + AC_DEFINE_UNQUOTED(GIR_DIR, "$GIR_DIR", [Director prefix for gir installation]) + +diff --git a/gobject-introspection-1.0.pc.in b/gobject-introspection-1.0.pc.in +index a08b5d27..3409856c 100644 +--- a/gobject-introspection-1.0.pc.in ++++ b/gobject-introspection-1.0.pc.in +@@ -10,7 +10,7 @@ g_ir_scanner=${bindir}/g-ir-scanner + g_ir_compiler=${bindir}/g-ir-compiler@EXEEXT@ + g_ir_generate=${bindir}/g-ir-generate@EXEEXT@ + gidatadir=${datadir}/gobject-introspection-1.0 +-girdir=${datadir}/gir-1.0 ++girdir=@GIR_DIR@ + typelibdir=${libdir}/girepository-1.0 + + Cflags: -I${includedir}/gobject-introspection-1.0 @FFI_PC_CFLAGS@ +diff --git a/gobject-introspection-no-export-1.0.pc.in b/gobject-introspection-no-export-1.0.pc.in +index d214d22d..745aaade 100644 +--- a/gobject-introspection-no-export-1.0.pc.in ++++ b/gobject-introspection-no-export-1.0.pc.in +@@ -9,7 +9,7 @@ includedir=@includedir@ + g_ir_scanner=${bindir}/g-ir-scanner + g_ir_compiler=${bindir}/g-ir-compiler@EXEEXT@ + g_ir_generate=${bindir}/g-ir-generate@EXEEXT@ +-girdir=${datadir}/gir-1.0 ++girdir=@GIR_DIR@ + typelibdir=${libdir}/girepository-1.0 + + Cflags: -I${includedir}/gobject-introspection-1.0 @FFI_PC_CFLAGS@ +-- +2.19.0.rc2 +
meta/recipes-gnome/gobject-introspection/gobject-introspection_1.58.0.bb +7 -3
@@ -17,6 +17,7 @@ SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-$ file://0005-Prefix-pkg-config-paths-with-PKG_CONFIG_SYSROOT_DIR-.patch \ file://0001-giscanner-add-a-lib-dirs-envvar-option.patch \ file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \ + file://0001-configure.ac-make-GIR_DIR-configurable.patch \ " SRC_URI[md5sum] = "94fec875276262037bfcd51226db12fe"
@@ -24,7 +25,9 @@ SRC_URI[sha256sum] = "27c1590a32749de0a5481ce897772547043e94bccba4bc0a7edb3d8513 SRC_URI_append_class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch" -inherit autotools pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even +inherit autotools pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even multilib_script + +MULTILIB_SCRIPTS = "${PN}:${bindir}/g-ir-annotation-tool ${PN}:${bindir}/g-ir-scanner" DEPENDS_append = " libffi zlib glib-2.0 python3 flex-native bison-native autoconf-archive"
@@ -51,6 +54,7 @@ EXTRA_OECONF_class-target = " \ --enable-gi-ldd-wrapper=${B}/g-ir-scanner-lddwrapper \ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection-data', '--disable-introspection-data', d)} \ " +EXTRA_OECONF_append = " --with-gir-dir-prefix=${libdir}" # Need to ensure ld.so.conf exists so prelink-native works # both before we build and if we install from sstate
@@ -94,7 +98,7 @@ EOF # This prevents g-ir-scanner from writing cache data to $HOME export GI_SCANNER_DISABLE_CACHE=1 -g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 "\$@" +g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_LIBDIR}/gir-1.0 "\$@" EOF chmod +x ${B}/g-ir-scanner-wrapper
@@ -178,7 +182,7 @@ FILES_${PN}_append = " ${libdir}/girepository-*/*.typelib" # .gir files go to dev package, as they're needed for developing (but not for running) # things that depends on introspection. -FILES_${PN}-dev_append = " ${datadir}/gir-*/*.gir" +FILES_${PN}-dev_append = " ${libdir}/gir-*/*.gir" FILES_${PN}-dev_append = " ${datadir}/gir-*/*.rnc" # These are used by gobject-based packages
Signature · 1 line
2.18.0
Re: [PATCH 10/10] vala: update vapigen-wrapper
In reply to [email protected]Quoted 3 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
gobject-introspection has changed installation paths of .gir files.
gobject-introspection has not changed. *We* have changed it.
This is basically why I really don't want to start messing with upstream code like this as I'm guessing this will be the first of many such problems.
Has anyone discussed the gobject-introspection gir path issue with upstream? If data is arch specific, it shouldn't be going into datadir but into libexec iirc. I'd like to understand the upstream response before we start hacking around this in OE in a way which will generate a ton of patches and incompatibility.
Cheers,
Richard
Re: [PATCH 08/10] os-release: fix install file conflict for multilib
In reply to [email protected]Quoted 35 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
It fails to create image when install os-release and lib32-os-release both:
Quoted 2 lines
file
/etc/os-releaseconflicts between attempted installs of os-release-1.0-r0.core2_64 and lib32-os-release-1.0-r0.x86The
/etc/os-releaseis a symlink link to ${libdir}/os-release. Actually
the content of files are identical and make/etc/os-releaseto be hard
link could fix the issue. But according to os-release (5), symlink link
is necessary for initrd environment such as dracut.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-core/os-release/os-release.bb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)meta/recipes-core/os-release/os-release.bb +0
-2@@ -1,10 +1,12 @@ -inherit allarch - SUMMARY = "Operating system identification" DESCRIPTION = "The /usr/lib/os-release file contains operatingsystem identification data."
LICENSE = "MIT"
INHIBIT_DEFAULT_DEPS= "1"
meta/recipes-core/os-release/os-release.bb line 8
Quoted 3 lines
meta/recipes-core/os-release/os-release.bb +3
-0+inherit allarch multilib_script + +MULTILIB_SCRIPTS = "${PN}:${sysconfdir}/os-release"
This is exactly the kind of thing I did not want to see MUTLILIB_SCRIPTS used for. Its now being proposed everywhere you have an issue with conflicting files without consideration about what actually makes sense.
What might make more sense here is only to build os-release for the main namespace and not any of the multilibs. It could RPROVIDE if necessary.
Cheers,
Richard
Re: [PATCH 07/10] opkg-utils/update-alternatives: not warn same priorities for multilib
In reply to [email protected]Quoted 14 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
update-alternatives is used to handle install file conflicts of multilib
packages in multilib_script.bbclass. And the default priority is used for the alternatives which causes QA warning:Quoted 6 lines
WARNING: core-image-minimal-1.0-r0
do_rootfs: [log_check] core-
image-minimal: found 1 warning message in the logfile [log_check] Warn: update-alternatives: libtool has multiple providers with the same priority, please check .../core-image-minimal/1.0- r0/rootfs/usr/lib/opkg/alternatives/libtool for details
Quoted 4 lines
The same priorities of alternatives are by design, so eliminate the warning for alternatives from multilib packages.
Signed-off-by Kai Kang <[email protected]>
Sorry, no, this isn't right either :(
If we read the patch where multilib_scripts were introduced:
http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=e3497cc22b969e02efa54e4e54e087dbb91d8ced
it says "standardisation amongst the multilibs on how the alternatives are named and prioritiesd. The priotitisation code needs to be added but this change means there is somewhere to add it."
so the intent was to allow the user to define which multilib should be the higher priority and add in some prioritisation code.
The correct way to fix these warning is to add such code, allowing the user to specify the order of priorities of the multilibs.
Cheers,
Richard
Re: [PATCH 06/10] libcheck: avoid multilib install file conflict
In reply to [email protected]Quoted 25 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
It has one line different which is a comment in
check_stdint.hbetween libcheck multilib packages. And then causes install file conflict when install libcheck and lib32-libcheck at same time.Remove the comment line from
check_stdint.hto fix the issue.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/libcheck/libcheck_0.12.0.bb | 5 +++++ 1 file changed, 5 insertions(+)meta/recipes-support/libcheck/libcheck_0.12.0.bb +2
-0@@ -16,6 +16,11 @@ inherit autotools pkgconfig texinfo CACHED_CONFIGUREVARS += "ac_cv_path_AWK_PATH=${bindir}/gawk" +do_install_append_class-target () { + # remove the only one line comment which causes multilib installfile conflict
meta/recipes-support/libcheck/libcheck_0.12.0.bb inherit autotools pkgconfig texinfo · line 22
Quoted 2 lines
meta/recipes-support/libcheck/libcheck_0.12.0.bb +2
-0+ sed -i '/^\/\*/ d' ${D}${includedir}/check_stdint.h +}
Please do this with a patch, not a sed expression.
The sed expressions are a maintenance nightmare since we don't know if/when the header may change, or if/when this expression stops working.
Cheers,
Richard
Re: [PATCH 05/10] nss: move create blank certificates to pkg_postinst
In reply to [email protected]Quoted 6 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
There is a multilib install file conflict of nss:
Quoted 2 lines
file
/etc/pki/nssdb/key4.dbconflicts between attempted installs of lib32-nss-3.38-r0.corei7_32 and nss-3.38-r0.corei7_64
Quoted 8 lines
Move the creation of blank certificates to
pkg_postinst. And check if certificates exist already, don't re-create them.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/nss/nss_3.38.bb | 32 +++++++++++++++++--------- -- 1 file changed, 20 insertions(+), 12 deletions(-)
This does raise a question - why aren't the generated files the same? Is there a determinism problem here? This sounds like the image would change with each build and couldn't be reproduced so we have a bigger problem?
Cheers,
Richard
Re: [PATCH 03/10] man-db: fix multilib install file conflict
In reply to [email protected]Quoted 23 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
The first line of config file man_db.conf is the package name. It causes
multilib install file conflict. So remove the first line.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-extended/man-db/man-db_2.8.3.bb | 3 +++ 1 file changed, 3 insertions(+)meta/recipes-extended/man-db/man-db_2.8.3.bb +0
-0@@ -26,6 +26,9 @@ do_install() { install -d ${D}/etc/default/volatiles install -m 0644 ${WORKDIR}/99_mandb${D}/etc/default/volatiles
meta/recipes-extended/man-db/man-db_2.8.3.bb +2
-0fi + + # the 1st line of man_db.conf is package name which causes
Quoted 3 lines
multilib install file conflict
+ sed -i '1d'${D}${sysconfdir}/man_db.conf
}
Please do this with a patch, not a sed expression.
The sed expressions are a maintenance nightmare since we don't know if/when the config file may change, or if/when this expression stops working.
Cheers,
Richard
Re: [PATCH 03/10] man-db: fix multilib install file conflict
Quoted 29 lines · Richard Purdie
Quoted 23 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
The first line of config file man_db.conf is the package name. It causes
multilib install file conflict. So remove the first line.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-extended/man-db/man-db_2.8.3.bb | 3 +++ 1 file changed, 3 insertions(+)meta/recipes-extended/man-db/man-db_2.8.3.bb +0
-0@@ -26,6 +26,9 @@ do_install() { install -d ${D}/etc/default/volatiles install -m 0644 ${WORKDIR}/99_mandb${D}/etc/default/volatiles
fimeta/recipes-extended/man-db/man-db_2.8.3.bb +2
-0+ + # the 1st line of man_db.conf is package name which causesQuoted 3 lines
multilib install file conflict
+ sed -i '1d'${D}${sysconfdir}/man_db.conf
}Please do this with a patch, not a sed expression.
Quoted 3 lines
The sed expressions are a maintenance nightmare since we don't know if/when the config file may change, or if/when this expression stops working.
Got it.
--Kai
Quoted 6 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang
Re: [PATCH 06/10] libcheck: avoid multilib install file conflict
In reply to Richard PurdieQuoted 30 lines · Richard Purdie
Quoted 25 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
It has one line different which is a comment in
check_stdint.hbetween libcheck multilib packages. And then causes install file conflict when install libcheck and lib32-libcheck at same time.Remove the comment line from
check_stdint.hto fix the issue.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/libcheck/libcheck_0.12.0.bb | 5 +++++ 1 file changed, 5 insertions(+)meta/recipes-support/libcheck/libcheck_0.12.0.bb +2
-0@@ -16,6 +16,11 @@ inherit autotools pkgconfig texinfo CACHED_CONFIGUREVARS += "ac_cv_path_AWK_PATH=${bindir}/gawk" +do_install_append_class-target () { + # remove the only one line comment which causes multilib installfile conflict
meta/recipes-support/libcheck/libcheck_0.12.0.bb inherit autotools pkgconfig texinfo · line 22
Quoted 2 lines
meta/recipes-support/libcheck/libcheck_0.12.0.bb +2
-0+ sed -i '/^\/\*/ d' ${D}${includedir}/check_stdint.h +}Please do this with a patch, not a sed expression.
Quoted 3 lines
The sed expressions are a maintenance nightmare since we don't know if/when the header may change, or if/when this expression stops working.
Got it. Thanks.
--Kai
Quoted 6 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang
Re: [PATCH 08/10] os-release: fix install file conflict for multilib
In reply to Richard PurdieQuoted 43 lines · Richard Purdie
Quoted 34 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
It fails to create image when install os-release and lib32-os-release both:
Quoted 2 lines
file
/etc/os-releaseconflicts between attempted installs of os-release-1.0-r0.core2_64 and lib32-os-release-1.0-r0.x86The
/etc/os-releaseis a symlink link to ${libdir}/os-release. Actually
the content of files are identical and make/etc/os-releaseto be hard
link could fix the issue. But according to os-release (5), symlink link
is necessary for initrd environment such as dracut.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-core/os-release/os-release.bb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)meta/recipes-core/os-release/os-release.bb +0
-2@@ -1,10 +1,12 @@ -inherit allarch - SUMMARY = "Operating system identification" DESCRIPTION = "The /usr/lib/os-release file contains operatingsystem identification data."
LICENSE = "MIT"
INHIBIT_DEFAULT_DEPS= "1"meta/recipes-core/os-release/os-release.bb line 8
Quoted 3 lines
meta/recipes-core/os-release/os-release.bb +3
-0+inherit allarch multilib_script + +MULTILIB_SCRIPTS = "${PN}:${sysconfdir}/os-release"This is exactly the kind of thing I did not want to see
MUTLILIB_SCRIPTSused for. Its now being proposed everywhere you have an issue with conflicting files without consideration about what actually makes sense.
Quoted 3 lines
What might make more sense here is only to build os-release for the main namespace and not any of the multilibs. It could RPROVIDE if necessary.
Robert's patch about "multilib: avoid expanding grub and grub-efi to multilib' has been merged to master-next, I'll do it base on his patch.
Regards,
Kai
Quoted 6 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang
Re: [PATCH 10/10] vala: update vapigen-wrapper
In reply to Richard PurdieQuoted 10 lines · Richard Purdie
Quoted 3 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
gobject-introspection has changed installation paths of .gir files.
gobject-introspection has not changed. *We* have changed it.
This is basically why I really don't want to start messing with upstream code like this as I'm guessing this will be the first of many such problems.
Quoted 5 lines
Has anyone discussed the gobject-introspection gir path issue with upstream? If data is arch specific, it shouldn't be going into datadir but into libexec iirc. I'd like to understand the upstream response before we start hacking around this in OE in a way which will generate a ton of patches and incompatibility.
I have sent the patch to https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/63. It seems no objection but can't build pass for VS2017, so not merged yet.
--Kai
Quoted 6 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang
Re: [PATCH 05/10] nss: move create blank certificates to pkg_postinst
In reply to Richard PurdieQuoted 14 lines · Richard Purdie
Quoted 5 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
There is a multilib install file conflict of nss:
Quoted 2 lines
file
/etc/pki/nssdb/key4.dbconflicts between attempted installs of lib32-nss-3.38-r0.corei7_32 and nss-3.38-r0.corei7_64Quoted 8 lines
Move the creation of blank certificates to
pkg_postinst. And check if certificates exist already, don't re-create them.Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/nss/nss_3.38.bb | 32 +++++++++++++++++--------- -- 1 file changed, 20 insertions(+), 12 deletions(-)
Quoted 4 lines
This does raise a question - why aren't the generated files the same? Is there a determinism problem here? This sounds like the image would change with each build and couldn't be reproduced so we have a bigger problem?
It calls certutil to create blank certificates:
certutil -N -d sql:${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
It should be current time related that create blank certificates in current directory, the key4.db files are different:
kkang@msp-lpggp1:~/buildarea/bar-build
$ touch empty kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *7fea1d4dbc99db3ba1b72e30428eb5dc key4.db* kkang@msp-lpggp1:~/buildarea/bar-build $ rm *.db kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *9fbbae3e2d65d29f51e357a2dc4650a2 key4.db*
Regards,
Kai
Quoted 5 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang
Re: [PATCH 05/10] nss: move create blank certificates to pkg_postinst
Quoted 47 lines · Kang Kai
Quoted 19 lines · Richard Purdie
Quoted 11 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
There is a multilib install file conflict of nss:
Quoted 3 lines
file
/etc/pki/nssdb/key4.dbconflicts between attempted installs of
lib32-nss-3.38-r0.corei7_32 and nss-3.38-r0.corei7_64Move the creation of blank certificates to
pkg_postinst. And check if
certificates exist already, don't re-create them.Quoted 6 lines
Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/nss/nss_3.38.bb | 32 +++++++++++++++++----- ---- -- 1 file changed, 20 insertions(+), 12 deletions(-)Quoted 7 lines
This does raise a question - why aren't the generated files the same?
Is there a determinism problem here? This sounds like the image would
change with each build and couldn't be reproduced so we have a bigger
problem?It calls certutil to create blank certificates:
certutil -N -d sql:${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
It should be current time related that create blank certificates in current directory, the key4.db files are different:
kkang@msp-lpggp1:~/buildarea/bar-build
$ touch empty kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *7fea1d4dbc99db3ba1b72e30428eb5dc key4.db* kkang@msp-lpggp1:~/buildarea/bar-build $ rm *.db
Quoted 8 lines
kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *9fbbae3e2d65d29f51e357a2dc4650a2 key4.db*
Can we generate them with a known standard time then? Is there some way to specify that or can we add one?
Cheers,
Richard
Re: [PATCH 05/10] nss: move create blank certificates to pkg_postinst
Quoted 54 lines · On 2018年10月02日 23:53, [email protected] wrote:
Quoted 45 lines · Kang Kai
Quoted 17 lines · Richard Purdie
Quoted 10 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
There is a multilib install file conflict of nss:
Quoted 3 lines
file
/etc/pki/nssdb/key4.dbconflicts between attempted installs of
lib32-nss-3.38-r0.corei7_32 and nss-3.38-r0.corei7_64Move the creation of blank certificates to
pkg_postinst. And check if
certificates exist already, don't re-create them.Quoted 6 lines
Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/nss/nss_3.38.bb | 32 +++++++++++++++++----- ---- -- 1 file changed, 20 insertions(+), 12 deletions(-)Quoted 7 lines
This does raise a question - why aren't the generated files the same?
Is there a determinism problem here? This sounds like the image would
change with each build and couldn't be reproduced so we have a bigger
problem?It calls certutil to create blank certificates:
certutil -N -d sql:${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
It should be current time related that create blank certificates in current directory, the key4.db files are different:
kkang@msp-lpggp1:~/buildarea/bar-build
$ touch empty kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *7fea1d4dbc99db3ba1b72e30428eb5dc key4.db* kkang@msp-lpggp1:~/buildarea/bar-build $ rm *.dbQuoted 8 lines
kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *9fbbae3e2d65d29f51e357a2dc4650a2 key4.db*
Quoted 2 lines
Can we generate them with a known standard time then? Is there some way to specify that or can we add one?
The md5sum of cert9.db are same but key4.db are different, so I have been checking the source code of nss but no conclusion yet.
Regards,
Kai
Quoted 5 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang
Re: [PATCH 05/10] nss: move create blank certificates to pkg_postinst
In reply to [email protected]Quoted 54 lines · On 2018年10月02日 23:53, [email protected] wrote:
Quoted 45 lines · Kang Kai
Quoted 17 lines · Richard Purdie
Quoted 10 lines · On Sat, 2018-09-29 at 13:43 +0800, [email protected] wrote:
From: Kai Kang <[email protected]>
There is a multilib install file conflict of nss:
Quoted 3 lines
file
/etc/pki/nssdb/key4.dbconflicts between attempted installs of
lib32-nss-3.38-r0.corei7_32 and nss-3.38-r0.corei7_64Move the creation of blank certificates to
pkg_postinst. And check if
certificates exist already, don't re-create them.Quoted 6 lines
Signed-off-by Kai Kang <[email protected]>--- meta/recipes-support/nss/nss_3.38.bb | 32 +++++++++++++++++----- ---- -- 1 file changed, 20 insertions(+), 12 deletions(-)Quoted 7 lines
This does raise a question - why aren't the generated files the same?
Is there a determinism problem here? This sounds like the image would
change with each build and couldn't be reproduced so we have a bigger
problem?It calls certutil to create blank certificates:
certutil -N -d sql:${D}${sysconfdir}/pki/nssdb/ -f ./empty_password
It should be current time related that create blank certificates in current directory, the key4.db files are different:
kkang@msp-lpggp1:~/buildarea/bar-build
$ touch empty kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *7fea1d4dbc99db3ba1b72e30428eb5dc key4.db* kkang@msp-lpggp1:~/buildarea/bar-build $ rm *.dbQuoted 8 lines
kkang@msp-lpggp1:~/buildarea/bar-build $ ./tmp/sysroots-components/x86_64/nss-native/usr/bin/certutil -N -d sql:./ -f ./empty password file contains no data kkang@msp-lpggp1:~/buildarea/bar-build $ md5sum *.db 1de1260b3f38349a8633d33acd4e4de7 cert9.db *9fbbae3e2d65d29f51e357a2dc4650a2 key4.db*
Quoted 2 lines
Can we generate them with a known standard time then? Is there some way to specify that or can we add one?
Unfortunately there is no such option for certutil when create new databases.
For Fedora, it provides pre-created blank database files. If provide blank db files is ok, I'll verify it for all archs.
Regards,
Kai
Quoted 5 lines
Cheers,
Richard
Signature · 2 lines
Regards, Neil | Kai Kang