[OE-core] [PATCH 1/4] adt-installer: fix package installation issue

Laurentiu Palcu laurentiu.palcu at intel.com
Tue Sep 18 18:54:21 UTC 2012



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: openembedded-core-bounces at lists.openembedded.org [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of Laurentiu Palcu
> Sent: Tuesday, September 18, 2012 2:22 AM
> To: openembedded-core at lists.openembedded.org
> 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 <laurentiu.palcu at intel.com>
> ---
>  .../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
> Openembedded-core at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
> 




More information about the Openembedded-core mailing list