Bug 1592 - binary package install class
Summary: binary package install class
Status: VERIFIED FIXED
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: core (show other bugs)
Version: 1.3
Hardware: x86 Multiple
: Low enhancement
Target Milestone: 1.3 M4
Assignee: Robert Yang
QA Contact:
URL:
Whiteboard: (Patch Review)
: 2948 2949 (view as bug list)
Depends on:
Blocks:
 
Reported: 2011-10-04 07:18 UTC by Richard Purdie
Modified: 2012-09-19 07:13 UTC (History)
11 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Purdie 2011-10-04 07:18:23 UTC
It's been suggested that it would be a useful feature to be able to easily take an RPM or similar containing a software binary from a 3rd party software vendor and integrate it into an image created by the build system.
Comment 1 Kai Kang 2011-11-02 20:02:43 UTC
After accept the POSIX test feature, I don't have time to finish this feature, and Robert has send the letter to declare this about 2 weeks ago.
Transfer to Song. Thanks.
Comment 2 Robert Yang 2012-08-09 14:00:14 UTC
Here is the draft design, please feel free to give your comments.

1) User interfaces (Usage)
   Provide 2 variables in the conf files:
   # Specify where are the external binary pkgs:
   EXTERNAL_PACKAGE_DIRS = "dir1 dir2 ..."
   # Specify which pkgs will be installed
   EXTERNAL_INSTALL_PKGS = "pkg1 pkg2 ..."

2) Implementation summary:
   I think that we don't need a bbclass, modify package_xxx.bbclass and rootfs_xxx.bbclass (xxx is rpm, deb, or ipk) might be better: (Take rpm as an example)
   - Add the directory ${DEPLOY_DIR_RPM}/external, we use an "external" directory since we don't want the internal pkgs to be mixed, and it would be easy to remove it from the repo.
   - Copy the binary pkgs from ${EXTERNAL_PACKAGE_DIRS} to ${DEPLOY_DIR_RPM}/external, and put the pkgs in the correct arch directory.
   - Modify the package_update_index_rpm_common (and others) to create the repo for the pkgs in the external directory.
   - Add the ${EXTERNAL_INSTALL_PKGS} to INSTALL_PACKAGES_RPM, let the package manager resolve the dependencies and decide how to install it.
   - Do the similar steps to the sdk installation.

I think that split this feature into 3 ones would be better, this one is for rpm, the other 2 are for deb and ipk, each of them needs 5 days (estimation) will finish them in M4. I will split it if you are OK with it.
Comment 3 Robert Yang 2012-08-15 07:47:54 UTC
I've changed the design a little:

1) User interfaces (Usage)
# Specify where is the external binary pkg dir
#EXTERNAL_PACKAGE_DIR = "<path1> <path2> ..."
# Specify which pkg will be installed
#EXTERNAL_INSTALL_PACKAGE = "<pkg1> <pkg2> ..."

2) Implementation summary:
   - Add an external_package.bbclass which is used for adding the external pkgs to the repo.
   - Add the directory ${DEPLOY_DIR_RPM}/external, we use an "external" directory since we don't want the internal pkgs to be mixed, and it would be easy to remove it from the repo.
   - Add the ${EXTERNAL_INSTALL_PACKAGE} to INSTALL_PACKAGES_RPM, let the package manager resolve the dependencies and decide how to install it.
   - Do the similar steps to the sdk installation.

I have split this into 3, this one is for rpm, the other 2 (2948, 2949) are for ipk and deb, the patches for all the 3 will be sent later today.
Comment 4 Robert Yang 2012-09-02 07:40:09 UTC
*** Bug 2948 has been marked as a duplicate of this bug. ***
Comment 5 Robert Yang 2012-09-02 07:40:24 UTC
*** Bug 2949 has been marked as a duplicate of this bug. ***
Comment 7 liang li 2012-09-19 07:13:43 UTC
Verified on master branch 913944d904266bf90af0cad94b4f0fb3652bd29d