All of lore.kernel.org
 help / color / mirror / Atom feed
* Per image customizations
@ 2016-05-31 16:05 Diego
  2016-05-31 23:57 ` Paul Eggleton
  0 siblings, 1 reply; 22+ messages in thread
From: Diego @ 2016-05-31 16:05 UTC (permalink / raw)
  To: yocto

Hi guys,

I've asked this question on IRC, but haven't received complete enough replies, 
so posting here.

I have my own layer with my recipes and customizations. In my layer I have two 
images, one which is the "regular OS" that runs the product application, and 
one which is the "flash OS", a minimal ramdisk OS that flashes the disks. I want 
the two images to have different fstab and inittab files: what is the correct 
way to do that? I know how to handle machine / arch specific differences, but I 
don't think there's a way to "dress a package depending on the image it gets 
included in", right?

Should I create my own IMAGE_FEATURE and hack my fstab and inittab when rootfs 
is created, sort of how the "read-only-rootfs" feature was done?
http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/core-image.bbclass?h=fido#n77

Thanks for any help you'll give.
Diego



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

* Re: Per image customizations
  2016-05-31 16:05 Per image customizations Diego
@ 2016-05-31 23:57 ` Paul Eggleton
  2016-06-01 12:25   ` Oleksandr Poznyak
  0 siblings, 1 reply; 22+ messages in thread
From: Paul Eggleton @ 2016-05-31 23:57 UTC (permalink / raw)
  To: Diego; +Cc: yocto

Hi Diego,

On Tue, 31 May 2016 18:05:19 Diego wrote:
> I've asked this question on IRC, but haven't received complete enough
> replies, so posting here.
> 
> I have my own layer with my recipes and customizations. In my layer I have
> two images, one which is the "regular OS" that runs the product
> application, and one which is the "flash OS", a minimal ramdisk OS that
> flashes the disks. I want the two images to have different fstab and
> inittab files: what is the correct way to do that? I know how to handle
> machine / arch specific differences, but I don't think there's a way to
> "dress a package depending on the image it gets included in", right?
> 
> Should I create my own IMAGE_FEATURE and hack my fstab and inittab when
> rootfs is created, sort of how the "read-only-rootfs" feature was done?
> http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/core-image.
> bbclass?h=fido#n77

You can do that, yes. The only other possibility is outright replacing the 
package providing the file (since you are free to specify whatever packages 
you want in the image, though you may have to break up packagegroup-core-boot 
to do it). This only works of course if either there are no dependencies on 
the package or you can satisfy any dependencies that might exist. It could be 
that for your "flash OS" image there aren't any, but it depends what it has in 
it.

It may be simpler just to hack it after the fact though. Note that you don't 
have to add an IMAGE_FEATURES item to do that - you could simply create a 
shell/python function and add a call to it in ROOTFS_POSTPROCESS_COMMAND. If 
the changes to the files are substantial you could even supply the alternative 
files in a separate package and then move them over the top of the original 
ones in the postprocessing function to save jumping through hoops adding files 
to the image recipe.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


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

* Re: Per image customizations
  2016-05-31 23:57 ` Paul Eggleton
@ 2016-06-01 12:25   ` Oleksandr Poznyak
  2016-06-01 16:15     ` Diego
  0 siblings, 1 reply; 22+ messages in thread
From: Oleksandr Poznyak @ 2016-06-01 12:25 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: Diego, yocto

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

Don't forget to add your fstab/inittab files into CONFFILES_${PN} cause if
the package that includes them will be changed and You'll update it via
package system, your POSTPROCESS hacks will be overwritten.

Anyway, its better to avoid POSTPROCESS if possible.
1) Create *.bbappend recipe base-files_%s.bbappend in your layer. It
appends to poky "base-files" recipe.
2) Create your own "python do_package_prepend" function where you should
make your recipe produce two different packages
3) Add them to DEPENDS in your image recipe

On Wed, Jun 1, 2016 at 2:57 AM, Paul Eggleton <paul.eggleton@linux.intel.com
> wrote:

> Hi Diego,
>
> On Tue, 31 May 2016 18:05:19 Diego wrote:
> > I've asked this question on IRC, but haven't received complete enough
> > replies, so posting here.
> >
> > I have my own layer with my recipes and customizations. In my layer I
> have
> > two images, one which is the "regular OS" that runs the product
> > application, and one which is the "flash OS", a minimal ramdisk OS that
> > flashes the disks. I want the two images to have different fstab and
> > inittab files: what is the correct way to do that? I know how to handle
> > machine / arch specific differences, but I don't think there's a way to
> > "dress a package depending on the image it gets included in", right?
> >
> > Should I create my own IMAGE_FEATURE and hack my fstab and inittab when
> > rootfs is created, sort of how the "read-only-rootfs" feature was done?
> >
> http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/core-image
> .
> > bbclass?h=fido#n77
>
> You can do that, yes. The only other possibility is outright replacing the
> package providing the file (since you are free to specify whatever packages
> you want in the image, though you may have to break up
> packagegroup-core-boot
> to do it). This only works of course if either there are no dependencies on
> the package or you can satisfy any dependencies that might exist. It could
> be
> that for your "flash OS" image there aren't any, but it depends what it
> has in
> it.
>
> It may be simpler just to hack it after the fact though. Note that you
> don't
> have to add an IMAGE_FEATURES item to do that - you could simply create a
> shell/python function and add a call to it in ROOTFS_POSTPROCESS_COMMAND.
> If
> the changes to the files are substantial you could even supply the
> alternative
> files in a separate package and then move them over the top of the original
> ones in the postprocessing function to save jumping through hoops adding
> files
> to the image recipe.
>
> Cheers,
> Paul
>
> --
>
> Paul Eggleton
> Intel Open Source Technology Centre
> --
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>

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

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

* Re: Per image customizations
  2016-06-01 12:25   ` Oleksandr Poznyak
@ 2016-06-01 16:15     ` Diego
  2016-06-01 18:57       ` Oleksandr Poznyak
  0 siblings, 1 reply; 22+ messages in thread
From: Diego @ 2016-06-01 16:15 UTC (permalink / raw)
  To: Oleksandr Poznyak; +Cc: Paul Eggleton, yocto

In data mercoledì 1 giugno 2016 15:25:09, Oleksandr Poznyak ha scritto:
> Don't forget to add your fstab/inittab files into CONFFILES_${PN} cause if
> the package that includes them will be changed and You'll update it via
> package system, your POSTPROCESS hacks will be overwritten.
> 
> Anyway, its better to avoid POSTPROCESS if possible.
> 1) Create *.bbappend recipe base-files_%s.bbappend in your layer. It
> appends to poky "base-files" recipe.
> 2) Create your own "python do_package_prepend" function where you should
> make your recipe produce two different packages
> 3) Add them to DEPENDS in your image recipe
> 

Hi Oleksandr,

your approach is really interesting, but I'm unsure how to proceed with step 
2) of your list.

I've added the following in the bbappend:

python do_package_prepend() {
    d.setVar('PACKAGES', "${PACKAGES} ${PN}-fstab-regular ${PN}-fstab-flash")
}

which creates the two additional packages, but then I'm confused on how to 
manage the two 'variant' fstab files. The FILES variable doesn't support 
"source -> destination", so how do I manage the fact that two different files 
need to go to the same destination path?

An easier option would be to remove fstab in the base-files_%s.bbappend, and 
create 2 different .bb recipes for the 2 fstab files.

Thanks anyhow for your help,
Diego



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

* Re: Per image customizations
  2016-06-01 16:15     ` Diego
@ 2016-06-01 18:57       ` Oleksandr Poznyak
  2016-06-03 13:52         ` Diego
  2016-06-06 20:55         ` Edward Wingate
  0 siblings, 2 replies; 22+ messages in thread
From: Oleksandr Poznyak @ 2016-06-01 18:57 UTC (permalink / raw)
  To: Diego; +Cc: Paul Eggleton, yocto

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

Here is the content of bbappend recipe for base-files recipe:

FILESEXTRAPATHS_append := "${THISDIR}/${PN}"

SRC_URI += "file://fstab-flash \
        file://fstab-regular \
        "

PACKAGES += " ${PN}-flash ${PN}-regular"
CONFFILES_${PN}-flash = "${CONFFILES_${PN}}"
CONFFILES_${PN}-regular = "${CONFFILES_${PN}}"

pkg_preinst_${PN}-flash = "${pkg_preinst_${PN}}"
pkg_preinst_${PN}-regular = "${pkg_preinst_${PN}}"

RREPLACES_${PN}-flash = "${PN}"
RPROVIDES_${PN}-flash = "${PN}"
RCONFLICTS_${PN}-flash = "${PN}"

RREPLACES_${PN}-regular = "${PN}"
RPROVIDES_${PN}-regular = "${PN}"
RCONFLICTS_${PN}-regular = "${PN}"

python populate_packages_prepend() {
    import shutil

    packages = ("${PN}-flash", "${PN}-regular")
    for package in packages:
        # copy ${PN} content to packages
        shutil.copytree("${PKGD}", "${PKGDEST}/%s" % package, symlinks=True)
        # replace fstab
        if package == "${PN}-flash":
            shutil.copy("${WORKDIR}/fstab-flash",
"${PKGDEST}/${PN}-flash/etc/fstab")
        else:
            shutil.copy("${WORKDIR}/fstab-regular",
"${PKGDEST}/${PN}-regular/etc/fstab")
}


This will produce two separate packages that will replace base-files
package.
Moreover, this trick allows You to modify base-files package separately for
flash-OS and regular-OS

in other recipes add packages like this:

base-files-flash or base-files-regular

Thanks,
Oleksandr Poznyak!

On Wed, Jun 1, 2016 at 7:15 PM, Diego <diego.ml@zoho.com> wrote:

> In data mercoledì 1 giugno 2016 15:25:09, Oleksandr Poznyak ha scritto:
> > Don't forget to add your fstab/inittab files into CONFFILES_${PN} cause
> if
> > the package that includes them will be changed and You'll update it via
> > package system, your POSTPROCESS hacks will be overwritten.
> >
> > Anyway, its better to avoid POSTPROCESS if possible.
> > 1) Create *.bbappend recipe base-files_%s.bbappend in your layer. It
> > appends to poky "base-files" recipe.
> > 2) Create your own "python do_package_prepend" function where you should
> > make your recipe produce two different packages
> > 3) Add them to DEPENDS in your image recipe
> >
>
> Hi Oleksandr,
>
> your approach is really interesting, but I'm unsure how to proceed with
> step
> 2) of your list.
>
> I've added the following in the bbappend:
>
> python do_package_prepend() {
>     d.setVar('PACKAGES', "${PACKAGES} ${PN}-fstab-regular
> ${PN}-fstab-flash")
> }
>
> which creates the two additional packages, but then I'm confused on how to
> manage the two 'variant' fstab files. The FILES variable doesn't support
> "source -> destination", so how do I manage the fact that two different
> files
> need to go to the same destination path?
>
> An easier option would be to remove fstab in the base-files_%s.bbappend,
> and
> create 2 different .bb recipes for the 2 fstab files.
>
> Thanks anyhow for your help,
> Diego
>
>

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

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

* Re: Per image customizations
  2016-06-01 18:57       ` Oleksandr Poznyak
@ 2016-06-03 13:52         ` Diego
  2016-06-03 17:56           ` Oleksandr Poznyak
  2016-06-06 20:55         ` Edward Wingate
  1 sibling, 1 reply; 22+ messages in thread
From: Diego @ 2016-06-03 13:52 UTC (permalink / raw)
  To: Oleksandr Poznyak; +Cc: Paul Eggleton, yocto

Hi Oleksandr,

In data mercoledì 1 giugno 2016 21:57:32, Oleksandr Poznyak ha scritto:
> Here is the content of bbappend recipe for base-files recipe:
> 
> FILESEXTRAPATHS_append := "${THISDIR}/${PN}"
> 
> SRC_URI += "file://fstab-flash \
>         file://fstab-regular \
>         "
> 
> PACKAGES += " ${PN}-flash ${PN}-regular"
> CONFFILES_${PN}-flash = "${CONFFILES_${PN}}"
> CONFFILES_${PN}-regular = "${CONFFILES_${PN}}"
> 
> pkg_preinst_${PN}-flash = "${pkg_preinst_${PN}}"
> pkg_preinst_${PN}-regular = "${pkg_preinst_${PN}}"
> 
> RREPLACES_${PN}-flash = "${PN}"
> RPROVIDES_${PN}-flash = "${PN}"
> RCONFLICTS_${PN}-flash = "${PN}"
> 
> RREPLACES_${PN}-regular = "${PN}"
> RPROVIDES_${PN}-regular = "${PN}"
> RCONFLICTS_${PN}-regular = "${PN}"
> 
> python populate_packages_prepend() {
>     import shutil
> 
>     packages = ("${PN}-flash", "${PN}-regular")
>     for package in packages:
>         # copy ${PN} content to packages
>         shutil.copytree("${PKGD}", "${PKGDEST}/%s" % package, symlinks=True)
> # replace fstab
>         if package == "${PN}-flash":
>             shutil.copy("${WORKDIR}/fstab-flash",
> "${PKGDEST}/${PN}-flash/etc/fstab")
>         else:
>             shutil.copy("${WORKDIR}/fstab-regular",
> "${PKGDEST}/${PN}-regular/etc/fstab")
> }
> 
> 
> This will produce two separate packages that will replace base-files
> package.
> Moreover, this trick allows You to modify base-files package separately for
> flash-OS and regular-OS
> 

This is very useful, thank you. With this code I'm able to have two different 
fstab files under packages-split:
./packages-split/base-files-regular/etc/fstab
./packages-split/base-files-flash/etc/fstab

Regardless of that though, the resulting rpm packages for "base-files-regular" 
and "base-files-flash" have the original fstab as in "base-files", which is 
different to both the fstabs in packages-split mentioned above.

I'm looking at what might be causing this, but any idea is welcome.

Thanks,
Diego



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

* Re: Per image customizations
  2016-06-03 13:52         ` Diego
@ 2016-06-03 17:56           ` Oleksandr Poznyak
  2016-06-06 13:27             ` Diego
  0 siblings, 1 reply; 22+ messages in thread
From: Oleksandr Poznyak @ 2016-06-03 17:56 UTC (permalink / raw)
  To: Diego; +Cc: Paul Eggleton, yocto

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

I found that that’s an issue with rpm packages. I didn't expect there might
be some issue with rpm. If you really don't care which package management
system to use, switch to deb:

PACKAGE_CLASSES = "package_deb"

On Fri, Jun 3, 2016 at 4:52 PM, Diego <diego.ml@zoho.com> wrote:

> Hi Oleksandr,
>
> In data mercoledì 1 giugno 2016 21:57:32, Oleksandr Poznyak ha scritto:
> > Here is the content of bbappend recipe for base-files recipe:
> >
> > FILESEXTRAPATHS_append := "${THISDIR}/${PN}"
> >
> > SRC_URI += "file://fstab-flash \
> >         file://fstab-regular \
> >         "
> >
> > PACKAGES += " ${PN}-flash ${PN}-regular"
> > CONFFILES_${PN}-flash = "${CONFFILES_${PN}}"
> > CONFFILES_${PN}-regular = "${CONFFILES_${PN}}"
> >
> > pkg_preinst_${PN}-flash = "${pkg_preinst_${PN}}"
> > pkg_preinst_${PN}-regular = "${pkg_preinst_${PN}}"
> >
> > RREPLACES_${PN}-flash = "${PN}"
> > RPROVIDES_${PN}-flash = "${PN}"
> > RCONFLICTS_${PN}-flash = "${PN}"
> >
> > RREPLACES_${PN}-regular = "${PN}"
> > RPROVIDES_${PN}-regular = "${PN}"
> > RCONFLICTS_${PN}-regular = "${PN}"
> >
> > python populate_packages_prepend() {
> >     import shutil
> >
> >     packages = ("${PN}-flash", "${PN}-regular")
> >     for package in packages:
> >         # copy ${PN} content to packages
> >         shutil.copytree("${PKGD}", "${PKGDEST}/%s" % package,
> symlinks=True)
> > # replace fstab
> >         if package == "${PN}-flash":
> >             shutil.copy("${WORKDIR}/fstab-flash",
> > "${PKGDEST}/${PN}-flash/etc/fstab")
> >         else:
> >             shutil.copy("${WORKDIR}/fstab-regular",
> > "${PKGDEST}/${PN}-regular/etc/fstab")
> > }
> >
> >
> > This will produce two separate packages that will replace base-files
> > package.
> > Moreover, this trick allows You to modify base-files package separately
> for
> > flash-OS and regular-OS
> >
>
> This is very useful, thank you. With this code I'm able to have two
> different
> fstab files under packages-split:
> ./packages-split/base-files-regular/etc/fstab
> ./packages-split/base-files-flash/etc/fstab
>
> Regardless of that though, the resulting rpm packages for
> "base-files-regular"
> and "base-files-flash" have the original fstab as in "base-files", which is
> different to both the fstabs in packages-split mentioned above.
>
> I'm looking at what might be causing this, but any idea is welcome.
>
> Thanks,
> Diego
>
>

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

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

* Re: Per image customizations
  2016-06-03 17:56           ` Oleksandr Poznyak
@ 2016-06-06 13:27             ` Diego
  2016-06-27  4:11               ` Paul Eggleton
  0 siblings, 1 reply; 22+ messages in thread
From: Diego @ 2016-06-06 13:27 UTC (permalink / raw)
  To: Oleksandr Poznyak; +Cc: Paul Eggleton, yocto

Hi Oleksandr,

In data venerdì 3 giugno 2016 20:56:32, Oleksandr Poznyak ha scritto:
> I found that that’s an issue with rpm packages. I didn't expect there might
> be some issue with rpm. If you really don't care which package management
> system to use, switch to deb:
> 
> PACKAGE_CLASSES = "package_deb"
> 

Thanks for looking at the problem, unfortunately migrating away from rpm is 
not an option for me at the moment. Is there a bug report for this rpm 
problem? Should I open one?

Thanks,
Diego



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

* Re: Per image customizations
  2016-06-01 18:57       ` Oleksandr Poznyak
  2016-06-03 13:52         ` Diego
@ 2016-06-06 20:55         ` Edward Wingate
  2016-06-06 21:10           ` Oleksandr Poznyak
  1 sibling, 1 reply; 22+ messages in thread
From: Edward Wingate @ 2016-06-06 20:55 UTC (permalink / raw)
  To: Oleksandr Poznyak, Paul Eggleton, yocto, Diego

On Wed, Jun 1, 2016 at 7:15 PM, Diego <diego.ml@zoho.com> wrote:
>
> Hi Oleksandr,
>
> your approach is really interesting, but I'm unsure how to proceed with
> step 2) of your list.
>
> I've added the following in the bbappend:
>
> python do_package_prepend() {
>     d.setVar('PACKAGES', "${PACKAGES} ${PN}-fstab-regular ${PN}-fstab-flash")
> }
>
> which creates the two additional packages, but then I'm confused on how to
> manage the two 'variant' fstab files. The FILES variable doesn't support
> "source -> destination", so how do I manage the fact that two different
> files need to go to the same destination path?
>
> An easier option would be to remove fstab in the base-files_%s.bbappend,
> and create 2 different .bb recipes for the 2 fstab files.

I hope you don't mind if I tag onto this thread, but I have a similar question.

I've been modifying inittab with a sysvinit-inittab_2.88dsf.bbappend
file that contains simply this:

do_install_append() {
    echo "scra:2345:respawn:/opt/script1.sh" >> ${D}${sysconfdir}/inittab
    echo "scrb:2345:respawn:/opt/script2.sh" >> ${D}${sysconfdir}/inittab
}

Now, I want to do this if a different image is being created:

do_install_append() {
    echo "scra:2345:respawn:/opt/script3.sh" >> ${D}${sysconfdir}/inittab
    echo "scrb:2345:respawn:/opt/script4.sh" >> ${D}${sysconfdir}/inittab
}

Can I duplicate and rename the bbappend file to have a different
bbappend execute based on the image being created?  Or perhaps
duplicate the do_install_append() function in the same file and rename
the functions to something like do_install_append_[something with
image name]()?

Or alternatively, can I set something in the image bb files that I can
then use in the sysvinit-inittab_2.88dsf.bbappend to determine which
to do?

Thanks for your help.


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

* Re: Per image customizations
  2016-06-06 20:55         ` Edward Wingate
@ 2016-06-06 21:10           ` Oleksandr Poznyak
  2016-06-06 22:06             ` Edward Wingate
  2016-06-07 10:20             ` Paul Eggleton
  0 siblings, 2 replies; 22+ messages in thread
From: Oleksandr Poznyak @ 2016-06-06 21:10 UTC (permalink / raw)
  To: Edward Wingate; +Cc: Paul Eggleton, Diego, yocto

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

Hi,
Unfortunately You can't have two *.bbappend files per one package (recipe).

You can create two new recipes where You'll install what You need and plus
add sysvinit-inittab to DEPENDS variable in those recipes. This will help
to retain the order of packages installation. Original sysvinit -> your
sysvinit.

In this situation You will have several recipes.

Thanks,
Oleksandr Poznyak!

On Mon, Jun 6, 2016 at 11:55 PM, Edward Wingate <edwingate8@gmail.com>
wrote:

> On Wed, Jun 1, 2016 at 7:15 PM, Diego <diego.ml@zoho.com> wrote:
> >
> > Hi Oleksandr,
> >
> > your approach is really interesting, but I'm unsure how to proceed with
> > step 2) of your list.
> >
> > I've added the following in the bbappend:
> >
> > python do_package_prepend() {
> >     d.setVar('PACKAGES', "${PACKAGES} ${PN}-fstab-regular
> ${PN}-fstab-flash")
> > }
> >
> > which creates the two additional packages, but then I'm confused on how
> to
> > manage the two 'variant' fstab files. The FILES variable doesn't support
> > "source -> destination", so how do I manage the fact that two different
> > files need to go to the same destination path?
> >
> > An easier option would be to remove fstab in the base-files_%s.bbappend,
> > and create 2 different .bb recipes for the 2 fstab files.
>
> I hope you don't mind if I tag onto this thread, but I have a similar
> question.
>
> I've been modifying inittab with a sysvinit-inittab_2.88dsf.bbappend
> file that contains simply this:
>
> do_install_append() {
>     echo "scra:2345:respawn:/opt/script1.sh" >> ${D}${sysconfdir}/inittab
>     echo "scrb:2345:respawn:/opt/script2.sh" >> ${D}${sysconfdir}/inittab
> }
>
> Now, I want to do this if a different image is being created:
>
> do_install_append() {
>     echo "scra:2345:respawn:/opt/script3.sh" >> ${D}${sysconfdir}/inittab
>     echo "scrb:2345:respawn:/opt/script4.sh" >> ${D}${sysconfdir}/inittab
> }
>
> Can I duplicate and rename the bbappend file to have a different
> bbappend execute based on the image being created?  Or perhaps
> duplicate the do_install_append() function in the same file and rename
> the functions to something like do_install_append_[something with
> image name]()?
>
> Or alternatively, can I set something in the image bb files that I can
> then use in the sysvinit-inittab_2.88dsf.bbappend to determine which
> to do?
>
> Thanks for your help.
>

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

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

* Re: Per image customizations
  2016-06-06 21:10           ` Oleksandr Poznyak
@ 2016-06-06 22:06             ` Edward Wingate
  2016-06-06 23:52               ` Edward Wingate
  2016-06-07 10:20             ` Paul Eggleton
  1 sibling, 1 reply; 22+ messages in thread
From: Edward Wingate @ 2016-06-06 22:06 UTC (permalink / raw)
  To: Oleksandr Poznyak; +Cc: Paul Eggleton, Diego, yocto

On Mon, Jun 6, 2016 at 2:10 PM, Oleksandr Poznyak
<oleksandr.poznyak@gmail.com> wrote:
> Hi,
> Unfortunately You can't have two *.bbappend files per one package (recipe).
>
> You can create two new recipes where You'll install what You need and plus
> add sysvinit-inittab to DEPENDS variable in those recipes. This will help to
> retain the order of packages installation. Original sysvinit -> your
> sysvinit.
>
> In this situation You will have several recipes.

I create two new recipes: image1-inittab.bb and image2-inittab.bb
The are identical except for their do_install_append() function:

[image1-inittab.bb]
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9bea9267288f79f074b2e000d3cf6412"
SRC_URI = "file://LICENSE"
S = "${WORKDIR}"
DEPENDS += " sysvinit-inittab"

do_install_append() {
    echo "scra:2345:respawn:/opt/script1.sh" >> ${D}${sysconfdir}/inittab
    echo "scrb:2345:respawn:/opt/script2.sh" >> ${D}${sysconfdir}/inittab
}

[image2-inittab.bb]
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9bea9267288f79f074b2e000d3cf6412"
SRC_URI = "file://LICENSE"
S = "${WORKDIR}"
DEPENDS += " sysvinit-inittab"

do_install_append() {
    echo "scra:2345:respawn:/opt/script3.sh" >> ${D}${sysconfdir}/inittab
    echo "scrb:2345:respawn:/opt/script4.sh" >> ${D}${sysconfdir}/inittab
}

Is this the gist of what needs to be done?

I get this error when creating either image:
| DEBUG: Executing shell function do_install
| /mnt/drive3/yocto/jethro/poky/build/tmp/work/cortexa9-vfp-neon-poky-linux-gnueabi/image1-inittab/1.0-r0/temp/run.do_install.23229:
108: /mnt/drive3/yocto/jethro/poky/build/tmp/work/cortexa9-vfp-neon-poky-linux-gnueabi/image1-inittab/1.0-r0/temp/run.do_install.23229:
cannot create /mnt/drive3/yocto/jethro/poky/build/tmp/work/cortexa9-vfp-neon-poky-linux-gnueabi/image1-inittab/1.0-r0/image/etc/inittab:
Directory nonexistent
| WARNING: exit code 2 from a shell command.

It seems I cannot just append to inittab using the echo statements
because /etc/inittab is not part of this recipe. Must I duplicate
inittab first in my imageX-inittab.bb recipes?


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

* Re: Per image customizations
  2016-06-06 22:06             ` Edward Wingate
@ 2016-06-06 23:52               ` Edward Wingate
  0 siblings, 0 replies; 22+ messages in thread
From: Edward Wingate @ 2016-06-06 23:52 UTC (permalink / raw)
  To: Oleksandr Poznyak; +Cc: Paul Eggleton, Diego, yocto

On Mon, Jun 6, 2016 at 3:06 PM, Edward Wingate <edwingate8@gmail.com> wrote:
> It seems I cannot just append to inittab using the echo statements
> because /etc/inittab is not part of this recipe. Must I duplicate
> inittab first in my imageX-inittab.bb recipes?

I modified the recipes to include their own copy of inittab:

LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9bea9267288f79f074b2e000d3cf6412"
SRC_URI = "file://LICENSE file://inittab-imageX"
S = "${WORKDIR}"
DEPENDS += " sysvinit-inittab"

FILES_${PN} = "/etc/inittab"

do_install () {
    install -d ${D}${sysconfdir}
    install -m 0644 -D ${S}/inittab-imageX ${D}${sysconfdir}/inittab
}

Everything builds successfully, but the inittab in the final image is
neither image1-inittab's nor image2-inittab's.  It is still using
sysvinit-inittab's version of inittab.  What else do I need to do so
it will use my imageX-inittab.bb recipe's version?

Thanks for your help!


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

* Re: Per image customizations
  2016-06-06 21:10           ` Oleksandr Poznyak
  2016-06-06 22:06             ` Edward Wingate
@ 2016-06-07 10:20             ` Paul Eggleton
  2016-06-07 10:51               ` Oleksandr Poznyak
  2016-06-07 15:57               ` Edward Wingate
  1 sibling, 2 replies; 22+ messages in thread
From: Paul Eggleton @ 2016-06-07 10:20 UTC (permalink / raw)
  To: yocto; +Cc: Diego

On Tue, 07 Jun 2016 00:10:58 Oleksandr Poznyak wrote:
> Unfortunately You can't have two *.bbappend files per one package (recipe).

Let's clarify that for the benefit of others reading along - you absolutely 
*can* have multiple bbappends per recipe. To answer the original question 
though, no you cannot have bbappends conditionally applied based on what image 
is being built - you cannot have other recipes built differently based on the 
image being built *period*. Other than what gets shared via the sysroot, 
recipes are largely independent of eachother, and that's by design.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


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

* Re: Per image customizations
  2016-06-07 10:20             ` Paul Eggleton
@ 2016-06-07 10:51               ` Oleksandr Poznyak
  2016-06-07 15:57               ` Edward Wingate
  1 sibling, 0 replies; 22+ messages in thread
From: Oleksandr Poznyak @ 2016-06-07 10:51 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto, Diego

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

Thanks, Paul. You are absolutely correct.

On Tue, Jun 7, 2016 at 1:20 PM, Paul Eggleton <paul.eggleton@linux.intel.com
> wrote:

> On Tue, 07 Jun 2016 00:10:58 Oleksandr Poznyak wrote:
> > Unfortunately You can't have two *.bbappend files per one package
> (recipe).
>
> Let's clarify that for the benefit of others reading along - you absolutely
> *can* have multiple bbappends per recipe. To answer the original question
> though, no you cannot have bbappends conditionally applied based on what
> image
> is being built - you cannot have other recipes built differently based on
> the
> image being built *period*. Other than what gets shared via the sysroot,
> recipes are largely independent of eachother, and that's by design.
>
> Cheers,
> Paul
>
> --
>
> Paul Eggleton
> Intel Open Source Technology Centre
>

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

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

* Re: Per image customizations
  2016-06-07 10:20             ` Paul Eggleton
  2016-06-07 10:51               ` Oleksandr Poznyak
@ 2016-06-07 15:57               ` Edward Wingate
  2016-06-07 20:47                 ` Paul Eggleton
  1 sibling, 1 reply; 22+ messages in thread
From: Edward Wingate @ 2016-06-07 15:57 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto, Diego

On Tue, Jun 7, 2016 at 3:20 AM, Paul Eggleton
<paul.eggleton@linux.intel.com> wrote:
> Let's clarify that for the benefit of others reading along - you absolutely
> *can* have multiple bbappends per recipe. To answer the original question
> though, no you cannot have bbappends conditionally applied based on what image
> is being built - you cannot have other recipes built differently based on the
> image being built *period*. Other than what gets shared via the sysroot,
> recipes are largely independent of eachother, and that's by design.

Thank you, I will abandon that line of inquiry.

So I now have recipes that attempt to overwrite inittab with their own
custom version.  These individual recipes are included in different
images and have DEPENDS += " sysvinit-inittab" in them.  However, the
resulting image still has the original inittab from sysvinit-inittab
recipe, not the custom inittab in my new recipes.

My recipes look like this now:

LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9bea9267288f79f074b2e000d3cf6412"
SRC_URI = "file://LICENSE file://inittab-imageX"
S = "${WORKDIR}"
DEPENDS += " sysvinit-inittab"

FILES_${PN} = "/etc/inittab"

do_install () {
    install -d ${D}${sysconfdir}
    install -m 0644 -D ${S}/inittab-imageX ${D}${sysconfdir}/inittab
}

Is there something more I'm missing?  Thanks.


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

* Re: Per image customizations
  2016-06-07 15:57               ` Edward Wingate
@ 2016-06-07 20:47                 ` Paul Eggleton
  2016-06-07 23:07                   ` Edward Wingate
  0 siblings, 1 reply; 22+ messages in thread
From: Paul Eggleton @ 2016-06-07 20:47 UTC (permalink / raw)
  To: Edward Wingate; +Cc: yocto, Diego

On Tue, 07 Jun 2016 08:57:24 Edward Wingate wrote:
> On Tue, Jun 7, 2016 at 3:20 AM, Paul Eggleton
> 
> <paul.eggleton@linux.intel.com> wrote:
> > Let's clarify that for the benefit of others reading along - you
> > absolutely
> > *can* have multiple bbappends per recipe. To answer the original question
> > though, no you cannot have bbappends conditionally applied based on what
> > image is being built - you cannot have other recipes built differently
> > based on the image being built *period*. Other than what gets shared via
> > the sysroot, recipes are largely independent of eachother, and that's by
> > design.
>
> Thank you, I will abandon that line of inquiry.
> 
> So I now have recipes that attempt to overwrite inittab with their own
> custom version.  These individual recipes are included in different
> images and have DEPENDS += " sysvinit-inittab" in them.  However, the
> resulting image still has the original inittab from sysvinit-inittab
> recipe, not the custom inittab in my new recipes.
> 
> My recipes look like this now:
> 
> LICENSE = "BSD"
> LIC_FILES_CHKSUM = "file://LICENSE;md5=9bea9267288f79f074b2e000d3cf6412"
> SRC_URI = "file://LICENSE file://inittab-imageX"
> S = "${WORKDIR}"
> DEPENDS += " sysvinit-inittab"
> 
> FILES_${PN} = "/etc/inittab"
> 
> do_install () {
>     install -d ${D}${sysconfdir}
>     install -m 0644 -D ${S}/inittab-imageX ${D}${sysconfdir}/inittab
> }
> 
> Is there something more I'm missing?  Thanks.

So what this will give you is alternative packages to be installed instead of 
sysvinit-inittab in your image. Have you verified (by way of the image 
manifest written next to the image file) that this package is actually being 
installed? What steps have you taken to ensure that it does get installed in 
preference to sysvinit-inittab?

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


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

* Re: Per image customizations
  2016-06-07 20:47                 ` Paul Eggleton
@ 2016-06-07 23:07                   ` Edward Wingate
  2016-06-07 23:23                     ` Paul Eggleton
  0 siblings, 1 reply; 22+ messages in thread
From: Edward Wingate @ 2016-06-07 23:07 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto, Diego

On Tue, Jun 7, 2016 at 1:47 PM, Paul Eggleton
<paul.eggleton@linux.intel.com> wrote:
>
> So what this will give you is alternative packages to be installed instead of
> sysvinit-inittab in your image.

I was under the (mistaken) impression that my recipe will run in
addition to, not instead of, sysvinit-inittab (occurring after it and
overwriting its inittab with my custom version).

> Have you verified (by way of the image manifest written next to the image file) that this package
> is actually being installed?

The manifest shows both sysvinit-inittab and my package being
installed in the image, but sysvinit-inittab's inittab apparently
takes precedence over mine.

> What steps have you taken to ensure that it does get installed in preference to sysvinit-inittab?

None, due to my mistaken impression.  After investigating your kind
inference with help of Yocto manual, I replaced in my recipe:
DEPENDS += " sysvinit-inittab"
with:
RREPLACES_${PN} = "sysvinit-inittab"

and it appears to be working now.  I've been using Yocto for a year
now, but still feel like I'm barely scratching the surface of it.  I
tend to get things to work by floundering about, so even though it
does works, I would appreciate knowing if this was the most proper
course of action.  Thanks!


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

* Re: Per image customizations
  2016-06-07 23:07                   ` Edward Wingate
@ 2016-06-07 23:23                     ` Paul Eggleton
  2016-06-08  8:58                       ` Oleksandr Poznyak
  0 siblings, 1 reply; 22+ messages in thread
From: Paul Eggleton @ 2016-06-07 23:23 UTC (permalink / raw)
  To: Edward Wingate; +Cc: yocto, Diego

On Tue, 07 Jun 2016 16:07:26 Edward Wingate wrote:
> On Tue, Jun 7, 2016 at 1:47 PM, Paul Eggleton
> <paul.eggleton@linux.intel.com> wrote:
> > So what this will give you is alternative packages to be installed instead
> > of sysvinit-inittab in your image.
> 
> I was under the (mistaken) impression that my recipe will run in
> addition to, not instead of, sysvinit-inittab (occurring after it and
> overwriting its inittab with my custom version).

The recipe will build in addition to sysvinit-inittab yes, but do_install for 
that recipe is just assembling the files ready for packaging - it doesn't 
directly install files into the image. When it comes time to assemble the 
image, all that is being done when you distil it down is that we install a 
bunch of packages.

> > Have you verified (by way of the image manifest written next to the image
> > file) that this package is actually being installed?
> 
> The manifest shows both sysvinit-inittab and my package being
> installed in the image, but sysvinit-inittab's inittab apparently
> takes precedence over mine.

Hmm, that is strange, because as they install the same file they ought to 
conflict. Perhaps as suggested elsewhere in this thread this is a bug (or at 
least undesirable behaviour) in rpm.

> > What steps have you taken to ensure that it does get installed in
> > preference to sysvinit-inittab?
>
> None, due to my mistaken impression.  After investigating your kind
> inference with help of Yocto manual, I replaced in my recipe:
> DEPENDS += " sysvinit-inittab"
> with:
> RREPLACES_${PN} = "sysvinit-inittab"
> 
> and it appears to be working now.  I've been using Yocto for a year
> now, but still feel like I'm barely scratching the surface of it.  I
> tend to get things to work by floundering about, so even though it
> does works, I would appreciate knowing if this was the most proper
> course of action.  Thanks!

I guess here you are getting into functionality that is not very well-defined, 
and you're also dealing with behaviour of the package manager rather than the 
build system itself (though I appreciate the lines are blurred from usage 
perspective). I guess it would help though if we would document a working 
procedure to do this kind of thing as it does come up from time to time.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


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

* Re: Per image customizations
  2016-06-07 23:23                     ` Paul Eggleton
@ 2016-06-08  8:58                       ` Oleksandr Poznyak
  2016-06-08 18:01                         ` Edward Wingate
  0 siblings, 1 reply; 22+ messages in thread
From: Oleksandr Poznyak @ 2016-06-08  8:58 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto, Diego

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

Hi, Edward.
Your approach is valid. But RREPLACES is not enough.

You should define that your package and original ones are conflicting and
that it provides the same as original one for other packages.

So in your recipe:

RPROVIDES_${PN} = "sysvinit-inittab"
RREPLACES_${PN} = "sysvinit-inittab"
RCONFLICTS_${PN} = "sysvinit-inittab"

Thanks,
Oleksandr Poznyak!


On Wed, Jun 8, 2016 at 2:23 AM, Paul Eggleton <paul.eggleton@linux.intel.com
> wrote:

> On Tue, 07 Jun 2016 16:07:26 Edward Wingate wrote:
> > On Tue, Jun 7, 2016 at 1:47 PM, Paul Eggleton
> > <paul.eggleton@linux.intel.com> wrote:
> > > So what this will give you is alternative packages to be installed
> instead
> > > of sysvinit-inittab in your image.
> >
> > I was under the (mistaken) impression that my recipe will run in
> > addition to, not instead of, sysvinit-inittab (occurring after it and
> > overwriting its inittab with my custom version).
>
> The recipe will build in addition to sysvinit-inittab yes, but do_install
> for
> that recipe is just assembling the files ready for packaging - it doesn't
> directly install files into the image. When it comes time to assemble the
> image, all that is being done when you distil it down is that we install a
> bunch of packages.
>
> > > Have you verified (by way of the image manifest written next to the
> image
> > > file) that this package is actually being installed?
> >
> > The manifest shows both sysvinit-inittab and my package being
> > installed in the image, but sysvinit-inittab's inittab apparently
> > takes precedence over mine.
>
> Hmm, that is strange, because as they install the same file they ought to
> conflict. Perhaps as suggested elsewhere in this thread this is a bug (or
> at
> least undesirable behaviour) in rpm.
>
> > > What steps have you taken to ensure that it does get installed in
> > > preference to sysvinit-inittab?
> >
> > None, due to my mistaken impression.  After investigating your kind
> > inference with help of Yocto manual, I replaced in my recipe:
> > DEPENDS += " sysvinit-inittab"
> > with:
> > RREPLACES_${PN} = "sysvinit-inittab"
> >
> > and it appears to be working now.  I've been using Yocto for a year
> > now, but still feel like I'm barely scratching the surface of it.  I
> > tend to get things to work by floundering about, so even though it
> > does works, I would appreciate knowing if this was the most proper
> > course of action.  Thanks!
>
> I guess here you are getting into functionality that is not very
> well-defined,
> and you're also dealing with behaviour of the package manager rather than
> the
> build system itself (though I appreciate the lines are blurred from usage
> perspective). I guess it would help though if we would document a working
> procedure to do this kind of thing as it does come up from time to time.
>
> Cheers,
> Paul
>
> --
>
> Paul Eggleton
> Intel Open Source Technology Centre
>

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

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

* Re: Per image customizations
  2016-06-08  8:58                       ` Oleksandr Poznyak
@ 2016-06-08 18:01                         ` Edward Wingate
  0 siblings, 0 replies; 22+ messages in thread
From: Edward Wingate @ 2016-06-08 18:01 UTC (permalink / raw)
  To: Oleksandr Poznyak; +Cc: Paul Eggleton, Diego, yocto

On Wed, Jun 8, 2016 at 1:58 AM, Oleksandr Poznyak
<oleksandr.poznyak@gmail.com> wrote:
> Hi, Edward.
> Your approach is valid. But RREPLACES is not enough.
>
> You should define that your package and original ones are conflicting and
> that it provides the same as original one for other packages.
>
> So in your recipe:
>
> RPROVIDES_${PN} = "sysvinit-inittab"
> RREPLACES_${PN} = "sysvinit-inittab"
> RCONFLICTS_${PN} = "sysvinit-inittab"

Thank you, Oleksandr and Paul, for your help and clarification.

And in case my hijacking of this thread caused OP's last question to
be ignored, I apologize and wish to put the thread back on track for
him:

On Mon, Jun 6, 2016 at 6:27 AM, Diego <diego.ml@zoho.com> wrote:
> Hi Oleksandr,
>
> In data venerdì 3 giugno 2016 20:56:32, Oleksandr Poznyak ha scritto:
>> I found that that’s an issue with rpm packages. I didn't expect there might
>> be some issue with rpm. If you really don't care which package management
>> system to use, switch to deb:
>>
>> PACKAGE_CLASSES = "package_deb"
>>
>
> Thanks for looking at the problem, unfortunately migrating away from rpm is
> not an option for me at the moment. Is there a bug report for this rpm
> problem? Should I open one?


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

* Re: Per image customizations
  2016-06-06 13:27             ` Diego
@ 2016-06-27  4:11               ` Paul Eggleton
  2016-07-01  9:18                 ` Diego
  0 siblings, 1 reply; 22+ messages in thread
From: Paul Eggleton @ 2016-06-27  4:11 UTC (permalink / raw)
  To: Diego; +Cc: yocto

On Mon, 06 Jun 2016 15:27:17 Diego wrote:
> Hi Oleksandr,
> 
> In data venerdì 3 giugno 2016 20:56:32, Oleksandr Poznyak ha scritto:
> > I found that that’s an issue with rpm packages. I didn't expect there
> > might
> > be some issue with rpm. If you really don't care which package management
> > system to use, switch to deb:
> > 
> > PACKAGE_CLASSES = "package_deb"
> 
> Thanks for looking at the problem, unfortunately migrating away from rpm is
> not an option for me at the moment. Is there a bug report for this rpm
> problem? Should I open one?

I'm not aware of one - could you please file a bug? Have you found any further 
information?

Thanks,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


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

* Re: Per image customizations
  2016-06-27  4:11               ` Paul Eggleton
@ 2016-07-01  9:18                 ` Diego
  0 siblings, 0 replies; 22+ messages in thread
From: Diego @ 2016-07-01  9:18 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: yocto

In data lunedì 27 giugno 2016 16:11:30, Paul Eggleton ha scritto:
> On Mon, 06 Jun 2016 15:27:17 Diego wrote:
> > Hi Oleksandr,
> > 
> > In data venerdì 3 giugno 2016 20:56:32, Oleksandr Poznyak ha scritto:
> > > I found that that’s an issue with rpm packages. I didn't expect there
> > > might
> > > be some issue with rpm. If you really don't care which package
> > > management
> > > system to use, switch to deb:
> > > 
> > > PACKAGE_CLASSES = "package_deb"
> > 
> > Thanks for looking at the problem, unfortunately migrating away from rpm
> > is
> > not an option for me at the moment. Is there a bug report for this rpm
> > problem? Should I open one?
> 
> I'm not aware of one - could you please file a bug? Have you found any
> further information?
> 

Hi Paul and all,

I've created one here:
https://bugzilla.yoctoproject.org/show_bug.cgi?id=9863

Don't know if bug is categorized correctly, but at least it is a starting 
point.

Thanks,
Diego



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

end of thread, other threads:[~2016-07-01  9:19 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-31 16:05 Per image customizations Diego
2016-05-31 23:57 ` Paul Eggleton
2016-06-01 12:25   ` Oleksandr Poznyak
2016-06-01 16:15     ` Diego
2016-06-01 18:57       ` Oleksandr Poznyak
2016-06-03 13:52         ` Diego
2016-06-03 17:56           ` Oleksandr Poznyak
2016-06-06 13:27             ` Diego
2016-06-27  4:11               ` Paul Eggleton
2016-07-01  9:18                 ` Diego
2016-06-06 20:55         ` Edward Wingate
2016-06-06 21:10           ` Oleksandr Poznyak
2016-06-06 22:06             ` Edward Wingate
2016-06-06 23:52               ` Edward Wingate
2016-06-07 10:20             ` Paul Eggleton
2016-06-07 10:51               ` Oleksandr Poznyak
2016-06-07 15:57               ` Edward Wingate
2016-06-07 20:47                 ` Paul Eggleton
2016-06-07 23:07                   ` Edward Wingate
2016-06-07 23:23                     ` Paul Eggleton
2016-06-08  8:58                       ` Oleksandr Poznyak
2016-06-08 18:01                         ` Edward Wingate

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.