[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