* [RFC] Interface for installing bootloaders @ 2018-09-04 7:17 Jan Kiszka 2018-09-04 9:27 ` Claudius Heine 0 siblings, 1 reply; 9+ messages in thread From: Jan Kiszka @ 2018-09-04 7:17 UTC (permalink / raw) To: isar-users, Claudius Heine, Henning Schild, Andreas Reichel Hi all, for installing a bootloader into an image, a number of packages have to be installed into the buildchroot. These can be prebuilt packages or packages we build via Isar. Currently, we only handle the case of WIC requiring prebuilt Debian packages, and that in a hacky way (no proper distro abstraction, unneeded installation of unused dependencies). This proposal aims at providing a more holistic solution: - Introduce new variables that express the two types of dependencies: - BOOTLOADER_PREBUILT - BOOTLOADER_CUSTOM So there is no "WIC" in these, any imaging recipe can use them. - Imaging recipes (e.g. via classes/wic-img.bbclass) should - install all packages from BOOTLOADER_PREBUILT and BOOTLOADER_CUSTOM into the buildchroot - DEPEND on all recipes in BOOTLOADER_CUSTOM - Define some common dependencies in conf/distro/${DISTRO}.conf: - GRUB_PREBUILT - GRUB_PREBUILT_append_${DISTRO_ARCH} - SYSLINUX_PREBUILT - ... Those variables can then be used to initialize BOOTLOADER_PREBUILT as needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in buildchroot-target.bb. - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the conf/machine/${MACHINE}.conf or some overriding conf file - basically the same one that selects IMAGE_TYPE and WKS_FILE. Anything I missed? Better suggestions? Eventually, when we can derive bitbake recipe dependencies automatically from package dependencies, PREBUILT and CUSTOM could be folded together. Right now, we need that split. Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-04 7:17 [RFC] Interface for installing bootloaders Jan Kiszka @ 2018-09-04 9:27 ` Claudius Heine 2018-09-04 9:33 ` Jan Kiszka 2018-09-05 6:08 ` Jan Kiszka 0 siblings, 2 replies; 9+ messages in thread From: Claudius Heine @ 2018-09-04 9:27 UTC (permalink / raw) To: [ext] Jan Kiszka, isar-users, Claudius Heine, Henning Schild, Andreas Reichel [-- Attachment #1: Type: text/plain, Size: 2217 bytes --] Hi Jan, On 2018-09-04 09:17, [ext] Jan Kiszka wrote: > Hi all, > > for installing a bootloader into an image, a number of packages have to > be installed into the buildchroot. These can be prebuilt packages or > packages we build via Isar. Currently, we only handle the case of WIC > requiring prebuilt Debian packages, and that in a hacky way (no proper > distro abstraction, unneeded installation of unused dependencies). This > proposal aims at providing a more holistic solution: > > - Introduce new variables that express the two types of dependencies: > - BOOTLOADER_PREBUILT > - BOOTLOADER_CUSTOM > > So there is no "WIC" in these, any imaging recipe can use them. > > - Imaging recipes (e.g. via classes/wic-img.bbclass) should > - install all packages from BOOTLOADER_PREBUILT and BOOTLOADER_CUSTOM > into the buildchroot > - DEPEND on all recipes in BOOTLOADER_CUSTOM > > - Define some common dependencies in conf/distro/${DISTRO}.conf: > - GRUB_PREBUILT > - GRUB_PREBUILT_append_${DISTRO_ARCH} > - SYSLINUX_PREBUILT > - ... > > Those variables can then be used to initialize BOOTLOADER_PREBUILT as > needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in > buildchroot-target.bb. > > - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the > conf/machine/${MACHINE}.conf or some overriding conf file - basically > the same one that selects IMAGE_TYPE and WKS_FILE. > > Anything I missed? Better suggestions? Eventually, when we can derive > bitbake recipe dependencies automatically from package dependencies, > PREBUILT and CUSTOM could be folded together. Right now, we need that > split. > > Jan I have a class that I use for the current project that allows installing additional packages into the buildchroot from within the image. I didn't had time to prepare patches for it for mainline isar. But maybe that goes into to right direction. I attached it. Cheers, Claudius -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de [-- Attachment #2: buildchroot-depends.bbclass --] [-- Type: text/plain, Size: 1459 bytes --] BUILDCHROOT_EXTRA_INSTALL ??= "" MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" do_buildchroot_extra_install[deptask] = "do_deploy_deb" do_buildchroot_extra_install[stamp-extra-info] = "${DISTRO}-${MACHINE}" do_buildchroot_extra_install() { PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", True).split())}" if [ -z "$PACKAGES" ]; then bbnote "No packages installed" exit fi sudo flock ${MOUNT_LOCKFILE} -c ' \ if ! grep -q ${BUILDCHROOT_DIR}/isar-apt /proc/mounts; then mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt mount --bind ${DL_DIR} ${BUILDCHROOT_DIR}/downloads mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${BUILDCHROOT_DIR}/dev mount -t proc none ${BUILDCHROOT_DIR}/proc fi' sudo chroot ${BUILDCHROOT_DIR} \ apt-get update \ -o Dir::Etc::sourcelist="sources.list.d/multistrap-isar-apt.list" \ -o Dir::Etc::sourceparts="-" \ -o APT::Get::List-Cleanup="0" sudo chroot ${BUILDCHROOT_DIR} \ apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y \ --allow-unauthenticated install \ $PACKAGES } addtask buildchroot_extra_install before do_rootfs ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-04 9:27 ` Claudius Heine @ 2018-09-04 9:33 ` Jan Kiszka 2018-09-05 6:08 ` Jan Kiszka 1 sibling, 0 replies; 9+ messages in thread From: Jan Kiszka @ 2018-09-04 9:33 UTC (permalink / raw) To: Claudius Heine, isar-users, Claudius Heine, Henning Schild, Andreas Reichel On 2018-09-04 11:27, Claudius Heine wrote: > Hi Jan, > > On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >> Hi all, >> >> for installing a bootloader into an image, a number of packages have >> to be installed into the buildchroot. These can be prebuilt packages >> or packages we build via Isar. Currently, we only handle the case of >> WIC requiring prebuilt Debian packages, and that in a hacky way (no >> proper distro abstraction, unneeded installation of unused >> dependencies). This proposal aims at providing a more holistic solution: >> >> - Introduce new variables that express the two types of dependencies: >> - BOOTLOADER_PREBUILT >> - BOOTLOADER_CUSTOM >> >> So there is no "WIC" in these, any imaging recipe can use them. >> >> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >> - install all packages from BOOTLOADER_PREBUILT and BOOTLOADER_CUSTOM >> into the buildchroot >> - DEPEND on all recipes in BOOTLOADER_CUSTOM >> >> - Define some common dependencies in conf/distro/${DISTRO}.conf: >> - GRUB_PREBUILT >> - GRUB_PREBUILT_append_${DISTRO_ARCH} >> - SYSLINUX_PREBUILT >> - ... >> >> Those variables can then be used to initialize BOOTLOADER_PREBUILT as >> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >> buildchroot-target.bb. >> >> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >> conf/machine/${MACHINE}.conf or some overriding conf file - basically >> the same one that selects IMAGE_TYPE and WKS_FILE. >> >> Anything I missed? Better suggestions? Eventually, when we can derive >> bitbake recipe dependencies automatically from package dependencies, >> PREBUILT and CUSTOM could be folded together. Right now, we need that >> split. >> >> Jan > > I have a class that I use for the current project that allows installing > additional packages into the buildchroot from within the image. I didn't > had time to prepare patches for it for mainline isar. But maybe that > goes into to right direction. > > I attached it. Yeah, can serve as pattern. I'd just like to abstract away from the user that fact the bootloader deps go into buildchroot, i.e. the user interface shall not be BUILDCHROOT_EXTRA_INSTALL / BUILDCHROOT_BUILD_DEP in the context of bootloader installation. Jan ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-04 9:27 ` Claudius Heine 2018-09-04 9:33 ` Jan Kiszka @ 2018-09-05 6:08 ` Jan Kiszka 2018-09-05 7:34 ` Claudius Heine 1 sibling, 1 reply; 9+ messages in thread From: Jan Kiszka @ 2018-09-05 6:08 UTC (permalink / raw) To: Claudius Heine, isar-users, Claudius Heine, Henning Schild, Andreas Reichel On 2018-09-04 11:27, Claudius Heine wrote: > Hi Jan, > > On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >> Hi all, >> >> for installing a bootloader into an image, a number of packages have >> to be installed into the buildchroot. These can be prebuilt packages >> or packages we build via Isar. Currently, we only handle the case of >> WIC requiring prebuilt Debian packages, and that in a hacky way (no >> proper distro abstraction, unneeded installation of unused >> dependencies). This proposal aims at providing a more holistic solution: >> >> - Introduce new variables that express the two types of dependencies: >> - BOOTLOADER_PREBUILT >> - BOOTLOADER_CUSTOM >> >> So there is no "WIC" in these, any imaging recipe can use them. >> >> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >> - install all packages from BOOTLOADER_PREBUILT and BOOTLOADER_CUSTOM >> into the buildchroot >> - DEPEND on all recipes in BOOTLOADER_CUSTOM >> >> - Define some common dependencies in conf/distro/${DISTRO}.conf: >> - GRUB_PREBUILT >> - GRUB_PREBUILT_append_${DISTRO_ARCH} >> - SYSLINUX_PREBUILT >> - ... >> >> Those variables can then be used to initialize BOOTLOADER_PREBUILT as >> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >> buildchroot-target.bb. >> >> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >> conf/machine/${MACHINE}.conf or some overriding conf file - basically >> the same one that selects IMAGE_TYPE and WKS_FILE. >> >> Anything I missed? Better suggestions? Eventually, when we can derive >> bitbake recipe dependencies automatically from package dependencies, >> PREBUILT and CUSTOM could be folded together. Right now, we need that >> split. >> >> Jan > > I have a class that I use for the current project that allows installing > additional packages into the buildchroot from within the image. I didn't > had time to prepare patches for it for mainline isar. But maybe that > goes into to right direction. > > I attached it. ... > BUILDCHROOT_EXTRA_INSTALL ??= "" > > MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" > > BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" > BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" > > do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" > do_buildchroot_extra_install[deptask] = "do_deploy_deb" > do_buildchroot_extra_install[stamp-extra-info] = "${DISTRO}-${MACHINE}" > do_buildchroot_extra_install() { > PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", True).split())}" > Can you explain the magic dance in the line above? I don't see its need yet. > if [ -z "$PACKAGES" ]; then ...provided you do "[ -z $VAR ]" here to catch VAR=" ". > bbnote "No packages installed" > exit > fi > > sudo flock ${MOUNT_LOCKFILE} -c ' \ > if ! grep -q ${BUILDCHROOT_DIR}/isar-apt /proc/mounts; then > mount --bind ${DEPLOY_DIR_APT}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt > mount --bind ${DL_DIR} ${BUILDCHROOT_DIR}/downloads > mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${BUILDCHROOT_DIR}/dev > mount -t proc none ${BUILDCHROOT_DIR}/proc > fi' > > sudo chroot ${BUILDCHROOT_DIR} \ > apt-get update \ > -o Dir::Etc::sourcelist="sources.list.d/multistrap-isar-apt.list" \ > -o Dir::Etc::sourceparts="-" \ > -o APT::Get::List-Cleanup="0" > > sudo chroot ${BUILDCHROOT_DIR} \ > apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y \ > --allow-unauthenticated install \ > $PACKAGES > } > > addtask buildchroot_extra_install before do_rootfs Thanks, Jan ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-05 6:08 ` Jan Kiszka @ 2018-09-05 7:34 ` Claudius Heine 2018-09-05 7:47 ` Jan Kiszka 0 siblings, 1 reply; 9+ messages in thread From: Claudius Heine @ 2018-09-05 7:34 UTC (permalink / raw) To: Jan Kiszka, isar-users, Claudius Heine, Henning Schild, Andreas Reichel Hi Jan, On 2018-09-05 08:08, Jan Kiszka wrote: > On 2018-09-04 11:27, Claudius Heine wrote: >> Hi Jan, >> >> On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >>> Hi all, >>> >>> for installing a bootloader into an image, a number of packages have >>> to be installed into the buildchroot. These can be prebuilt packages >>> or packages we build via Isar. Currently, we only handle the case of >>> WIC requiring prebuilt Debian packages, and that in a hacky way (no >>> proper distro abstraction, unneeded installation of unused >>> dependencies). This proposal aims at providing a more holistic solution: >>> >>> - Introduce new variables that express the two types of dependencies: >>> - BOOTLOADER_PREBUILT >>> - BOOTLOADER_CUSTOM >>> >>> So there is no "WIC" in these, any imaging recipe can use them. >>> >>> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >>> - install all packages from BOOTLOADER_PREBUILT and >>> BOOTLOADER_CUSTOM >>> into the buildchroot >>> - DEPEND on all recipes in BOOTLOADER_CUSTOM >>> >>> - Define some common dependencies in conf/distro/${DISTRO}.conf: >>> - GRUB_PREBUILT >>> - GRUB_PREBUILT_append_${DISTRO_ARCH} >>> - SYSLINUX_PREBUILT >>> - ... >>> >>> Those variables can then be used to initialize BOOTLOADER_PREBUILT as >>> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >>> buildchroot-target.bb. >>> >>> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >>> conf/machine/${MACHINE}.conf or some overriding conf file - basically >>> the same one that selects IMAGE_TYPE and WKS_FILE. >>> >>> Anything I missed? Better suggestions? Eventually, when we can derive >>> bitbake recipe dependencies automatically from package dependencies, >>> PREBUILT and CUSTOM could be folded together. Right now, we need that >>> split. >>> >>> Jan >> >> I have a class that I use for the current project that allows >> installing additional packages into the buildchroot from within the >> image. I didn't had time to prepare patches for it for mainline isar. >> But maybe that goes into to right direction. >> >> I attached it. > > ... > >> BUILDCHROOT_EXTRA_INSTALL ??= "" >> >> MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" >> >> BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" >> BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" >> >> do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" >> do_buildchroot_extra_install[deptask] = "do_deploy_deb" >> do_buildchroot_extra_install[stamp-extra-info] = "${DISTRO}-${MACHINE}" >> do_buildchroot_extra_install() { >> PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", >> True).split())}" >> > > Can you explain the magic dance in the line above? I don't see its need > yet. > >> if [ -z "$PACKAGES" ]; then > > ...provided you do "[ -z $VAR ]" here to catch VAR=" ". In sh i get: $ tets="asdf asdf asdf asdf" $ [ -z $tets ] && echo yes sh: 2: [: asdf: unexpected operator Cheers, Claudius -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-05 7:34 ` Claudius Heine @ 2018-09-05 7:47 ` Jan Kiszka 2018-09-05 7:57 ` Claudius Heine 0 siblings, 1 reply; 9+ messages in thread From: Jan Kiszka @ 2018-09-05 7:47 UTC (permalink / raw) To: Claudius Heine, isar-users, Claudius Heine, Henning Schild, Andreas Reichel On 2018-09-05 09:34, Claudius Heine wrote: > Hi Jan, > > On 2018-09-05 08:08, Jan Kiszka wrote: >> On 2018-09-04 11:27, Claudius Heine wrote: >>> Hi Jan, >>> >>> On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >>>> Hi all, >>>> >>>> for installing a bootloader into an image, a number of packages have >>>> to be installed into the buildchroot. These can be prebuilt packages >>>> or packages we build via Isar. Currently, we only handle the case of >>>> WIC requiring prebuilt Debian packages, and that in a hacky way (no >>>> proper distro abstraction, unneeded installation of unused >>>> dependencies). This proposal aims at providing a more holistic >>>> solution: >>>> >>>> - Introduce new variables that express the two types of dependencies: >>>> - BOOTLOADER_PREBUILT >>>> - BOOTLOADER_CUSTOM >>>> >>>> So there is no "WIC" in these, any imaging recipe can use them. >>>> >>>> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >>>> - install all packages from BOOTLOADER_PREBUILT and >>>> BOOTLOADER_CUSTOM >>>> into the buildchroot >>>> - DEPEND on all recipes in BOOTLOADER_CUSTOM >>>> >>>> - Define some common dependencies in conf/distro/${DISTRO}.conf: >>>> - GRUB_PREBUILT >>>> - GRUB_PREBUILT_append_${DISTRO_ARCH} >>>> - SYSLINUX_PREBUILT >>>> - ... >>>> >>>> Those variables can then be used to initialize >>>> BOOTLOADER_PREBUILT as >>>> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >>>> buildchroot-target.bb. >>>> >>>> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >>>> conf/machine/${MACHINE}.conf or some overriding conf file - >>>> basically >>>> the same one that selects IMAGE_TYPE and WKS_FILE. >>>> >>>> Anything I missed? Better suggestions? Eventually, when we can >>>> derive bitbake recipe dependencies automatically from package >>>> dependencies, PREBUILT and CUSTOM could be folded together. Right >>>> now, we need that split. >>>> >>>> Jan >>> >>> I have a class that I use for the current project that allows >>> installing additional packages into the buildchroot from within the >>> image. I didn't had time to prepare patches for it for mainline isar. >>> But maybe that goes into to right direction. >>> >>> I attached it. >> >> ... >> >>> BUILDCHROOT_EXTRA_INSTALL ??= "" >>> >>> MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" >>> >>> BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" >>> BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" >>> >>> do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" >>> do_buildchroot_extra_install[deptask] = "do_deploy_deb" >>> do_buildchroot_extra_install[stamp-extra-info] = "${DISTRO}-${MACHINE}" >>> do_buildchroot_extra_install() { >>> PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", >>> True).split())}" >>> >> >> Can you explain the magic dance in the line above? I don't see its >> need yet. >> >>> if [ -z "$PACKAGES" ]; then >> >> ...provided you do "[ -z $VAR ]" here to catch VAR=" ". > > In sh i get: > > $ tets="asdf asdf asdf asdf" > $ [ -z $tets ] && echo yes > sh: 2: [: asdf: unexpected operator Ah, that's what I missed. But then we want to .strip() the variable for testing, rather than split/rejoin. Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-05 7:47 ` Jan Kiszka @ 2018-09-05 7:57 ` Claudius Heine 2018-09-05 8:05 ` Jan Kiszka 0 siblings, 1 reply; 9+ messages in thread From: Claudius Heine @ 2018-09-05 7:57 UTC (permalink / raw) To: Jan Kiszka, isar-users, Claudius Heine, Henning Schild, Andreas Reichel On 2018-09-05 09:47, Jan Kiszka wrote: > On 2018-09-05 09:34, Claudius Heine wrote: >> Hi Jan, >> >> On 2018-09-05 08:08, Jan Kiszka wrote: >>> On 2018-09-04 11:27, Claudius Heine wrote: >>>> Hi Jan, >>>> >>>> On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >>>>> Hi all, >>>>> >>>>> for installing a bootloader into an image, a number of packages >>>>> have to be installed into the buildchroot. These can be prebuilt >>>>> packages or packages we build via Isar. Currently, we only handle >>>>> the case of WIC requiring prebuilt Debian packages, and that in a >>>>> hacky way (no proper distro abstraction, unneeded installation of >>>>> unused dependencies). This proposal aims at providing a more >>>>> holistic solution: >>>>> >>>>> - Introduce new variables that express the two types of dependencies: >>>>> - BOOTLOADER_PREBUILT >>>>> - BOOTLOADER_CUSTOM >>>>> >>>>> So there is no "WIC" in these, any imaging recipe can use them. >>>>> >>>>> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >>>>> - install all packages from BOOTLOADER_PREBUILT and >>>>> BOOTLOADER_CUSTOM >>>>> into the buildchroot >>>>> - DEPEND on all recipes in BOOTLOADER_CUSTOM >>>>> >>>>> - Define some common dependencies in conf/distro/${DISTRO}.conf: >>>>> - GRUB_PREBUILT >>>>> - GRUB_PREBUILT_append_${DISTRO_ARCH} >>>>> - SYSLINUX_PREBUILT >>>>> - ... >>>>> >>>>> Those variables can then be used to initialize >>>>> BOOTLOADER_PREBUILT as >>>>> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >>>>> buildchroot-target.bb. >>>>> >>>>> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >>>>> conf/machine/${MACHINE}.conf or some overriding conf file - >>>>> basically >>>>> the same one that selects IMAGE_TYPE and WKS_FILE. >>>>> >>>>> Anything I missed? Better suggestions? Eventually, when we can >>>>> derive bitbake recipe dependencies automatically from package >>>>> dependencies, PREBUILT and CUSTOM could be folded together. Right >>>>> now, we need that split. >>>>> >>>>> Jan >>>> >>>> I have a class that I use for the current project that allows >>>> installing additional packages into the buildchroot from within the >>>> image. I didn't had time to prepare patches for it for mainline >>>> isar. But maybe that goes into to right direction. >>>> >>>> I attached it. >>> >>> ... >>> >>>> BUILDCHROOT_EXTRA_INSTALL ??= "" >>>> >>>> MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" >>>> >>>> BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" >>>> BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" >>>> >>>> do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" >>>> do_buildchroot_extra_install[deptask] = "do_deploy_deb" >>>> do_buildchroot_extra_install[stamp-extra-info] = "${DISTRO}-${MACHINE}" >>>> do_buildchroot_extra_install() { >>>> PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", >>>> True).split())}" >>>> >>> >>> Can you explain the magic dance in the line above? I don't see its >>> need yet. >>> >>>> if [ -z "$PACKAGES" ]; then >>> >>> ...provided you do "[ -z $VAR ]" here to catch VAR=" ". >> >> In sh i get: >> >> $ tets="asdf asdf asdf asdf" >> $ [ -z $tets ] && echo yes >> sh: 2: [: asdf: unexpected operator > > Ah, that's what I missed. But then we want to .strip() the variable for > testing, rather than split/rejoin. Might work, but I don't like having possible '\n' and '\t' in between package names. (Ok, '\n' might not be an issue, since I think bitbake already escapes that.) For me that is the normal code snippet to convert bitbake 'arrays' into shell strings. -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-05 7:57 ` Claudius Heine @ 2018-09-05 8:05 ` Jan Kiszka 2018-09-05 8:16 ` Claudius Heine 0 siblings, 1 reply; 9+ messages in thread From: Jan Kiszka @ 2018-09-05 8:05 UTC (permalink / raw) To: Claudius Heine, isar-users, Claudius Heine, Henning Schild, Andreas Reichel On 2018-09-05 09:57, Claudius Heine wrote: > On 2018-09-05 09:47, Jan Kiszka wrote: >> On 2018-09-05 09:34, Claudius Heine wrote: >>> Hi Jan, >>> >>> On 2018-09-05 08:08, Jan Kiszka wrote: >>>> On 2018-09-04 11:27, Claudius Heine wrote: >>>>> Hi Jan, >>>>> >>>>> On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >>>>>> Hi all, >>>>>> >>>>>> for installing a bootloader into an image, a number of packages >>>>>> have to be installed into the buildchroot. These can be prebuilt >>>>>> packages or packages we build via Isar. Currently, we only handle >>>>>> the case of WIC requiring prebuilt Debian packages, and that in a >>>>>> hacky way (no proper distro abstraction, unneeded installation of >>>>>> unused dependencies). This proposal aims at providing a more >>>>>> holistic solution: >>>>>> >>>>>> - Introduce new variables that express the two types of dependencies: >>>>>> - BOOTLOADER_PREBUILT >>>>>> - BOOTLOADER_CUSTOM >>>>>> >>>>>> So there is no "WIC" in these, any imaging recipe can use them. >>>>>> >>>>>> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >>>>>> - install all packages from BOOTLOADER_PREBUILT and >>>>>> BOOTLOADER_CUSTOM >>>>>> into the buildchroot >>>>>> - DEPEND on all recipes in BOOTLOADER_CUSTOM >>>>>> >>>>>> - Define some common dependencies in conf/distro/${DISTRO}.conf: >>>>>> - GRUB_PREBUILT >>>>>> - GRUB_PREBUILT_append_${DISTRO_ARCH} >>>>>> - SYSLINUX_PREBUILT >>>>>> - ... >>>>>> >>>>>> Those variables can then be used to initialize >>>>>> BOOTLOADER_PREBUILT as >>>>>> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >>>>>> buildchroot-target.bb. >>>>>> >>>>>> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >>>>>> conf/machine/${MACHINE}.conf or some overriding conf file - >>>>>> basically >>>>>> the same one that selects IMAGE_TYPE and WKS_FILE. >>>>>> >>>>>> Anything I missed? Better suggestions? Eventually, when we can >>>>>> derive bitbake recipe dependencies automatically from package >>>>>> dependencies, PREBUILT and CUSTOM could be folded together. Right >>>>>> now, we need that split. >>>>>> >>>>>> Jan >>>>> >>>>> I have a class that I use for the current project that allows >>>>> installing additional packages into the buildchroot from within the >>>>> image. I didn't had time to prepare patches for it for mainline >>>>> isar. But maybe that goes into to right direction. >>>>> >>>>> I attached it. >>>> >>>> ... >>>> >>>>> BUILDCHROOT_EXTRA_INSTALL ??= "" >>>>> >>>>> MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" >>>>> >>>>> BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" >>>>> BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" >>>>> >>>>> do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" >>>>> do_buildchroot_extra_install[deptask] = "do_deploy_deb" >>>>> do_buildchroot_extra_install[stamp-extra-info] = >>>>> "${DISTRO}-${MACHINE}" >>>>> do_buildchroot_extra_install() { >>>>> PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", >>>>> True).split())}" >>>>> >>>> >>>> Can you explain the magic dance in the line above? I don't see its >>>> need yet. >>>> >>>>> if [ -z "$PACKAGES" ]; then >>>> >>>> ...provided you do "[ -z $VAR ]" here to catch VAR=" ". >>> >>> In sh i get: >>> >>> $ tets="asdf asdf asdf asdf" >>> $ [ -z $tets ] && echo yes >>> sh: 2: [: asdf: unexpected operator >> >> Ah, that's what I missed. But then we want to .strip() the variable >> for testing, rather than split/rejoin. > > Might work, but I don't like having possible '\n' and '\t' in between > package names. (Ok, '\n' might not be an issue, since I think bitbake > already escapes that.) > > For me that is the normal code snippet to convert bitbake 'arrays' into > shell strings. I find this pattern in pure form in exactly one poky recipe. Therefore I'm not sure we need it in order to make a list built under bitbake in various ways available as parameter string for a shell command. Let's see... Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC] Interface for installing bootloaders 2018-09-05 8:05 ` Jan Kiszka @ 2018-09-05 8:16 ` Claudius Heine 0 siblings, 0 replies; 9+ messages in thread From: Claudius Heine @ 2018-09-05 8:16 UTC (permalink / raw) To: Jan Kiszka, isar-users, Claudius Heine, Henning Schild, Andreas Reichel On 2018-09-05 10:05, Jan Kiszka wrote: > On 2018-09-05 09:57, Claudius Heine wrote: >> On 2018-09-05 09:47, Jan Kiszka wrote: >>> On 2018-09-05 09:34, Claudius Heine wrote: >>>> Hi Jan, >>>> >>>> On 2018-09-05 08:08, Jan Kiszka wrote: >>>>> On 2018-09-04 11:27, Claudius Heine wrote: >>>>>> Hi Jan, >>>>>> >>>>>> On 2018-09-04 09:17, [ext] Jan Kiszka wrote: >>>>>>> Hi all, >>>>>>> >>>>>>> for installing a bootloader into an image, a number of packages >>>>>>> have to be installed into the buildchroot. These can be prebuilt >>>>>>> packages or packages we build via Isar. Currently, we only handle >>>>>>> the case of WIC requiring prebuilt Debian packages, and that in a >>>>>>> hacky way (no proper distro abstraction, unneeded installation of >>>>>>> unused dependencies). This proposal aims at providing a more >>>>>>> holistic solution: >>>>>>> >>>>>>> - Introduce new variables that express the two types of >>>>>>> dependencies: >>>>>>> - BOOTLOADER_PREBUILT >>>>>>> - BOOTLOADER_CUSTOM >>>>>>> >>>>>>> So there is no "WIC" in these, any imaging recipe can use them. >>>>>>> >>>>>>> - Imaging recipes (e.g. via classes/wic-img.bbclass) should >>>>>>> - install all packages from BOOTLOADER_PREBUILT and >>>>>>> BOOTLOADER_CUSTOM >>>>>>> into the buildchroot >>>>>>> - DEPEND on all recipes in BOOTLOADER_CUSTOM >>>>>>> >>>>>>> - Define some common dependencies in conf/distro/${DISTRO}.conf: >>>>>>> - GRUB_PREBUILT >>>>>>> - GRUB_PREBUILT_append_${DISTRO_ARCH} >>>>>>> - SYSLINUX_PREBUILT >>>>>>> - ... >>>>>>> >>>>>>> Those variables can then be used to initialize >>>>>>> BOOTLOADER_PREBUILT as >>>>>>> needed and also replace those nasty BUILDCHROOT_PREINSTALL_WIC in >>>>>>> buildchroot-target.bb. >>>>>>> >>>>>>> - Set BOOTLOADER_PREBUILT or BOOTLOADER_CUSTOM in the >>>>>>> conf/machine/${MACHINE}.conf or some overriding conf file - >>>>>>> basically >>>>>>> the same one that selects IMAGE_TYPE and WKS_FILE. >>>>>>> >>>>>>> Anything I missed? Better suggestions? Eventually, when we can >>>>>>> derive bitbake recipe dependencies automatically from package >>>>>>> dependencies, PREBUILT and CUSTOM could be folded together. Right >>>>>>> now, we need that split. >>>>>>> >>>>>>> Jan >>>>>> >>>>>> I have a class that I use for the current project that allows >>>>>> installing additional packages into the buildchroot from within >>>>>> the image. I didn't had time to prepare patches for it for >>>>>> mainline isar. But maybe that goes into to right direction. >>>>>> >>>>>> I attached it. >>>>> >>>>> ... >>>>> >>>>>> BUILDCHROOT_EXTRA_INSTALL ??= "" >>>>>> >>>>>> MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock" >>>>>> >>>>>> BUILDCHROOT_DIR ??= "${BUILDCHROOT_TARGET_DIR}" >>>>>> BUILDCHROOT_BUILD_DEP ??= "buildchroot-target:do_build" >>>>>> >>>>>> do_buildchroot_extra_install[depends] = "${BUILDCHROOT_BUILD_DEP}" >>>>>> do_buildchroot_extra_install[deptask] = "do_deploy_deb" >>>>>> do_buildchroot_extra_install[stamp-extra-info] = >>>>>> "${DISTRO}-${MACHINE}" >>>>>> do_buildchroot_extra_install() { >>>>>> PACKAGES="${@" ".join(d.getVar("BUILDCHROOT_EXTRA_INSTALL", >>>>>> True).split())}" >>>>>> >>>>> >>>>> Can you explain the magic dance in the line above? I don't see its >>>>> need yet. >>>>> >>>>>> if [ -z "$PACKAGES" ]; then >>>>> >>>>> ...provided you do "[ -z $VAR ]" here to catch VAR=" ". >>>> >>>> In sh i get: >>>> >>>> $ tets="asdf asdf asdf asdf" >>>> $ [ -z $tets ] && echo yes >>>> sh: 2: [: asdf: unexpected operator >>> >>> Ah, that's what I missed. But then we want to .strip() the variable >>> for testing, rather than split/rejoin. >> >> Might work, but I don't like having possible '\n' and '\t' in between >> package names. (Ok, '\n' might not be an issue, since I think bitbake >> already escapes that.) >> >> For me that is the normal code snippet to convert bitbake 'arrays' >> into shell strings. > > I find this pattern in pure form in exactly one poky recipe. Therefore > I'm not sure we need it in order to make a list built under bitbake in > various ways available as parameter string for a shell command. Let's > see... Might not be necessary, but I think I started using it, because it makes the environment and run.* files easier to read. -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-54 Fax: (+49)-8142-66989-80 Email: ch@denx.de ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-09-05 8:16 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-09-04 7:17 [RFC] Interface for installing bootloaders Jan Kiszka 2018-09-04 9:27 ` Claudius Heine 2018-09-04 9:33 ` Jan Kiszka 2018-09-05 6:08 ` Jan Kiszka 2018-09-05 7:34 ` Claudius Heine 2018-09-05 7:47 ` Jan Kiszka 2018-09-05 7:57 ` Claudius Heine 2018-09-05 8:05 ` Jan Kiszka 2018-09-05 8:16 ` Claudius Heine
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox