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.
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.
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.
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.
*** Bug 2948 has been marked as a duplicate of this bug. ***
*** Bug 2949 has been marked as a duplicate of this bug. ***
Merged into master: http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=208ff62db4cf977828f16a906429f857e025a789 http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=7d8b49cfe478e82ca0a06095a5b3699c50b34080
Verified on master branch 913944d904266bf90af0cad94b4f0fb3652bd29d