All of lore.kernel.org
 help / color / mirror / Atom feed
* adding specific config files
@ 2013-09-04 18:58 JC
  2013-09-04 19:58 ` JC
  0 siblings, 1 reply; 8+ messages in thread
From: JC @ 2013-09-04 18:58 UTC (permalink / raw)
  To: yocto@yoctoproject.org

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.

Thanks a lot,

Regards
Jay



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: adding specific config files
  2013-09-04 18:58 adding specific config files JC
@ 2013-09-04 19:58 ` JC
  2013-09-04 20:10   ` JC
  0 siblings, 1 reply; 8+ messages in thread
From: JC @ 2013-09-04 19:58 UTC (permalink / raw)
  To: yocto@yoctoproject.org

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) ?

Regards
Jay




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: adding specific config files
  2013-09-04 19:58 ` JC
@ 2013-09-04 20:10   ` JC
  2013-09-05  9:32     ` Paul Eggleton
  0 siblings, 1 reply; 8+ messages in thread
From: JC @ 2013-09-04 20:10 UTC (permalink / raw)
  To: yocto@yoctoproject.org

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 :(

Jay


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: adding specific config files
  2013-09-04 20:10   ` JC
@ 2013-09-05  9:32     ` Paul Eggleton
  2013-09-05  9:45       ` JC
  0 siblings, 1 reply; 8+ messages in thread
From: Paul Eggleton @ 2013-09-05  9:32 UTC (permalink / raw)
  To: JC; +Cc: yocto

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: adding specific config files
  2013-09-05  9:32     ` Paul Eggleton
@ 2013-09-05  9:45       ` JC
  2013-09-05 10:00         ` Paul Eggleton
  0 siblings, 1 reply; 8+ messages in thread
From: JC @ 2013-09-05  9:45 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto

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



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: adding specific config files
  2013-09-05  9:45       ` JC
@ 2013-09-05 10:00         ` Paul Eggleton
  2013-09-05 10:05           ` JC
  2013-09-05 13:09           ` (solved) " JC
  0 siblings, 2 replies; 8+ messages in thread
From: Paul Eggleton @ 2013-09-05 10:00 UTC (permalink / raw)
  To: JC; +Cc: yocto

On Thursday 05 September 2013 11:45:26 JC wrote:
> On 05/09/2013 11:32, Paul Eggleton wrote:
> > 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 ?

To be honest I always recommend people create their own image recipes
whatever they are doing since image recipes are usually trivial and
almost always need to be customised. The easiest way to do this is to
copy an existing image recipe and name it and modify it as you prefer.

> How can I make it dependend on the "package-management" feature?

If "package-management" is not in IMAGE_FEATURES the smart config gets deleted
anyway so this will have no effect. However, if desired you can use an inline
python expression within the shell function to do things conditionally, e.g.

if ${@base_contains("IMAGE_FEATURES", "package-management", "true", "false", d)}; then
...
fi

It's important to realise though that the evaluation of the inline
python happens when the expression is parsed, not when the shell
function it is executed; by the time the shell function executes the
expression will have been converted to its result.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: adding specific config files
  2013-09-05 10:00         ` Paul Eggleton
@ 2013-09-05 10:05           ` JC
  2013-09-05 13:09           ` (solved) " JC
  1 sibling, 0 replies; 8+ messages in thread
From: JC @ 2013-09-05 10:05 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto

[-- Attachment #1: Type: text/plain, Size: 2441 bytes --]

On jeu., sept. 5, 2013 at 12:00 PM, Paul Eggleton <paul.eggleton@linux.intel.com="mailto:paul.eggleton@linux.intel.com">> wrote:

    On Thursday 05 September 2013 11:45:26 JC wrote:

> On 05/09/2013 11:32, Paul Eggleton wrote:

> > 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 ?


To be honest I always recommend people create their own image recipes

whatever they are doing since image recipes are usually trivial and

almost always need to be customised. The easiest way to do this is to

copy an existing image recipe and name it and modify it as you prefer.


> How can I make it dependend on the "package-management" feature?


If "package-management" is not in IMAGE_FEATURES the smart config gets deleted

anyway so this will have no effect. However, if desired you can use an inline

python expression within the shell function to do things conditionally, e.g.


if ${@base_contains("IMAGE_FEATURES", "package-management", "true", "false", d)}; then

...

fi


It's important to realise though that the evaluation of the inline

python happens when the expression is parsed, not when the shell

function it is executed; by the time the shell function executes the

expression will have been converted to its result.


Cheers,

Paul




    ​

    
      


    Thanks ! I'm gonna try and let you know !

    
      


    Jay

[-- Attachment #2: Type: text/html, Size: 3344 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* (solved) Re: adding specific config files
  2013-09-05 10:00         ` Paul Eggleton
  2013-09-05 10:05           ` JC
@ 2013-09-05 13:09           ` JC
  1 sibling, 0 replies; 8+ messages in thread
From: JC @ 2013-09-05 13:09 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto

Hi Paul

On 05/09/2013 12:00, Paul Eggleton wrote:
> On Thursday 05 September 2013 11:45:26 JC wrote:
>> On 05/09/2013 11:32, Paul Eggleton wrote:
>>> 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 ?
> To be honest I always recommend people create their own image recipes
> whatever they are doing since image recipes are usually trivial and
> almost always need to be customised. The easiest way to do this is to
> copy an existing image recipe and name it and modify it as you prefer.
>
>> How can I make it dependend on the "package-management" feature?
> If "package-management" is not in IMAGE_FEATURES the smart config gets deleted
> anyway so this will have no effect. However, if desired you can use an inline
> python expression within the shell function to do things conditionally, e.g.
>
> if ${@base_contains("IMAGE_FEATURES", "package-management", "true", "false", d)}; then
> ...
> fi
>
> It's important to realise though that the evaluation of the inline
> python happens when the expression is parsed, not when the shell
> function it is executed; by the time the shell function executes the
> expression will have been converted to its result.
>


This worked perfectly. Just a slight append : your need to "install -d" 
the /var/lib/smartpm directory, otherwise it seems it's not created. Not 
a big deal anyway


Thanks again !!

Jay


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-09-05 13:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-04 18:58 adding specific config files JC
2013-09-04 19:58 ` JC
2013-09-04 20:10   ` JC
2013-09-05  9:32     ` Paul Eggleton
2013-09-05  9:45       ` JC
2013-09-05 10:00         ` Paul Eggleton
2013-09-05 10:05           ` JC
2013-09-05 13:09           ` (solved) " JC

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.