Date
1 - 9 of 9
inc files in recipes
Frans Meulenbroeks <fransmeulenbroeks@...>
Dear all,
Peeking at flex I was wondering whether we should try to avoid using .inc files in recipes especially if there is only one recipe. flex has: frans@frans-desktop:~/yocto/poky-laverne-4.0$ ls meta/recipes-devtools/flex flex_2.5.35.bb flex.inc Here the inc file could be merged into the bb file. This has the advantage of having only a single file, so it is slightly easier if you want to read or maintain the recipe. For recipes with multiple versions (e.g. tar) it might be useful to have inc files. It is really a tradeoff between easy access/reading and maintainability here. (and I think for some packages (e.g. gcc) the inc file is actually very useful!) Frans PS: laverne seems to have 255 inc files: frans@frans-desktop:~/yocto/poky-laverne-4.0$ find meta* | grep \.inc\$ meta/recipes-core/glib-2.0/glib-2.0.inc meta/recipes-core/glib-2.0/glib.inc meta/recipes-core/udev/udev.inc meta/recipes-core/udev/udev-new.inc meta/recipes-core/glibc/glibc.inc meta/recipes-core/glibc/glibc-package.inc meta/recipes-core/glibc/glibc-initial.inc meta/recipes-core/glibc/glibc-stage.inc meta/recipes-core/busybox/busybox.inc meta/recipes-core/readline/readline.inc meta/recipes-core/dbus/dbus-glib.inc meta/recipes-core/dbus/dbus.inc meta/recipes-core/uclibc/uclibc.inc meta/recipes-core/ncurses/ncurses.inc meta/recipes-core/dropbear/dropbear.inc meta/recipes-core/eglibc/eglibc-package.inc meta/recipes-core/eglibc/eglibc.inc meta/recipes-core/eglibc/eglibc-initial.inc meta/recipes-core/expat/expat.inc meta/recipes-core/images/poky-image-live.inc meta/recipes-core/images/poky-image-directdisk.inc meta/recipes-core/util-linux/util-linux.inc meta/recipes-core/libxml/libxml2.inc meta/recipes-bsp/pcmciautils/pcmciautils.inc meta/recipes-bsp/uboot/u-boot.inc meta/recipes-bsp/hostap/hostap-utils.inc meta/recipes-bsp/acpid/acpid.inc meta/recipes-bsp/x-load/x-load.inc meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc meta/recipes-sato/gtk-engines/gtk-sato-engine.inc meta/recipes-sato/sato-icon-theme/sato-icon-theme.inc meta/recipes-sato/pimlico/dates.inc meta/recipes-sato/pimlico/contacts.inc meta/recipes-sato/pimlico/tasks.inc meta/recipes-sato/claws-mail/claws-mail.inc meta/classes/ccache.inc meta/recipes-multimedia/gstreamer/gst-fluendo.inc meta/recipes-multimedia/gstreamer/gst-plugins.inc meta/recipes-multimedia/alsa/alsa-fpu.inc meta/recipes-extended/cpio/cpio_v2.inc meta/recipes-extended/byacc/byacc.inc meta/recipes-extended/findutils/findutils.inc meta/recipes-extended/zip/zip.inc meta/recipes-extended/augeas/augeas.inc meta/recipes-extended/sysstat/sysstat.inc meta/recipes-extended/psmisc/psmisc.inc meta/recipes-extended/shadow/shadow.inc meta/recipes-extended/sudo/sudo.inc meta/recipes-extended/procps/procps.inc meta/recipes-extended/tar/tar.inc meta/recipes-extended/sysklogd/sysklogd.inc meta/recipes-extended/time/time.inc meta/recipes-extended/bash/bash.inc meta/recipes-extended/gzip/gzip.inc meta/recipes-extended/gperf/gperf.inc meta/recipes-tbd/pulseaudio/pulseaudio.inc meta/recipes-tbd/poppler/poppler.inc meta/recipes-tbd/poppler/poppler-fpu.inc meta/conf/machine/include/tune-c3.inc meta/conf/machine/include/tune-sh3.inc meta/conf/machine/include/tune-ppce500.inc meta/conf/machine/include/tune-cortexr4.inc meta/conf/machine/include/tune-strongarm1100.inc meta/conf/machine/include/zaurus-2.6.inc meta/conf/machine/include/tune-xscale.inc meta/conf/machine/include/tune-ppce300c2.inc meta/conf/machine/include/tune-armv7.inc meta/conf/machine/include/qemu.inc meta/conf/machine/include/tune-supersparc.inc meta/conf/machine/include/tune-cortexa8.inc meta/conf/machine/include/tune-iwmmxt.inc meta/conf/machine/include/tune-cortexm1.inc meta/conf/machine/include/tune-cortexm3.inc meta/conf/machine/include/tune-ppc603e.inc meta/conf/machine/include/tune-ep9312.inc meta/conf/machine/include/tune-arm9tdmi.inc meta/conf/machine/include/tune-atom.inc meta/conf/machine/include/tune-thumb.inc meta/conf/machine/include/zaurus-clamshell.inc meta/conf/machine/include/tune-arm920t.inc meta/conf/machine/include/tune-sh4.inc meta/conf/machine/include/tune-arm926ejs.inc meta/conf/machine/include/tune-mips32.inc meta/conf/machine/include/tune-arm1136jf-s.inc meta/conf/distro/include/poky-uclibc.inc meta/conf/distro/include/poky-external-csl2007q3.inc meta/conf/distro/include/preferred-xorg-versions.inc meta/conf/distro/include/poky-default.inc meta/conf/distro/include/poky-glibc.inc meta/conf/distro/include/poky-eglibc.inc meta/conf/distro/include/as-needed.inc meta/conf/distro/include/distro_tracking_fields.inc meta/conf/distro/include/poky-default-revisions.inc meta/conf/distro/include/poky-external.inc meta/conf/distro/include/world-broken.inc meta/conf/distro/include/poky-eabi-csl2005q3-2.inc meta/conf/distro/include/poky-oabi.inc meta/conf/distro/include/poky-fixed-revisions.inc meta/conf/distro/include/poky-external-oabi.inc meta/conf/distro/include/poky-floating-revisions.inc meta/conf/distro/include/poky-external-default.inc meta/conf/distro/include/poky-external-csl2008q3.inc meta/conf/distro/include/poky-external-csl2006q3.inc meta/recipes-gnome/gnome/gnome-doc-utils.inc meta/recipes-gnome/gnome/gnome-desktop.inc meta/recipes-gnome/abiword/abiword.inc meta/recipes-gnome/abiword/abiword-2.5.inc meta/recipes-gnome/gtk+/gtk+.inc meta/recipes-gnome/tasks/task-sdk-gmae.inc meta/recipes-kernel/fuse/fuse.inc meta/recipes-kernel/dtc/dtc_git.inc meta/recipes-kernel/dtc/dtc.inc meta/recipes-kernel/dtc/dtc-native.inc meta/recipes-kernel/module-init-tools/module-init-tools.inc meta/recipes-kernel/oprofile/oprofileui.inc meta/recipes-kernel/oprofile/oprofileui-svn.inc meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc meta/recipes-kernel/linux/linux.inc meta/recipes-kernel/linux/linux-zylonite.inc meta/recipes-kernel/linux/linux-netbook.inc meta/recipes-kernel/linux/linux-mx31.inc meta/recipes-kernel/linux/linux-omap.inc meta/recipes-kernel/linux/linux-simtec.inc meta/recipes-kernel/linux/linux-omap2.inc meta/recipes-kernel/linux/linux-rp.inc meta/recipes-kernel/kexec/kexec-tools.inc meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.6.inc meta/recipes-connectivity/wpa-supplicant/wpa-supplicant-0.7.inc meta/recipes-connectivity/opensync/libopensync-plugin_0.36.inc meta/recipes-connectivity/gypsy/gypsy.inc meta/recipes-connectivity/dhcp/dhcp3.inc meta/recipes-connectivity/dhcp/dhcp4.inc meta/recipes-connectivity/libpcap/libpcap.inc meta/recipes-connectivity/avahi/avahi.inc meta/recipes-connectivity/ofono/ofono.inc meta/recipes-connectivity/portmap/portmap.inc meta/recipes-connectivity/openssl/openssl.inc meta/recipes-connectivity/gsm/gsmd.inc meta/recipes-connectivity/connman/connman.inc meta/recipes-connectivity/iproute2/iproute2.inc meta/recipes-support/mpfr/mpfr.inc meta/recipes-support/vte/vte.inc meta/recipes-support/gmp/gmp.inc meta/recipes-support/hal/hal-info.inc meta/recipes-support/hal/hal.inc meta/recipes-support/shared-mime-info/shared-mime-info.inc meta/recipes-support/boost/boost-36.inc meta/recipes-support/boost/boost-jam-native.inc meta/recipes-support/libmpc/libmpc.inc meta/recipes-support/sqlite/sqlite3.inc meta/recipes-support/libcap/libcap.inc meta/recipes-support/atk/atk.inc meta/recipes-support/libgcrypt/libgcrypt.inc meta/recipes-support/attr/attr.inc meta/recipes-support/attr/acl.inc meta/recipes-support/attr/ea-acl.inc meta/recipes-support/gnutls/gnutls.inc meta/recipes-support/icu/icu-3.6.inc meta/recipes-qt/qt4/qt-4.6.3.inc meta/recipes-qt/qt4/qt4.inc meta/recipes-qt/qt4/qt4-tools-native.inc meta/recipes-qt/qt4/qt4-x11-free.inc meta/recipes-graphics/pango/pango.inc meta/recipes-graphics/cairo/cairo-fpu.inc meta/recipes-graphics/cairo/cairo.inc meta/recipes-graphics/xorg-proto/xorg-proto-common.inc meta/recipes-graphics/xorg-lib/xorg-lib-common.inc meta/recipes-graphics/xorg-lib/libx11.inc meta/recipes-graphics/xorg-lib/libx11_git.inc meta/recipes-graphics/xorg-util/xorg-util-common.inc meta/recipes-graphics/xorg-font/xorg-font-common.inc meta/recipes-graphics/libmatchbox/libmatchbox.inc meta/recipes-graphics/mutter/mutter.inc meta/recipes-graphics/drm/libdrm.inc meta/recipes-graphics/xorg-driver/xf86-input-common.inc meta/recipes-graphics/xorg-driver/xf86-driver-common.inc meta/recipes-graphics/xorg-driver/xf86-video-common.inc meta/recipes-graphics/xorg-xserver/xserver-xf86-lite.inc meta/recipes-graphics/xorg-xserver/xserver-xf86-common.inc meta/recipes-graphics/xorg-xserver/xserver-xf86-dri-lite.inc meta/recipes-graphics/xorg-xserver/xserver-kdrive.inc meta/recipes-graphics/xcb/libxcb.inc meta/recipes-graphics/xcb/xcb-proto.inc meta/recipes-graphics/xcb/xcb-util.inc meta/recipes-graphics/clutter/clutter-gst.inc meta/recipes-graphics/clutter/clutter-gtk.inc meta/recipes-graphics/clutter/aaina.inc meta/recipes-graphics/clutter/clutter.inc meta/recipes-graphics/clutter/clutter-package.inc meta/recipes-graphics/clutter/clutter-fpu.inc meta/recipes-graphics/clutter/table.inc meta/recipes-graphics/clutter/clutter-cairo.inc meta/recipes-graphics/clutter/clutter-box2d.inc meta/recipes-graphics/clutter/tidy.inc meta/recipes-graphics/mesa/mesa-common.inc meta/recipes-graphics/xorg-app/xorg-app-common.inc meta/recipes-devtools/quilt/quilt.inc meta/recipes-devtools/quilt/quilt-native.inc meta/recipes-devtools/exmap-console/exmap-console.inc meta/recipes-devtools/opkg/opkg.inc meta/recipes-devtools/automake/automake.inc meta/recipes-devtools/gcc/gcc-configure-sdk.inc meta/recipes-devtools/gcc/gcc-package-sdk.inc meta/recipes-devtools/gcc/gcc-cross-intermediate.inc meta/recipes-devtools/gcc/gcc-configure-target.inc meta/recipes-devtools/gcc/gcc-cross4.inc meta/recipes-devtools/gcc/gcc-cross-initial.inc meta/recipes-devtools/gcc/gcc-crosssdk.inc meta/recipes-devtools/gcc/gcc-package-target.inc meta/recipes-devtools/gcc/gcc-package-runtime.inc meta/recipes-devtools/gcc/gcc-4.5.0.inc meta/recipes-devtools/gcc/gcc-4.3.3.inc meta/recipes-devtools/gcc/gcc-common.inc meta/recipes-devtools/gcc/gcc-cross.inc meta/recipes-devtools/gcc/gcc-cross-kernel.inc meta/recipes-devtools/gcc/gcc-cross-canadian.inc meta/recipes-devtools/gcc/gcc-configure-common.inc meta/recipes-devtools/gcc/gcc-crosssdk-intermediate.inc meta/recipes-devtools/gcc/gcc-csl-arm-2005q3.inc meta/recipes-devtools/gcc/gcc-configure-cross.inc meta/recipes-devtools/gcc/gcc-crosssdk-initial.inc meta/recipes-devtools/gcc/gcc-package-cross.inc meta/recipes-devtools/gcc/gcc-configure-runtime.inc meta/recipes-devtools/gcc/gcc-csl-arm-2008q1.inc meta/recipes-devtools/dpkg/dpkg.inc meta/recipes-devtools/cmake/cmake.inc meta/recipes-devtools/apt/apt-package.inc meta/recipes-devtools/apt/apt-native.inc meta/recipes-devtools/apt/apt.inc meta/recipes-devtools/make/make.inc meta/recipes-devtools/patch/patch.inc meta/recipes-devtools/pkgconfig/pkgconfig.inc meta/recipes-devtools/yaffs2/yaffs2-utils.inc meta/recipes-devtools/e2fsprogs/e2fsprogs.inc meta/recipes-devtools/rsync/rsync.inc meta/recipes-devtools/update-alternatives/update-alternatives-dpkg.inc meta/recipes-devtools/intltool/intltool.inc meta/recipes-devtools/autoconf/autoconf.inc meta/recipes-devtools/flex/flex.inc meta/recipes-devtools/qemu/qemu.inc meta/recipes-devtools/shasum/shasum.inc meta/recipes-devtools/perl/perl-rprovides.inc meta/recipes-devtools/perl/perl-rdepends_5.8.8.inc meta/recipes-devtools/git/git.inc meta/recipes-devtools/binutils/binutils-cross.inc meta/recipes-devtools/binutils/binutils.inc meta/recipes-devtools/binutils/binutils-cross-canadian.inc meta/recipes-devtools/genext2fs/genext2fs.inc meta/recipes-devtools/gdb/gdb-cross.inc meta/recipes-devtools/gdb/gdb.inc meta/recipes-devtools/gdb/gdb-common.inc meta/recipes-devtools/libtool/libtool.inc meta/recipes-devtools/python/python.inc meta/recipes-devtools/python/python-2.6-manifest.inc meta/recipes-devtools/python/fix-path.inc |
|
Gary Thomas
On 11/19/2010 01:44 AM, Frans Meulenbroeks wrote:
Dear all,The fact that there is only one recipe using a particular .inc is (I believe) a Poky/Yocto design practice. Once a given recipe is known to work and cause no other dependencies or regressions, older versions are purged. This is how Poky can build a very useful embedded system with only ~1000 recipes, whereas OE has terrible bloat (IMO) of nearly 8000! The practice of using a well-crafted .inc file should make it easier to keep up with the upstream changes. Often, moving to a new version is as simple as creating a new recipe with the appropriate PN and you're done. Very little duplication of effort, code or rules. -- ------------------------------------------------------------ Gary Thomas | Consulting for the MLB Associates | Embedded world ------------------------------------------------------------ |
|
Tian, Kevin <kevin.tian@...>
From: Frans MeulenbroeksI think most .inc come from historical reason when the 1st poky repo is created from OE side. After that Poky chooses to maintain only one version which results in the fact that some .inc exists for one recipe One advantage of not doing so is to retrieve change history in git easily. Version change on .bb is a rename which in git is simply a remove and create, while with .inc you can easily track history. This also reduces the commit size. There's one case we actually suggest not using .inc for multiple versions: both GPLv2 and GPLv3 exist for one package. That way we can avoid potential contamination as much as possible.
|
|
Frans Meulenbroeks <fransmeulenbroeks@...>
2010/11/19 Gary Thomas <gary@...>:
I agree that the purging is good. The large number of recipes for the same package makes things very hard to maintain. Also most users will not understand why there are multiple versions, what the difference is between them, or which one to pick. I don't think this depends on the inc file. If you have a package x_0.bb with a well crafted x.inc file then moving to 1 is just a cp (or mv or git mv) of x_0.bb to x_1.bb. However if the package has no inc file but has all the stuff in the .bb file moving to a new version is also just a cp of x_0.bb to x_1.bb. So effort wise this does not make a difference! And yes you might see this as duplication but then again if x_0.bb is going to be removed after x_1 is considered to be OK, this does not hurt either. Main advantage of .inc files is that (if well done) it reduces the maintenance effort in case there are multiple versions. Thinking of it: if yocto prefers .inc files it seems good to come up with some guidelines what goes into a .inc file and what goes into the .bb file. In OE I've seen that people do stuff things like HOMEPAGE, DESCRIPTION and LICENSE in the .inc file, in some cases even going to far that the .bb file is only a oneliner including the .inc file Frans |
|
Frans Meulenbroeks <fransmeulenbroeks@...>
2010/11/19 Tian, Kevin <kevin.tian@...>:
Guess so.From: Frans MeulenbroeksI think most .inc come from historical reason when the 1st poky repo is If I am correct git mv does preserve history although the name changeOne advantage of not doing so is to retrieve change history in git easily. makes it a little bit more difficult to track them. Wrt commit size: I agree that the commit size is bigger. If you want to minimize this you should maximize what goes into the inc. Personally when it comes to choosing between readability, cleanness etc and commit size, I go for the former. If you want to avoid contamination as much as possible I would suggestThere's one case we actually suggest not using .inc for multiple versions: creating two different folders. They are two different beasts that you want to maintain separately. The same also holds if you want to keep two versions because they are e.g. functionwise very different. Sometimes this is already done (at least in OE, there we have e.g libsigc++-1.2 and libsigc++-2.0 and apache and apache2 directories, also sometimes there are differently named recipes (different PN) in the same folder, e.g. bluez and bluez4) Frans |
|
Tian, Kevin <kevin.tian@...>
From: Frans Meulenbroeks [mailto:fransmeulenbroeks@...]I'm not sure how that works consistently. Sometimes the rename is kept while most times it doesn't happen to me. :-( I'm neutral here actually. :-) But I agree with you that we should document such guideline on the wiki after it's finalized. Perhaps that's the better approach.If you want to avoid contamination as much as possible I would suggestThere's one case we actually suggest not using .inc for multiple versions: Thanks Kevin |
|
Richard Purdie <rpurdie@...>
On Fri, 2010-11-19 at 17:47 +0800, Tian, Kevin wrote:
Git does not track renames. Some of its tools can however detect renamesFrom: Frans Meulenbroeks [mailto:fransmeulenbroeks@...]I'm not sure how that works consistently. Sometimes the rename is kept which is subtly different. See "git diff -M" which detects renames for example. Cheers, Richard |
|
Richard Purdie <rpurdie@...>
On Fri, 2010-11-19 at 10:42 +0100, Frans Meulenbroeks wrote:
2010/11/19 Tian, Kevin <kevin.tian@...>:git mv does not preserve history. Some of git's tools can detect renamesGuess so.From: Frans MeulenbroeksI think most .inc come from historical reason when the 1st poky repo is though (e.g. git diff -M). Wrt commit size: I agree that the commit size is bigger.The .inc files are kept around as it mirrors what is in OpenEmbedded. We'll continue to do that until we work out what out relationship is going to be there. I understand moving to a single .bb file would make things more logical but it would remove any ability to diff files with OE easily. Having them in the same directory doesn't cause any complications andThere's one case we actually suggest not using .inc for multiple versions:If you want to avoid contamination as much as possible I would suggest using the same names means that creation of a GPLv3 image is much simpler which is why we didn't rename the recipes. Cheers, Richard |
|
Frans Meulenbroeks <fransmeulenbroeks@...>
2010/11/19 Richard Purdie <rpurdie@...>:
On Fri, 2010-11-19 at 10:42 +0100, Frans Meulenbroeks wrote:2010/11/19 Tian, Kevin <kevin.tian@...>: True, but it slightly increases the risk that the v2 recipe getsHaving them in the same directory doesn't cause any complications and accidently removed because someone thinks it is old. Of course for OE due to the fact that there are a lot of people with commit rights there Frans |
|