[yocto] adding specific config files

JC jc at vtkloud.com
Thu Sep 5 02:45:26 PDT 2013


On 05/09/2013 11:32, Paul Eggleton wrote:
> 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
>

Thanks, I'm going to try it !!

Assuming I don't want to create a new image (i still haven't exactly 
figured how to do this in a clean way), where should I append this code ?
How can I make it dependend on the "package-management" feature?

Thanks again,
Jay




More information about the yocto mailing list