diff --git a/build/conf/local.conf.sample b/build/conf/local.conf.sample index 9fb83dc378..e5d14301b4 100644 --- a/build/conf/local.conf.sample +++ b/build/conf/local.conf.sample @@ -28,12 +28,21 @@ DISTRO = "poky" # For bleeding edge / experimental / unstable package versions # DISTRO = "poky-bleeding" -# DISTRO_TYPE determines the type of images that will be built -# "release" - create a streamlined and secure image -# "debug" - enable easier ssh access -# - include the devtools and testapps packages +# IMAGE_FEATURES configuration of the generated images +# (Some of these are automatically added to certain image types) +# "dev-pkgs" - add -dev packages for all installed packages +# (useful if you want to develop against libs in the image) +# "dbg-pkgs" - add -dbg packages for all installed packages +# (adds symbol information for debugging/profiling) +# "apps-core" - core applications +# "apps-pda" - add PDA application suite (contacts, dates, etc.) +# "dev-tools" - add development tools (gcc, make, pkgconfig etc.) +# "dbg-tools" - add debugging tools (gdb, strace, oprofile, etc.) +# "test-tools" - add useful testing tools (ts_print, aplay, arecord etc.) +# "debug-tweaks" - make an image for suitable of development +# e.g. ssh root access has a blank password -DISTRO_TYPE = "debug" +IMAGE_FEATURES = "dbg-tools test-tools debug-tweaks" # A list of packaging systems used in generated images # The first package type listed will be used for rootfs generation diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index e7725b7443..e08a2be2d2 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -41,12 +41,17 @@ def base_conditional(variable, checkvalue, truevalue, falsevalue, d): else: return falsevalue -def base_contains(variable, checkvalue, truevalue, falsevalue, d): - import bb - if bb.data.getVar(variable,d,1).find(checkvalue) != -1: - return truevalue - else: - return falsevalue +def base_contains(variable, checkvalues, truevalue, falsevalue, d): + import bb + matches = 0 + if type(checkvalues).__name__ == "str": + checkvalues = [checkvalues] + for value in checkvalues: + if bb.data.getVar(variable,d,1).find(value) != -1: + matches = matches + 1 + if matches == len(checkvalues): + return truevalue + return falsevalue def base_both_contain(variable1, variable2, checkvalue, d): import bb diff --git a/meta/conf/distro/poky.conf b/meta/conf/distro/poky.conf index d42f59289a..f57c07d3fd 100644 --- a/meta/conf/distro/poky.conf +++ b/meta/conf/distro/poky.conf @@ -5,8 +5,6 @@ DISTRO = "poky" DISTRO_NAME = "OpenedHand Linux (Poky)" DISTRO_VERSION = "0.0-snapshot-${DATE}" -DISTRO_TYPE ?= "release" - MAINTAINER = "OpenedHand " PACKAGE_CLASSES ?= "package_ipk" @@ -186,3 +184,29 @@ DISTRO_FEATURES = "alsa bluetooth ext2 irda pcmcia usbgadget usbhost wifi" DISTRO_FEATURES_cmx270 = "alsa bluetooth ext2 irda pcmcia usbgadget usbhost" DISTRO_EXTRA_RDEPENDS_qemuarm += "qemu-distcc" DISTRO_EXTRA_RDEPENDS_qemux86 += "qemu-distcc" + +IMAGE_FEATURES ?= "" + +DISTRO_TASKS = "\ + task-oh-boot \ + ${@base_contains("IMAGE_FEATURES", "dbg-pkgs", "task-oh-boot-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "dev-pkgs", "task-oh-boot-dev", "",d)} \ + task-oh-boot-extras \ + ${@base_contains("IMAGE_FEATURES", "dbg-pkgs", "task-oh-boot-extras-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "dev-pkgs", "task-oh-boot-extras-dev", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "apps-core", "task-oh-base", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["apps-core", "dbg-pkgs"], "task-oh-base-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["apps-core", "dev-pkgs"], "task-oh-base-dev", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "apps-pda", "task-oh-standard", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["apps-pda", "dbg-pkgs"], "task-oh-standard-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["apps-pda", "dev-pkgs"], "task-oh-standard-dev", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "dev-tools", "task-oh-sdk", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["dev-tools", "dbg-pkgs"], "task-oh-sdk-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["dev-tools", "dev-pkgs"], "task-oh-sdk-dev", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "dbg-tools", "task-oh-devtools", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["dbg-tools", "dbg-pkgs"], "task-oh-devtools-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["dbg-tools", "dev-pkgs"], "task-oh-devtools-dev", "",d)} \ + ${@base_contains("IMAGE_FEATURES", "test-tools", "task-oh-testapps", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["test-tools", "dbg-pkgs"], "task-oh-testapps-dbg", "",d)} \ + ${@base_contains("IMAGE_FEATURES", ["test-tools", "dev-pkgs"], "task-oh-testapps-dev", "",d)} \ + " diff --git a/meta/packages/dropbear/dropbear.inc b/meta/packages/dropbear/dropbear.inc index 301ac24cb2..19224a98e9 100644 --- a/meta/packages/dropbear/dropbear.inc +++ b/meta/packages/dropbear/dropbear.inc @@ -25,6 +25,8 @@ SBINCOMMANDS = "dropbear dropbearkey dropbearconvert" BINCOMMANDS = "dbclient ssh scp" EXTRA_OEMAKE = 'MULTI=1 SCPPROGRESS=1 PROGRAMS="${SBINCOMMANDS} ${BINCOMMANDS}"' +DISTRO_TYPE = "${@base_contains("IMAGE_FEATURES", "debug-tweaks", "debug", "",d)} \ + do_configure_prepend() { if [ "x${DISTRO}" != "xfamiliar" -a "${DISTRO_TYPE}" == "debug" ]; then oenote "WARNING: applying allow-nopw.patch which allows password-less logins!" diff --git a/meta/packages/images/oh-image-base.bb b/meta/packages/images/oh-image-base.bb index 4a61e70519..9b87f833e8 100644 --- a/meta/packages/images/oh-image-base.bb +++ b/meta/packages/images/oh-image-base.bb @@ -4,7 +4,7 @@ export IMAGE_BASENAME = "oh-image-base" DEPENDS = "task-oh" -RDEPENDS = "task-oh-boot task-oh-boot-extras" +RDEPENDS = "${DISTRO_TASKS}" export PACKAGE_INSTALL = "${RDEPENDS}" diff --git a/meta/packages/images/oh-image-core.bb b/meta/packages/images/oh-image-core.bb index e416d84843..0e2e7d6f0d 100644 --- a/meta/packages/images/oh-image-core.bb +++ b/meta/packages/images/oh-image-core.bb @@ -2,12 +2,11 @@ PR = "r0" export IMAGE_BASENAME = "oh-image-core" +IMAGE_FEATURES += "apps-core" + DEPENDS = "task-oh" -RDEPENDS = "\ - task-oh-boot \ - task-oh-boot-extras \ - task-oh-base " +RDEPENDS = "${DISTRO_TASKS}" export PACKAGE_INSTALL = "${RDEPENDS}" diff --git a/meta/packages/images/oh-image-pda.bb b/meta/packages/images/oh-image-pda.bb index d4576a0c55..b072458a36 100644 --- a/meta/packages/images/oh-image-pda.bb +++ b/meta/packages/images/oh-image-pda.bb @@ -2,15 +2,11 @@ PR = "r10" export IMAGE_BASENAME = "oh-image-pda" +IMAGE_FEATURES += "apps-core apps-pda" + DEPENDS = "task-oh" -RDEPENDS = "\ - task-oh-boot \ - task-oh-boot-extras \ - task-oh-base \ - task-oh-standard \ - ${@base_conditional("DISTRO_TYPE", "debug", "task-oh-devtools", "",d)} \ - ${@base_conditional("DISTRO_TYPE", "debug", "task-oh-testapps", "",d)} " +RDEPENDS = "${DISTRO_TASKS}" export PACKAGE_INSTALL = "${RDEPENDS}" diff --git a/meta/packages/images/oh-image-sdk.bb b/meta/packages/images/oh-image-sdk.bb index d94ce2b1d4..581defb816 100644 --- a/meta/packages/images/oh-image-sdk.bb +++ b/meta/packages/images/oh-image-sdk.bb @@ -2,20 +2,13 @@ PR = "r9" export IMAGE_BASENAME = "oh-image-sdk" +IMAGE_FEATURES += "apps-core apps-pda dev-tools dev-pkgs dbg-pkgs" + DEPENDS = "\ task-oh \ task-oh-sdk" -RDEPENDS = "\ - task-oh-boot \ - task-oh-boot-extras \ - task-oh-base \ - task-oh-standard \ - task-oh-devtools \ - task-oh-testapps \ - task-oh-sdk \ - task-oh-sdk-base" - +RDEPENDS = "${DISTRO_TASKS}" export PACKAGE_INSTALL = "${RDEPENDS}" inherit image diff --git a/meta/packages/linux/linux-rp.inc b/meta/packages/linux/linux-rp.inc index ba446bdda5..fe52edb68f 100644 --- a/meta/packages/linux/linux-rp.inc +++ b/meta/packages/linux/linux-rp.inc @@ -27,7 +27,7 @@ CMDLINE_CON = "console=ttyS0,115200n8 console=tty1 noinitrd" CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2" CMDLINE_ROOT_spitz = "root=/dev/hda1 rootfstype=ext3 rootdelay=1 rw" CMDLINE_OTHER = "dyntick=enable" -CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}' +CMDLINE_DEBUG = '${@base_contains("IMAGE_FEATURES", "debug-tweaks", "debug", "quiet", d)}' ############################################################## # Configure memory/ramdisk split for collie diff --git a/meta/packages/tasks/task-oh-sdk.bb b/meta/packages/tasks/task-oh-sdk.bb index a142816306..ac3aaec746 100644 --- a/meta/packages/tasks/task-oh-sdk.bb +++ b/meta/packages/tasks/task-oh-sdk.bb @@ -1,10 +1,13 @@ DESCRIPTON = "Software Development Tasks for OpenedHand Poky" -PR = "r11" +PR = "r12" DEPENDS = "task-oh" ALLOW_EMPTY = "1" -PACKAGEFUNCS =+ 'generate_sdk_pkgs' +#PACKAGEFUNCS =+ 'generate_sdk_pkgs' -PACKAGES = "task-oh-sdk" +PACKAGES = "\ + task-oh-sdk \ + task-oh-sdk-dbg \ + task-oh-sdk-dev" RDEPENDS_task-oh-sdk = "\ autoconf \ @@ -19,43 +22,43 @@ RDEPENDS_task-oh-sdk = "\ pkgconfig \ distcc" -python generate_sdk_pkgs () { - ohpkgs = read_pkgdata('task-oh', d)['PACKAGES'] - pkgs = bb.data.getVar('PACKAGES', d, 1).split() - for pkg in ohpkgs.split(): - newpkg = pkg.replace('task-oh', 'task-oh-sdk') - - # for each of the task packages, add a corresponding sdk task - pkgs.append(newpkg) - - # for each sdk task, take the rdepends of the non-sdk task, and turn - # that into rrecommends upon the -dev versions of those, not unlike - # the package depchain code - spkgdata = read_subpkgdata(pkg, d) - - rdepends = explode_deps(spkgdata.get('RDEPENDS_%s' % pkg) or '') - rreclist = [] - - for depend in rdepends: - split_depend = depend.split(' (') - name = split_depend[0].strip() - if packaged('%s-dev' % name, d): - rreclist.append('%s-dev' % name) - else: - deppkgdata = read_subpkgdata(name, d) - rdepends2 = explode_deps(deppkgdata.get('RDEPENDS_%s' % name) or '') - for depend in rdepends2: - split_depend = depend.split(' (') - name = split_depend[0].strip() - if packaged('%s-dev' % name, d): - rreclist.append('%s-dev' % name) - - oldrrec = bb.data.getVar('RRECOMMENDS_%s' % newpkg, d) or '' - bb.data.setVar('RRECOMMENDS_%s' % newpkg, oldrrec + ' ' + ' '.join(rreclist), d) - # bb.note('RRECOMMENDS_%s = "%s"' % (newpkg, bb.data.getVar('RRECOMMENDS_%s' % newpkg, d))) - - # bb.note('pkgs is %s' % pkgs) - bb.data.setVar('PACKAGES', ' '.join(pkgs), d) -} - -PACKAGES_DYNAMIC = "task-oh-sdk-*" +#python generate_sdk_pkgs () { +# ohpkgs = read_pkgdata('task-oh', d)['PACKAGES'] +# pkgs = bb.data.getVar('PACKAGES', d, 1).split() +# for pkg in ohpkgs.split(): +# newpkg = pkg.replace('task-oh', 'task-oh-sdk') +# +# # for each of the task packages, add a corresponding sdk task +# pkgs.append(newpkg) +# +# # for each sdk task, take the rdepends of the non-sdk task, and turn +# # that into rrecommends upon the -dev versions of those, not unlike +# # the package depchain code +# spkgdata = read_subpkgdata(pkg, d) +# +# rdepends = explode_deps(spkgdata.get('RDEPENDS_%s' % pkg) or '') +# rreclist = [] +# +# for depend in rdepends: +# split_depend = depend.split(' (') +# name = split_depend[0].strip() +# if packaged('%s-dev' % name, d): +# rreclist.append('%s-dev' % name) +# else: +# deppkgdata = read_subpkgdata(name, d) +# rdepends2 = explode_deps(deppkgdata.get('RDEPENDS_%s' % name) or '') +# for depend in rdepends2: +# split_depend = depend.split(' (') +# name = split_depend[0].strip() +# if packaged('%s-dev' % name, d): +# rreclist.append('%s-dev' % name) +# +# oldrrec = bb.data.getVar('RRECOMMENDS_%s' % newpkg, d) or '' +# bb.data.setVar('RRECOMMENDS_%s' % newpkg, oldrrec + ' ' + ' '.join(rreclist), d) +# # bb.note('RRECOMMENDS_%s = "%s"' % (newpkg, bb.data.getVar('RRECOMMENDS_%s' % newpkg, d))) +# +# # bb.note('pkgs is %s' % pkgs) +# bb.data.setVar('PACKAGES', ' '.join(pkgs), d) +#} +# +#PACKAGES_DYNAMIC = "task-oh-sdk-*" diff --git a/meta/packages/tasks/task-oh.bb b/meta/packages/tasks/task-oh.bb index d7f9b055a1..5b9ce8ce81 100644 --- a/meta/packages/tasks/task-oh.bb +++ b/meta/packages/tasks/task-oh.bb @@ -1,14 +1,28 @@ -DESCRIPTION = "Tasks for OpenedHand Poky" -PR = "r43" +pDESCRIPTION = "Tasks for OpenedHand Poky" +PR = "r44" PACKAGES = "\ task-oh-base \ + task-oh-base-dbg \ + task-oh-base-dev \ task-oh-boot \ + task-oh-boot-dbg \ + task-oh-boot-dev \ task-oh-standard \ + task-oh-standard-dbg \ + task-oh-standard-dev \ task-oh-boot-extras \ + task-oh-boot-extras-dbg \ + task-oh-boot-extras-dev \ task-oh-boot-min-extras \ + task-oh-boot-min-extras-dbg \ + task-oh-boot-min-extras-dev \ task-oh-devtools \ - task-oh-testapps" + task-oh-devtools-dbg \ + task-oh-devtools-dev \ + task-oh-testapps \ + task-oh-testapps-dbg \ + task-oh-testapps-dev" XSERVER ?= "xserver-kdrive-fbdev" @@ -29,7 +43,6 @@ RDEPENDS_task-oh-boot = "\ ipkg \ update-alternatives \ module-init-tools-depmod" -# linux-hotplug \ RDEPENDS_task-oh-boot-extras = "\ task-base"