[yocto] adding specific config files

Paul Eggleton paul.eggleton at linux.intel.com
Thu Sep 5 02:32:10 PDT 2013


Hi Jay,

On Wednesday 04 September 2013 22:10:10 JC wrote:
> On 04/09/2013 21:58, JC wrote:
> > On 04/09/2013 20:58, JC wrote:
> >> Hi,
> >> 
> >> In my project, we have our own rpm repository and we use smartpm on
> >> the target.
> >> In order to have the target setup with the repo out of the box, we of
> >> course have added "package-management" in IMAGE_FEATURES. Now I'd
> >> like the target to have our repo address already configured.
> >> 
> >> The best way I found was to create a recipe in my overlay and hacking
> >> the system a little bit this way :
> >> do_install() {
> >> 
> >>    if
> >> 
> >> ${@base_contains('IMAGE_FEATURES','package-management','true','false',d)}
> >> ;
> >> then
> >> 
> >>         install -d ${D}/${sysconfdir}
> >>         install -m 644 ${WORKDIR}/config.in ${D}/var/lib/smart/config
> >>    
> >>    fi
> >> 
> >> }
> >> 
> >> where "config.in" is a simple copy of the non-human readable version
> >> of smartpm config file, generated manually on the target.
> >> 
> >> I was wondering if there would be a better way such as do not test in
> >> the do_install, but rather make the recipe dependent on the
> >> "package-management" image feature ? (so that do_install wouldn't
> >> even be considered if the option is not set), or any other smarter idea.
> > 
> > Actually I _need_ a better idea because mine doesn't work: it actually
> > creates what I want (/var/lib/smart/config) but since do_rootfs also
> > uses this directory to install packages, it wipes it out at the end of
> > the process... so my installation is removed :(
> > 
> > I'm sure someone else did something like this (but succeeded) ?
> 
> The guilty line is in /sources/poky/meta/classes/rootfs_rpm.bbclass
> 
> 145:         rm -rf ${IMAGE_ROOTFS}/var/lib/smart
> 
> :(
> 
> Whatever I want to do with packages, It'll be removed. There's probably
> an alternate way :(

Unfortunately we have to have a fixed configuration for smart during do_rootfs,
so it has to be written to. I think though that rather than trying to install
a configuration file for smart using a separate recipe, I would suggest
modifying the smart configuration at the end of do_rootfs to add the
configuration elements you need. The way to do this would be to define a shell
function that you can add a call to in ROOTFS_POSTPROCESS_COMMAND that will
run smart:

add_extra_smart_config() {
	smart --data-dir=${IMAGE_ROOTFS}/var/lib/smart channel --add rpmsys type=rpm-sys -y
}
ROOTFS_POSTPROCESS_COMMAND += "add_extra_smart_config; "

You can put the above in the image recipe itself or in a class that your image
recipe inherits.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the yocto mailing list