[OE-core] recipe design curiosity: how to best install a package configuration file?

Quentin Schulz quentin.schulz at streamunlimited.com
Fri Mar 20 12:12:16 UTC 2020


Hi Robert,

On Fri, Mar 20, 2020 at 07:04:05AM -0400, Robert P. J. Day wrote:
> 
>   got into a discussion yesterday about the "cleanest" way to design a
> .bbappend file to install a package's configuration file, so i'm
> curious about best practices, and here's an example. (and i'm asking
> as it looks like this will be an issue for a number of recipes i'm
> looking at.)
> 
>   current recipe for conntrack-tools:
> 
> http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-filter/conntrack-tools/conntrack-tools_1.4.5.bb
> 
> note how the recipe install step installs a conntrack.conf.sample
> file:
> 
> do_install_append() {
>   install -d ${D}/${sysconfdir}/conntrackd
>   install -d ${D}/${sysconfdir}/init.d
>   install -m 0644 ${S}/doc/sync/ftfw/conntrackd.conf ${D}/${sysconfdir}/conntrackd/conntrackd.conf.sample
>   ...
> 
> so far, so good. now, in cases where a sample conf file is provided,
> there is, of course, no guarantee that it will be applicable out of
> the box -- one *expects* that it might be necessary to tweak such a
> file and install it as part of a .bbappend file. and here's the point
> of contention.
> 
>   in this current situation, it turns out that that sample conf file
> just happens to be appropriate, so the entire .bbappend file for this
> recipe consists of:
> 
> do_install_append () {
>     install -m 0644  \
>     ${D}/${sysconfdir}/conntrackd/conntrackd.conf.sample \
>     ${D}/${sysconfdir}/conntrackd/conntrackd.conf
> }
> 
>   yes, that will work, but i suggested that, even though it's
> convenient, the problem with that approach is that looking at the
> .bbappend file doesn't show you the contents of the file that will be
> installed. to see the actual conf file, you'd have to peruse the
> source, or check the final result ... you get the idea.
> 
>   i suggested that, even though the sample file in *this* case was
> perfectly appropriate, i would choose to make a copy of it under
> files/, and install the conf file from *there*, the advantage being
> that the actual file being installed is immediately readable.
> 

Have a look at how wpa-supplicant is doing it.

It has two config files. wpa-supplicant.conf which is going straight
to the docs directory on the rootfs and wpa-supplicant.conf-sane which
is the one used by wpa-supplicant at runtime.

So when you want to override the default wpa-supplicant.conf, you
override wpa-supplicant.conf-sane in a bbappend.

I don't know if it's the proper way, but that's one and particularly in
poky which is usually done with best practices in mind.

Quentin


More information about the Openembedded-core mailing list