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

Robert P. J. Day rpjday at crashcourse.ca
Fri Mar 20 11:04:05 UTC 2020


  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.

  does anyone have any strong opinions on this? it seems mundane, but
i think the latter approach is still superior, especially since i
suspect most sample configuration files would have to be adjusted,
anyway.

  thoughts? just trying to collect some best practices to apply to
this project.

rday


More information about the Openembedded-core mailing list