On 09/18/2012 08:34 PM, Zhang, Jessica wrote: > Hi Laurentiu, > > Why this is only an issue for installation to a directory other than the > default e.g. /opt/poky ? Because of the internal opkg logic. Opkg keeps an internal database of all packages installed and the files that each package provides. By default all packages were built to install to /opt/poky/1.2+snapshot (I took this path as an example). When we provide an offline root directory (with -o option), let's assume it's /opt/poky/1.2+snapshot, all packages will be installed to /opt/poky/1.2+snapshot/opt/poky/1.2+snapshot. However, opkg will detect that the offline root matches the beginning of the files paths and will record the files without the first part: that is /opt/poky/1.2+snapshot/file instead of /opt/poky/1.2+snapshot/opt/poky/1.2+snapshot/file.
When another package is installed, opkg will look into its database and will try to see if the file to be installed in /opt/poky/1.2+snapshot/opt/poky/1.2+snapshot will overwrite any files in /opt/poky/1.2+snapshot. The answer is, of course, NO (since the paths are different) and the installation will go on. On the other hand, if we choose another offline directory(different from the default one), let's say /my/test, the files in it's internal database will contain the entire paths: that is /my/test/opt/poky/1.2+snapshot. When another package is installed to the same /my/test directory, opkg will now look into its database and see if the files to be installed in /my/test/opt/poky/1.2+snapshot overwrites any files in the same path. Since paths are now the same, installing two packages providing the same files will, of course, be detected and installation stopped. I hope this answers your question, Laurentiu > > Thanks, > Jessica > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of > Laurentiu Palcu > Sent: Tuesday, September 18, 2012 2:22 AM > To: [email protected] > Subject: [OE-core] [PATCH 1/4] adt-installer: fix package installation issue > > When the cross canadian toolchains are installed, for different > architectures, they might contain common files. This leads to installation > failures since the opkg, by default, does not overwrite files. This issue > happens, for example, for binutils packages (that contain the same locale > files) or gdb (which installs some syscalls xml files). The locale files > could be removed from the binutils cross-canadian package but we cannot do > the same for the syscalls GDB files which are used by GDB to display user > friendly names for the syscall numbers. Hence, the best solution is to force > opkg to overwrite these files. > > [YOCTO #3109] > > Signed-off-by: Laurentiu Palcu <[email protected]> > --- > .../adt-installer/scripts/adt_installer_internal | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git > a/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal > > b/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal > index 78ea6d0..f113aa4 100755 > --- > a/meta/recipes-devtools/installer/adt-installer/scripts/adt_installer_internal > +++ b/meta/recipes-devtools/installer/adt-installer/scripts/adt_installe > +++ r_internal > @@ -112,7 +112,7 @@ check_result > > #install below must sdk-host packages > OPKG_INSTALL_CMD="$OPKG_CMD " > -OPKG_INSTALL_NATIVE_CMD="$OPKG_INSTALL_CMD -f $OPKG_CONFIG_FILE -o > $NATIVE_INSTALL_DIR install" > +OPKG_INSTALL_NATIVE_CMD="$OPKG_INSTALL_CMD --force-overwrite -f > $OPKG_CONFIG_FILE -o $NATIVE_INSTALL_DIR install" > > BASE_HOSTSDK_PKGNAMES="pseudo opkg pkgconfig libtool autoconf automake" > for pkg in $BASE_HOSTSDK_PKGNAMES; do > -- > 1.7.9.5 > > > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > _______________________________________________ Openembedded-core mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
